补充练习及实验.docx
- 文档编号:29676181
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:38
- 大小:43.07KB
补充练习及实验.docx
《补充练习及实验.docx》由会员分享,可在线阅读,更多相关《补充练习及实验.docx(38页珍藏版)》请在冰豆网上搜索。
补充练习及实验
《C语言程序设计》补充练习题
第1章C语言概述
1.1.编写一个程序,输出以下信息(参考题解1.4)
********************
Mynameis(自己姓名的拼音).
IaminclassX
********************
1.2.编写一个程序,输入a,b两个整数,求它们的和.(提示:
把例1.2中的a=123;b=456;改用scanf函数输入。
)
1.3.使用TC2.0时,源文件及其所在文件夹命名的要点是什么?
1.4.如果要让TC2.0把它所生成的目标程序*.obj和可执行程序*.exe保存到E:
\Mydir文件夹中,写出设置方法。
(参考§13.7)
第2章数据类型、运算符与表达式
2.1.写出以下程序的输出结果
#include
{charx1='A',x2='B';printf("A:
%c;B:
%c\n%d;%d",x1,x2,x1,x2);}
2.2.编写一个程序,输出从'i'到'k'3个小写字母的ASCII码值。
第3章最简单的C程序设计—顺序程序设计
3.1输入一个摄氏温度,要求输出华氏温度。
计算公式为
。
(参考题解3.7)
3.2编写一个程序,设其中的变量定义为inta,b;floatx;从键盘输入a、b的值,求出
,然后在屏幕上显示x的值。
注意怎样处理才能保证结果正确。
例如a=1,b=2时,应该得到x=1.5。
第4章选择结构程序设计
4.1.由键盘输入两个整数x、y,按先大后小次序分两行显示为“x=…,y=…”或“y=…,x=…”,请编程序。
4.2.设一个函数的定义为:
y={0 当x≤0;y=3x2 当x>0}
写一程序,输入x,输出y值。
4.3.设一个函数的定义为:
y={5x (当x≤-10,或x≥100);y=3x-1 当-10 写一程序,输入x,输出y值。 4.4输入一个字符,判别它的值后按如下要求输出: 如果是大写字母,将它转换成小写字母输出;如果是小写字母,不转换直接输出。 如果不是字母,输出其ASCII码。 (字母判断参考例4.4,elseif参考题解4.5.) 第5章循环结构程序设计 5.1用while循环求1到100内所有奇数的和(参考例5.1)。 5.2用do-while循环求和: 1/2+1/4+1/6+1/8+……+1/40。 (数据类型参考题解5.8) 5.3.输入100个字符,分别统计出其中字母和数字的个数。 用for循环实现。 (统计方法参考题解5.2) 5.4求1/1! +1/2! +1/3! +…+1/20! 。 (参考题解5.4,数据类型参考题解5.8) 第6章数组 6.1利用循环给有50个元素的整数数组的元素a[i]赋值为3i,然后按逆序输出各元素的值。 (参考例6.1) 6.2设有12个元素的整数数组初值为{1,2,3,4,5,6,7,8,9,10,100,200},用起泡法对其从大到小排序。 (参考例6.3) 6.3.有一个二维数组定义为intx[]={{1,2},{7,6},{11,16},{20,-50}};,编程序求出其中值最大的那个元素所在的行号和列号。 (参考例6.5) 6.4编程实现输入两个字符串,输出其中较小者(参考例6.9) 第7章函数调用 7.1.写一个函数求两个双精度数中较小的一个数,在main()中实现输入、输出以及调用函数计算。 (参考例7.2) 7.2.编写一个函数求f(x)=x3-16x+80,在main()函数中由键盘输入x,调用该函数计算f(x),在main()函数中显示结果。 7.3.分析以下程序的输出结果: (参考例7.3) #include voidmain() {intmax(floatx,floaty); intc; c=max(2.8,2.0); printf("maxis%d\n",c); } intmax(floatx,floaty) {floatz; z=x>y? x: y; return(z); } 7.4.编写一个函数求,要求在main()函数中由键盘输入a和b,调用该函数计算r,然后在main()函数中显示结果。 选择适当数据类型使计算精度不少于10位有效数字。 7.5.编写一函数,实现为数组输入n个双精度数。 n由调用时的实参决定。 7.6.有一个一维数组,内放10个学生成绩,写一个函数,统计不及格学生人数; 7.7.分析以下程序的输出结果: intd=1;fun(intp){intd=5;d+=p;printf("d=%d",d);return(d);} main(){inta;a=fun(d);printf("a=%d,d=%d\n",a,d);} 7.8.分析以下程序运行后的输出结果: inta=5;intfun(intb){staticinta=10;a+=b++;printf("%d",a);} voidmain(){intc=20;fun(c);a+=c++;fun(c);printf("%d\n",a);} 第8章指针 8.1.编写一个函数交换两个实型变量的值,并写出调试该函数的程序。 要求精度有9位有效数字,使用指针作参数。 (参考例8.3) 8.2.输入3个整数,按中、大、小的顺序输出。 要求设计专用函数实现交换,使用指针作参数。 (参考题解8.1) 8.3.编写一函数,实现为数组输入n个双精度数,要求使用指针作参数。 n由整型参数传递。 (参考例8.6、8.8) 8.4.定义一个数组存放11个整数,写一函数实现以下功能: 挑出其中最大的数,与数组中以n为下标的元素交换,n由整型参数传递。 (参考例8.9) 8.5.写一函数,求一个字符串中数字字符的个数。 在main函数中输入字符串,并输出其中数字字符的个数。 (函数框架参考题解8.6,数字字符判断参考题解8.8) 8.6.以下程序运行后的输出结果是_____。 main() {chara[]="Language",b[]="Programe"; char*p1,*p2;intk; p1=a;p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf("k=%d,char: %c;",k,*(p1+k)); } 第9章用户建立的数据类型 9.1.定义一个记录日期的结构体变量remember(该结构体类型定义参考p.249),并赋初值以表示2010年5月18日。 写出对该变量的输入、输出语句。 9.2.设某班共有30个学生,定义一个结构体数组记录学生信息,包括学号、姓名、数学课成绩。 写出对前10个学生数据的输入、输出语句。 第10章文件操作 10.1.设已经存在名为“file.c”的文件,写出C语句,采用打开文件的常用模式,按“可读写”的方式打开它。 10.2.从键盘输入一个字符串,然后用fputc函数输出到一个磁盘文件“test”中保存。 (参考题解10.4,但改变输入方法,用gets,不用! 作结束标志符。 不要求对小写字母作转换)。 位运算 11.1.以下程序段的输出结果是什么? inti,k[3]; k[0]=11&15;k[1]=5|9;k[2]=~4&4; for(i=0;i<3;i++)printf("0%o,%d\n",k[i],k[i]); 11.2.以下程序段的输出结果是什么? inta,b,c=10; a=c<<2;b=a>>1; printf("a=%o,b=%x,c=%d",a,b,c); 综合练习题一 一、选择题(每小题2.5分,共35分。 ) 1.下述对C语言字符数组的描述中错误的是 A)字符数组的下标从0开始 B)字符数组中的字符串可以进行整体输入/输出 C)字符数组可以存放字符串 D)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 2.已知各变量的类型说明如下: intk,a,b; unsignedlongw=5; doublex=1.42; 则以下不符合C语言语法的表达式是 A)k=(a=2,b=3,a+b) B)w+=-2 C)x%3.5 D)a+=a-=(b=4)*(a=3) 3.x,y,z被定义为int型变量,从键盘给x,y,z输入数据的正确输入语句是 A)INPUTx,y,z; B)read("%d%d%d",&x,&y,&z); C)scanf("%d%d%d",x,y,z); D)scanf("%d%d%d",&x,&y,&z); 4.设x、y均为整型变量,且x=9,y=2,则以下语句的输出结果是 x++,++y;printf("%d,%d\n",x,y); A)10,3 B)9,3 C)9,2 D)10,2 5.以下程序的输出结果是 main() {inta=4,b=5,c=0,d=3; d=! a&&! b||! c; printf("%d\n",d); } A)1 B)0 C)3 D)-1 6.设有以下程序段 intx=0,s=0; while(x<3)s+=++x; printf("%d",s); 则 A)运行程序段后输出3 B)运行程序段后输出6 C)运行程序段后输出10 D)程序段执行无限次 7.以下描述中正确的是 A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C)在do-while循环体中,是先执行一次循环,再进行判断 D)do-while循环中,根据情况可以省略while 8.下列说法正确的是 inti,x; for(i=0,x=0;i<=9&&x! =876;i++) scanf("%d",&x); A)最多的执行10次 B)最多执行9次 C)是无限循环 D)循环体一次也不执行 9.已知intk=10,m=4;floatn=1;则下列语句输出结果是 n=k/m; printf("%f",n); A)2 B)2.000000 C)2.500000 D)1.000000 10.对下面程序描述正确的一项是(每行程序前面的数字表示行号) 1main() 2{ 3floata[3]={0.0}; 4inti; 5for(i=0;i<3;i++)scanf("%f",a[i]); 6for(i=1;i<3;i++)a[0]=a[0]+a[i]; 7printf("%f\n",a[0]); 8} A)没有错误 B)第3行有错误 C)第5行有错误 D)第7行有错误 11.以下程序的输出结果是 main() {charx=040; printf("%d\n",x<<1);} A)64 B)80 C)100 D)32 12.以下程序的运行结果为 #include main() {intm,n; for(m=0,n=10;m printf("%d,%d\n",m,n);} A)6,7 B)7,6 C)9,7 D)7,9 13.下列程序的输出结果是 #include main() {inti,a=0,b=0; for(i=1;i<10;i++) if(i%2==0)a++; else b++; printf("a=%d,b=%d",a,b); } A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 14.下面对C语言的描述中,正确的是 A)函数一定有返回值,否则无法使用函数 B)C语言函数既可以嵌套定义又可以递归调用 C)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中 D)C语言中调用函数时,实参的值只能单向传递给形参 二、填空题(每小题2.5分,共25分) 1.以下程序段的输出结果是________。 intx=7,y=12;printf("%d",y%=x); 2.若有以下定义: chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为________。 3.下面程序段执行后输出的结果是________。 #include charfun(charx) { if(x>=’A’&&x<=’Z’)return(x+’a’–’A’); elsereturnx; } main() {charfun(char); chara,b=’N’; a=fun(b);printf("%c",a); } 4.关系表达式x≤y 5.下面程序段执行后输出的结果是________。 #include main() {intc[]={1,3,5,7,9,11}; printf("%d,%d\n",c[2]-1,*(c+1)); } 6.以下函数的功能是________。 floatav(floata[],intn) {inti;floats; for(i=0,s=0;i returns/n; } 7.下面程序段的输出为________。 #include main() {printf("%d\n",12<<2);} 8.下列程序的运行结果是________。 #include main() {intx=-9,y=5,z=8; if(x if(y<0)z=0; elsez+=1; printf("%d\n",z); } 9.下面程序执行后的结果是________。 #include main() {charstr[]="abcdefg",*p; for(p=str;p } 10.以下程序的运行结果是________。 sub(intx,inty,int*z) {*z=x-y;} main() {inta; sub(10,6,&a); printf("a=%d",a); } 三、(9分)有以下程序 #include main() {FILE*fp;inti=20,j=30,k,n; fp=fopen("d1.dat","w"); fprintf(fp,"%d%d",i,j); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("k=%d,n=%d\n",k,n); fclose(fp); } 1.该程序运行成功后,文件d1.dat中的内容是什么? 2.该程序运行成功后,屏幕显示是什么? 3.如果想把d1.dat保存于E盘的student文件夹中,应该作哪些修改? 四、(8分)设已经声明如下结构体类型用于记录学生信息: structstu {charnumber[13];charname[9]; intage;floatscore; }; 编写main函数,完成以下任务: 1.定义一个该类型的变量并赋初值: 学号20080201,姓名Liu,年龄19,分数520; 2.从键盘输入新的分数值(替换原分数值); 3.输出该学生的信息。 五、写出以下程序运行后的输出结果(5分) main() {inti=0; floatx[10],y=2.0; while(i<10) {x[i]=y*i;i++;} printf("i=%d\n",i); printf("%6.2f,%6.2f",x[1],x[3]+x[4]); } 六、写出以下程序运行后的输出结果(8分) #include intf1(intx) { printf("Inf1,x=%d\n",x); returnx*x; } intf2(intx) { printf("Inf2,x=%d\n",x); returnx+x; } main() { inta=3,b=5,x,y; x=f1(a); y=f2(b); printf("Inmain,result=%d",x+y); } 七、(10分)编写一个函数 1.编写一个函数fun,求出三个实数之和作为函数值返回。 2.编写main函数,从键盘输入三个实数,调用fun作计算,然后显示结果。 综合练习题一参考答案 一、选择题(每小题2.5分,共35分。 ) DCDAABCABCACBD 二、填空题(每空2.5分,共25分) 【1】5【2】double或双精度 【3】n【4】(x<=y)&&(y 【5】4,3【6】求数组a中前n个元素的平均值 【7】48【8】9 【9】ace【10】a=4 三、(9分) 1.文件d1.dat中的内容是2030(3分) 2.屏幕显示是k=20,n=30(3分) 3.将所有fopen函数调用中的文件名修改为"E: \\student\\d1.dat"(3分) 四、(8分) voidmain() { structstua={"20080201","Liu",19,520};(3分) scanf("%f",&a.score);(2分) printf("%s%s%d%f", a.number,a.name,a.age,a.score);(3分) } 五、(5分) i=10 2.00,14.00 六、(8分) Inf1,x=3(2分) Inf2,x=5(2分) Inmain,result=19(4分) 七、(10分) 1.(5分) #include doublefun(doublea,doubleb,doublec) {doubled; d=a+b+c; returnd; } 2.(5分) main() {doublea,b,c,y; printf("Entera,b,c: "); scanf("%lf%lf%lf",&a,&b,&c); y=fun(a,b,c); printf("y=%f\n",y); } 综合练习题二 一、选择题(每小题2.5分,共30分。 ) 1.对于一个正常运行的C程序,以下叙述中正确的是 A)程序的执行总是从main函数开始,在程序的最后一个函数中结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在main函数结束 D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 2.以下4组用户定义标识符中,全部合法的一组是 A)a_2Floatfun B)i3temp&e C)2j_001txt D)k4_mint 3.设有定义intk=0;以下四个表达式中,与其他三个表达式的值不相同的是 A)k++B)k+=1C)++kD)k+1 4.设变量x和y均已正确定义并赋值,以下语句中在编译时将产生错误信息的是 A)if(x++);B)if(x>y&&y! =0); C)if(x>y)x--D)if(y<0); elsey++;elsex++; 5.下面关于字符常量的说法错误的是 A)一个字符常量代表ASCII字符集中的一个字符 B)单引号中的大写字母和小写字母代表不同的字符常量 C)可以用printf函数显示一个字符常量对应的ASCII码 D)字符常量可以用单引号或双引号括起来 6.有以下程序 main() {intk=5,n=0; switch(k) {case1: case3: n+=1;break; default: n=0;k--; case2: case4: n+=2;k--;break; } printf(“k=%d,n=%d”,k,n); } 程序运行后的输出结果是 A)k=5,n=1B)k=4,n=0C)k=3,n=2D)k=4,n=2 7.有以下程序 main() {inti,j; for(i=1;i<3;i++) {for(j=i;j<3;j++)printf(“%d*%d=%d”,i,j,i*j); printf(“\n”);} } 程序运行后的输出结果是 A)1*1=11*2=2B)1*1=11*2=2 2*1=22*2=4 C)1*1=1D)1*1=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 补充 练习 实验