C语言程序设计习题集ppt课件.ppt
2023/1/4,1,C程序设计习题,2023/1/4,2,C语言程序设计习题,第一章 程序设计基本概念,第二章 C程序设计的初步知识,第三章 顺序结构,第四章 选择结构,第五章 循环结构,第六章 字符型数据,第七章 函数,第八章 指针,2023/1/4,3,C语言程序设计习题,第九章 数组,第十章 字符串,第十一章 对函数的进一步讨论,第十二章 C语言中标识符的作用域 和存储类,第十三章 编译预处理和动态存储分配,第十四章 结构体、共用体和用户定义类型,第十五章 位运算,第十六章 文件,2023/1/4,4,1.2 C语言源程序文件的后缀是 _,经过编译后,生成文件的后缀是 _,经过连接后,生成文件的后缀是_。,第一章 程序设计基本概念,1.1 在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是。,.EXE,1.3 结构化程序由、和 三种基本结构组成。,.C,.OBJ,.EXE,顺序,选择(分支),循环,2023/1/4,5,第二章 C程序设计的初步知识,一、选 择 题,2.1 以下选项中正确的整型常量是。A)12.B)-20 C)1,000 D)4 5 6,2.2 以下选项中正确的实型常量是 A)0 B)3.1415 C)0.329*102 D).871,2.3 以下选项中不正确的实型常量是A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2,2.4 以下选项中不合法的用户标识符是A)abc.c B)file C)Main D)PRINTF,2.5 以下选项中不合法的用户标识符是A)_123 B)printf C)A$D)Dim,2023/1/4,6,2.6 C语言中运算对象必需是整型的运算符是 A)%B)/C)!D)*,2.7 可在C程序中用作用户标识符的一组标识符是 A)void B)as_b3 C)For D)2c define _123-abc DO WORD If case SIG,关键字,不能有-,数字开头,2.8 若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7;B)a=7+b+c,a+C)int(12.3%4)D)a=a+7=c+b,语句,不是表达式,要求整型数,号前是变量,2023/1/4,7,2.10 以下叙述中正确的是)在C程序中无论整数还是实数,只要在允许的范围内都能准确无误的表示。)C程序由主函数组成。)C程序由函数组成。)C程序由函数和过程组成。,2.9以下叙述中正确的是)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量允许赋值整型值。)在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。)执行表达式a=b后,在内存中a 和 b存储单元中的原有值都将被改变,a的值已由原值改变为b 的值,b 的值由原值变为0。)已有a=3,b=5。当执行了表达式 a=b,b=a 之后,已使a 中的值为5,b 中的值为3。,2023/1/4,8,2.11 TURBO C中int 类型变量所占字节数是A)1 B)2 C)3 D)4,2.12 不合法的八进制数是A)0 B)028 C)077 D)01,2.13 不合法的十六进制数是A)oxff B)0Xabc C)0 x11 D)0 x19,二、填空题,2.14 若k为int整型变量且赋值11。请写出运算k+后表达式的值A)_和变量k的值B)_。,2.15 若x为double型变量,请写出运算x=3.2,+x后表达式的值A)_和变量x的值B)_。,11,12,4.2,4.2,2023/1/4,9,2.16 函数体由符号_开始,用符号_结束。函数体的前面是部分,其后是部分。,2.17 C语言中的标识符可分为_、和预定义标识符三类。,2.18 在C语言程序中,用关键字_定义基本整型变量,用关键字_定义单精度实型变量,用关键字_定义双精度实型变量。,2.19把a1、a2定义成单精度实型变量,并赋初值1的定义语句是。,2.20 C程序中定义的变量,代表内存中的一个。,定义说明,执行语句,关键字,用户标识符,int,float,double,float a=1,b=1;,不能用float a=b=1;,存储单元,2023/1/4,10,2.21 表达式3.5+1/2的计算结果是_。,2.22 对以下数学式,写出三个等价的C语言表达式_、。ab c,2.23 表达式s=10应当读做“_”。,2.24 计算机中内存储器的最小存储单位称_,其中能容纳的数是_。,2.25 通常一个字节包含_个二进制位。在一个字节中能存放的最大(十进制)整数是_,它的二进制数的形式是_;最小(十进制)整数是_,它的二进制数的形式是_。,.,不是4.5!,a*b/c,a/c*b,b/c*a,条件:a,b,c是实数,S赋值为10,bit(位),127,01111111,-128,10000000(补码),2023/1/4,11,2.27 在C语言中整数可用_进制数、_进制数和_进制数三种数制表示。,2.26 当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是_、最小(十进制)整数是_,它的二进制数的形式是。,0111111111111111/1000000000000000,32767,-32768,10,8,16,三、上机改错题(读者最好在TURBO C环境下上机试一试,以便熟悉出错信息)。,2.28 请指出以下C程序的错误所在#include stdio.h;main();/*main function*/float r,s;/*/*r is radius*/,/*s is area of circular*/*/r=5.0;s=3.14159*r*r;printf(“%fn”,s),“,”,运行结果:78.539749,2023/1/4,12,2.29 请指出以下C程序的错误所在#include stdio.h main/*main function*/float a,b,c,v;/*a,b,c are sides,v is volume of cube*/a=2.0;b=3.0;c=4.0 v=a*b*c;printf(“%fn”,v),(),;,;,运行结果:24.000000,【2-28】(正确)#include“stdio.h”main()/*main function*/float r,s;/*r is radius,s is area of circular*/r=5.0;s=3.14159*r*r;printf(%fn,s);,2023/1/4,13,【2-29-2】(正确)#include main()/*main function*/float a,b,c,v;/*a,b,c are sides,v is volume of cube*/a=2.0;b=3.0;c=4.0;v=a*b*c;printf(%fn,v);,2023/1/4,14,第三章 顺序结构,一、选择题,3.1 若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是。A)a=b=c=d=100;B)d+;C)c+b;D)d=(c=22)-(b+);,3.2 以下选项中不是C语句的是。A)int i;i+;printf(“%dn”,i);B);C)a=5,c=10 D);,3.3 以下合法的C语言赋值语句是。A)a=b=58 B)k=int(a+b);C)a=58,b=58 D)-i;,3.4 以下程序的输出结果是。A)0 B)1 C)3 D)不确定的值 main()int x=10,y=3;printf(“%dn”,y=x/y);,应为(int)(a+b);,2023/1/4,15,3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是。A)read(a,b,c);B)scanf(“%d%d%d”,a,b,c);C)scanf(“%D%D%D”,3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是。A)10 B)10.0,22.0,33.0 C)10.0 D)10 22 22 22.0 33.0 33 33 scanf(“%f%f%f”,3.7 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是。A)a=a+b,b=a-b,a=a-b;B)t=a,a=b,b=t;C)a=t;t=b;b=a;D)t=b;b=a;a=t;,2023/1/4,16,3.8 若变量已正确定义,以下程序段的输出结果是。)输出格式说明与输出项不区配,输出无定值 B)5.170000 C)5.168000 D)5.169000 x=5.16894;printf(“%fn”,(int)(x*1000+0.5)/(float)1000);,3.9 若有以下程序段,c3中的值是。A)0 B)1/2 C)0.5 D)1 int c1=1,c2=2,c3;c3=c1/c2;,3.10 若有以下程序段,其输出结果是A)0,0,-10 B)0,0,5 C)-10,3,-10 D)3,0,-10int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%dn”,a,b,c);,(int)(x*1000+0.5)=(int)(5169.44)=5169 5169/1000.0=5.169,2023/1/4,17,3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是。A)a=98,b=765,c=4321 B)a=10,b=432,c=8765C)a=98,b=765.000000,c=4321.000000 D)a=98,b=765.0,c=4321.0main()int a;float b,c;scanf(“%2d%3f%4f”,3.12 以下程序的输出结果是A)a=%2,b=%5 B)a=2,b=5C)a=%d,b=%d D)a=%d,b=%dmain()int a=2,b=5;printf(“a=%d,b=%dn”,a,b);,输出,2023/1/4,18,3.13 若int类型占两个字节,则以下程序段的输出是。A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535int a=-1;printf(“%d,%un”,a,a);,-补码:1111111111111111,3.14 以下程序段的输出是 A)*496*B)*496*C)*000496*D)输出格式符不合法 int x=496;Printf(“*%-06d*n”,x);,“*%06d*n”:输出*000496*,3.15 以下程序段的输出是 A)|3.1415|B)|3.0|C)|3|D)|3.|float a=3.1415;Printf(“|%6.0f|n”,a);,3.16 以下程序段的输出是 A)|2345.67800|B)|12345.6780|C)|12345.67800|D)|12345.678|printf(“|%10.5f|n”,12345.678);,突破场宽!,2023/1/4,19,3.17 以下程序段的输出是A)*0000057.66*B)*57.66*C)*0000057.67*D)*57.67*float a=57.666;pirntf(“%010.2fn”,a);,3.18若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是 A)scanf(“%f”,283.1900,scanf中禁用”%*.*f”!,3.19 若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(代表空格)A)3.12 9.0 B)a=3.12b=9 C)a=3.12,b=9 D)a=3.12,b=9 scanf(“a=%f,b=%f”,2023/1/4,20,3.20 以下程序的输出结果是 A)9 8 B)8 9 C)6 6 D)以上三个都不对#include“math.h”main()double a=-3.0,b=2;printf(“%3.0f%3.0fn”,pow(b,fabs(a),pow(fabs(a),b);,2|-3|,|-3|2,二、填空题,3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。(1)_(2)(3)_int i=-200,j=2500;printf(“(1)%d%d”,i,j);printf(“(2)i=%d,j=%dn”,i,j);printf(“(3)i=%dn j=%dn”,i,j);,-200 2500,i=-200,j=2500,i=-200j=2500,2023/1/4,21,3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时:scanf(“%d”,当执行第一个输入语句,从键盘输入:12.3 表示Enter键则变量i、j、k的值分别是_、_、_。,12,0,0,3.23 复合语句在语法上被认为是_。空语句的形式是。,一条语句,;,3.24 C语句的最后用_结束。,;,3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234 时的三种可能的输入形式_、_、_。int k;float a;double x;scanf(“%d%f%lf”,100 25.81 1.89234100 25.81 1.89234100 25.81 1.89234,2023/1/4,22,3.26 以下程序段的输出结果是。int x=0177;printf(“x=%3d,x=%6d,x=%6o,x=%6x,x=%6un”,x,x,x,x,x);,x=(0177)8=127=(0000000001111111)2=(007F)16,x=127,x=127,x=177,x=7F,x=127,3.27 以下程序段的输出结果是。int x=0177;printf(“x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%06dn”,x,x,x,x,x);,x=127,x=127,x=$127,x=$000127,x=%06d,3.28 以下程序段的输出结果是。double a=513.789215;printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lfn”,a,a,a,a);,a=513.789215,a=513.79,a=513.78921500,a=513.78921500,2023/1/4,23,三、编程题和改错题,3.29 以下程序多处有错。要按下面指定的形式输入数据和输出数据时,请对该程序做相应的修改。main double a,b,c,s,v;printf(input a,b,c:n);scanf(“%d%d%d”,a,b,c);s=a*b;/*计算长方形面积*/v=a*b*c;/*计算长方体体积*/printf(“%d%d%d”,a,b,c);printf(“s=%fn”,s,”v=%dn”,v);当程序执行时,屏幕的显示和要求输入形式如下:input a,b,c:2.0 2.0 3.0 此处的2.0 2.0 3.0是用户输入的数据 a=2.000000,b=2.000000,c=3.000000 此处是要求的输出形式 s=4.000000,v=12.000000,2023/1/4,24,【3-29】(正确)main()float a,b,c,s,v;printf(input a,b,c:);scanf(%f%f%f:,【3-29】(错误)main double a,b,c,s,v;printf(input a,b,c:n);scanf(“%d%d%d”,a,b,c);s=a*b;v=a*b*c;printf(“%d%d%d”,a,b,c);printf(“s=%fn”,s,“v=%dn”,v);,当程序执行时,屏幕的显示和要求输入形式如下:input a,b,c:2.0 2.0 3.0 此处的2.0 2.0 3.0是用户输入的数据 a=2.000000,b=2.000000,c=3.000000 此处是要求的输出形式 s=4.000000,v=12.000000,2023/1/4,25,3.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。,【参考答案】main()int h,m;h=560/60;m=560%60;printf(%dh:%dm,h,m);getch();,3.31 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。,【参考答案】main()int m,n;printf(input m,2023/1/4,26,3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数后一位数,对小数点后第二位数进行四舍五入,最后输出结果。,【参考答案】main()double x,y,z,s;printf(input x,y,z:);scanf(%lf%lf%lf,2023/1/4,27,3.33 编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给 a。,【参考答案】main()int a,b,c,t;printf(Input a,b,c:);scanf(%d%d%d,2023/1/4,28,第四章 选择结构,一、选择题,4.1 下列运算符中优先级最高的运算符是A)!B)%C)-=D)&,单目运算符,4.2 下列运算符中优先级最低的运算符是 A)|B)!=C)=D)+,4,9,10,12,4.3 为表示关系x=y=z,应使用的C语言表达式是 A)(x=y)&(y=z)B)(x=y)AND(y=z)C)(x=y=z)D)(x=y)&(y=z),4.4 设 a、b 和c 都是int 型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 A)a&b B)a=b C)a|b+c&b-c D)!(ab)&!c|1),2023/1/4,29,4.5 以下程序的输出结果是:A)0 B)1 C)2 D)3 main()int a=2,b=-1,c=2;if(ab)if(b0)c=0;else c+=1;printf(“%dn”,c);,4.6 以下程序的输出结果是:A)1 B)2 C)3 D)4 main()int w=4,x=3,y=2,z=1;printf(“%dn”,(wx?w:zy?z:x);,2023/1/4,30,4.7 若执行以下程序时从键盘上输入3和4,则输出结果是 A)14 B)16 C)18 D)20 main()int a,b,s;scanf(“%d%d”,3,4,16,4,2023/1/4,31,4.9 运行以下程序后,输出 A)#B)if(k=0)printf(“*n”)else printf(“&n”);,;,2023/1/4,32,4.10 若a和b均是正整数型变量,以下正确的switch语句是。)switch(pow(a,2)+pow(b,2)(注:调用求幂的数学函数)case 1:case 3:y=a+b;break;case 0:case 5:y=a-b;)switch(a*a+b*b);case 3:case 1:y=a+b;break;case 0:y=b-a;break;)switch a default:x=a+b;case 10:y=a-b;break;case 11:y=a*d;break;)switch(a+b)case10:x=a+b;break;case11:y=a-b;break;,缺少圆括号,缺少空格,2023/1/4,33,二、填空题,4.11 C语言中用_表示逻辑值“真”,用_表示逻辑值“假”。,非零,零,4.12 C语言中的关系运算符按优先级别是、_。,=,=,!=,4.13 C语言中的逻辑运算符按优先级别是_、_、_。,!,&,|,4.14 C语言中的关系运算符和逻辑运算符的优先级别是 _、_、_、_。,!,&,|,=,=,!=,4.15 C语言中逻辑运算符_的优先级高于算术运算符。,!,4.16 将下列数学式改写成C语言的关系表达式或逻辑表达式A)和 B)_A)a=b 或 a4,a=b|ac,fabs(x)4,4.17 请写出以下程序的输出结果_。main()int a=100;if(a100)printf(“%dn”,a100);else printf(“%dn”,a=100);,2023/1/4,34,4.18 请写出与以下表达式等价的表达式A)_B)_.A)!(x0)B)!0,x=0,1,4.19 当a=1,b=2,c=3时,以下if 语句执行后,a、b、c 中的值分别为_、_、_.if(ac)b=a;a=c;c=b;,3,2,2,4.20 若变量巳正确定义,以下语句段的输出结果是_。x=0;y=2;z=3;switch(x)case 0:switch(y=2)case 1:printf(“*”);break;case 2:printf(“%”);break;case 1:switch(z)case 1:printf(“$”);case 2:printf(“*”);break;default:printf(“#”);,*#,加一个break,什么结果?,2023/1/4,35,三、编程题,4.21 请将以下语句改写成switch语句。if(a30)m=1;else if(a40)m=2;else if(a50)m=3;else if(a60)m=4;else m=5;,【参考答案】main()int a,m;printf(input a:);scanf(%d,case 4:m=3;break;case 5:m=4;break;default:m=5;printf(a,m=%d,%d,a,m);getch();,2023/1/4,36,4.22 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日期(年:y1、月:m1、日:d1);输出该生的实足年龄。,【参考答案】main()int age,y0,m0,d0,y1,m1,d1;printf(ninput a stedent birthday(yy-mm-dd):);scanf(%d-%d-%d,2023/1/4,37,【4-25-1参考答案】main()int x,y;printf(ninput x:);scanf(%d,【4-25-参考答案】main()int x,y;printf(ninput x:);scanf(%d,2023/1/4,38,【4-25参考答案】main()int x,y;printf(ninput x:);scanf(%d,【4-25-4参考答案】main()int x,y;printf(ninput x:);scanf(%d,2023/1/4,39,第五章 循环结构,一.选择题,5.1 以下程序段的输出结果是A)9 B)1 C)11 D)10 int k,j,s;for(k=2;k6;k+,k+)s=1;for(j=k;j6;j+)s+=j;printf(“%dn”,s);,K=2 s=1 s=1+(2+3+4+5)K=4 s=1 s=1+(4+5)=10K=6 退出,5.2 以下程序段的输出结果是 A)12 B)15 C)20 D)25int i,j,m=0;for(i=1;i=15;i+=4)for(j=3;j=19;j+=4)m+;printf(“%dn”,m);,i=1 j=3,7,11,15,19 m=5i=5-m=10i=9 m=15i=13 m=20i=17 退出,2023/1/4,40,5.3 以下程序段的输出结果是 A)10 B)9 C)10 D)9 9 8 9 8 8 7 8 7 7 6int n=10;while(n7)n-;printf(“%dn”,n);,n-打印n=10 n7 9 n7 88 n7 77n=7 退出,5.4 以下程序段的输出结果是A)1 B)3 0 C)1 2 D)死循环int x=3;do printf(“%3d”,x-=2);while(!(-x);,x=3进入循环执行x-=2 打印判定!0 是真执行x-=2 打印判定!(-2)是假结束循环,2023/1/4,41,5.5 以下程序的输出结果是A)15 B)14 C)不确定 D)0main()int i,sum;for(i=1;i6;i+)sum+=sum;printf(“%dn”,sum);,sum无初值!,5.6 以下程序的输出结果是A)741 B)852 C)963 D)875421main()int y=10;for(;y0;y-)if(y%3=0)printf(“%d”,-y);continue,y=10 y 9 整除打印 8 6 整除打印 5 3 整除打印 2 0 退出,2023/1/4,42,5.7 若x 是int 型变量,以下程序段的输出结果是A)*3 B)#3 C)#3 D)*3#4#4*4*4#5*5*5#5 for(x=3;x6;x+)printf(x%2)?(“*%d”):(“#%dn”),x);,x=3 打印*3x=4 打印#4+回车x=5 打印*6x=6 退出,5.8 以下程序的输出结果是 A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$main()int i;for(i=1;i=5;i+)if(i%2)printf(“*”);else continue;printf(“#”);printf(“$n”);,i=1 打印*#i=2 continuei=3 打印*#i=4 continuei=5 打印*#i=6 打印$+回车,2023/1/4,43,5.9 以下叙述正确的是A)do-while语句构成的循环不能用其他语句构成的循环代替.B)do-while语句构成的循环只能用break语句退出C)用do-while语句构成循环时,只有在while后的表达式为非零时结束循环 D)用do-while语句构成循环时,只有在while后的表达式为零时结束循环,5.10 以下程序的输出结果是 A)39 81 B)42 84 C)26 68 D)28 70main()int x,i;for(i=1;i=100;i+)x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf(“%d”,x);printf(“n”);,该题先加后除,由最后一个if可知打印出的数能被7整除;该数减1后能被整除;再减1后能被整除(该数是偶数);因而该数是28和70。,该题如果无,三个if都是x%n=0可知打印出的数能被7,3,2整除(42整除);因而该数是42和84。该题如果三个if都改为x+,则该数先打印再加1,该数减1后能被7整除;再减1后能被3整除;再减1后能被整除(该数是奇数)因而输出是29,71。,2023/1/4,44,二.填空题,5.11 当执行以下程序段后,i的值是_、j的值是_、k的值是_。int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(;ab;+b)i+;while(a+c)j+;do k+;while(ad+);,for:a=10 b=5,6,7,8,9,10 i=5while:a=10 c=6,7,8,9,10 j=4do while:k=16 d=510 k=6,5,4,6,5.12 以下程序段的输出结果是。int k,n,m;n=10;m=1;k=1;while(k=n)m*=2;printf(“%dn”,m);,死循环,While语句中k和n都不变,无限循环,5.13 以下程序段的输出结果是_.main()int x=2;while(x-);printf(“%dn”,x);,-1,While语句中对x是先判后减,当x=0时结束循环,然后x=-1,打印出来,2023/1/4,45,5.14 以下程序段的输出结果是_.int i=0,sum=1;do sum+=i+;while(i5);printf(“%dn”,sum);,16,sum+0=1 i5 i=1sum+1=2 i5 i=2sum+2=4 i5 i=3sum+3=7 i5 i=4 sum+4=11 i5 i=5sum+5=16 i=5(退出)i=,5.15 有以下程序段:s=1.0;for(k=1;k=n;k+)s=s+1.0/(k*(k+1);printf(“%fn”,s);请填空,使下面的程序段的功能完全与之等同。s=0.0;_;k=0;do s=s+d;_;d=1.0/(k*(k+1);while(_);printf(“%fn”,s);,d=1,k+,kn,2023/1/4,46,5.16 以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。main()float x,amax,amin;scanf(“%f”,x=0,xamin,2023/1/4,47,三编程题,5.17 编写程序,求1-3+5-7+-99+101的值。,【参考答案】main()int i,s=1,k=-1;for(i=1;i=50;i+)s=s+k*(2*i+1);k=-k;printf(s=%d,s);getch();,/*初始化s,k*/,/*循环50次*/,/*用来控制各项符号*/,运行结果:,2023/1/4,48,5.18 编写程序,求e 的值。e1+1/1!+1/2!+1/3!+.+1/n!()用for循环,计算前50项。()用while循环,要求直至最后一项的值小于10-4,【参考答案(1)】main()int i=1;double e=1.0,s=1.0;for(i=1;i=50;i+)s=s*i;e=e+1/s;printf(e=%lf,e);getch();,【参考答案()】main()int i=1;float e=1.0,s=1.0;while(1/s=1e-04)/*8 times*/s=s*i;i+;e=e+1/s;printf(e=%10.6f,e);getch();,运行结果:2.718282,运行结果:2.718279,2023/1/4,49,5.19 编写程序,输入从公元1000年至2000年所有闰年的年号。每输出3个年号换一行。判断公元年是否为闰年的条件是:公元年数如能被4整除,而不能被100整除,则是闰年;公元年数能被400整除也是闰年。,【参考答案】main()int y,k=0;for(y=1000;y=2000;y+)if(y%4=0,2023/1/4,50,5.20 编写程序,打印以下图:*,分析:菱形分上、下两个部分,上半部i=1n(n是边长,输入)进行循环;下半部i=n+12n-1进行循环;图形放在屏幕中间,第一行前有39(40-i)个空格;上半部每行前空40-i个空格,打印2i-1个号;下半部每行前空40-2n+i个空格,打印4n-1-2i个号,2023/1/4,51,第六章 字符型数据,一、选择题,6.1 C语言中的简单类型有A)整型,实型,逻辑型 B)整型,实型,字符型C)整型,字符型,逻辑型 D)整型,实型,逻辑型,字符型,C语言中无单独的逻辑型数据,6.2 C语言中,字符型(char)数据在微机内存中的存储形式是A)反码 B)补码 C)EBCDIC码 D)ASCII码,6.3 设有语句char a=72;,则变量a A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法,6.4 C语言中不合法的字符常量是 A)0XFF B)65 C)&D)028,6.5 C语言中不合法的字符串常量是 A)121 B)Y=C)nn D)ABCDX6d,2023/1/4,52,6.6 判断char型变量C是否为大写字母的最简单且正确的表达式是A)A=A)&(C=C)D)(C=A)&(C=Z),6.7 以下程序的输出结果是 A)因输出格式不合法,无正确输出 B)65,90 C)A,Y D)65,89main()char c1=a,c2=y;printf(%d,%dn,c1,c2);,6.8 以下程序的输出结果是 A)A B)a C)Z D)zmain()char x=a x=(x=A,2023/1/4,53,6.9 以下程序的输出结果是 A)67,C B)B,C C)C,D D)不确定的值main()char ch1,ch2;ch1=A+5-3;ch2=a+5-3;printf(%d,%cn,ch2);,6.10 对以下程序,从第一列开始输入数据:2473,代表ENTER,程序的输出结果是 A)668977 B)668966 C)66778777 D)6688766#include stdio.hmain()int c;while(c=getchar()!=n)switch(c-2)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);break;prinf(n);,c:2 c-2:0 打印 66 4 2 8 7 5 9 3 1 77,2023/1/4,54,6.11 若变量已正确说明,要求用以下语句给C1赋予字符%,给C2赋予字符#,给a赋予2.0,给b赋予4.0,则正确的输入形式是:A)2.0%4.0#B)2.0%4.0#C)2%4#D)2%4 scanf(%f%c%f%c,二、填空题,6.12 EOF的十进制值是。,26(z,F6),Page 255,6.13 C语言中,字符占内存_个字节.,1,6.14 调用C语言对字符处理的库函数时,在#include命令行中应包含的文件是。,上机时、都可;标准中应为,ctype.h,6.15 若输入字符A,在以下WHILE语句执行后ch的值是_.while(ch=getchar()=A);,1,2023/1/4,55,6.16 若要通过以下语句给a,b,c,d分别输入字符A,B,C,D,给w,x,y,z分别输入10,20,30,40,正确的输入形式是 请用代表ENTER键.scanf(%d%c%d%c%d%c%d%c,10A20B30C40D,6.17 若有以下说明和输入语句,要求给c1,c2输入字符 A,B,给a1,a2输入7.29和101.298,从键盘正确输入数据的形式是。char c1,c2;float a1,a2;scanf(%f%f,7.29 101.298AB,6.18 若有以下说明和输入语句,要求给c1,c2输入字符 A,B,给a1,a2输入7.29和101.298,从键盘正确输入数据的形式是。char c1,c2;float a1,a2;scanf(%c%f%c%f,7.29B101.298,6.19 若有以下说明和输入语句,要求给c1,c2,c3输入字符 A,B,C,从键盘正确输入数据的形式.char c1,c2,c3;scanf(%4c,B C,2023/1/4,56,三、编程题,6.20 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三对.,【参考答案】#include main()int k=0;char ch;while(ch=getchar()!=10)k+;printf(%4c%4d,ch,ch);if(k%3=0)printf(n);getch();,2023/1/4,57,6.21 请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格.请编程,把这一行中的数字转换成一个整数.例如:若输入:2 4 8 3 则输出整数:2483.,【参考答案】#include main()long k=0;char ch;while(