1、C语言程序练习题C语言程序练习题练习题一一、选择(单项选择,每题2分,共20分)1、C语言有各种基本数据类型,若对其进行sizeof运算,则下列正确是 ( )sizeof(char)=sizeof(int)=sizeof(long)=sizeof(float)sizeof(char)=sizeof(long)=sizeof(int)=sizeof(float)sizeof(float)=sizeof(long)=siezof(int)=siezof(char)sizeof(long)=siezof(char)=sizeof(float)=sizeof(int)2、请读下面程序#includem
2、ain( ) int x,y,z,w;w=(x=5,y=-11,z=43,3);printf(%d%d%d%d,x,y,z,w); 程序执行结果 ( )A) 5 -11 3 3 B) 5 -11 3 5 C) 5 -11 43 3 D) 5 -11 3 433、在C语言中逻辑值真的表示是用 ( )A) true B) 整型值0 C) 非零整型值 D) T4、有语句x=3;doprintf(%2d,x-); while(!x);执行结果是 ( )A) 3 B) 321 C) 死循环 D) 不输出内容5、请读下面程序 #include main() static char string =I lo
3、ve you!; printf (%s,string); 输出结果 ( ) A) I love you! B) I C) string D) !uoy evol I6、C语言中,在main函数中书写自变量可获得来自命令行的自变量,而自变量的说明应为 ( )A) main(char argc,char *argv) B) main(char argc,int *argv)C) main(int argc,char *argv) D) main(int argc,int *argv)7、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:int *p; p=_malloc(size
4、of(int);则应填入 ( )A) int B) int * C) (* int) D) (int *)8、若已知:int x;int y;则下面哪个表达式是有意义的 ( )A) &x B) &(x+y) C) &5 D) &y9、请读程序#include f(char *s1) char *s2=s1; while (*s2!=0) s2+; return(s2-s1); main( ) printf(%dn,f(1234567);上面程序的输出结果是 ( ) A) 4 (B) 7 (C) 9 (D) 0N_00110、已知结构eisei类型的变量a,其初始化赋值如下:static str
5、uct eisei a=20,5,1.7691;请写出结构eisei的类型定义 ( ) A)eisei struct Bstruct eisei char name( ); char name ; int kodo; int kodo; float shuki; double shuki; C)struct eisei D)eisei struct int name; int name; int kodo; int kodo; float shuki; float shuki;二、填空(每空2分,共20分):C源程序的基本单位是 (1) 。若a=1, b=4, c=3,则表达式 ! (abc的
6、值是 (4) 。C语言中,二维数组的定义方式为:类型说明符数组名 (5) (6) ;设有以下宏定义:#define WIDTH 80 #define LENGTH WIDTH+40 则执行赋值语句: v=LENGTH*20;(v为int 型变量)后,v的值是 (7) 。 建立上图所示存储结构所需的说明语句是 (8) 。 建立上图所示给a输入数据的输入语句是 (9) 。 建立上图所示存储结构所需的赋值语句是 (10) 。三、分析运行结果(每小题4分,共16分)1、下面程序的运行结果是: main( ) int i,j,a23=2,4,6,8,10,12; printf(“The original
7、 array is:n”); for(i=0;i2;i+) for(j=0;j3;j+)printf(“%4d”,aij);printf(“n”); printf(“nthe result is :n”);for(i=0;i3;i+) for(j=0;j2;j+)printf(“%4d”,aij);printf(“n”);2、若输入的值是-125,以下程序的运行结果是: #include”math.h” main( ) int n; scanf(“%d”,&n); printf(“%d=”,n); if(n0) printf(“-“); n=fabs(n); fun(n); fun(int n
8、) int k,r; for(k=2;k1) printf(“*”); r=n%k; if(n!=1) printf(“%dn”,n); 3、下面程序的运行结果是: main( ) int va10,vb10,*pa,*pb,i; pa=va;pb=vb; for(i=0;i3;i+,pa+,pb+) *pa=i; *pb=2*i; printf(“%dt%dn”,*pa,*pb); pa=&va0;pb=&vb0; for(i=0;i3;i+) *pa=*pa+i;*pb=*pb*i; printf(“%dt%dn”,*pa+,*pb+); 4、以下程序的运行结果是: main( ) str
9、uct EXAMPLEstruct int x; int y; in; int a; int b; e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d”,e.in.x,e.in.y);四、程序填空(每空2分,共20分)以下程序输出x,y,z三个数中的最大者。请在_内填入正确的内容。main( ) int x=4, y=6, z=7;int (1) ;if ( (2) ) u=x;else u=y;if ( (3) ) v=u;else v=z;printf(“v=%d”,v); 2. 下面程序的功能是在任意的字符串a中将与字符c相
10、等的所有元素的下标值分别存放在整型数组b中。请填空。 #include main( ) char a80; int i,b80,k=0; gets(a); for(i=0;ai!=0;i+) if( (4) ) bk=i; (5) ; for(i=0;ik;i+) printf(“%3d”,bi); 3. 结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请在_内填入正确内容。 static struct man char name20; int age; person =“li-ming”,18,“wang-hua”,19,“zhang-ping”,20 ; main(
11、 ) struct man *p,*q; int old=0; p=person; for(; p(6) ; p+) if(oldage) q=p; (7) ; printf(“%s %d”, (8) ); 4. 以下程序能找出数组中的最大值和该值所在的元素下标,数组元素值从键盘输入。请选择填空。 main( ) int x10,*p1,*p2, k; for(k=0; k10;k+) scanf(“%d”,x+k); for(p1=x,p2=x;p1-x*p2) p2=(9); printf(“MAX=%d, INDEX=%dn”,*p2, (10) ); (9) A) p1 B) p2p1
12、 C) xp2 D) x-p1 (10) A) p1-x B) p1 C) p2-x D) x-p2五、编程(共24分)1、编制程序:输入一个整数,判断它能否被3、5、7整除,并输出以下信息之一:能同时被3、5、7整除。能被其中两数(要指出哪两个)整除。能被其中一个数(要指出哪一个)整除。不能被3、5、7任一个整除。2、试利用结构体类型编制一程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。练习题二一、单选题(共30分,每小题2分)1、与代数式(x*y)/(u*v) 不等价的C语言表达式是( )。A. x*y/u*v B. x*y/u/v C. x*y/(u*v) D. x
13、/(u*v)*y2、对于char cx= 039;语句,正确的是( )。A. 不合法 B. cx的ASCII值是33 C. cx的值为四个字符 D. cx的值为三个字符3、假定x和y为double型,则表达式x=2,y=x+3/2的值是( )。A. 3.500000 B. 3C. 2.000000 D. 3.0000004、执行下列程序片段时输出结果是( )。int x=5,y;y=2+(x+=x+,x+8,+x);printf(“%d”,y);A. 13 B. 14 C. 15 D. 165、有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,
14、b的值为3,c的值为2,则正确的数据输入方式是( )。A. 132 B. a=1,b=3,c=2C. a=1 b=3 c=2 D. 1,3,26、对下述程序, 是正确的判断( )。main ( ) int x,y;scanf(“%d,%d”,&x,&y);if (xy) x=y;y=x;else x+;y+;printf(“%d,%d”,x,y);A. 若输入4和3,则输出3和4 B. 若输入3和4,则输出4和5C. 有语法错误,不能通过编译D. 若输入4和3,则输出4和57、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )。if (ab)if (cd) x=1;else
15、if (ac)if (bd) x=2;else x=3;else x=6;else x=7;A. 1 B. 2 C. 3 D. 48、下述程序段的运行结果是( )。int a=1,b=2, c=3, t;while (ab2&x3|x-10。()8、do-while语句与while语句的区别仅是关键字“while”出现的地方不同。()9、执行语句for(i=1;i+0; x-) if (x%3=0) printf(“%d”,-x); continue ;2、写出下面程序运行的结果。(5分)main ( ) int a=10,y=0 ;do a+=2 ; y+=a ;if (y50) break
16、 ; while (a=14) ;printf(“a=%d y=%dn”,a,y) ;3、下面程序段的功能是计算1000!的末尾有多少个零,请填(1)空使程序完整。(5分)main ( )int i,k,m;for (k=0,i=5; i=1000; i+=5) m = i ;while ( 1 ) k+; m=m/5 ; printf(%dn,k);4、下面程序的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为:“ABCDE”时则t中的字符串应为:“EDCBAABCDE”;判断下面程序的正误,如果错误请改正过来。(5分)#inc
17、lude #include main ( ) char s80,t200; int i,sl ;gets(s); sl = strlen(s);for (i=0; isl; i+) ti = ssl-i;for (i=0; isl; i+) tsl+i = si;puts(t);5、写出以下程序运行的结果。(5分)#include void main ( ) static char a =Language, b =programe; char *p1, *p2; int k; p1=a; p2=b; for (k=0 ;k=7;k+) if (*(p1+k)=*(p2+k) printf(%c
18、, *(p1+k);6、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。(5分)main ( )班级: 姓名: 学号: .OOOOO装O订O线OOOOO int n,k=1,s=0,m ;for (n=1 ; ns) printf(“%d ”,n);7、写出以下程序运行的结果。(4分)main ( ) int x=1,y=0,a=0,b=0;switch(x) case 1:switch (y) case 0 : a+ ; break ;case 1 : b+ ; break ;case 2:a+; b+; break;case 3:a+; b+;pr
19、intf(“a=%d,b=%d”,a,b); 8、写出下面程序的运行结果。(5分)struct n int x;char c; ;func(struct n b) b.x=20;b.c=y; main() struct n a=10,x; func(a); printf(%d,%c,a.x,a.c); 9、以下程序是求矩阵a,b的乘积,结果存放在矩阵C中并按矩阵形式输出,请填(3)空使程序完整。(5分)#include main ( ) int a32=2,10,9,4,5,119, b22=-1,-2,-3,-4; int i,j,k,s,c32; for (i=0; i3; i+) for
20、 (j=0; j2; j+) 1 for (k=0; k2; k+) s+= 2 cij=s;for (i=0; i3; i+)for (j=0; j2; j+) printf(“%6d”,cij); 3 ;四、编程题(共16分,每题8分)1、编程实现查找一个字符串在另一个字符串中出现的次数。2、如果整数A的全部因子(包括1,但不包括A本身)之和等于B;且整数B的全部因子(包括1,但不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内(包括3000)的全部亲密数。练习题三一、选择(单项选择,每题2分,共20分)以下叙述正确的是 ( )A) 在C程序中,main函数必须位于程序的最
21、前面B) C程序的每行只能写一条语句C) C程序的本身没有输入输出语句D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误2、设x,y和z都是int型变量,且x=2,y=3,z=4,则下面的表达式中值为0的表达式是 ( ) A) x&z B) (!y= =1)&(!z= =0) C) (xy)&!z|1 D) x|y+y&z-y3、请读下面程序main( ) int i=8,j=10;printf(%d,%d,%d,%d,i,j,+i,j+); 运算结果为 ( )A) 9,11,9,10 B) 8,10,9,10 C) 8,10,8,11 D) 8,10,9,114、当输入流为12345 067891a36时,执行下面的程序段: int i,j; float x,y; char c; scanf(%2d%f%f%c%d,&i,&x,&y,&c,&j); 则变量i,j,x,y,c中的内容分别为 ( )A)12, 345.000000, 67891.000000,a,36B)12345,无值, 67891.000000,a,36C)12345,67891.000000,97, 3,6D)输入格式有错,不能正确对这些变量赋值。5、为了避免嵌套的条件语句if-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1