C语言练习题1-5及参考答案

上传人:仙*** 文档编号:88795326 上传时间:2022-05-11 格式:DOC 页数:31 大小:116KB
收藏 版权申诉 举报 下载
C语言练习题1-5及参考答案_第1页
第1页 / 共31页
C语言练习题1-5及参考答案_第2页
第2页 / 共31页
C语言练习题1-5及参考答案_第3页
第3页 / 共31页
资源描述:

《C语言练习题1-5及参考答案》由会员分享,可在线阅读,更多相关《C语言练习题1-5及参考答案(31页珍藏版)》请在装配图网上搜索。

1、练习题1与参考答案1. 单项选择题1以下并非C语言的特点的是.A. C语言简洁和紧凑B. 能够编制出功能复杂的程序C. C语言可以直接对硬件进行操作D. C语言移植性好答B2一个C程序的执行是从.A. main函数开始,直到main函数结束B. 第一个函数开始,直到最后一个函数结束C. 第一个语句开始,直到最后一个语句结束D. main函数开始,直到最后一个函数结束答A3在C程序中,main的位置.A. 必须作为第一个函数B. 必须作为最后一个函数C. 可以任意D. 必须放在它所调用的函数之后答C4一个C程序是由.A. 一个主程序和若干子程序组成B. 一个或多个函数组成C. 若干过程组成D.

2、若干子程序组成答B5下列说法正确的是.A. 在执行C程序时不是从main函数开始的B. C程序书写格式限制严格,一行内必须写一个语句C. C程序书写格式比较自由,一个语句可以分行写在多行上D. C程序书写格式严格要求一行内必须写一个语句,并要求行号答C2. 填空题1一个C源程序至少有 个main函数和 个其他函数.答一 若干2任何C语句必须以结束.答分号3C语言源程序的基本单位是.答函数4C编译程序的功能是.答将C源程序编译成目标代码31 / 31练习题2与参考答案1. 单项选择题1以下字符串为标识符的是.A. _MY B. 2_2222 C. short D. LINE 5答A2下列符号可以

3、作为变量名的是.A. +a B. *p C. _DAY D. next day答C3设c是字符变量,则以下表达式正确的是.A. c=666 B. c=c C. c=c D. c=abcd答B423+m+3.6-123.45/b的结果是型数据.A. char B. double C. int D. long int答3.6和123.45均为double型,运算结果也是double型.本题答案为B.5若变量已正确赋值,以下符合C语言语法的表达式是.A. a=a+7; B. a=7+b+c,a+C. int D. a=a+7=c+b答选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗

4、号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式而非变量赋值是不正确的.本题答案为B.6整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是.A. x= B. x=y2?6:5C. x=9- D. x=y*答选项A的计算过程x=1+2=3,再计算x=x*2=6;选项B的计算过程y2为真,x=6;选项C的计算过程式中有两个-运算,最后y=1,x=9-1-1=7;选项D的计算过程x=y*=y*2=6.本题答案为C.7若定义int m=7,n=12;则能得到值为3的表达式是.A. n%= B. n%=C. n%=m-m%5 D. -答A、B、C、D选项

5、各表达式的值分别是0、2、2、3.本题答案为D.8以下程序的运行结果是.#include main int i=5,j=6,m=i+j; printf;A. 6,6,11 B. 5,6,11 C. 5,6,12 D. 6,6,12答m=i+j等价于m=+j.本题答案为A.9以下程序的运行结果是.#include void main double f=3.14159; int n; n=%3; printf;A. 1 B. 0 C. 2 D. 3答f+10=13.14159,=13,13%3=1.本题答案为A.10以下程序的运行结果是.#include void main int n,i=2,j

6、=4; n=; printf;A. 0 B. 1 C. 2 D. 3答+i返回3,j-返回4,两者不等,故n=0.本题答案为A.2. 填空题1表达式语句与表达式的不同是.答语句必须以分号结尾,而表达式结尾没有分号;语句可以出现在函数体中数据定义或声明语句后面的任何位置,而表达式只能出现在语句中规定的位置或表达式中嵌套出现.2在C语言中可以利用将一个表达式的值转换成指定的类型.答强制类型转换3写出完成下列功能的表达式: 如果变量c是大写字母,则将c转换成对应的小写,否则c的值不改变. 如果d是数字,则将d转换成相应的整数,否则d的值不改变. 返回两个整数x、y中较大者. 返回三个整数x、y和z中

7、最大者. 答 c=A & c ? c-A+a : c d=0 & d ? d-0 : d y ? x : y y ? z ? x : z : z ? y : z 或 y & xz ? x : z ? y : z4以下程序的运行结果是.#include #include main char s=abnrb; printf%d,%dn,sizeof,strlen;答字符串s由字符a、b、n、r、b等7个字符组成,故长度为7,但字符串本身有一个结束标志0.所以,s的长度为7,在内存中占用8个字节.输出为:8,7.5以下程序的运行结果是.#include main int a=2,b=4,c=6,x,

8、y; y=,; printf;答结果为y=6,x=6.6以下程序的运行结果是.#include main char a,b; a=a;b=b; a=a-32;b=b-32; printf;答A,B,65,667以下程序的运行结果是.#include main int i,j,x,y; i=5;j=7; x=+i;y=j+; printf;答执行x=+i后,i=6,x=6;执行y=j+后,j=8,y=7;所以输出为:6,8,6,7.8以下程序的运行结果是.#include main int a=1; char c=a; float f=2.0; printf; printf:%dn,c=4; p

9、rintf; printf:%dn,!=; printf:%dn,2?3:0?0:1; printf:%dn,=;答:1 a+2=3,c-100=-3,表达式结果=1真:1ac的结果是0假,f4的结果是0,表达式结果=1:1!a的结果是0,!f的结果是0,表达式结果=1:1!a&1的结果是0,!c|1的结果是1,表达式结果=1:0!a2的结果是0,2?3:0的结果是0,f!=1的结果是1,?0:1的结果是0,表达式结果=0:1表达式的结果是3,的结果是3 练习题3与参考答案1. 单项选择题1以下说法正确的是.A. 输入项可以为一个实型常量,如scanfB. 只有格式控制没有输入项也能进行正确输

10、入,如scanfC. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanfD. 当输入数据时,必须指明变量的地址,如scanf答D2若a为整型变量,则以下语句.a=-2L;printf;A. 赋值不合法 B. 输出值为-2C. 输出为不确定值 D. 输出值为2答B3若x和y均定义为int型,z定义为double型,以下scanf函数调用语句不合法的是.A. scanf; B. scanf;C. scanf; D. scanf;答scanf函数中没有精度控制.本题答案为D.4若a,b,c均定义为int型,要给它们输入数据,正确的输入语句是.A. read; B. scanf;C.

11、 scanf; D. scanf;答D 5若有定义和语句:int n=10;printf;其输出结果是.A. 输出10 B. 输出一空行 C. 没有输出 D. 编译不通过答D6若a是float型变量,b是unsigned型变量,以下输入语句中合法的是.A. scanf; B. scanf;C. scanf; D. scanf;答C7字母a的ASCII码为97,则下列语句的运行结果为.char a=a;a-;printf;A. b,c B. a-运算不合法,故有语法错C. 98,c D. 格式描述和输出项不匹配,输出无定值答C8若k1,k2,k3,k4均为int型变量,为了将整数10赋给k1和k

12、3,将整数20赋给k2和k4,则对应以下scanf函数调用语句的正确输入方式是.scanf;scanf;A. 1020B. 10 20C. 10,20D. 10 20102010 2010,2010,20答D9有如下程序,输入数据12345 678后,x的值是 ,y的值是 .#include main int x; float y; scanf; A. 12345 B. 123 C. 45 D.345答 B A10有如下程序,输入数据25,13,10后,正确的运行结果是.#include main int x,y,z; scanf; printf;A. x+y+z=48 B. x+y+z=35

13、C. x+y+z=38 D. 不确定值答输入的数据与scanf函数的格式不匹配.本题答案为D.11有如下程序,输入数据12 345后,x的值是 ,y的值是 .#include main int x; float y; scanf; A. 12 B. 123 C. 12345 D. 0 A. 12.000000 B. 345.000000 C. 12345.000000 D. 0.000000答 A B12有如下程序,输入数据9876543210后,程序的运行结果是.#include main int a; float b,c; scanf; printf;A. a=98,b=765,c=432

14、1 B. a=10,b=432,c=8765C. a=98,b=765.000000,c=4321.000000 D. a=98,b=765.0,c=4321.0答C13以下程序的运行结果是.#include main float a=3.1415; printf;A. |3.1415| B. | 3.0| C. | 3| D. | 3.|答C14以下程序的运行结果是.#include main float a=3.1415; printf;A. |000003| B. |3.1415| C. |00003.0| D. | 3|答A15以下程序的运行结果是.#include main floa

15、t a=3.1415; printf;A. |3 | B. |000003| C. |3.1415| D. |3.0 |答A 16以下程序的运行结果是.#include main int i=010,j=10; printf;A. 11.10 B. 9,10 C. 010,9 D. 10,9答B17以下程序的运行结果是.#include main int x=10,y=10; printf;A. 10,10 B. 9,9 C. 9,10 D. 10,9答D2. 填空题1以下程序的运行结果是.#include main float f=3.1415927; printf;答3.141593,3.

16、1416,3.1422以下程序的运行结果是.#include main float f=3.5; printf;答3.500000,3.53以下程序的运行结果是.#include main float f=31.41592; printf;答31.415920,3.141592e+0014以下程序的运行结果是.#include main int x=0177; printf;答127, 127, 177, 7f, 1275以下程序的运行结果是.#include main int x=0177; printf;答127,127 ,177 ,7f ,127 6以下程序的运行结果是.#include

17、 main char c=A+10; printf;答c=K7以下程序输入123456后,其运行结果是.#include main int a,b; scanf; printf;答a=12,b=3458以下程序输入ABC后,其运行结果是.#include main char c; scanf; printf;答c=A9以下程序输入100后,其运行结果是.#include main int n; scanf; printf;答n=6410以下程序输入x=1.23,y=50后,其运行结果是.#include main float x,y; scanf; printf;答x= 1.23,y= 50.

18、0011执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82,c1=A,c2=a正确的数据输入形式是.#include main int a,b; float x,y; char c1,c2; scanf; scanf; scanf; printf;答a=3 b=7x=8.5 y=71.82c1=A c2=a3. 编程题1编写一个程序,求出任一输入字符的ASCII码.解程序如下:/*文件名:exci3_1.cpp*/ VC+6.0#include main char c; printf; scanf; printf;2编写一个程序,输入一个字符,依次输出其

19、前导字符、该字符和后续字符.解程序如下:/*文件名:exci3_2.cpp*/ VC+6.0#include #define pi 3.14159main char c; printf; scanf; printf;3编写一个程序,输出任意一个十进制整数对应的八进制数和十六进制数.解直接使用printf的格式符输出八进制数和十六进制数.程序如下:/*文件名:exci3_3.cpp*/ VC+6.0#include main int i; printf; scanf; printf%d%on,i,i; printf%d%xnn,i,i;4编写一个程序,从键盘输入圆锥体的半径r和高度h,计算其体积

20、.解圆锥体体积的计算公式为:v=rrh/3程序如下:/*文件名:exci3_4.cpp*/ VC+6.0#include main float r,h,pi=3.1415,v; printf; scanf; v=pi*r*r*h/3.0; printf;练习题4与参考答案1. 单项选择题1if后面的逻辑表达式之值.A. 只能是0或1B. 只能是正整数或负整数C. 只能是整型或字符型数据D. 可以是任何类型的数据答A 2为了避免嵌套的if-else语句的二义性,C语言规定else总是与组成配对关系.A. 缩排位置相同的ifB. 在其之前未配对的ifC. 在其之前最近的未配对的ifD. 同一行上的

21、if答C 3选择出合法的if语句设int x,a,b,c;.A. if x+;B. if a= x+;C. if ab x+;D. if b x+;答选项B、C、D中的比较运算符不正确,在选项A中,a=b返回b,若b为0或空字符,则为假,否则为真.本题答案为A.4以下不正确的if语句是.A. if y;B. if & x+=y;C. if scanf;else scanf;D. if x x+;y-;答B.应改为if x+=y;5若定义float x;int a, b;,则正确的switch语句是.A. switch case 1.0:printf; case 2.0:printf; B. s

22、witch case 1.2:printf; case 3:printf; C. switch case 1:printf*n; case 1+2:printf D. switch case 1:printf; case 2:printf; 答D 6执行下列程序,输入为1的运行结果是,输入为3的运行结果是.#include main int k; scanf; switch case 1:printf; break; case 2: printf; case 3: printf; break; case 4: printf; default:printf; A. 1 B. 2 C. 2 3 4

23、 5 D. 1 2 3 4 A. 3 B. 4 C. 3 4 D. 4 5答 A A 7执行下列程序,输入为1的运行结果是,输入为3的运行结果是.#include main int k; scanf; switch case 1: printf; case 2: printf; case 3: printf; case 4: printf; break; default:printf; A. 1 B. 2 C. 2 3 4 5 D. 1 2 3 4 A. 3 B. 4 C. 3 4 D. 4 5答 D C 8以下程序的运行结果是.#include main int x=1,y=0,a=0,b=

24、0; switch case 1:switch case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; printf;A. a=2,b=1B. a=1,b=1C. a=1,b=0D. a=2,b=2答A2. 填空题1有定义int x;则x是偶数的表达式是.答x % 2 = 02有定义int a,b;则a是b的整数倍的表达式是.答a % b = 03有定义int a,b,c;它们表示三个边长,则能够构成一个直角三角形的条件是.答a*a+b*b=c*c | a*a+c*c=b*b | b*b+c*c=a*a4有定义int a,b,c;它们表示三个

25、边长,则能够构成一个三角形的条件是.答a+bc & a+cb & b+c5以下程序的运行结果是.#include mainint k=2;switch case 1:printf;break;case 2:printf;case 3:printf;break;case 4:printf;default:printf;答k=2,执行case 2分支,k+返回2,此时k=3,输出2,后跟一空格.由于没有break语句,继续执行case 3分支,k+返回3,此时k=4,输出3,由于有break语句,退出switch语句.所以输出为:2 3.6以下程序的运行结果是.#include mainint s

26、=1,t=1,a=5,b=2;if 0s+;if bt+=s;else if t=5;elset=2*s;printf;答a0,s变为2.ab为真,t=t+s=3.所以输出为:s=2,t=3.7以下程序的运行结果是.#include VC+6.0mainint k=2;switchcase 1:printf;case 2:printf;case 3:printf;case 4:printf; break;default:printf;printf;答k=2,执行case 2分支,k+返回2,此时k=3,屏幕输出2,后跟一空格.由于没有break语句,继续执行case 3分支,k+返回3,此时k

27、=4,屏幕输出3,由于没有break语句,继续执行case 4分支,k+返回4,此时k=5,屏幕输出4,由于有break语句,退出switch语句.所以输出为:2 3 4.8以下程序的运行结果是.#include mainint x=0,y=2,z=3;switchcase 0:switchcase 1:printf;break;case 2:printf;break;case 1:switchcase 1:printf;case 2:printf;break;default:printf;答x=0,执行外层switch语句的case 0部分,y=2为真,则执行里层switch语句的case

28、1部分,输出*,遇到break语句,退出里层的switch语句,由于里层的switch语句之后没有break语句,所以转而执行外层switch语句的case 1部分,这时z=3,故执行里层switch语句的default部分,输出#,整个程序执行完毕.所以输出为:*#.3. 编程题1编写一个程序判断用户输入的字符是数字字符、字母字符还是其他字符.解在0到9之间的为数字字符,在a到z或A到Z之间的为字母字符;否则为其他字符.程序如下:/*文件名:exci4_1.cpp*/ VC+6.0#include mainchar c;printf;scanf;if =0 & cprintf;else if

29、 =a & c | =A & cprintf;elseprintf;2假设今天是星期日,编写一个程序,求123456天后是星期几.解星期是7天一个轮回,由于今天是星期日,所以123456除以7的余数即为星期几.程序如下:/*文件名:exci4_2.cpp*/ VC+6.0#include mainint n=123456;n=n%7;printf;switchcase 0:printf; break;case 1:printf; break;case 2:printf; break;case 3:printf; break;case 4:printf; break;case 5:printf;

30、 break;case 6:printf; break;printf;3编写一个程序,输入年号和月份,判断该年是否为闰年,并根据给出的月份判断是什么季节和该月有多少天?闰年的条件是年号能被4整除但不能被100整除,或者能被400整除.解直接根据闰年的定义求解,如果是闰年,2月份为29天;否则为28天,其他月份相同.规定35月为春季,68月为夏季,911月为秋季,1、2和12月为冬季.本题程序如下:/*文件名:exci4_3.cpp*/ VC+6.0#include mainint y,m,leap,season,days;printf;scanf;if | leap=1;elseleap=0;

31、if =3 & mseason=1;else if =6 & mseason=2;else if =9 & mseason=3;elseseason=4;switch case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;case 4:case 6:case 9:case 11:days=30;break;case 2:if days=29; elsedays=28;printf%d年%s闰年n,y,; printf;switchcase 1:printf;break;case 2:printf;break;case

32、3:printf;break;case 4:printf;break;printf;4报数游戏.A、B、C、D、E、F、G、H共8人站成一排,按图4.1所示的方法从1开始报数.问谁先报到123456?ABCDEFGH1 2 3 4 5 6 7 81413121110 915161718192021222827262524232930图4.1 游戏报数过程解从图4.1中看到1到14是一个来回,再重复这一过程,所以只需对123456除以14的余数加以判断即可.程序如下:/*文件名:exci4_4.cpp*/ VC+6.0#include mainint n=123456,i;i=n%14;prin

33、tf;switchcase 1:printf;break;case 2:case 14:printf;break;case 3:case 13:printf;break;case 4:case 12:printf;break;case 5:case 11:printf;break;case 6:case 10:printf;break;case 7:case 9:printf;break;case 8:printf;break;printf;程序的运行结果:报数到123456的人是D5编写一个程序,求ax2+bx+c=0方程的根.解先计算d=b2-4ac,再根据d是大于0、等于0还是小于0分别

34、求根.程序如下:/*文件名:exci4_5.cpp*/ VC+6.0#include #include int funcfloat d;d=b*b-4*a*c;if 0*x1=-b+sqrt/;*x2=-b-sqrt/;return 2;else if *x1=/;return 1;else return 0;mainfloat a,b,c,x1,x2,n;printf;scanf;n=func;if printf;printf;printf;else if printf;printf;else printf;4.3 上机实验4与参考答案实验内容假定向国外邮寄包裹的收费如下计算:首先,包裹重量

35、四舍五入到最近的15g的倍数,然后按表4.1收费.编写一个程序根据用户输入的包裹重量和里程计算邮费.表4.1 包裹邮费计算表重量收费15530945126014每足1000 km加1元75以上15每足1000 km加2元编程要求在程序中使用switch语句进行判断计算.解题思路和程序代码对于用户输入的重量w,采用如下公式四舍五入到最近的15g的倍数:x=/15*15当w小于8时,x=0,但邮费应为5;当x=60或x=60时,还应考虑里程费用.因此采用一个switch语句进行判定计算.程序如下:/*文件名:prog4.cpp*/ VC+6.0#include main int p,w,f,x;

36、printf; scanf; x=/15*15; switch case 0: f=5; break; case 15: f=5; break; case 30: f=9; break; case 45: f=12; break; case 60: f=14+*1; break; default: f=15+*2; break; printf;程序运行结果:重量,里程:80,2300邮费:19元练习题5与参考答案1. 单项选择题1语句while ;中的条件!e等价于.A. e=0B. e!=1C. e!=0D. e答!e等价于!,即e=0.本题答案为A.2下面有关for循环的正确描述是.A.

37、for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判定表达式C. 在for循环中,不能用break语句跳出循环体D. for循环体语句中,可以包含多条语句,但要用花括号括起来答D3C语言中.A. 不能使用do-while语句构成的循环B. do-while语句构成的循环必须用break语句才能退出C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环答D4C语言中while和do-while循环的主要区别是.A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句答A5以下程序段.int x=-1;do x=x*x; while ;A. 是死循环B. 循环执行二次C. 循环执行一次D. 有语法错误答C6下列语句段中不是死循环的是_.A. i=100; while i=i%100+1; if break; B. for sum=sum+1;C. k=0; do +k;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!