《C语言编程基础》习题答案.docx
《《C语言编程基础》习题答案.docx》由会员分享,可在线阅读,更多相关《《C语言编程基础》习题答案.docx(33页珍藏版)》请在冰豆网上搜索。
![《C语言编程基础》习题答案.docx](https://file1.bdocx.com/fileroot1/2022-10/8/2a0a866c-159f-44dd-ae03-371a3a610784/2a0a866c-159f-44dd-ae03-371a3a6107841.gif)
《C语言编程基础》习题答案
《C语言编程基础(第2版)》习题答案
《C语言编程基础(第2版)》每章后面都安排了一定数量的习题,这有利于读者理解、消化和掌握各单元的学习内容。
习题中,除了有填空题、选择题、回答问题等适合掌握基本概念的题型外,大部分是分析程序运行结果和要求编写实用程序,这有利于读者训练编程技巧和增强编程能力。
应广大读者要求,特别是一线教学老师的要求,我们给出全部习题答案,供读者参考。
编程答案只是实现题目算法要求的一种,并不一定是最好的。
希望读者自己多做思考,利用多种方法进行编程,用以提高自己的程序设计水平和锻炼自己的创新能力。
由于作者
水平所限,错误和不当之处在所难免,恳请批评指正。
习题一
1、填空题。
⑴C语言程序由函数组成,其中必须有且只能有一个名为main的函
数。
C程序的执行从名为main的主函数开始。
⑵每个C语句必须以—分—号结束。
⑶标识符只能由_英文字母_、—数字_和_下划线—三类符号构成,而且标识符的第一个字符必须是英文字母或下划线。
⑷关键字是指_C语言编译系统所固有的、具有专门意义的标识符___。
(5)C程序中,注释的内容应放在,/*_和_*/_符号之间。
2、选择题。
⑴下面合法的C语言标识符是C。
⑵C语言中主函数的个数是A。
⑶以下有关注释的描述中,错误的是C。
⑷C程序中,main函数的位置D。
3、指出并改正下面程序中的错误。
⑴main应为main()
⑵应在本程序最后加上大括号}。
⑶语句结束应有分号。
如:
inta,b;a=1;b=2;printf("%d",a+b);
4、分析下列程序,写出运行结果
⑴该程序是计算两个整数a和b的乘积并赋值给c,运行结果为:
c=30
⑵该程序输出一个字符串和一排星号,运行结果为:
Hello!
*****************
5、编程题。
⑴按题目要求,编写输出固定信息的程序如下:
main()
{
pt();
printf("Welcome!
");
pt();
}
pt()
{
printf('I*****************");
}
⑵按题目要求,编写输入数据输出其表达式的程序如下:
main()
{
inta,b,c;
scanf("%d",&a);
scanf("%d",&b);
c=a*b+10;
printf("c=%d",c);
}
习题二
1、单项选择题。
⑴C语言中的变量名只能由字母、数字和下划线组成,且第一个字符CQ
⑵合法的常量是DQ
⑶C语言中的基本数据类型所占存储空间长度的顺序是_D—Q
⑷下列符号串中与123.0相同的合法常量是Cq
2、填空。
⑴C语言中的基本数据类型包括整型(int)_、浮点型(flot)__
和—字符型(char)_三种。
⑵整型常数有_十进制整数_、一八进制整数_和_十六进制整数一三种表示形式;整型变量可分为四类:
_一般整型(int)__短整型(short)_、_长整型
(long)_、_无符号型_。
其中_无符号型_又可分为一无符号整型(unsignedint)、_无符号短整型(unsignedshort)和_无符号长整型(unsignedlong)_3不中。
⑶有10个用指数形式表示的符点常数:
请指出合法的有③④⑥⑧⑩。
⑷在C中,没有专为存贮字符串的变量,但可以用字符型数组或字符
型指针变量存贮字符串。
其定义格式为charstr[6];和char*a;0
⑸数据类型混合运算时,要进行同型转换,转换方式分为自动转换
(隐式转换)和强制转换(显式转换)—两种。
3、写出下列程序运行结果。
⑴215/9=23…8
⑵97b
⑶4.000000
4、编写程序。
⑴按题目要求编写求三个已知数的乘积,程序如下:
main()
{
inta,b,c;
a=19;
b=22;
c=650;
printf("a*b*c=%d\n",a*b*c);
}
⑵按题目要求,编写将值整数化后赋值的程序如下:
main()
{
inta1,a2;
floatb,c;
b=35.425;
c=52.954;
a仁(int)(b*c);
a2=(int)c%(int)b;
printf("a1=%d;a2=%d\n",a1,a2);
}
⑶按题目要求,编写计算圆周长、面积和圆柱体积的程序如下:
main()
{
intr,h,c,s,v;
r=15;
h=3;
c=2*3.14*15;s=3.14*r*r;v=s*h;
printf("c=%d,s=%d,v=%d\n",c,s,v);
习题二
1、填空题。
⑴设有intx=11;则表达式(x++*1/3)的值是3。
⑵已知数学表达式y=x2-2x+5,写出对应的C语言表达式_y=x*x-2*x+5_
⑶已知a=10,则表达式x=(a=a+b,a-b)的值为x=100
2、选择题。
⑴在C语言中,下列运算符的操作数必须是int类型的运算符是(D)0
⑵假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为(A)
⑶已定义intm=6,n=5;,则执行m%=n-1之后,m的值是(B)。
⑷已有inta=1,b=1;则执行b=(a=2*3,a*5),a+7之后,a,b的值是(B)
⑸已有intx=2,y=1;则执行x++==y--;的结果是(D)。
3、求下面算术表达式的值。
⑴2.500000
⑵3.500000
4、分析下列程序,写出运行结果。
⑴注意,在C语言中,因为函数调用中参数按从右到左的顺序求值,因此该程序执行打印输出的结果为:
⑵该程序在计算条件表达式的值赋给a时,其x值已为6,y值已为7,因
此运行结果为:
a=7,b=0,c=6
⑶该程序利用运算符与结合性的优先级不同,而取得a与b的值。
(因为该
题使用了逻辑运算符,可在学了第5章以后再详细分析)运行结果如下:
a=2,b=1
⑷该程序应用复合的赋值运算符和从右至左结合性的运算规则,求取n的
值,运行结果如下:
n=28
⑸该程序在执行语句“y=x++-1;”时,y为0而x在执行后变为2;在执行语句“z=--y+1;”时,z为0而y便成了-1。
运行结果如下:
x=2,y=-1,z=05、编程题。
9章学习后再做):
⑴用符号常量编写简单计算程序如下(复杂应用应在第
#defineN12
#defineM25
main()
{
floatc;
printf("N+M=%d\n",N+M);
printf("N-M=%d\n",N-M);
printf("N*M=%d\n",N*M);
c=(float)N/M;
printf("N/M=%f\n",c);
}
⑵查看i++与++j运算结果差异的程序,编写如下:
main()
{
inti=20,j=20;
printf("i++:
%d\n++j:
%d\n",i++,++j);
}
⑶查看m--与--n运算结果差异的程序,编写如下:
main()
{
intm=20,n=20;
printf("m--:
%d\n--n:
%d\n",m--,--n);
}
习题四
1、单项选择题。
⑴下列叙述不正确的是__B__0
⑵当输入数据为12345678时,下面程序运行的结果是
⑶putchar函数可以向终端输出一个D。
⑷按格式输出的格式符__C__o2、回答问题
⑴在键盘上输入数据格式如下:
12,24,Aa□2.58□-2.58□1口68.5/
(□代表空格,其中数据1是为了对付%*f占位,/代表回车)
⑵该题是求输入任意两个整数a与b的和。
若读入a=b=5,其运行结果为:
typeanumberplease!
a=?
5/
typeanotherplease!
b=?
5/
asumbis10
3、写出下列程序的执行结果。
⑴执行结果:
32767,-32768
2147483647,-2147483648
65535,0
⑵执行结果:
yes,Iamcomputer.
⑶执行结果:
a\b'□□□□□tw
123
⑷执行结果:
58.887299,555.677979
58.887299□□□,555.677979
□□58.887,□555.678,58.887,555.678,58.887299,555.677979
5.88873e+01,□□□5.6e+02
B,66,102,42
7567890,34675022,7a12
11232,25740,2be0,11232
COMPUTER^□ABC
4、编写程序。
⑴对输入的大写字母改用小写输出的程序,编写如下:
#include
main()
{
charc;
printf("输入一个大写字母:
\n");
c=getchar();
putchar(c+32);
⑵计算三门课总成绩等数据的程序,编写如下:
#inelude
main()
{
floata,b,c,sum,ave,mod;
printf("输入三门课程的成绩:
\n");
scanf("%f%f%f",&a,&b,&c);
sum=a+b+c;
ave=(a+b+c)/3;
mod=fmod(sum,3);
printf("总成绩=%5.1f,平均成绩=%5.1f,总成绩除3的余值
=%3.1f\n",sum,ave,mod);
}
⑶已知数据,按输出结果的要求编写输出程序如下:
main()
{
inta=1,b=2,c=3,g=12345;
floatd=7.2,e=-5.5,f=1.56;
longh=123456;
chari='o',j='p';
printf("a=%db=%dc=%d\n",a,b,c);
printf("d=%f,e=%f,f=%f\n",d,e,f);
printf("d+e=%4.2fe+f=%4.2fd+f=%5.3f\n",d+e,e+f,d+f);
printf("g=%7dh=%ld\n",g,h);
printf("i=%cor%d\nj=%cor%d\n",i,i,j,j);
}
习题五
1、单项选择题。
⑴C语言用C表示逻辑量为“假”
⑵要求当A的值为奇数时,表达式的值为“真”;A勺值为偶数时,表达式的
值为“假”。
以下不满足要求的表达式是__D_o
⑶在if语句的嵌套中,else总是与__C__配对。
⑷下面对for循环概念描述正确的是__D__o
2、填空题。
⑴switch后面的“表达式”,通常为整_型或一字符_型表达式;每个case的常量表达式的值不能相同。
⑵如果不算goto语句构成的循环结构,那么C语言可以构建循环的语句一共有3种,分别是for循环、while循环、do-while循环__。
⑶continue语句与break语句在使用时,有两点主要的不同:
①它不适用于