c语言程序填空题1
- 格式:docx
- 大小:49.38 KB
- 文档页数:28
C语言练习题一一、填空题。
(每空1分,共10分)1.语句while(e==0):中的条件e==0等价于_____________;答案:!e2 printf(“%4s”,“beijing”);输出为:_____________;答案:beijing3.C语言中的字符串以字符_____________;答案:答案:\04.C语言可以处理的文件类型是_____________和_____________;答案:文本文件和二进制文件5,int(*P)[5];说明p是:_____________;答案:指向一维整形数组的指针变量6.函数直接或间接地调用自己,被称为函数的_____________;答案:递归7.若有static int x[5],x[4]的地址表示是:___________ 。
答案:&x[4]或x+48.有程序段如下:int x=l:while (x<=lO){x+=3;printf(“%d\n”,x);}则:函数printf()执行次数是____4_____ ,循环结束后X的值是___________ 。
答案:139.若有以下定义和语句,则sizeof(a)的值是_____,答案:12,而sizeof(b)的值是__。
答案:4 struct{int day;char month;int year;}a,*b;10.若有static char c[10] = “China”;执行该语句后c[1]= ___________ 。
答案:h c[5]= ___________ 。
答案:\0c[6]= ___________ 。
答案:\0 strlen(c)= ___________ 。
答案:511.若有Static char c[s]={’a’,’b’,’\0’(零),‘c’,‘d’};printf(“%s\n”,c):则输出内容为:___________ 。
答案:ab12.下面程序把从终端读人的10个整数以二进制方式写到一个名为bi.dat的新文件中。
C语言法式设计习题参考谜底之迟辟智美创作习题 1一、判断题1.在计算机中,小数点和正负号都有专用部件来保管和暗示.2.二进制是由0和1两个数字组成的进制方式.3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系.4.在整数的二进制暗示方法中,0的原码、反码都有两种形式.5.有符号数有三种暗示法:原码、反码和补码.6.经常使用字符的ASCII码值从小到年夜的排列规律是:空格、阿拉伯数字、年夜写英文字母、小写英文字母.解:1.F2.T 3.T 4.T 5.T 6.T二、单选题1.在计算机中,最适合进行数值加减运算的数值编码是 .A. 原码B. 反码C. 补码D. 移码2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数 .A. 112B. 120C. 121D. 1223.关于ASCII码,在计算机中的暗示方法准确地描述是 .A. 使用8位二进制数,最右边一位为1B. 使用8位二进制数,最左边一位为1C. 使用8位二进制数,最右边一位为0D. 使用8位二进制数,最左边一位为04.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________.A. X∧Y=1000B. X∨Y=1111C. X⊕Y=0011D. ¯Y=10005.下列叙述中正确的是().A.高级语言就是机器语言B.汇编语言法式、高级语言法式都是计算机法式,但只有机器语言法式才是计算机可以直接识别并执行的法式C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种D.C源法式经过编译、连接,若正确,执行后就能获得正确的运行结果6.用C语言编写的源法式经过编译后,若没有发生编译毛病,则系统将().A.生成可执行文件B.生成目标文件C.输出运行结果D.自动保管源文件7.下列叙述中不正确的是().A.main函数在C法式中必需有且只有一个B. C法式的执行从main函数开始,所以main函数必需放在法式最前面C. 函数可以带参数,也可以不带参数.D. 每个函数执行时,按函数体中语句的先后次第,依次执行每条语句解:1.C 2.C 3.D 4.B 5.B 6.B 7.B三、填空题1.(87.625)10=()2=()8=()162.(1001010111001.10111)2=()8=()16=()103.输入三个数,计算并输出三个数的和与三个数的乘积.法式如下:#include <stdio.h>void main(){inta,b,c,s,z;printf("Please input a b c:\n");s=a+b+c;printf("%d\n",s);}*4. 输入三角形三条边的边长,计算并输出三角形的面积.根据三条边的边长,计算三角形面积的公式如下:法式如下:#include <stdio.h>#include <math.h>void main(){double x,y,z,s,dime;scanf("%lf%lf%lf",&x,&y,&z);dime=sqrt(s*(s-x)*(s-y)*(s-z));}解:1.1010111.101 127.5 57.A2.11271.56 12B9.B8 4793.718753.scanf("%f%f%f",&a,&b,&c); z=a*b*c; printf("%f",z);4.s=(x+y+2)/2; printf("%f",dim);四、编程题1.仿照例1.1,编法式在屏幕上显示:*****************************MerryChristmas!HappyNewYear!*****************************解:#include <stdio.h>void main(){ printf("*****************************\n");printf(" Merry Christmas!\n");printf(" Happy New Year!\n");printf("*****************************\n");}2.仿照例1.2编程,输入一个整数,计算这个数的平方.解:#include<stdio.h>void main(){ int a,z;printf("请输入一个整数:\n");scanf("%d",&a);z=a*a;printf("%d*%d=%d\n",a,a,z);}*3.仿照例1.3编程,输入两个数后,输出其中较小值.解:#include<stdio.h>float min(float x, float y){ float m;if (x<y) m=x;else m=y;return m;}void main(){ float a,b,c,mindata;printf("请输入二个数:\n");scanf("%f %f",&a,&b);mindata=min(a,b);printf("较小数:%f\n",mindata);}*4.仿照例1.2编程,输入a、b后,输出一元一次方程ax+b=0的解.解:#include<stdio.h>void main(){ float a,b,x;printf("请输入a、b:\n");scanf("%f %f",&a,&b);x=-a/b;printf("x=%f\n",x);}*5.仿照例1.2编程,输入圆柱体的半径和高,计算并输出圆柱体的体积.解:#include <stdio.h>void main(){ float r,h,s,v;printf("Please input r and h:\n");scanf("%f %f",&r,&h);v=3.14*r*r*h;printf("V=%f\n",v);}习题2一、判断题1.任何变量都必需要界说其类型.2.C语言的double类型数据在其数值范围内可以暗示任何实数.3.C语言的任何类型数据在计算机内都是以二进制形式存储的.4.isdigit(‘5’)的结果为0.5.printf函数中格式符“%c”对应的参数只能是字符类型.6.按格式符“%d”输出float类型变量时,截断小数位取整后输出.7.在C语言法式中,ABC与abc是两个相同的变量.8.scanf函数中的格式符“%d”不能用于输入实型数据.9.格式符“%f”不能用于输入double类型数据.10.当格式符中指定宽度时,输出的信息完全取决于所指定的宽度.解:(1)T (2)F (3)T (4)F (5)F (6)F (7)F (8)T (9)T (10)F二、指出下列各项中哪些是C语言中的常量,并指出其类型10,150 007 –0x3d π 1e0 e1 o7o8‘x’ ‘x o’ 1.52e0.5 sin(3) 0xf16 ‘\a’‘\009’1.414E+22.54‘\\’ ‘a’+2 0x100h 0128 10L解:合法的C常量有:整型常量: 007 –0x3d0xf16 10L实型常量: 1e0 1.414E+2字符型常量:‘x’‘\a’‘\\’三、指出下列各项中哪些是C语言中的用户标识符x_1 X_2 High printf β 3DS i/je2 -e2 count Int number $23 next_sizeof IF sum_12_123# NO1: double for解:C的用户标识符有:x_1 X_2 High e2 count Int number next_ IF sum_12四、单项选择题1.C语言中,char型数据在内存中的存储形式是().A.原码 B.反码C.补码D.ASCII码2.若有界说语句“char c='\72';”则变量c().A.包括1个字符B.包括2个字符C.包括3个字符D.界说分歧法3.C语言中的基本数据类型包括().A.整型、实型、逻辑型B.整型、实型、字符型C.整型、逻辑型、字符型D.整型、实型、逻辑型、字符型4.设c1、c2为字符型变量,执行语句“c1=getchar();c2=getchar();”时,从键盘输入A↙,c1和c2的值分别为().A.都是‘A’B.c1是‘A’,c2未输入C.c1未输入,c2是‘A’D.c1是‘A’,c2是‘\n’5.a、b是整型变量,执行语句“scanf("a=%d,b=%d",&a,&b);”,使a和b的值分别为1和2,正确的输入是().A.1 2B.1,2C.a=1,b=2D.a=1 b=26.设c为字符型变量值为‘A’,a为整型变量值为97,执行语句“putchar(c);putchar(a);”后,输出结果为().A.AaB.A97C.A9D.aA7.已知字母A的ASCII码值为65,以下语句段的输出结果是().char c1='A',c2='Y'; printf("%d,%d\n",c1,c2);A.输出格式非法,输犯毛病信息B.65,90C.A,YD.65,898.若要使用输入语句“scanf("%4d%4d%10f",&i,&j,&x);”,为i输入-10,为j输入12,为x输入345.67,则正确的输入形式是().A.–1012345.67↙B.–1012345.67↙C.–10001200345.67↙D.–10,12,345.67↙9.能正确地界说符号常量的是().A.#define n=10B.#define n 10C.#define n 10; D.#DEFINE N 1010.在C语言中,int、char、short三种类型数据在内存中所占的字节数().A.由用户自己界说 B.均为2个字节 C.是任意的 D.由机器字长决定解:(1) D (2) A (3) B (4) D (5) C(6) A (7) D (8) B (9) B (10) D五、填空题1.char ch='$';float x=153.4523;语句“printf("%c%–8.2f\\n",ch,x);”的输出结果是 .解:$153.45 \n2.int i=123;float x=– 1234.56789;语句“printf("i=%5d x=%7.3f\n",i,x);”的输出结果是 .解:i= 123 x=-1234.5683.char c='a';int a=65;语句“putchar(c+1);putchar(a);”的输出结果是 .解:bA4.int a=98;语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是 .解:98,c,144,655.int k; float f;语句“scanf(“%3d%*4d%6f”,&k,&f);”执行时输入 12345678765.43↙则 k= ,f= .解:k=123 f=8765.46.使用pow()函数时,法式的开头必需写一条预处置命令: .解:#include <math.h>5.填空题.(1)int i=123,j=45;函数printf("%d,%d\n",i,j);的输出结果是.解:123,45(2)int i=123; float x=-45.678;语句printf("i=%5d x=%7.4f\n",i,x); 的输出结果是.解:i= 123 x=-45.6780(3)float alfa=60,pi=3习 题 3一、根据下列数学式,写出C 的算术表达式.解:-(a 2+b 2)×y 4的C 表达式:-(a*a+b*b)*pow(y,4)π++-x 12tan 102的C 表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+3.141593) 5.3|)sin(|x 的C 表达式:sqrt(pow (fabs (sin(x)),3.5))56e x -的C 表达式:pow(x,6)-exp(5)cd d c b a d c ab +-+++221的C 表达式:(1.0/2*a*b+c+d)/(a+2*b-(c+d)/c/d)二、依照要求,写出下列C 的表达式.1.写出int 类型变量x 为“奇数”的表达式.解:x%2==12.Int 类型变量x 、y 、z ,写出描述“x 或y 中有且仅有一个小于z ”的表达式.解:x<z&&y>=z||x>=z&&y<z3.将double 类型变量y 保管四位小数的表达式.解:(int)(y*10000+0.5)/10000.04.为变量s 赋值:取变量x 的符号,取变量y 的绝对值.解:s=(x>=0?1:-1)*(y>=0?y:-y)5.条件“-5≤x ≤3”所对应的C 逻辑表达式.解:-5<=x&&x<=36.a 、b 是字符变量,已知a 的值为年夜写字母、b 的值为小写字母,写出判断a 、b 是否为同一字母(不区分年夜小写)的逻辑表达式 解:a+32==b 或 b-a==32?1:07.int 类型变量a 、b 均为两位正整数,写出判断a 的个位数即是b 的十位数、且b的个位数即是a的十位数的逻辑表达式.解:a%10==b/10&&a/10==b%108.写出判断某个人是否是成年人(年龄年夜于21),且不是老年人(年龄年夜于65)的逻辑表达式.解:y>21&&y<=659.写出取变量a、b、c中最年夜值的条件表达式.解:(a>b?a:b)>c?(a>b?a:b):c10.若字符变量ch为小写字母,则将其转换为对应的年夜写字母.解:ch=ch>='a'&&ch<='z'?ch-32:ch三、单项选择题1.设int x=3,y=4,z=5;,下列表达式中值为0的是().A.'x'&&'y'B.x<=yC.x||y+z&&y–zD.!((x<y)&&!z||1)2.已知x=10,ch='A',y=0;,则表达式“x>=y&&ch<'B'&&!y”的值是().A.0B.1C.“假”D.“真”3.判断char型变量c为数字字符的正确表达式为().A.'0'<=c<='9'B.'0'<=c&&c<='9' C.c>='0'||c<='9'D.c>=0&&c<=94.下列运算符中,优先级最低的是().A.?:B.&&C.= =D.*=5.若有条件表达式“x?a++:b--”,则以下表达式中()等价于表达式x.A.x==0B.x!=0C.x==1D.x!=16.有界说int k=4,a=3,b=2,c=1;,表达式“k<a?k:c<b?c:a”的值是().A.4B.3C.2D.17.执行下列法式段后,变量a,b,c的值分别是().int x=10,y=9,a,b,c;a=(--x= =y++)?--x:++y;b=x++;c=y;A.a=9,b=9,c=9B.a=8,b=8,c=10C.a=9,b=10,c=9D.a=1,b=11,c=108.有界说int a=9;,语句“a+=a–=a+a;”执行后,变量的值是().A.18B.9C.–18D.–99.设x和y均为int型变量,则语句“x+=y;y=x–y;x–=y;”的功能是().A.把x和y按从小到年夜排列B.把x和y按从年夜到小排列C.无确定结果D.交换x和y中的值10.有界说double x=1,y;,表达式“y=x+3/2”的值是().A.1B.2C.2.0D.2.511.设有界说int x;double y;,则下列表达式中结果为整型的是().A.(int)y+xB.(int)x+yC.int(y+x)D.(double)x+y12.设有整型变量x,下列说法中,毛病的是().A.“5.0”不是表达式B.“x”是表达式C.“!x”是表达式D.“sqrt(x)”是表达式解:(1)D (2)B (3)B (4)D (5)B (6)D(7)B (8)C (9)D (10)C (11)A (12)A四、填空题.1.设float x=2.5,y=4.7; int a=7;,表达式x+a%3*(int)(x+y)%2/4 值为 .解:2.52.设int x=2,y=3;,执行语句“x*=x+y”后x的值为 .解:103.设int x=17,y=5;,执行语句“x%=x–y”后x的值为.解:54.设 int a=6,b=4,c=2;,表达式 !(a-b)+c-1&&b-c/2 的值为 .解:15.设 int a=2,b=4,x,y;,表达式!(x=a)||(y=b)&&!(2-3.5) 的值为 .解:06.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为 .解:a==-b7.判断变量a、b中必有且只有一个为0的逻辑表达式为 .解:a*b==0&&a+b!=08.设int m=2,n=2,a=1,b=2,c=3;执行语句d=(m=a==b)&&(n=b>c);后,m和n的值分别为 .解:m为0,n为29.设int a=2;,表达式“a%2!=0”的值为.解:010.设char c='y';,表达式“c>='a'&&c<='z'|| c>='A'&&c<='Z'”的值为.解:111.写出与代数式 (x+2)e x+2对应的C表达式 .解:(x+2)*exp(x+2)12.设int a=2;执行语句a=3*5,a*4;后a的值为 .解:15五、写出下列法式的输出结果.1.#include <stdio.h>void main(){unsigned k,n;scanf("%u",&n); //输入数据为:69k=n%10*10+n/10;printf("n=%d k=%d\n",n,k);}解:n=69 k=962.#include <stdio.h>void main(){int x=2,y=3;x*=y+4;printf("%d,%d\n",x,y);x/=y=5;printf("%d,%d\n",x,y);x-=y%2;printf("%d,%d\n",x,y);}解:14,32,51,53.#include <stdio.h>void main(){int a, b;a=8;b=7;a=(a-- ==b++)? a%3 : a/3;printf("a=%d b=%d\n",a,b);}解:a=2 b=8六、法式填空题.1.以下法式输入三个整数值给a,b,c,法式把b中的值给a,把c 中的值给b,把a中的值给c,交换后输出a、b、c的值.例如输入1 2 3,输出a=2 b=3 c=1.#include <stdio.h>void main(){ int a,b,c,①;p rintf(“Enter a,b,c:”);scanf(“%d%d%d”,②);③; a=b; b=c; ④;printf(“a=%d b=%d c=%d\n”,a,b,c);}解:① t ② &a,&b,&c ③ t=a ④ c=t2.以下法式不借助任何变量把a、b中的值进行交换.#include <stdio.h>void main(){ int a,b;printf(“Input a,b:”);scanf(“%d%d”,①);a+=②; b=a-③; a-= ④;printf(“a=%d b=%d\n”,a,b);}解:① &a,&b ② b ③ b ④ b七、编程题.1.输入3个字符后,按各字符ASCII码从小到年夜的顺序输出这些字符.解:#include <stdio.h>void main(){ char c1,c2,c3,t,min,mid,max;c1=getchar(); c2=getchar(); c3=getchar();min=(t=c1<c2?c1:c2)<c3?t:c3;max=(t=c1>c2?c1:c2)>c3?t:c3;mid=c1+c2+c3-min-max;putchar(min);putchar(mid);putchar(max);}2.输入两点坐标(x1,y1)、(x2,y2),计算并输出两点间的距离.解:#include <stdio.h>#include <math.h>void main(){double x1,y1,x2,y2,d;printf(“请输入两点坐标 (x1,y1),(x2,y2)\n”);scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2);d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));printf(“两点间距离=%f\n”,d);}3.编写法式,计算球体积并输出它的值.要求输入半径值,计算结果保管三位小数.解:#include <stdio.h>#include <math.h>#define PI 3.1415926void main(){ double r,gv;printf(“请输入半径值:\n”);scanf(“%lf”,&r);gv=4.0/3*PI*pow(r,3);printf(“半径为%f的球的体积为:%.3f\n”,r,gv);}4.输入三角形的底和高,求三角形面积.解:#include <stdio.h>#define PI 3.14159void main(){double a,h,s;printf(“请输入三角形的底,高\n”);scanf(“%lf,%lf”,&a,&h);s=a*h/2;printf(“三角形面积=%f\n”,s);}5.编写法式,输入一个实数后输出该数的绝对值.解:#include <stdio.h>void main(){double x,y;printf(“请输入一个实数\n”);scanf(“%lf”,&x);y=x>=0?x:-x;printf(“|%g|=%g\n”,x,y);}6.输入梯形的上底、下底和高,求梯形面积.解:#include <stdio.h>void main(){double a,b,h,s;printf(“请输入梯形的上底,下底,高\n”);scanf(“%lf,%lf,%lf”,&a,&b,&h);s=(a+b)*h/2;printf(“梯形面积=%f\n”,s);}7. 输入矩形的边长,求矩形面积.解:#include <stdio.h>void main(){double a,b,s;printf(“请输入矩形的长,宽\n”);scanf(“%lf,%lf”,&a,&b);s=a*b;printf(“矩形面积=%f\n”,s);}8. 已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入.解:#include <stdio.h>void main(){int a,d,n,sum;printf(“请输入等差数列的首项公差项数\n”);scanf(“%d%d%d”,&a,&d,&n);sum=a*n+n*(n-1)*d/2;printf(“ sum=%d\n”,sum);}9. 编写法式,将d天h小时m分钟换算成份钟,输入d、h、m,输出换算结果.解:#include <stdio.h>void main(){int d,h,m,t;printf(“请输入天小时分钟\n”);scanf(“%d%d%d”,&d,&h,&m);t=d*24*60+h*60+m;printf(“%d天%d小时%d分钟=%d分钟\n”,d,h,m,t);}10. 编写法式,求出给定半径r的圆以及内接正n边形的面积,输出计算结果.r和n的值由键盘输入.解:#include <stdio.h>#include <math.h>#define PI 3.14159void main(){double r,s1,s2;int n;printf(“Input r n\n”);scanf(“%lf%d”,&r,&n);s1=PI*r*r;s2=n/2.0*r*r*sin(2*PI/n);printf(“圆面积=%f,正内接%d边形面积=%f\n”,s1,s2);}习题4一、单项选择题1.下列语句将小写字母转换为年夜写字母,其中正确的是().A.if(ch>='a'&ch<='z')ch=ch-32;B.if(ch>='a'&&ch<='z')ch=ch-32;C.ch=(ch>='a'&&ch<='z')?ch-32:'';D.ch=(ch>'a'&&ch<'z')?ch-32:ch;2.下列各语句中,能够将变量u、s中最年夜值赋给变量t的是().A.if(u>s)t=u;t=s;B.t=s;if(u>s)t=u;C.if(u>s)t=s;else t=uD.t=u;if(u>s)t=s;3.假设变量x、k都已界说,下列语句片段中,无语法毛病的是().A.switch(x){case x>=90: putchar('A');case x<60: putchar('E');}B.switch(x) {case 1+2: k='A';defualt: k='E';case 2*4: k='B';}C.switch(x){case 2+x: k=x-2;case 3*x: k=x+3;default: k=0;}D.switch(x){case 3.5: k=0.5*x;case 7.8: k=8*x;default: k=0;}*4.与语句while(!s )中的条件等价的是().A.s==0B.s!=0C.s==1D.s=05.下列语句中,哪一个可以输出26个年夜写英文字母().A.for(a='A';a<='Z';printf("%c",++a));B.for(a='A';a<'Z';a++)printf("%c",a);C.for(a='A';a<='Z';printf("%c",a++));D.for(a='A';a<'Z';printf("%c",++a));6.判断下面的while循环体的执行次数().i=0;k=10;while( i=8 ) i=k––;A.8次B.10次C.2次D.无数次解:(1) B (2) B (3) B (4) A (5) C (6) D二、写出下列法式的输出结果1.#include <stdio.h>void main(){char x;。
选择题(30分)(第一部分分10分,第二部分12分,第三部分8分)第一部分:简单类题目( 50个题目,从中选择10,每题1分)1、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为(C) A.4 B.16 C.32 D.5222.以下程序的输出结果(B)。
main( ){ int x1=3, x2=0, x3=0;if (x1=x2+x3)printf("* * * *");else printf("# # # #");}A.输出:* * * * B.输出:# # # #C.存在语法错误 D.无输出结果3.下面四个选项中,均是合法转义字符的选项是(A)。
A.'\'' '\\' '\n' B.'\' '\017' '\"'C.'\018' '\f' 'xab' D.'\\0' '\101' 'xlf'4.若有说明:int a=1,b=2,c=3,d=4;则表达式a<b?a:c<d?c:d的值是(D)。
A、4B、3C、2D、15.设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是(D)。
A. i&&j B.i<=jC.i||j+k&&j-k D.!((i<j)&&!k||1)6.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是(C)。
A.num%2= =1 B. !(num%2= =0) C.!(num%2) D.num%27.有以下程序main(){ int m=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序运行后的输出结果是 ( D ) 。
计算机程序设计基础(C语言)程序填空练习题程序填空:阅读程序。
在划线处填写适当的表达式或语句,使程序完整并符合题目要求1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。
main( ) 参考答案:{ char ch;ch=getchar();if( ) ch>='a'&&ch<='z'|| ch>='A'&&ch<='Z' printf("It is an English character\n");else if( ) ch>='0'&&ch<='9'printf("It is a digit character\n");else if( ) ch==' 'printf("It is a space character\n");elseprintf("It is other character\n"); }2.10个学生成绩按交换法排序。
main(){ float score[10], temp1;int i, j;printf("Please enter score:\n");for (i=0; i<10; i++)scanf("%f",&score[i]);for (i=0; i<9; i++)for (j=i+1; j<10; j++)if (score[j] > score[i]){ temp1=score[j];score[j]=score[i];score[i]=temp1;}printf("Sorted results:\n");for (i=0; i<10; i++)printf("%4.0f\n", score[i]); }11.排序函数:用交换法按成绩由高到低对学生成绩重新排序void Sort(float score[ ],int n){ int i, j;float temp1;for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++)if ( ) score[j] > score[i]{ temp1 = score[j];; score[j]=score[i];score[i] = temp1;}}}自定义一函数求n!, 编写程序输入n,输出n!.#include<stdio.h>long jc(int n){ int i=1;long p=1;while (i <= n){ p=p*i;i++; }} return p;main(){ int n;printf("Please enter n:");scanf("%d", &n);printf("%d! = %ld\n", n, ); jc(n)}4.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。
习题一一、选择题1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符2.C程序中的变量(B)。
A.不用说明B.先说明后引用C.先引用后说明D.引用和说明顺序无关3.变量的说明在(B)。
A.执行语句之后B.执行语句之前C.执行语句当中D.位置无关4.C语言是一种(C)。
A.机器语言B.符号语言C.高级语言D.面向对象的语言二、填空题1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
习题二一、选择题1.下列数据中属于字符串常量的是( B)。
A.ABC B."ABC" C.'abc' D.'A'2.在计算机内存中,'\n'占用的字节数是( C)。
A.4 B.3 C.1 D.23.字符串"ABC"在内存中占用的字节数是( D)。
A.6 B.8 C.3 D.44.在C语言中,合法的长整型常数是( B)。
A.568701400 B.0L C.0.03546287 D.2.654e115.char型常量在内存中存放的是( A)。
A.ASCII代码值B.BCD代码值C.十进制代码值D.内码值6.下列各项中正确的标识符是( D)。
A.?bb B.a=8 C. b.βD.b_47.下列不正确的转义字符是( D)。
A.\\ B.\ 0 C.\" D.0x48.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。
A.0 B.1 C.2 D.39.设a的值为5,执行下列语句后,b的值不为2的是( C)。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/210.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( C)。
C 语言程序填空题1. 阅读以下程序并填空。
以下程序的功能是:输出三位正整数中能被13整除的数#include <stdio.h>main(){ int n; for( n=100 ; n<=999 ;n++) if(n%13!=0) continue ;else printf("%d\n",n);}2. 阅读以下程序并填空。
以下程序的功能是:输出100以内能被3整除且个位数为6的所有整数#include <stdio.h>main(){ int i,j; for(i=0; i<=9 ;i++) { j= i*10+6 ; if(j%3!=0) continue;else printf("%d\n",j);} }3. 阅读以下程序并填空。
以下的程序功能是:求101至999之间所有能被13整除的整数之和和个数#include <stdio.h>main(){ int i,cnt;float sum=0;i=101; cnt=0; while( i<=999 ){ if( i%13==0 ){ sum+=i; cnt++; }i++ ; }printf("sum=%f,cnt=%d\n",sum,cnt);}4. 阅读以下程序并填空。
该程序的功能是:用递归的方法求菲波那契数列2,2,4,6,10,16,26,42,68,110,……的第10项#include <stdio.h>long fib(int n){ if(n>= 3 )return fib(n-1)+fib(n-2) ;else return 2 ; }main(){ printf("%ld\n",fib(10)); }5. 阅读以下程序并填空。
该程序的功能是:用递归法求:n ++++ 321#include <stdio.h>long Sum(int n) { if(n> 1 )return n+Sum(n-1) ;else return 1 ;}6. 阅读以下程序并填空。
三、程序填空题导读:在程斥填空题中,已经给出了程序的主干,读者首先要理解程序的思路, 再选择正确的内容填入空白处,使程序完成既定的功能。
这类习题的设计就是要引导读者逐步堂握编程的方法。
本节习题的难度适中,可能有些典型的程序在课堂上己经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。
在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而白己编写程序乂不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。
【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。
ttinclude <stdio. h>main(){ int a, b;scanf (”%d%d", &a, &b):printf ("a=%d, b二%d\n", a, b); printf ("a=%d, b=%d\n/F, a, b): }a=b=a=①②③【3.2】下面程序的功能是根据近似公式:十/6~ 1/12+1/22+1/32+……+l/n2, 求兀值。
廿include〈math・ h>double pi(long n){ double s=0. 0;long i;for(i=l; i<=n; i++)s=s+ ①;return (②);}[3.3]下面的程序的功能是求一维数组中的最小元素。
findmin(int *s, int t,int *k){ int p;for(p=0, *k=p: p<t; p++)if (s[p]<s[*k])①:}main 0{ int a[10], i, *k=&i;for(i=0; i<10; i++)scanf &a[i]);findmin(a, 10, k);printf ("%d, %d\n", *k, a L*kJ);}【3.4】下面程序的功能是计算1-3+5-7+……-99+101的值。
main(){ int i, s=0:for(i=l; i<=101: i+=2){①;s二s+t:②;}printf ("%d\n", s);}[3.5]有以下程序段:s=l. 0;for(k=1: k<=n: k++)s=s+l. 0/(k*(k+1));printf ("%f\n", s);填空完成下述程斥,使之与上述程序的功能完全相同。
s=0. 0:①;k=0;do{ s二s+d;②;d=1.0/(k*(k+l));}while(③);printf ("%f\n", s);[3.6]下而程用的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。
main ();、float x, amax, amin;scanf &x);amax=x:amin=x;while(①):if(x>amax) amax=x;if ( (2) ) amin=x:scanf ("%f", &x):}printf (\namax=%f \namin=%f \n, amax, amin): }【3.7】下而程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。
fun(int x, int b[]){ int k=0,r:do{ r=x% ①;b[k 十+]=!*:x/=②;}wh 订e (x);}【3.8】下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。
例如数字26,数位上数字的乘积12大于数字之和8。
main(){ int n, k=l, s=0, m:for(n=l; n<=100; n++){ k=l:s=0;①;while(②){ k*=m%10:s+=m%10;③;}if (k>s)printf n);}}[3.9]下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。
main(){ int i, j, k, count=0;for(i=l; i<=9; i++)for(j=0; j<=9; j++)if(①)continue;else for(k=0; k<=9: k++)辻(②)count++;printfcount):}[3.10]下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。
main (){ int i, j;for(i=0;①:i++){ j=i*10+6;if(②)countinue:printf j);}}[3.11】下面程仔的功能是用辗转相除法求两个正整数m和n的最大公约数。
hcf (int m, int n){ int r;迁(m<n){ r=m;①:n=r:}r=m%n:while(②){ m=n:n=r;r=m%n:}③:}[3.12]下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。
排好序的10个数分两行输出。
程序如下:ftinclude <stdio. h>main(){①:int i, j;printf("Input 10 numbers please'n");for(i=0;②;i++ )scanf (*%f &a [i]):printf("\n"):for(i=2;③;i++ ) for(j=0;④;j++ ) if(⑤) { x 二a[j]:⑥:a[j+l]=x;} ”printf("The sorted 10 numbers; for(i=0:⑦;i++ ) {迁(⑧)printf("\n"): printf a[i]);}printf("\n");}[3.13】下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。
^include "stdio. h"main(){ int i, a[20], s, count:s=count=0:for(i=0: i<20; i++ )scanf ("%d",①);for(i=0; i<20; i++){辻(a[i]<0)②:s+=a[i];count++;}printf("s=%d\t count=%d\n", s, count);}[3. 14]下面程序的功能是删除字符审s中的空格。
ttinclude <stdio. h>main (){ char *s="Beijing ligong daxue";int i, j;for(i=j=0; s[i]!='\0': i++)if(s[i]!=',)①;else ②;printfs):[3.15]下面程序的功能是将字符串s中所有的字符5’删除。
请选择填空。
ttinclude<stdio. h> main(){ char s[80]:int i, j;gets(s):[3.16]下面程序的功能是输出两个字符串中对应相等的字符。
请选择填空。
#include <stdio. h>char x[]="programming":char y []=,,Fortran z,;main(){ int i=0;while(x[i] != ' \0' && y[i] != ' \0')if (xCi]=y[iJ)printf①):[3.17]下面程序的功能是将字符串s中的每个宁符按升序的规则插到数组a 中,字符串a已排好序。
#include <string・ h>main(){ char a [20] =/x cehiknqtw z,;char s[]="fbla":int i, k, j;for(k=0: s[k]!= ' \0'; k++ ){ J=0:while(s[k]>=a[j] && a[j]!二'\0‘) j++;for(①)②; a[j]=s [k];puts(a): }[3. 18】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
^include <stdio. h>main(){ char strl[100], str2[100],c;int i, s;printf("Enter string 1: ”); gets(stri); printf("Enter string 2: ”); gets(str2); i 二0;while((strl[i] == str2[i] && strl[i]!=①))i++;s=②;printf (*%d\n*, s):}[3.19]下面的函数expand在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符表示,即用’\n表示换行符,用'\t'表示制表符。
expand (char s[], char t []){ int i, j:for(i=j=0; s[i]!= '\0'; i++ )switch (s[i]){ case ' \n' : t [①]二②;t[j++]二,n';break:case ' \t' : t [③]二④;t[j±+]二't';break:default: t[⑤]二s[i];break:}t[j]=⑥;}(3. 20]卜面的函数index (char s[], char t[])检査字符串s中是否包含字符串t,若包含,则返回七在£中的开始位置(下标值),否则送回7.index (char s [], char t []){ int i, j, k;for(i=0; s[i]!= '\0'; i++ ){ for (j=i, k=0;① && s[j]=t [k]; j++, k++):if(②)return (i):}return(-1):}[3.21]下面程序的功能是计算S二k! ok=0long fun(int n){ int i;long s;for(i=l; i ①:i++)s*=i;return (②);}main (){ int k, n;long s;scanf &n);s=③:for(k=0: k<=n: k++)s+=④;printf("%ld\n",s);}(3. 22]下面程斥的功能是显示具有n个元素的数组s中的最大元素。