C语言程序设计教程答案
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提示:printf("%s",x>60?"pass":"fail"); 3.17 输入一个年份 y,如果是闰年,输出“y is a leap
year”,否则输出“y is not a leap year.” 提示:printf("%d is
%s",y%4==0&&y%100!=0||y%400==0?"a leap year.":"not a leap year.");
2.6 变量的具有哪三种属性? 二、单项选择题
2.7 C 语言中,int 型数据在内存中的存储形式是 (D)。
A)ASCII 码 B)原码 C)反码 D)补码 2.8 下面四个选项中,均是不合法的用户标识符的选
项是(C)。 A)BA 、x_0、do B)float、1a0、_Y C)x-y、goto、123 D)_123、tmp、CHAR 2.9 下列选项中不正确的常数的选项是(D)。 A)0x12F B)-1.23E-2 C)12.0 D)0388 2.10 下面正确的字符常量是(B)。 A)"a" B)'\\' C)"\n" D)"\376"
sum=sum+c-'0'; 4.9 编程实现,求 的值。 提示:先计算 n!,再在计算阶乘的外面套上一层循环。 注意:20!是一个很大的值,float s=1;int i;例如:计
算 6!: for(i=1;i<=6;i++) s=s*i; 4.10 编程实现,找出 1000 之内的所有完数,并按下 面格式输出其因子:
应的百分制成绩段。 A: 90-100 B: 80-89 C: 70-79 D: 60-69 E: <60
提示:char grade;
if(grade=='A') printf("\n90-100"); else if(grade=='B') printf("\n80-89");
.... 4.4 写出下面程序的运行结果:
A)x%=(k%=5)
B)x%=(k-k%5)
C)x%=k-k%5
D)(x%=k)-(k%=5)
3.12 已知 m=48,ch='a',n=0;则表达式
(m>=n&&ch<'b'&&!n)的值是(B)。
A)0 B)1 C)真 D)非 0
3.13 下面哪个式子在 b 为奇数时结果为假(C)。
A)a%2==1 B)!(a%2=个具有简单四则运算功能的计算器。 提示:参照例 4.18,随机产生 3 个数,其中一个数用
来判断是哪种运算。 4.8 编程实现,输入一行字符,将其中的数字字符对
应的整数值加起来并输出结果。如: a45b8&*3 则是 4+5+8+3,结果为 20。
提示:char c; int sum=0; while((c=getchar())!='\n') if(c>='0'&&c<='9')
提示:模仿例 1.3 1.16 输入三个整数,输出其中最小者。
提示: min(min(a,b),c);
【习题 2】 一、简答题(在课本中寻找答案,略)
2.1 常量与变量的区别? 2.2 C 语言中的标识符的定义规则? 2.3 变量为什么要“先定义,后使用”? 2.4 字符常量'a'与字符串常量"a"有何区别? 2.5 大小写字母转换的规则是什么?
生成目标程序。 1.10 scanf("%d,%d",&x,&y);的正确输入格式:3,4<
回车>。 正确
1.11 注释内容太多会影响程序的执行效率。 错误:不会影响程序的执行效率。因为在编译时,编 译系统将注释内容删除或用空格代替,所以注释内容
不会编译到目标程序中。 1.12 所有的数学公式可以直接出现在源程序中。 错误:数学公式需要转换成 C 语言能够接受的公式才
3.15 判断 char 型变量 ch 为数字的正确表达式是
(B)。
A)ch>="0"&&ch<="9" B)ch>='0'&&ch<='9'
C)'0'≤ch≤'9'
D)ch>='0'||ch<='9'
三、编程题(应用条件运算)
3.16 输入一个整型成绩 x,3.17 如果大于等于 60 分,
3.18 输出“pass”,3.19 否则输出“fail”。
表示中间值。 max0=(x>y?x:y)>z?(x>y?x:y):z;max0=(x<y?x:y)<z?(
x<y?x:y):z; mid0=x+y+z-max0-min0; 3.20 输入一个平面上的点坐标,判断它是否落在圆 心(0,0),半径为 1 的圆内,如果在圆内,输出“Yes”,
否则输出“No”。 提示:分别用 x,y 代表平面上一个点。
a%2
3.13 执行 printf("%f",(x=3,y=5,x>y?1:1.5));后的输
出结果是(D)。
A)语法错误 B)1 C)1.5 D)1.500000
3.14 能表示条件 0≤x≤100 的表达式是(D)。
A)0<=x<=100 B)x>=0,x<=100
C)0≤x≤100 D)x>=0&&x<=100
case 0:printf("!");break; case 1:printf("#");break;
default:printf("%%"); }
default:printf("@"); } }
运行结果:&#@
4.5 将以下语句改写成 switch 语句。 if((t>0)&&(t<=10))
if((t>=3)&&(t<=6)) x=2; else if((t>1)||(t>8)) x=3;
D)x*y/c/b*8
3.9 有如下类型说明:
int k,a,b;
unsigned long w=8;
double x=2.9
则以下不符合 C 语言语法的表达式是(A)。
A)x%(-3)
B)w*=-2
C)k=(a=6,b=4,a-b) D)a*=a+=a-=(b=4)*(a=3)
3.10 有如下类型说明:
, , , , , ,... 提示:这是一个累加式,每项是一个分式,用 a、b 分别表示分子、分母。注意:如果 a、b 都是整数,
则是整除。float sum=0,a=2,b=1; int i; for(i-1;i<=20;i++){sum=sum+a/b;a=a+b;b=a-b;}
4.12 编程实现,求 Sn=a+aa+aaa+...+ aa...a 之值, 其中 a 是一个数字。如:2+22+222+2222+22222(此
#include<stdio.h> main() {
int a=-1,b=1,c=5; switch(a>0){
case 1:switch(b-2<0){ case 1:printf("&");break; case 2:printf("*");break;
} case 0:switch(c= =5){
printf("%s",x*x+y*y<=0?"Yes":"No");
【习题 4】 以下的编程题目要求首先画出程序的传统流程图或 N-S 流程图,再编写程序代码。上机实验时再输入到 计算机中进行调试,并将调试过程中出现的问题和测
试情况记录下来。 (流程图请读者自己参考课本自己画,略) 4.1 编程实现,输入一个整数,判断它是否为偶数,
能出现在源程序中。 三、编程题
1.13 在屏幕上输出自己名字的拼音。 提示:中文名字叫“张三”,对应的拼音为“Zhang San”,
输出用 printf()函数。 1.14 输入圆的半径,求圆的周长,并将结果保留两
位小数输出到屏幕上。 提示:定义圆的半径 r,圆的周长:2*3.14*r,输出结果
保留 2 位小数可以用%.2f 1.15 输入两个整数,输出其中最大者。
3.18 输入三条边 a,b,c,如果它们能构成一个三角 形,输出“Yes”,否则输出“No”。 提示:
printf("%s",a+b>c&&a+c>b&&b+c>a?"Yes":"No"); 3.19 输入三个数 x,y,z,按从小到大的输出结果。 提示:分别用 max0,min0 代表最大、最小值,mid0
并显示相应的信息。 提示:x 代表输入的整数,if(x%2==0)
printf("\neven");else printf("\nodd"); 4.2 编程实现,输入一个平面上的点,判断它是否落
在单位圆上,并显示相应的信息。 提示:x,y 代表平面坐标,if(x*x+y*y==1)
printf("\nYes");else printf("\nNo"); 4.3 编程实现,输入一个成绩等级(A-E),显示相
6 its factors are 1,2,3, 所谓“完数”是指一个数如果恰好等于它的因子之
和,因子是指能够整除该数的数。
提示:先判断数是否为完数,如果是再考虑输出因子。 以 6 为例输出因子:
for(i=1;i<6;i++) if(6%i==0) printf("%d,",i); 4.11 编程实现,计算序列的前 20 项之和,
3.1 2.8+7%3*11%2/4 (答案:2.8) 3.2 5/2+5.0/2+7%6 (答案:5.5) 3.3 a=12,a*=2+3 (答案:a=60) 3.4 a=3,b=4,c=5,a+b>c&&b= =c (答案:0) 3.5 3>5?3:5<8?25:40 (答案:25) 3.6 设 a=1,b=2,c=3,d=4,m=n=1,有表达式 (m=a>b)&&(n=c>d),计算表达式后 m,n 的值?
float n;
int m;
则以下能实现将 n 中的数值保留小数点后两位,第
三位四舍五入的表达式是(B)。
A)n=(n*100+0.5)/100.0 B)
m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0
3.11 设 k=7,x=12;则下列表达式值为 3 的是(D)。
【习题 1】 一、简答题(在课本中寻找答案,略) 1.1 C 程序的基本结构包括哪些内容?
1.2 如何定义标识符? 1.3 输入格式、输出格式的组成包括哪些内容?
1.4 C 语言函数分为哪两类? 1.5 计算表达式的值应该考虑哪些方面?
1.6 上机调试程序的步骤如何? 二、判断并改错
1.7 C 程序执行的入口是 main()函数,所以 main 函 数必须放在程序的开头。
else x=1; else x=0; 提示:int t; if(t<=0||t>10) c=0; else c=t; switch(t) { case 0: x=0;break; case 1: case 2: x=3; case 3:case 4:case 5: case 6: x=2; case 7:case 8: case 9: x=3; case 10: x=2;
A)1111 1111 1111 1111 B)0000 0000 0000 0001 C)1111 1111 1111 1110 D)1000 0000 0000 0001 2.15 存储字符串"\\\'abc\376"需要的字节数是(D)。 A)11 B)13 C)6 D)7
【习题 3】 一、计算题
(答案:m=0,n=1)
3.7 设 int b=7;float a=2.5,c=4.7;求下面表达式的值。
a+(int)(b/2*(int)(a+c)/2)%4 (答案:4.5)
二、单项选择题
3.8 若有代数式 ,则不正确的 C 语言表达式是(C)。
A)x/b/c*y*8
B)8*x*y/b/c
C)8*x*y/b*c
2.11 下面正确的字符串常量是(C)。 A)'a' B)'376' C)"\\n" D)376 2.12 表达式'A'+4*25.0-'b'的正确结果是(B)。 A)67 B)67.0 C)不确定 D)67L 2.13 执行 printf("%x",100);后的输出结果是(C)。 A)100 B)0x100 C)0X64 D)64 2.14 int 型的-1 在内存中的存储形式是(A)。
错误:main 函数可以放在程序的任何位置。并不限定 在程序的开头。
1.8 定义一个函数包括数据说明部分和执行语句部 分,两者可以交叉出现。
错误:不可以交叉出现,数据说明部分在执行语句部 分的前面。
1.9 编辑与编译不是一回事。 错误:不是一回事。编辑完成源程序的输入和修改; 编译是对源程序进行语法检查,如果无语法错误,则