当前位置:文档之家› C语言编程基础习题答案

C语言编程基础习题答案

《C语言编程基础(第2版)》习题答案前言《C语言编程基础(第2版)》每章后面都安排了一定数量的习题,这有利于读者理解、消化和掌握各单元的学习内容。

习题中,除了有填空题、选择题、回答问题等适合掌握基本概念的题型外,大部分是分析程序运行结果和要求编写实用程序,这有利于读者训练编程技巧和增强编程能力。

应广大读者要求,特别是一线教学老师的要求,我们给出全部习题答案,供读者参考。

编程答案只是实现题目算法要求的一种,并不一定是最好的。

希望读者自己多做思考,利用多种方法进行编程,用以提高自己的程序设计水平和锻炼自己的创新能力。

由于作者水平所限,错误和不当之处在所难免,恳请批评指正。

习题一1、填空题。

⑴ C语言程序由__函数__组成,其中必须有且只能有一个名为_main__的函数。

C程序的执行从___名为main的主__函数开始。

⑵每个C语句必须以__分__号结束。

⑶标识符只能由_英文字母_、__数字_和_下划线__三类符号构成,而且标识符的第一个字符必须是__英文字母__或__下划线__。

⑷关键字是指___C语言编译系统所固有的、具有专门意义的标识符___。

⑸ C程序中,注释的内容应放在__/*_和_*/__符号之间。

2、选择题。

⑴下面合法的C语言标识符是___ C ___。

⑵ C语言中主函数的个数是___ A______。

⑶以下有关注释的描述中,错误的是___ C ___。

⑷ C程序中,main函数的位置____ D___。

3、指出并改正下面程序中的错误。

⑴ main 应为 main()⑵应在本程序最后加上大括号 }。

⑶语句结束应有分号。

如:int a,b;a=1;b=2;printf(%d,a+b);、分析下列程序,写出运行结果。

4.⑴该程序是计算两个整数a和b的乘积并赋值给c,运行结果为:c=30⑵该程序输出一个字符串和一排星号,运行结果为:Hello!*****************5、编程题。

⑴按题目要求,编写输出固定信息的程序如下:main(){pt();printf( Welcome!);pt();}pt(){printf(*****************);}⑵按题目要求,编写输入数据输出其表达式的程序如下:main(){int a,b,c;scanf(%d,&a);scanf(%d,&b);c=a*b+10;printf(c=%d,c);}习题二1、单项选择题。

⑴ C语言中的变量名只能由字母、数字和下划线组成,且第一个字符_C _。

⑵合法的常量是__ D ___。

⑶ C语言中的基本数据类型所占存储空间长度的顺序是__ D___。

⑷下列符号串中与123.0相同的合法常量是__ C___。

2、填空。

⑴ C语言中的基本数据类型包括____整型(int)_、____浮点型(flot)__和_字符型(char)_三种。

⑵整型常数有_十进制整数_、_八进制整数_和_十六进制整数_三种表示形式; 整型变量可分为四类: _一般整型(int)_、_短整型(short)_、_长整型(long)_、_无符号型_。

其中_无符号型_又可分为_无符号整型(unsigned int)、_无符号短整型(unsigned short)和_无符号长整型(unsigned long)_3种。

⑶有10个用指数形式表示的符点常数:请指出合法的有___③④⑥⑧⑩___。

⑷在C中,没有专为存贮字符串的变量,但可以用__字符型数组__ 或__字符型指针变量_存贮字符串。

其定义格式为_ char str[6];_和_ char *a;_。

⑸数据类型混合运算时, 要进行同型转换, 转换方式分为__自动转换(隐式转换)__和__强制转换(显式转换)__两种。

3、写出下列程序运行结果。

⑴ 215/9=23 (8)⑵ 97 b⑶ 4.0000004、编写程序。

⑴按题目要求编写求三个已知数的乘积,程序如下:main(){int a,b,c;a=19;b=22;c=650;printf(a*b*c=%d\n,a*b*c);}⑵按题目要求,编写将值整数化后赋值的程序如下:main(){int a1,a2;float b,c;b=35.425;c=52.954;a1=(int)(b*c);a2=(int)c%(int)b;printf(a1=%d;a2=%d\n,a1,a2);}⑶按题目要求,编写计算圆周长、面积和圆柱体积的程序如下:main(){int r,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、填空题。

⑴设有int x=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=10__。

2、选择题。

⑴在C语言中,下列运算符的操作数必须是int类型的运算符是(D)。

⑵假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为(A)。

⑶已定义int m=6,n=5;,则执行m%=n-1;之后,m的值是(B)。

⑷已有int a=1,b=1;则执行b=(a=2*3,a*5),a+7之后,a,b的值是(B)。

⑸已有int x=2,y=1;则执行x++==y--;的结果是(D)。

3、求下面算术表达式的值。

⑴ 2.500000⑵ 3.5000004、分析下列程序,写出运行结果。

⑴注意,在C语言中,因为函数调用中参数按从右到左的顺序求值,因此该程序执行打印输出的结果为:3 1 1⑵该程序在计算条件表达式的值赋给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章学习后再做):#define N 12#define M 25main(){float c;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(){int i=20,j=20;printf(i++:%d\n++j:%d\n,i++,++j);}⑶查看m--与--n运算结果差异的程序,编写如下:main(){int m=20,n=20;printf(m--:%d\n--n:%d\n,m--,--n);}习题四1、单项选择题。

⑴下列叙述不正确的是__B__。

⑵当输入数据为12345678时,下面程序运行的结果是__C___。

⑶ putchar函数可以向终端输出一个__D___。

⑷按格式输出的格式符__ C__。

、回答问题。

2.⑴在键盘上输入数据格式如下:12,24,Aa□2.58□-2.58□1□68.5↙(□代表空格,其中数据1是为了对付%*f占位,↙代表回车)⑵该题是求输入任意两个整数a与b的和。

若读入a=b=5,其运行结果为: type a number please!a=?5↙type another please!b=?5↙a sumb is 103、写出下列程序的执行结果。

⑴执行结果:32767,-327682147483647,-214748364865535,0⑵执行结果:yes,I am computer.⑶执行结果:a\b'□□□□□tw123⑷执行结果:58.887299,555.67797958.887299□□□,555.677979□□58.887, □555.678,58.887,555.678,58.887299,555.677979 5.88873e+01, □□□5.6e+02B,66,102,427567890,34675022,7a1211232,25740,2be0,11232COMPUTER, □□ABC4、编写程序。

⑴对输入的大写字母改用小写输出的程序,编写如下:#include <stdio.h>main(){char c;牰湩晴尨输入一个大写字母:\n);c=getchar();putchar(c+32);}⑵计算三门课总成绩等数据的程序,编写如下:#include <math.h>main(){float a,b,c,sum,ave,mod;牰湩晴尨输入三门课程的成绩:\n);scanf(%f%f%f,&a,&b,&c);sum=a+b+c;ave=(a+b+c)/3;mod=fmod(sum,3);牰湩晴尨总成绩=%5.1f,平均成绩=%5.1f,总成绩除3的余值=%3.1f\n,sum,ave,mod);}⑶已知数据,按输出结果的要求编写输出程序如下:main(){int a=1,b=2,c=3,g=12345;float d=7.2,e=-5.5,f=1.56;long h=123456;char i='o',j='p';printf(a=%d b=%d c=%d\n,a,b,c);printf(d=%f,e=%f,f=%f\n,d,e,f);printf(d+e=%4.2f e+f=%4.2f d+f=%5.3f\n,d+e,e+f,d+f); printf(g=} h=%ld\n,g,h);printf(i=%c or %d\nj=%c or %d\n,i,i,j,j);}习题五1、单项选择题。

⑴ C语言用__C__表示逻辑量为“假”⑵要求当A的值为奇数时,表达式的值为“真”;A的值为偶数时,表达式的值为“假”。

以下不满足要求的表达式是__D__。

⑶在if语句的嵌套中,else总是与__C__配对。

⑷下面对for循环概念描述正确的是__D__。

2、填空题。

⑴ switch后面的“表达式”,通常为_整_型或_字符_型表达式;每个case的常量表达式的值__不能相同__。

⑵如果不算goto语句构成的循环结构,那么C语言可以构建循环的语句一共有_3_种,分别是__for循环、while循环、do-while循环__。

相关主题