《C语言程序设计案例教程》练习题答案
- 格式:docx
- 大小:43.75 KB
- 文档页数:31
第1章 C语言概述训练习题参考答案一、选择题1.C2.C3.C4.B5.B6.D7.B8.C9.B 10.A11.C 12.A 13.A二、填空题1、Noname.c2、 main()函数3、/*和*/4、scanf()和printf()5、源文件.c 目标文件.obj 可执行文件.exe6、分号;7、语句8、ALT+F59、编译连接10、函数首部和函数体第二章数据的表现形式训练题参考答案一、选择题1.D) 2.D) 3.D) 4.A) 5.B)6.B) 7.B) 8.D) 9.B) 10.B)11.A) 12.C) 13.A) 14.A) 15.D)16.C) 17.A) 18.D) 19.D) 20.C) 21.B) 22.C)二、填空题1、单引号 1 双引号由0个或若干个字符字符串结束标志‘\0’2、0x4b 01130165 11761 0x3d3、324、7 85、自动转换强制转换6、6、37、%d %u %f %e %c %s8、字母数字下划线9、4 810、65 B11单引号双引号12、优先级结合性13、256 -214、3315、016、-117、6553518、319、FFCC20、-128~127 正整数负整数第3章运算符与表达式训练习题参考答案一、选择题1.C2.A3.B4.A5.B6.B7.B8.A9.D 10. D 11.A 12.C 13.C 14.C 15.C 16.C 17.A 18.B 19.D 20.C 21.A 22.A 23.D 24.A 25.C 26.B 27.B 28.A 29.C 30.A31.A 32.D 33.D 34.D 35.A 36.A 37.D二、填空题1. a=4,i=52. p=15,q=24,i=8,j=83. a=-6i=6b=-5j=64. 123535145. a=2,b=2,k=26. a=4,b=17. 1008. 19. a=97b=98c=97d=9810. 211.10 612.(x>20&&x<30)||x<-10013. 114. 1015. -1616. 语法错误17. 118. 019. 0 020. 36 1E 01111021. 5第4章数据的输入和输出训练习题参考答案一、选择题1、C2、A3、A4、B5、C6、C7、B8、A9、D 10、B11、B 12、B 13、D 14、A 15、B16、D 17、C 18、A 19、D 20、C21、C 22、B 23、C 24、A 25、C26、A 27、B 28、A 29、D 30、C 31、C二、填空题1、 a=1,b=22、 5.0,4,c=33、 04、 35、 2.16、 6.67、 x+=1;8、 2619、 1610、 -311、 i=10,j=2012、 b13、 6第5章程序流程的控制训练习题参考答案一、选择题1、D2、A3、A4、B5、C6、D7、B8、C9、B 10、B11、A 12、C 13、B 14、B 15、D16、D 17、A 18、B 19、A 20、D21、A 22、A 23、B 24、B 25、C 26、C二、填空题1、 b = i + 12、 i<10i % 3 != 03、 184、 1.0/(i*i)5、 06、 527、 89218、 x9、 510、 1711、 X12、 /i 或 *1.0/i 或 *1/i *(1.0/i) 或 /(double)I13、 1 3 214、 615、 -ffun(10)三、编程题1. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。
C语言程序设计案例教程(含实验)设计性实验的程序参考答案实验项目一 C程序的编辑、编译、连接和运行题目:编写程序,要求屏幕上显示如下信息:************************ This is a C program .************************程序:#include <stdio.h>void main(){printf(“***********************”);printf(“* This is a C program .*”);printf(“***********************”);}实验项目二数据类型、运算符、表达式题目(1)程序填空:输入1 个实数x,计算并输出其平方根(保留1 位小数)。
填空1.double x,root;2.root=sqrt(x);(2)输入一个大写英文字母,输出相应的小写字母。
填空1.ch=ch+32;实验项目三顺序结构程序设计题目(1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。
程序代码:#include <stdio.h>#include <mach.h>main(){float a,b,c,s,arer;printf(" 请输入三角形的三个边a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形的边为a=%7.2f, b=57.2f, c=%7.2f\n",a,b,c);printf("三角形的面积area=%7.2\n ",area);(2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
任务一C程序设计概述一,填空题1.用C语言编写的程序称为源程序。
2.C语言源程序的基本单位是若干函数。
3. 一个C语言源程序只能包含一个主函数。
4. 在C语言中,输入操作是由库函数scanf()完成的,输出操作是由库函数printf()完成的。
5. C语言源程序文件的扩展名是.C,经过编译后,生成文件的扩展名是.obg,生成文件的扩展名是.exe。
6. C语言注释所用到的符号是/* */和// //。
二,选择题1. C语言规定在源程序中,主函数的位置(C)A.必须在开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后2.下列程序错在(C)处A.main()B.float x,yC.a=3:b=8D.a=b+c3.以下说法正确的是(D)A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用一个定义的函数必须在主函数中定义C.C语言程序中的主函数必须在程序的开始部分D.C语言程序总是从主函数开始执行4.以下叙述正确的是(B)A.在C程序中,main函数必须位于程序的最前面B.C语言本身没有输入输出函数C.C程序的每行只能写一条语句D.在对每一个C程序进行编译的过程中,可发现注释中的拼写错误5.C语言程序的语句如果一行写不下时,可以(D)A.用分号换行B.在任意空格处换行C.用逗号换行D.用回车符换行任务二C语言程序设计的基本概念一.选择题1.下面不是C语言中整型常量的是(C)。
A. 03B. 12C. 059D. 0xA82.下面程序段的输出结果是(B)。
int i=65535;printf(“%d”,i);A. 65535B. -1C. 1D. 03.以下不能用来表示整形常熟的进制形式为( A )。
A. 二进制B. 八进制C. 十进制D. 十六进制4.下列程序段的输出结果是(D )。
Int a=1,b=1,c=1;a=a+++b+++c;printf(“%d”,a);A. 6B. 5C. 4D. 35.C语言中的预算对象必须是整形的运算符是(C)。
《C语言程序设计教程》习题参考答案11.5请参照本章例题,编写一个C程序,输出以下信息:************Very Goodj!************解:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}1.6编写一个程序,输入a b c三个值,输出其中最大者。
解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)< p="">max=b;if(max<c)< p="">max=c;printf("最大数为:%d",max);}第三章3.3 请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。
字符串常量是由0个或若干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'. 3.6写出以下程序的运行结果:#includevoid main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre". 请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并输出.main(){char c1="C",c2="h",c3="i",c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}3.8例3.6能否改成如下:#includevoid main(){int c1,c2;(原为char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果:#includevoid main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,10第4章4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得到以下的输出格式和结果,请写出程序要求输出的结果如下:a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}4.5请写出下面程序的输出结果.结果:575 767.856400,-789.12396267.856400 ,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a', 问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x=8.5 y=71.82c1=A c2=a说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 20Aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。
4.3 课后习题4.3.1 项目练习一.练习目的1.进一步巩固选择结构程序设计语句的使用2.进一步巩固break语句的使用方法3.提高编程和调试程序的能力二.练习内容1.接受用户输入的三种商品的价格。
如果购买的三种商品中至少有一种商品的价格大于50 或者三种商品的总额大于100,则折扣率为15%,否则折扣率为0,计算并显示用户应付的钱数。
#include "stdio.h"main(){float a,b,c,price;scanf("%f%f%f",&a,&b,&c);price=a+b+c;if((a>50)||(b>50)||(c>50)||(price>100))price=price*0.85;printf("%.2f",price);getch();}2.判断所输入的一个年份是否为闰年。
#include "stdio.h"main(){int year,flag=0;scanf("%d",&year);if((year%4==0)&&(year%100!=0)||(year%400==0))flag=1;if(flag==1)printf("%d年是闰年!",year);elseprintf("%d年不是闰年!",year);getch();}3.利用if结构编写程序,输入x值,求解以下分段函数的y值。
当x<1时,y=x+1;当1≤x<10,y=2x+5;当x≥10时,y=x2+8。
#include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1) y=x+1;else if(x>=10) y=x*x+8;else y=2*x+5;printf("%d",y);getch();}4.编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。
《C语言程序设计教程》习题参考答案C语言程序设计教程习题参考答案1. 基本概念与数据类型1.1 什么是C语言程序设计?C语言程序设计是一种计算机编程语言,它是一种结构化,通用的程序设计语言。
1.2 C语言的主要特点有哪些?C语言具有代码简洁、执行速度快、可移植性好等特点。
1.3 C语言的数据类型有哪些?请简要介绍。
C语言的数据类型包括基本数据类型和派生数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型;派生数据类型包括数组、结构体、枚举和指针等。
2. 变量与运算符2.1 什么是变量?怎样定义和使用变量?变量是计算机内存中的一块存储空间,用于存储数据。
在C语言中,变量需要先定义后使用。
定义变量使用关键字"int"、"float"等,然后指定变量名,并可选地赋初值。
2.2 C语言中的运算符有哪些?请简要介绍。
C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符等。
算术运算符用于基本的数学运算;关系运算符用于比较两个变量的关系;逻辑运算符用于逻辑判断;赋值运算符用于将一个值赋给一个变量;位运算符用于对二进制数进行逐位操作。
3. 控制语句3.1 C语言中的条件语句有哪些?请简要介绍。
C语言中的条件语句包括if语句、switch语句等。
if语句用于根据条件执行不同的代码块;switch语句用于根据不同的表达式值选择不同的分支。
3.2 C语言中的循环语句有哪些?请简要介绍。
C语言中的循环语句包括while循环、do-while循环和for循环等。
while循环用于根据条件重复执行一段代码;do-while循环和while循环类似,但它会首先执行一次代码;for循环用于固定次数的循环。
4. 函数与数组4.1 什么是函数?怎样定义和调用函数?函数是一段完成特定任务的代码块,它可以接收输入参数,并返回一个值。
在C语言中,可以使用关键字"void"定义无返回值的函数,使用其他数据类型定义有返回值的函数。
P65 2.编写程序,对于给对的一个百分制成绩,输出相应的五分制成绩,设90分以上为“A”,80~89分以上为“B”,70~79分以上为“C”,60~69分以上为“D”60分以下位“E”。
switch#include <stdio.h>main(){float score;int mark;scanf("%f",&score); mark=score/10;switch(mark){case 10:case 9:printf("A\n");break; case 8:printf("B\n");break; case 7:printf("C\n");break; case 6:printf("D\n");break; case 5:case 4:case 3:case 2:case 1:case 0:printf("E\n");break; default:printf("Enter error!\n"); getch();}}IF#include <stdio.h>main(){float score;scanf("%f",&score);if(score>=90)printf("A\n");if(score>=80&&score<90)printf("B\n"); if(score>=70&&score<80)printf("C\n"); if(score>=60&&score<70)printf("D\n"); if(score<60)printf("E\n");getch();}3.每个苹果0.8元,第一天买了2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果达到不超过100的最大值,编写程序求每天平均花多少钱。
《C语言程序设计教程》习题参考答案C语言程序设计教程习题参考答案一、基本概念和语法要点1. 整型变量x的声明和初始化语句为:int x = 10;2. C语言的标识符命名规则:- 只能由字母、数字和下划线组成;- 必须以字母或下划线开头;- 大小写敏感。
3. 常量的分类:- 整型常量;- 实型常量;- 字符常量;- 字符串常量;- 枚举常量;- 特殊常量。
4. 基本输入输出函数的使用:- printf():输出格式化字符串;- scanf():从标准输入读取格式化数据。
5. C语言中的运算符:- 算术运算符:+、-、*、/、%;- 关系运算符:==、!=、>、<、>=、<=; - 逻辑运算符:&&、||、!;- 位运算符:&、|、^、~、<<、>>。
二、流程控制语句1. if语句的基本结构:```if (条件表达式){// 如果条件成立执行的代码}```2. switch语句的使用:```switch (表达式)case 值1:// 执行的代码块break;case 值2:// 执行的代码块break;default:// 执行的代码块break;}```3. while循环语句的基本结构: ```while (条件表达式){// 循环执行的代码}4. for循环语句的使用:```for (初始化表达式; 条件表达式; 更新表达式) {// 循环执行的代码}```三、数组与字符串1. 数组的声明和初始化语句:```int arr[5] = {1, 2, 3, 4, 5};```2. 字符串的声明和初始化语句:```char str[20] = "Hello, World!";```3. 字符串的输入输出函数:- gets():从标准输入读取字符串; - puts():将字符串输出到标准输出。
4. 字符串处理函数:- strlen():计算字符串长度;- strcat():拼接字符串;- strcpy():复制字符串;- strcmp():比较两个字符串。
4.2练习题一、选择题1.D2.B3.A4.B和D5.C6.A7.B二、填空题1.//或/* */2.主或main3.函数首部和函数体4.编译和连接5.公号5.2练习题一、选择题1.A2.D3.B4.B5.C6.C7.D8.A9.B10.B11.D12.B13.A或B14.C15.B17.D18.D19.C20.D21.B22.A23.D24.C25.C26.B27.C28.D29.A30.B二、填空题1.102,102.#define 宏名字符串3.14.n=15.-46.a=1,b= ,c=27.c=A8.n1=%d\nn2=%d9.a+b>c&&a+c>b&&b+c>a10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.712.013.1111000014.8,46.2练习题一、选择题1.A2.C3.D4.C5.A7.A8.D9.B10.C11.A12.A13.C14.B15.正确答案为:12345678二、填空题1.102.y=1 x%i==03.屏幕中间输出一个由星号组成的菱形4.15.136.(cx=getchar())!=-1 front=cx; 7.m%n8.49.*p px=&x py=&y三、读程序,写结果1.-12.3,1,-1,3.a=16,y=604.x=12,y=45.597.2练习题一、选择题1.B2.C3.C4.A5.D6.C8.D9.C10.D11.D12.D13.A14.B15.C16.B17.B18.A19.A20.D21.B22.D23.C24.D25.D26.C二、填空题1.‘a’02.a[k] a[k] a[k]3.0 64.A B C D EA5.1,66.k=p;7.i<j8.189.4,some string * test 10.you&me三、读程序,写结果1.5 4 8 2 02.10 24 15 6 3.love china! H w l 4.66 66 555.Front一、选择题1. A2. A3. B4. B5. B6. A7. D8. C9. A10. A11. A12. B13. B14. A15. B16. B17. C二、填空题1.122.Itis3.fun(n-1)*n fun(k)4.s[i]-t[i]5.n%m i-1 x[d]6.x=n x%10 x7.m=f(a,4)+f(b,4)-f(a+b,3)8.a=1,b=1三、读程序,写结果1.s=72.s=373.bij12一、选择题1. B2. C3. B4. D5. B6. A7. B8. D9. D10. B11. D12. A13. B14. C15. C16. C17. A18. D19. B20. D二、填空题1.b->day (*b).day2.DDBBCC3.zhang 170.000000wang 150.0000004.995.max=i min=i stud[max].name,stud[max].score stud[min].name,stud[min].score6.&r 1 feof(fp) break7.BBB AAA 1238.rewind三、读程序,写结果1.2002,shangxian2.32。
习题5一选择题1.执行下面的程序段后,变量k中的值为int k=3, s[2];s[0]=k; k=s[1]*10;A) 不定值B) 33 C) 30 D) 102.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是void main(){char s[100];int c, i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s \n",c,i,s);}A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456 3.有如下程序void main0{int n[5]={0,0,0},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);}该程序的输出结果是A) 不确定的值B) 2 C) 1 D) 04.有如下程序void main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<i;j++) s+=a[i][j]printf("%d\n",s);}该程序的输出结果是A) 14 B) 15 C) 16 D) 17 5.以下程序的输出结果是void main(){int i, x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}A) 1,5,9 B) 1,4,7 C) 3,5,7 D) 3,6,96.以下程序的输出结果是main(){ char w[][10]={ "ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",w[k]);}A) ABCD B) ABCD C) EFG D) EFGHFGH EFG JK IJKLKL IJ OM7.下面语句中不正确的是A) static int a[5] = {1 , 2 , 3 , 4 , 5 }; B) static int a[5] = {1 , 2 , 3 };C) static int a[ ] = {0 , 0 , 0 , 0 , 0 }; D) static int a[5] = {0*5};8.若有说明:int a[ ][4] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } , 则数组第一维的大小为A)2 B)3 C)4 D)不确定的值9.若定义static int a[2][2] = {1,2,3,4},则a数组的各数组元素分别为A) a[0][0] = 1 , a[0][1] = 2 , a[1][0] = 3 , a[1][1] = 4B) a[0][0] = 1 , a[0][1] = 3 , a[1][0] = 2 , a[1][1] = 4C) a[0][0] = 4 , a[0][1] = 3 , a[1][0] = 2 , a[1][1] = 1D) a[0][0] = 4 , a[0][1] = 2 , a[1][0] = 3 , a[1][1] = 110.下列语句中,不正确的是A) static int a[2][3] = {1 , 2 , 3 , 4 , 5 , 6};B) static int a[2][3] = {{1}, { 4 , 5}};C) static int a[ ][3] = {{1}, {4}};D) static int a[ ][ ] = {{1 , 2 , 3 }, {4 , 5 , 6}};二填空题(1) 设有数组定义: char array [ ]="China"; 则数组array所占的空间为。
C语言程序设计实例教程第2版习题答案本书是关于C语言程序设计实例教程的第二版,旨在通过提供丰富多样的习题和答案,帮助读者更好地理解和掌握C语言程序设计的基础知识和技巧。
本文将为您提供习题答案的详细解析,以帮助您更好地学习和巩固所学的知识。
1. C语言程序设计基础习题答案1.1 习题1题目描述:编写一个程序,求解并输出两个整数相加的结果。
解析:可以使用C语言中的加法运算符进行两个整数相加的计算。
具体实现代码如下:```c#include <stdio.h>int main() {int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);int sum = a + b;printf("两个整数的和为:%d\n", sum);return 0;}```1.2 习题2题目描述:编写一个程序,求解并输出一个整数的平方。
解析:可以使用C语言中的乘法运算符进行整数的平方计算。
具体实现代码如下:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);int square = num * num;printf("整数的平方为:%d\n", square);return 0;}```2. C语言程序设计进阶习题答案2.1 习题3题目描述:编写一个程序,求解并输出一个整数的阶乘。
解析:可以使用循环结构来计算一个整数的阶乘,具体实现代码如下:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);int factorial = 1;for (int i = 1; i <= num; i++) {factorial *= i;}printf("整数的阶乘为:%d\n", factorial);return 0;}```2.2 习题4题目描述:编写一个程序,求解并输出一个正整数的所有因子。
练习1一、选择题1、一个C程序是由(B)。
A.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成解析:C语言称为函数式语言,其程序是由至少一个主函数main,和其他更多的函数组成,答案选B;2、一个C程序的执行是从( A )。
A.main函数开始,直到main函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main函数开始,直到最后一个函数结束解析:C语言执行都是从主函数main函数开始,不论main函数放置的位置,答案选A;3、C语言语句的结束符是(B)。
A.回车符B.分号C.句号D.逗号解析:C语言语句是以分号结束,答案选B;4、下面标识符中( D )不是C语言的关键字。
A.char B.goto C.case D.include解析:char 声明字符型变量关键字,case 为switch结构中开关语句分支关键字,goto为无条件跳转语句关键字,在C语言中include不属于关键字,属于预处理命令,故答案选D;5、以下说法正确的是(A)A.C程序的注释可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。
B.C程序的注释只能是一行。
C.C程序的注释不能是中文文字信息。
D.C程序的注释中存在的错误会被编译器检查出来。
解析:在C程序中注释只是起到增加程序的可读性,编译器并不会对注释进行检查,且C程序中存在多行注释。
故答案选A6、以下说法正确的是(D)A.C程序中的所有标识符都必须小写B.C程序中关键字必须小写,其他标识符不区分大小写C.C程序中所有标识符都不区分大小写D.C程序中关键字必须小写,其他标识符区分大小写。
解析:C程序中的关键字均是小写定义的,且标识符定义可以使用大写和小写,但是严格区分大小写;故答案选D。
7、设x、y均为float型变量,则以下不合法的赋值语句是(B)A.++x ; B.y=(x%2)/10 ; C.x*=y+8; D.x=y=0 ;解析:运算符%要求两端的操作数必须为整型,而在答案B中%号两端的操作数为x和2,x为实型,所以是错误的。
习题1一、选择题1-6【答案】B A D D B D二、填空题1.【答案】12.【答案】3,E3・【答案】31,37,1匚314.【答案】0三、判断题1-5【答案】X VXX V一、选择题I-5【答案】CDDBD6-10【答案】AABBBII-15【答案】DDDDB16-19【答案】ABCD二、填空题1.【答案】・】2.【答案】103・【答案】*♦2**4.【答案】5 4 65.【答案】*W*#S6.【答案】67.【答案】(k%3=0!!k%7=0)8.【答案】min>=x9・【答案】5432110.【答案】625 4911・【答案】1,112.【答案】2,2,113.【答案】414.【答案】015.【答案】0三、判断题1-7【答案】J 7XX VXX习题3一、选择题I-5【善案】DCBAD6-10【答案】A B B B BII-12【答案】CD二、填空题1.【答案】152.【答案】43・【答案】2,5,1 23,-24.【答案】输出“水仙花"数三、判断题1-6【答案】X VX VX 7习题4一、选择题I-5【答案】CBBBD6-10【答案】CACBDII-15【答案】ACBDB16-17【答案】BB二、填空题1.【答案】CDABC2.【答案】Happy3・【答案】scanK M%d,,,&a[i++J);4.【答案】j=j+2 或j+=2 str[i]>strg]5.【答案】0 10 20 30 40 50 60 70X0 906.【答案】107.【答案】Ills8.【答案】XYZA9.【答案】3三、判断题1-4【答案】XXXV习题5一、选择题1-5【答案】D D A B D6-10【答案】CCCCDIM5【答案】C C C B A16-19【答案】AABB二、填空题1.【答案】62.【答案】goodgood3・【答案】GFEDCBA4.【答案】*p>*s三、判断题1-5【答案】X VX X习题6一、选择题I-5【答案】BBCD A6-10【答案】DBCDAII-13【答案】BCC二、填空题1.【答案】struct data*2.【答案】datal.nLim=!5;3.【答案】344.【答案】0 3 50 515.【答案】返回f链表中垠人結点的指针6.【答案】(struct list*)malloc(sizcof(struct list))return h三、判断题1-5【答案】X VXXX习题7一、选择题1-5【答案】CDABC6-8【答案】BCD二、填空题1.【答案】32.【答案】Ripen3・【答案】20 304.【答案】hello, new world5.【答案】函数lbpen()调用格式有误三、判断题1-5【答案】XVXXXVVV附赠考试最后编程题答案:1.圆柱体积# include<stdio.h>#define PI 3.14Main()float r,h,s; printf(/z input:r h\n〃);scanf(“%f%f;&r,&h);s=r*r*PI*h;printf("%f〃,s); getch()}2.2+2+3+~~~~+100(用while)# include<stdio.h> main() { int a=0,b=l; while(b<=100) { a=a+b; b++;} printf(“%d",a); getch() }。
C++程序设计案例教程部分习题答案习题一1.运行结果:enter i j:9 8 (从键盘输入9和8)i=9,j=8i+j=17i-j=1i*j=722.运行结果:56 34(从键盘输入)max(56,34)=563.错误:(1)没有包含头文件;(2)main()函数没有返回值4.错误:(1)缺少语句:using namespace std; (2) main()函数没有返回值;(3)变量a没有声明;(4)语句:cout<<"b=<<b<<endl";严格来说应该为:cout<<"b="<<b<<endl;5.错误:(1)缺少语句:using namespace std; (2) main()函数应该包含return语句;(3)COUT不应该大写;(4)变量j没有初始化6.运行结果:您好!在哪儿呢?在沈阳.一会儿见!习题二一、程序阅读1.运行结果:Enter a b:15 8(从键盘输入15和8)d=-72.运行结果:A=8CH+2=mD-5.8=2.73.运行结果:0,11,0注意此题书中有错误:将最后一行语句改为:return 0; 4.运行结果:325.运行结果:3,746.运行结果:13898$7.运行结果:9878.运行结果:79111315ok!9.运行结果:7531-110.运行结果:10二、编程题1.程序如下:#include<iostream>using namespace std;int main(){double a,b,c,d,e,sum,avg;cin>>a>>b>>c>>d>>e;sum=a+b+c+d+e;avg=sum/5;cout<<"sum="<<sum<<endl;cout<<"avg="<<avg<<endl;return 0;}2.程序如下:#include<iostream>using namespace std;int main(){int a,b,x,y;cin>>a>>b;x=(a+b)*(a+b);y=a*a+2*a*b+b*b;if (x=y) cout<<"yes"<<endl;else cout<<"no"<<endl;return 0;}3.程序如下:#include <iostream>using namespace std;int main(){char a[100], *p;cout<<"Input: ";cin>>a;cout<<"Output: ";for(p = strlen(a) + a - 1; p >= a; --p)putchar(*p);cout<<endl;return 0;}4.程序如下:#include<iostream>using namespace std;int main(){int n,sum=0;for (n=1;n<=100;n=n+2)sum=sum+n;cout<<"sum="<<sum<<endl;return 0;}5.程序如下:#include<iostream>using namespace std;int main(){int a,b,num1,num2,temp;cout<<"please input two numbers"<<endl;cin>>num1>>num2;if (num1){temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while (b!=0){temp=a%b;a=b;b=temp;}cout<<"最大公约数="<<a<<endl;cout<<"最小公倍数="<<num1*num2/a<<endl;return 0;}6.程序如下:#include <iostream>using namespace std;int main(){int n,a;int result = 0;cout<<"请输入n的值:";cin>>n;for (int i = n; i >= 1; i--){a=0;for (int j=1;j<=i;j++)a+=j;result += a;}cout<<"最终结果为:"<<result<<endl;return 0;}7.程序如下:#include<iostream>using namespace std;int main(){int n,t,number=15;double a=2,b=1,s=0;for (n=1;n<=number;n++){s=s+a/b;t=a;a=a+b;b=t;}cout<<"sum is:"<<s<<endl;return 0;}8.程序如下:#include <iostream>using namespace std;int main(){double e=1;double jc=1;int i=1;while(1/jc>=1e-6){e=e+1/jc;i++;jc=jc*i;}cout<<"e="<<e<<endl;return 0;}习题三一、填空题1.x2.p=new int(10)3.10、194.new、delete5.b[9]、b[1]二、选择题1.D 2. D 3. B 4. B 5. B 6.A 三、程序阅读1.运行结果:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1 2.运行结果:intone:5rsomeref:5intone:7rsomeref:73.运行结果:BCDEFGHIJKLMNOPQRSTDEFGHIJKLMNOPQRSTTTRRSTPPQRSTNNOPQRST4.运行结果:9191930 1 2 3 15 16 17 18 1919 18 17 16 155.运行结果:2四、编程题1.程序如下:#include <iostream>using namespace std;int main(){int array[10];int i,max,min;for(i=0;i<10;i++)cin>>array[i];max=array[0];min=array[0];for(i=1;i<10;i++){if(array[i]>max)max=array[i];if(array[i]<min)min=array[i];}cout<<"The largest number is "<<max<<endl;cout<<"The smallest number is "<<min<<endl;return 0;}2.程序如下:#include<iostream>using namespace std;int main(){int a[3][5]={0};int b[5][4]={0};int c[3][4]={0};int i,j,k;cout<<"请输入一个3行5列的矩阵:"<<endl;for(i=0;i<3;i++)for(j=0;j<5;j++)cin>>a[i][j];cout<<"请输入一个5行4列的矩阵:"<<endl;for(i=0;i<5;i++)for(j=0;j<4;j++)cin>>b[i][j];for(i=0;i<3;i++)for(j=0;j<4;j++){c[i][j]=0;for(k=0;k<5;k++)c[i][j]+=a[j][k]*b[k][j];}cout<<"矩阵的乘积:"<<endl;for(i=0;i<3;i++){for(j=0;j<4;j++){cout<<c[i][j]<<" ";}cout<<endl;}return 0;}3.程序如下:#include <iostream>using namespace std;void alter(float &x,float &y){float m,n;m=x;n=y;x=m*n;y=m+n;}int main(){float a,b;cout<<"Please input two numbers:"<<endl;cin>>a>>b;alter(a,b);cout<<"After changed:"<<endl;cout<<a<<","<<b<<endl;return 0;}习题四一、填空题1.参数传递、执行函数体、返回调用位置2.常量、const3.Fun(5,100)4.inline5.程序域、文件域、函数域和块域二、选择题1. A2. D3. C4. C5. D6. A7. A8. A9.D 10.A三、程序阅读1.运行结果:a=3 b=22.运行结果:x=50,y=303.运行结果:b=16.0988input a=2 (从键盘输入2)F(a)=-0.14.运行结果:Sum of 4powers of integers from 1 to 6=22755.运行结果:6,6,66.运行结果:107.运行结果:In Main—x=5,y=1,n=1In Fun—x=6,y=14,n=4In Main—x=5,y=1,n=4四、编程题1.程序如下:#include<iostream>using namespace std;int main(){int idec;int ibase;char strdr[20], t;int i, idr, p=0;cout<<"请输入一个进制数及要转换的进制数:"<<endl;cin>>idec>>ibase;while(idec!=0){idr=idec % ibase;if(idr>=10) strdr[p++]=idr-10+65;else strdr[p++]=idr+48;idec/=ibase;}for(i=0; i<p/2; i++){t=strdr[i];strdr[i]=strdr[p-i-1];strdr[p-i-1]=t;}strdr[p]='\0';cout<<strdr<<endl;return 0;}2.程序如下:#include<iostream>using namespace std;int main(){int num,i=0,temp,flag=0;cin>>num;while(1){ temp=num%10;if(temp%2==0){flag++;break;}num/=10;if(num==0)break;}if(flag)cout<<"NO"<<endl;elsecout<<"YES"<<endl;return 0;}3.程序如下:#include <iostream>#include <cmath>using namespace std;int main(){int n,i;double sum=0;cout<<"Please input a number(1,2,3,4 or 5):"<<endl;cin>>n;for(i=1;i<=20;i++)sum+=pow(n,i);cout<<sum<<endl;;return 0;}4.程序如下:#include <iostream>using namespace std;int main(){int num,digit;cout<<"输入一个整数: ";cin>>num;cout<<"整数"<<num<<" 的逆序数为: ";do{digit=num%10;cout<<digit;num/=10;}while(num);cout<<endl;return 0;}5.程序如下:#include<iostream>using namespace std;#include <cstring>int main(){const int N=5;char a[N][100]={0};char t[100]={0};int i,j;for(i=0;i<N;i++){cin>>a[i];}for(i=0;i<N-1;i++)for(j=N-1;j>i;j--){if(strcmp(a[j],a[j-1])<0){strcpy(t,a[j]);strcpy(a[j],a[j-1]); strcpy(a[j-1],t);}}for(i=0;i<N;i++) {cout<<a[i]<<endl; }return 0;}习题五一、填空题1.数据成员、成员函数2.private、protected、public3.private、public4.自动、创建并初始化对象5.构造函数6.析构函数7.友元函数8.堆对象9.this、正在被成员函数操作的对象10.10、10二、选择题1.D 2. C 3. D 4. A 5.C 6. C 7. C 8. C9.A 10. C 11. B 12. B 13. C 14. A 15. D三、程序阅读1.有四处错误:(1)int i=0;数据成员在类的定义中不能直接初始化(2)void Sample();构造函数没有返回值类型;(3)~Sample(int value);析构函数无参数;(4)析构函数不能重载。
任务一C程序设计概述一,填空题1.用C语言编写的程序称为源程序。
2.C语言源程序的基本单位是若干函数。
3. 一个C语言源程序只能包含一个主函数。
4. 在C语言中,输入操作是由库函数scanf()完成的,输出操作是由库函数printf()完成的。
5. C语言源程序文件的扩展名是.C,经过编译后,生成文件的扩展名是.obg,生成文件的扩展名是.exe。
6. C语言注释所用到的符号是/* */和// //。
二,选择题1. C语言规定在源程序中,主函数的位置(C)A.必须在开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后2.下列程序错在(C)处A.main()B.float x,yC.a=3:b=8D.a=b+c3.以下说法正确的是(D)A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用一个定义的函数必须在主函数中定义C.C语言程序中的主函数必须在程序的开始部分D.C语言程序总是从主函数开始执行4.以下叙述正确的是(B)A.在C程序中,main函数必须位于程序的最前面B.C语言本身没有输入输出函数C.C程序的每行只能写一条语句D.在对每一个C程序进行编译的过程中,可发现注释中的拼写错误5.C语言程序的语句如果一行写不下时,可以(D)A.用分号换行B.在任意空格处换行C.用逗号换行D.用回车符换行任务二C语言程序设计的基本概念一.选择题1.下面不是C语言中整型常量的是(C)。
A. 03B. 12C. 059D. 0xA82.下面程序段的输出结果是(B)。
int i=65535;printf(“%d”,i);A. 65535B. -1C. 1D. 03.以下不能用来表示整形常熟的进制形式为( A )。
A. 二进制B. 八进制C. 十进制D. 十六进制4.下列程序段的输出结果是(D )。
Int a=1,b=1,c=1;a=a+++b+++c;printf(“%d”,a);A. 6B. 5C. 4D. 35.C语言中的预算对象必须是整形的运算符是(C)。
A. *=B. -C. %D. >=6.以下选项中的非法的表达式是(C )。
A. a+1B. x=y=6C. 7.9%8D. (int)6.587.若有以下程序段:Int a=1,b=2,c;C=1.0/b*a;则执行后c的值为( D )。
A. 0B. 0.5C. 1D. 无结果8.C语言中的标识符只能有字母,数字和下划线组成,切第一个字符必须为( C )。
A. 字母B. 下划线C. 字母或下划线D. 字母,数字或下划线9.若有以下定义,则能使职位3的表达式为(C )。
Int a=7,b=12;A. B%=(A%=5)B. b%=(a-a%5)C.(b%=a)-(a%=5) D. b%=a-a%510.若有说明语句:char c=’ab’;则变量才( D )。
A. 包含一个字符‘a‘B. 包含2个字符‘a’和‘b’C. 包含3个字符‘a’,‘b’和‘\0’D. c的值不确定二丶填空题1.c语言的基本数据类型为整型变量,实行变量和字符型变量。
2.若有以下程序段:Int a=2,b=2;b+=(a++)+(++a)+(a++);则执行后c的值为11 。
3,以下程序的输出结果是2,3 。
main(){char x=’a’;y=x-32;printf(“%c”,y);}5.若有定义int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)(int)b的值为1 。
6.若a和b都是int类型的变量,切a=5,b=5,则执行表达式a+=b++后a的值为10 ,b的值为 6 。
任务三顺序结构程序设计一,选择题1.使用scanf函数输入数据时,若输入数据的的类型与格式说明的类型不匹配时,系统将(B)。
A.给出出错信息B.不给出出错信息,但最终不能得到正确的输入数据C.不给出出错信息,但最终能得到正确的输入数据D.拒绝用户输入数据2.Putchar函数可以向终端输入(C)。
A.一个字符串B.一个实型变量C.一个字符D..多个字符3.a,b,c被定义为int类型变量,若从键盘给a,b,c 输入数据,正确的输入语句为(C)A.scanf(“%d%d%d”,&a,&b,&c);B.read(“%d%d%d”,&a,&b,&c);C.scanf(“%d%d%d”,a,b,c);C.write(“%d%d%d”&a,&b,&c);4.以下程序段的输出结果是(C)。
int a=5678;printf(“%2d”,a);A.56B.78C.5678D.无结果显示5.printf函数中用到格式符%6s,其中的数字6表示输出的字符串占用6列。
如果字符串长度大于6,则(B);如果字符串长度小于6,则(D)。
A输出错误信息 B.按原字符长度从左到右全部输出C.按左对齐输出该字符,右补空格D.按右对齐输出该字符,左补空格6.阅读以下程序,当输入数据的形式为5,6,7 ,则正确的输入结果为()。
Main(A){int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“a+b+c=%d”,a+b+c);}A.a+b+c=18B.a+b+c=11C.5+6+7=18D.无结果显示7.设a和b为float类型变量,则以下不合法的赋值语句为(B)A.++a;B.b=(a%5)/5; C=a+=b+8; D.a=b=6;8.若有以下程序段:Int x=0x6c,y=0x6c;x-=y;printf(“%x”,x);执行后输出结果是(B)。
A.0x0B.0C.0x6cD.x9.若有以下程序:Main(){int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%d”,m,i);}执行后输出结果是(D)。
A.8,6B.7,4C.8,3D.6,410.若有如下程序:Int a=2010,b=2011;Printf(“%d”,(a,b));11.则以下描述中正确的是(C)A.输出语句中格式说明符的个数少于输项的个数,不能输出正确结果B.运行时产生错误信息C.输出结果为2011D.输出结果为2010二、填空题1.复合语句在语法上被认为是合法的。
空语句的书写形式为””。
2.假设变量X和Y均为整型变量,填写以下语句,使其可以实现不借助任何变量把X和Y中的值进行交换。
X+=Y ;y=x- Y ;x-=Y ;3.若a为int类型的变量,则执行以下语句后X的值为-12。
A=6;a+=a-=a+a4.以下程序的输出结果为 11,013,OXB .Main(){Int a=11;Printf(“%d,%o,%x”,a,a,a);}5.执行以下程序时,如果从键盘上输入:aBcDeFg ,则屏幕上的输出结果为 ABCDEFG 。
#include<stdio.h>main( ){char ch;while((ch=getchar( ))!=`\n`){If(ch>=`a`&&ch<=`z`)ch=ch-32;printf(“%c”,ch);}}6.有以下程序段:int a=0,b=0;char c=`a`;scanf(“%d,%d,%c”,&a&b&c);printf(“%d,%d,%c”,a,b,c);若从键盘上输入:6,8,则输入结果为6,8,’。
任务四选择结构程序设计1.若变量c为char类型,能正确判断出c为小写字母的表达式是(D)。
A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)C.(‘a’<=c)and(‘z’>=c)D.(c>=’a’)&&(c<=’z’)2.下列程序的运行结果是(B)。
Main(){ inr x=6;If(x++>6)Printf(“%d\n”,x);ElsePrintf(“%d\n”,--x);}A.5B.6C.7D.83.如果a大于3并且小于等于8时为真,否则为假,一下表示正确的表达式是(C)。
A.3<a<=8B.a>3||a<=8C.a>3&&aa<=8D.a>3&&a<84.下列条件语句中,功能与其他语句不同的是(D)。
A.if(b) printf(“%d\n”,x);elseprintf(“%d\n”,y);B. if(b==0) printf(“%d\n”,y);elseprintf(“%d\n”,x);C. if(b!=0) printf(“%d\n”,x);elseprintf(“%d\n”,y);D. if(b==0) printf(“%d\n”,x);elseprintf(“%d\n”,y);5.设a,b和c都是int类型的变量,且a=3,b=4,c=5,则下列表达式中值为0的是(D)。
A.a&&bB.a<=bC.a||++b&&b-cD.!(a<b&&!c||1)6.为表示x<=y<=z,应使用的表达式是(C)。
A.(x<=y)and(y<=z)B.x<=y<=zC.x<=y&&y<=z D,。
x<=y)&(y<=z)7.有如下程序:Main(){Inr i=1,j=1,k=2;If(((j++||k++)&&i++)Printf(“%d,%d,%d\n”,i,j,k);}执行后输出的结果是(C)。
A.1,1,2B.2,2,1C.2,2,2 D, 2,2,38.以下程序的运行结果是(A)。
main(){int a,b,d=241;A=d/100%9;B=(-1)&&(-1);printf(“%d,%d”,a,b);}A.2,1B.6,0C.2,0D.6,19.逻辑运算符两侧运算对象的数据类型(C)。
A.只能是0和1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据10.以下程序的运行结果是(A)。
main(){int a=2,b=-1,c=2;if(a<b)c=0;else c++;printf(“%d\n”,c);}A.2B.3C.1D.0二,填空题1.C语言中三中路及运算符按优先级从高到低排列依次为 ! ,&& ,|| 。
2.C语言中用 1 表示逻辑“真”,用 0 表示“假”。