第5章-C语言程序设计(第2版)教材习题答案

合集下载

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案C语言程序设计教程第二版课后习题答案在学习编程的过程中,课后习题是检验自己理解和掌握程度的重要方式。

对于C语言程序设计教程第二版的学习者来说,课后习题的答案是必不可少的。

本文将为大家提供C语言程序设计教程第二版课后习题的答案,希望能够帮助大家更好地学习和理解C语言编程。

第一章:C语言概述1. C语言的起源可以追溯到1972年,由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。

2. C语言的特点包括语法简洁、执行效率高、可移植性强等。

3. C语言的应用领域广泛,包括操作系统、嵌入式系统、游戏开发等。

第二章:C语言基础1. C语言的基本数据类型包括整型、浮点型、字符型和指针型。

2. 整型数据可以分为有符号整型和无符号整型。

3. C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。

第三章:控制结构1. C语言中的控制结构包括顺序结构、选择结构和循环结构。

2. 选择结构包括if语句、switch语句等。

3. 循环结构包括while循环、do-while循环和for循环等。

第四章:数组和字符串1. 数组是一种存储相同类型数据的集合。

2. 字符串是由字符组成的字符数组。

3. C语言中的字符串处理函数包括strcpy、strcmp、strlen等。

第五章:函数1. 函数是一段完成特定任务的代码块。

2. 函数可以返回值,也可以不返回值。

3. 函数的参数可以是值传递或地址传递。

第六章:指针1. 指针是一个变量,存储的是内存地址。

2. 指针变量可以指向其他变量或函数。

3. 指针的运算包括指针的加法、减法和比较等。

第七章:结构体和共用体1. 结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。

2. 共用体是一种特殊的结构体,所有成员变量共用同一块内存空间。

3. 结构体和共用体可以嵌套使用。

第八章:文件操作1. 文件操作包括打开文件、读写文件和关闭文件等步骤。

谭浩强 C语言程序设计(第二版)习题答案

谭浩强  C语言程序设计(第二版)习题答案
printf("\n 反序数字为: "); printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand); break; case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv); printf("\n 反序数字为: "); printf("%d%d%d%d\n",indiv,ten,hundred,thousand); break; case 3: printf("%d,%d,%d",hundred,ten,indiv);
利润大于 600000 元,小于 1000000 元(600000<I≤1000000)时,高于 600000
的部分按 1.5%提成;利润大于 1000000 元(I>1000000)时,超过 1000000 元的
部分按 1%提成。从键盘输入当年利润 I,求应发放奖金总数。要求:
(1)用 if 语句编程序;(2)用 switch 语句编程序。
#include<stdio.h> void main() { int a,b,c,temp,max; printf("请输入 3 个整数: "); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; max=(temp>c)?temp:c; printf("3 个整数的最大数是%d\n",max); } 6. 给一个百分制成绩,要求输出等级'A'、'B'、'C'、'D'、'E'。90 分以上为'A',80~90 分为'B',70~79 分为'C',60 分以下为'D'。 解:

《C语言程序设计教程(第二版)》习题答案

《C语言程序设计教程(第二版)》习题答案

1 【C语言】《C语言程序设计教程(第二版)》习题答案说明1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。

2 第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick\n");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d\n",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。

递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。

*/{printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 5589 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f\n",x);}执行结果:1.32471795725.源程序略。

C语言程序设计(第二版)习题参考答案

C语言程序设计(第二版)习题参考答案

C语言程序‎设计习题参‎考答案习题 1一、判断题1.在计算机中‎,小数点和正‎负号都有专‎用部件来保‎存和表示。

2.二进制是由‎0和1两个‎数字组成的‎进制方式。

3.二进制数的‎逻辑运算是‎按位进行的‎,位与位之间‎没有进位和‎借位的关系‎。

4.在整数的二‎进制表示方‎法中,0的原码、反码都有两‎种形式。

5.有符号数有‎三种表示法‎:原码、反码和补码‎。

6.常用字符的‎A S CII‎码值从小到‎大的排列规‎律是:空格、阿拉伯数字‎、大写英文字‎母、小写英文字‎母。

解:1.F2.T 3.T 4.T 5.T 6.T二、单选题1.在计算机中‎,最适合进行‎数值加减运‎算的数值编‎码是。

A. 原码B. 反码C. 补码D. 移码2.已知英文小‎写字母m的‎A SCII‎码为十进制‎数109,则英文小写‎字母y的A‎S CII码‎为十进制数‎。

A. 112B. 120C. 121D. 1223.关于ASC‎II码,在计算机中‎的表示方法‎准确地描述‎是。

A. 使用8位二‎进制数,最右边一位‎为1B. 使用8位二‎进制数,最左边一位‎为1C. 使用8位二‎进制数,最右边一位‎为0D. 使用8位二‎进制数,最左边一位‎为04.设在机器字‎长4位,X=0111B‎,Y=1011B‎,则下列逻辑‎运算中,正确的是_‎_____‎_____‎。

A. X∧Y=1000B. X∨Y=1111C. X⊕Y=0011D. ¯Y=10005.下列叙述中‎正确的是()。

A.高级语言就‎是机器语言‎B.汇编语言程‎序、高级语言程‎序都是计算‎机程序,但只有机器‎语言程序才‎是计算机可‎以直接识别‎并执行的程‎序C.C语言因为‎具有汇编语‎言的一些特‎性,所以是汇编‎语言的一种‎D.C源程序经‎过编译、连接,若正确,执行后就能‎得到正确的‎运行结果6.用C语言编‎写的源程序‎经过编译后‎,若没有产生‎编译错误,则系统将()。

C语言程序设计第二版习题参考答案

C语言程序设计第二版习题参考答案

C语言程序设计习题参考答案习题1一、判断题1.在计算机中,小数点和正负号都有专用部件来保存和表示。

2.二进制是由0和1两个数字组成的进制方式。

3.二进制数的逻辑运算是按位进行的,位及位之间没有进位和借位的关系。

4.在整数的二进制表示方法中,0的原码、反码都有两种形式。

5.有符号数有三种表示法:原码、反码和补码。

6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。

解:1.F 2.T 3.T 4.T 5.T 6.T二、单选题1.在计算机中,最适合进行数值加减运算的数值编码是。

A. 原码B. 反码C. 补码D. 移码2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。

A. 112B. 120C. 121D. 1223.关于ASCII码,在计算机中的表示方法准确地描述是。

A. 使用8位二进制数,最右边一位为1B. 使用8位二进制数,最左边一位为1C. 使用8位二进制数,最右边一位为0D. 使用8位二进制数,最左边一位为04.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。

A. X∧Y=1000B. X∨Y=1111C. X⊕Y=0011D. ¯Y =10005.下列叙述中正确的是()。

A.高级语言就是机器语言B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。

A.生成可执行文件B.生成目标文件C.输出运行结果D.自动保存源文件7.下列叙述中不正确的是()。

A.main函数在C程序中必须有且只有一个B. C程序的执行从main函数开始,所以main函数必须放在程序最前面C. 函数可以带参数,也可以不带参数。

机器人程序设计(C语言)(第2版)章节练习题及参考答案

机器人程序设计(C语言)(第2版)章节练习题及参考答案

第一章一种新的C语言学习方式1.一台能够工作的计算机包括?CPU (Central Processing Unit,中央处理单元,进行运算和控制,包括运算器和控制器等)、存储器(如RAM、ROM等)、输入设备、输出设备(包括串行/并行接口、USB等)。

其中,RAM (RandomAccess Memory,随机存储器)主要用于存储数据,ROM (RcadOnlyMemory, 只读存储器)主要用于存储程序。

2.单片机工作时需要什么?需要稳定的电源、晶振、外部存储器和编程调试接口,就像计算机工作时需要电源、晶振、硬盘或其他大容量外部存储器和操作系统一样。

微控制器是将单片机独立工作所需的电源适配器、晶振、外部存储器和串口转换电路等封装到一个模块上,这样就能直接与计算机连接并进行编程开发,不需任何其他芯片和电路。

3. AT89S52是一种什么样的单片机?是一种高性能、低功耗的8位单片机,内含8 KBISPdn-System Programmable系统在线编程)可反复擦写IOOO次的Flash只读程存器,采用ATMEL公司的高密度非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。

在实际工程应用中,功能强大的AT89S52 已成为许多高性价比嵌入式控制应用系统的解决方案。

4. Progisp是一款什么样的软件?是一款免费下载的ISP软件,不需要专门的安装即可使用,非常方便。

使用该软件,读者可以将C语言程序生成的可执行文件下载到机器人单片机上。

使用时需要1根USBA转B 信号线。

5.简述串口调试工具的特点。

串口调试工具就是串行通信接口调试软件,集数据发送、数据接收、数据监控、数据分析等功能于一身,具有小巧精致、操作简捷、功能强大的特点,可以在串口通信监控、设备通信测试工作中有效提高效率。

6. pr i ntf ()函数称为?称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出显示。

Print ()函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括定义标准函数库的头文件stdio. h o第二章最简单的C程序设计——机器人做算数1. C语言用什么整型变量?C语言用关键字imt定义整型变量。

C语言程序设计(第二版)答案

C语言程序设计(第二版)答案

参考答案习题二(P33)一.单选题1.C2.B3.D4.C5.A6.D7.D8.B9.B 10.D 11.D 12.C 13.C . 15. A 14题最后一句应为printf("%f\n",d*y);结果为2.2二.填空题1. 182. int float double3. 10 114. 八十六十5. %三.阅读程序题1.10,10,9,102.j=1,i=2k=3,i=3j=3,i=2k=1,i=1习题三(P52)一.单选题1.D2.C3.D4.B5.A6.B7.C8.A9.C 10.B 11. -1,37777777777,4294967295 二.填空题5. L6. -1三.阅读程序题1. 6 6 6.00 6.002. x=127,x= 127,x=177,x=7fY=123.4567 , y= 123.46 , y=123.456703. 2,14. 12345. 4,36. -6,-6四.程序设计题1.#include "stdio.h"#include "math.h"main(){float a,b,c,d,x1,x2;a=2;b=-3;c=-5;d=b*b-4*a*c;x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("x1=%.2f,x2=%.2f\n",x1,x2);}2.#include <stdio.h>main(){ float a,v,s;scanf("%f",&a);v=a*a*a;s=6*a*a;printf("v=%.2f,s=%.2f\n",v,s);}3.#include <stdio.h>main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);t=c;c=b;b=a;a=t;printf("a=%d,b=%d,c=%d\n",a,b,c);}4.#include <stdio.h>main(){ char s1,s2;s1=getchar();s2=s1-32;printf("%c\n",s2);}习题四(P70)一.单选题1.C2.D3.D4.B5.A6.D7.D8.B9.C 10.A 11.B 12.D 13.passwarnerror .14.C 15. C 16.B 17. B 18. C二.填空题1. 非0 02. k==03. n%7==0 && n%8==0 else三.阅读程序题1. a=1,b=02. c=1四.程序设计题1.#include <stdio.h>main(){ int a,b;char c;printf("INPUT A+(-*/)B\n");scanf("%d%c%d",&a,&c,&b);switch(c){case'+':printf("%d+%d=%d\n",a,b,a+b);break;case'-':printf("%d-%d=%d\n",a,b,a-b);break;case'*':printf("%d*%d=%d\n",a,b,a*b);break;case'/':printf("%d/%d=%d\n",a,b,a/b);break;default:printf("INPUT ERROR!");}}2.#include <stdio.h>main(){ float x,y;scanf("%f",&x);if(x==0||x==2)y=0;else if(x>0) y=(x+1)/(x-2);else y=(x-1)/(x-2);printf("y=%f\n",y);}3.#include <stdio.h>main(){ int g;printf("请输入学生成绩:");scanf("%d",&g);printf("g=%d:",g);switch(g/10){case 10:printf("A\n");break;case 9:printf("B\n");break;case 8:printf("C\n");break;case 7:printf("D\n");break;case 6:printf("E\n");break;default:printf("F\n");}}4.#include <stdio.h>main(){ int x,n=0;scanf("%d",&x);if(x<=0||x>=10000)printf("Data Error!\n");else{if(x<10)n=1;else if(x<100)n=2;else if(x<1000)n=3;else n=4;}printf("n=%d\n",n);}习题五(P87)一.单选题1.B2.D3.C4.C5.B6.C7.D8.C9.A 10.D 11.B 12.B 13.B 14.D 15. C 二.填空题1. for语句while语句do-while语句2. a=14,y=263. k=14,n= -14. 395. s=196. 222227. 108. 79. 810. 5,5三.改错题应改为for(i=0;i<5;i++)j++;应改为int j=0;while(j<10){j++;i=j;} 注while(j<10)后不应有分号应改为while(j<10); 注while(j<10)后分号不能少s*=i;i++;应改为{s*=i;i++;}continue 应改为break四.程序设计题1.#include <stdio.h>main(){ int i,j,s=0;for(i=1,j=1;i<=100;i++,j=j*(-1))s=s+i*j;printf("s=%d\n",s);}1.(另一做法)#include<stdio.h>main(){int i,s;for(i=1,s=0;i<=100;i++)if(i%2==0)s=s-i;else s=s+i;printf ("%d\n",s);}2.#include <stdio.h>main(){ int i,j,s1=0,s2=0;for(i=0;i<10;i++){scanf("%d",&j);if(j>0)s1=s1+j;else s2=s2+j;}printf("s1=%d,s2=%d\n",s1,s2);}3.#include<stdio.h>main(){int i,s;for(i=6,s=0;i<=96;i=i+1)if(i%10==6||i/10==6)s=s+i;printf ("%d\n",s);}4.#include<stdio.h>main(){int i,a,b,c;for(i=100;i<=999;i++){a=(i%10);b=(i/10%10);c=(i/100);if(i==a*a*a+b*b*b+c*c*c)printf ("%d\n",i);}}5.#include <stdio.h>main( ){int i,j,k=0;for (i=1;i<=4;i++){for (j=1;j<=i;j++){k++;printf("%d",k%10);}printf("\n");}}6.#include <stdio.h>main( ){int i,j,k=0;for (i=-3;i<=3;i++){if(i<0)k=-i;else k=i;for(j=1;j<=k;j++)printf(" ");for(j=1;j<=7-2*k;j++)printf("*");printf("\n");}}习题六(P111)一.单选题1.D2.B3.C4.C5.C6.D7.A8.B二.填空题1. 20 0 192. 数组名3. 越界4. 65. j==k a[j][k]=1; a[j][k]=0;三.阅读程序题1. 6 5 43 2 12.aaabbbccc ddd3.2,2,1四.程序设计题1.#include<stdio.h>main(){ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s+=a[i][j];printf("%d",s);}2.#include <stdio.h>{ char a[80];int i,j=5; /*假设删除位置为5*/gets(a);for(i=j-1;a[i]!='\0';i++)a[i]=a[i+1];a[i]='\0';puts(a);}3.#include <stdio.h>#include <string.h>main(){ char a[80];int i,j=5; /*假设插入位置为5*/char s='t'; /*假设插入字符为t*/gets(a);for(i=strlen(a);i>j;i--)a[i+1]=a[i];a[j]='t';puts(a);}4.#include<stdio.h>main(){ int a[3][5]={1,3,5,7,9,2,4,6,8,10,3,5,8,7,6}; int i,j,s1[3]={0},s2[5]={0};for(i=0;i<3;i++)for(j=0;j<5;j++)s1[i]+=a[i][ j];for(i=0;i<5;i++)for(j=0;j<3;j++)s2[i]+=a[ j][i];for(i=0;i<3;i++){for(j=0;j<5;j++)printf("%6d",a[i][j]);printf (" |%6d\n",s1[i]);}for(i=0;i<33;i++) printf("-");printf("\n");for(i=0;i<5;i++) printf("%6d",s2[i]);printf("\n");}5.#include<stdio.h>{ char s[3][80];int a=0,b=0,c=0,d=0,e=0,i,j;for(i=0;i<3;i++) gets(s[i]);for(i=0;i<3;i++)for(j=0;s[i][j]!='\0';j++)if(s[i][j]>='A'&&s[i][j]<='Z')a++;else if(s[i][j]>='a'&&s[i][j]<='z')b++;else if(s[i][j]>='0'&&s[i][j]<='9')c++;else if(s[i][j]==32)d++;else e++;printf("%3d%3d%3d%3d%3d",a,b,c,d,e);}习题七(P145)一.单选题1.A2.B3.C4.A5.C6.D7.C8.B9.B 10.C 11.D 二.填空题1. 该函数内局部2. 整型3. k<=breturn y;4. x[i]return (ave);fun(a,20)5. 1;add(n-1);add(n);6. n*f(n-1)0;f(i)三.阅读程序,写出运行结果1.10,20,302.643.84. hlo5. sum=55四.程序设计题1.#include <stdio.h>main(){float add(float, float), sub(float, float);float aver(float, float),a,b;scanf("%f,%f",&a,&b);printf("add=%f, sub=%f\n ", add(a,b), sub(a,b)); printf("aver =%f", aver(a,b));}float add(float x, float y) {return(x+y);}float sub(float x, float y) {return(x-y);}float aver(float x, float y) {return((x+y)/2);} 2.#include<stdio.h>main(){ int a,b,c,abmax(int,int);scanf("%d%d%d",&a,&b,&c);printf("max=%d\n",abmax(abmax(a,b),c)); }int abmax(int a,int b){if(a>b)return a;else return b;}3.#include <stdio.h>main(){float x,fun(float, int);int n;scanf("%f%d",&x,&n);printf("%f\n", fun(x,n));}float fun(float x, int n){float y;if(n==0)y=1;else y=x*fun(x,n-1);return y;}4.#include <stdio.h>main(){long f(int);int n,k;scanf("%d",&n);for(k=1;k<=n;k++)printf("%ld,",f(k));printf("\n");}long f(int n){long y;if(n<=2)y=1;else y=f(n-1)+f(n-2); return y;}5.#include <stdio.h>#include <string.h> main(){char a[50];int n;void fun(char x[ ],int n); gets(a);n=strlen(a); fun(a,n);puts(a);}void fun(char a[ ],int n) {int k,s;for(k=0;k<n/2;k++) {s=a[k];a[k]=a[n-k-1];a[n-k-1]=s;}}5. (另一做法)#include <stdio.h>#include <string.h> main(){char a[50];int n;void fun(char x[ ],int n); gets(a);n=strlen(a); fun(a,n);puts(a);}void fun(char a[ ],int n) {int k;char b[50];for(k=0;k<n;k++)b[n-1-k]=a[k];b[k]=a[k];strcpy(a,b);}6.#include <stdio.h>#define KK 100main(){char a[KK];long sjz(char a[]);int i=0,f1=0;printf("input a data:");gets(a);for(i=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9'||a[i]>='A'&&a[i]<='F'||a[i]>='a'&&a[i]<='f') continue;else {f1=1;break;}}a[i]='\0';if(f1==1)printf("Data Error!\n");else printf("result is :%d\n",sjz(a));}long sjz(char a[]){long n=0,i;;for(i=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9')n=n*16+a[i]-'0';if(a[i]>='A'&&a[i]<='F')n=n*16+a[i]-'A'+10;if(a[i]>='a'&&a[i]<='f')n=n*16+a[i]-'a'+10;}return n;}6.(另一做法)#include <stdio.h>#define KK 100main(){char str[KK],c;long sjz(char a[]);int i=0,f1=0;printf("input a data:");while((c=getchar())!='\n'&&i<KK){if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f')str[i++]=c;else f1=1;}str[i]='\0';if(f1==1)printf("Data Error!\n");else printf("result is :%d\n",sjz(str));}long sjz(char a[]){long n=0,i;;for(i=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9')n=n*16+a[i]-'0';if(a[i]>='A'&&a[i]<='F')n=n*16+a[i]-'A'+10;if(a[i]>='a'&&a[i]<='f')n=n*16+a[i]-'a'+10;}return n;}习题八(P181) (注:无答案的题不在本课程讲授范围内)一.单选题1.D2.A3.C4.D5.C6.B7.C8.C9.C 13.D 14.B 15.A 16.C 17.A 二.填空题1. 指向取地址2. 2 +23. 286. *(p+5)7. ABCD A三.阅读程序题1.102.103.04. 3,65. 1 2 3 4四.程序填空题1.a,b,c或者&x,&y,&z max=*b或者max=y max=*c或者max=z2. ++ =*q ++ ++4. int *a,int *b b[j]=a[i] b[i++]5. *str+=3 *str>’z’&&*str<’a’||*str>’z’ a6. else 0 t[2*j+1]五.程序设计题1.#include <stdio.h>main(){int a[10],*p,*q,t;p=a;for(q=a;q<a+10;q++)scanf("%d",q);for(q=a;q<a+10;q++)printf("%5d",*q);printf("\n");q--;for(;p<q;p++,q--){t=*p;*p=*q;*q=t;}for(p=a;p<a+10;p++)printf("%5d",*p);printf("\n");}2.#include <stdio.h>#include <string.h>void main( ){ char a[50],*p1,*p2,t,n;gets(a);n=strlen(a);p1=a; p2=a+n-1;for(; p1<p2; p1++, p2--){t=*p1; *p1=*p2; *p2=t;}puts(a);}另一做法#include <stdio.h>main(){char str[20],*p=str;gets(str);while(*p)p++;p--;while(p>=str){printf("%c",*p);p--;}printf("\n");}3.#include <stdio.h>main(){int a[10],*p,*max,*min,t;for(p=a;p<a+10;p++)scanf("%d",p); for(p=a;p<a+10;p++)printf("%5d",*p); printf("\n");max=min=a;for(p=a+1;p<a+10;p++){if(*p>*max)max=p;if(*p<*min)min=p;}t=a[0];a[0]=*min;*min=t;t=a[9];a[9]=*max;*max=t;for(p=a;p<a+10;p++)printf("%5d",*p); printf("\n");}5.#include <stdio.h>int length(char *s){int n=0;while(*s){n++;s++;}return n;}main(){char str[20];int n;gets(str);n=length(str);printf("The string length is %d\n",n);}6.#include <stdio.h>main(){char str[81],*p=str,*q,t;gets(str);printf("The origenal string:\n");puts(str);for(p=str;*(p+1);p++)for(q=p+1;*q;q++)if(*q<*p){t=*p;*p=*q;*q=t;}printf("The result string:\n");puts(str);}习题九(P222) (注:无答案的题不在本课程讲授范围内)一.单选题1.D2.A3.B4.D 8.B 9.B 10.C二.填空题1. 结构体成员结构体指针指向2. 343. 224.ex三.阅读程序题1.92.10,x3.134. 46 40 415. 06. 3839。

C语言程序设计(第二版)习题参考答案

C语言程序设计(第二版)习题参考答案

printf("%d*%d=%d\n",a,a,z);
}
*3.仿照例 1.3 编程,输入两个数后,输出其中较小值。
解:#include<stdio.h>
float min(float x, float y)
{ float m;
if (x<y) m=x;
else m=y;
return m;
}
void main()
6.常用字符的 ASCII 码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、
小写英文字母。
解:1.F 2.T 3.T 4.T 5.T
6.T
二、单选题
1.在计算机中,最适合进行数值加减运算的数值编码是

A. 原码
B. 反码
C. 补码
D. 移码
2.已知英文小写字母 m 的 ASCII 码为十进制数 109,则英文小写字母 y 的 ASCII 码为
面积 s(s x)(s y)(s z)
其中 s
x yz 2
程序如下: #include <stdio.h>
#include <math.h>
void main()
{
double x,y,z,s,dime;
scanf("%lf%lf%lf",&x,&y,&z);
dime=sqrt(s*(s-x)*(s-y)*(s-z));
程序如下:
#include <stdio.h>
void main()
{
int a,b,c,s,z;
printf("Please input a b c:\n");
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。

2011年10月第二版。

ISBN:978-7-302-26972-4。

售价:35元。

【答案版本】本习题答案为2012年2月修订版本。

一、选择题
1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。

A. while循环执行10次
B. 循环是无限循环
C. 循环体语句执行一次
D. 循环体语句一次也不执行
2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。

A. 运行程序段后输出1
B. 程序段执行无限次
C. 运行程序段后输出0
D. 程序段中的控制表达式是非法的
3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。

A. int a=1,b=2; while(b--);
B. int a=1,b=2; do a++; while(a==b);
C. int a=1,b=2; while(a=3);
D. int a=1,b=2; do b-- while(b==0);
4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。

do{ printf(“%d\n”,i--); } while(i!=0);
A. 0
B. 1
C. 5
D. 无限
5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。

A. 0
B. 5
C. 10
D. 无限
6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。

A. break语句用于循环体内,它将结束该循环
B. break语句用于开关语句,它结束该开关语句
C. break语句用于if语句的内嵌语句内,它结束该if语句
D. break语句在一个循环体内可使用多次
7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。

A. 循环体内可以包含有循环语句
B. 循环体内必须同时出现break语句和continue语句
C. 循环体内可以出现选择语句
D. 循环体可以是空语句
8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。

A. for(; ; x+=i);
B. while(1) { x++; }
C. for( i=10; ; i--) sum+=i;
D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c);
9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。

A.2
B. 3
C. 4
D. 5
10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。

A. 无限循环
B. 循环次数不定
C. 循环4次
D. 循环3次
11. 与语句”while(!x);”等价的语句是A) while(x= =0);。

A. while(x==0);
B. while(x!=1);
C. while(x!=0);
D. while(x==1);
12. 执行下列程序段后a的值为B)2。

int a=1,b=10;
do{
b-=a;a++;
}while(b--<0)
A.4
B. 2
C. 1
D. 3
二、编程题
1
2.先读入一个正整数n,然后计算并显示前n个偶数的和。

例如,如果n为5,这个程序
3
4
5
6
7
8
9.找出所有“水仙花数”。

所谓“水仙花数”是指一个三位整数,其各位数字立方和等于
333
11.输出如下图形:
A
BBB
CCCCC
14.一个正整数如果恰好等于它的因子之和,这个数就称为“完数”。

例如,6的因子为1、2、
16.显示如下图案:*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
17.36块砖,36人搬。

男搬4,女搬3,两个小孩抬一块。

一次刚好搬完,问男、女、小孩
18.编程求解马克思手稿中的数学题:有30个人,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有
20.输出1~1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个)。

28.国王的许诺。

相传国际象棋是古印度舍罕王的宰相达依尔发明的。

舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。

这位聪明的宰相指着8*8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中放1粒,第2格子中放2粒,第3格子中放4粒,以后每一格子都比前一个格子增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。

舍罕王让人扛来一袋麦子,他要兑现他的许诺。

请问:国王能兑现他的许诺吗?试编程计算舍罕王共要多少粒麦子赏赐他的宰相。

相关文档
最新文档