第一章 程序设计基础知识小测验1、一个c程序的执行是从 。
a、本程序的main函数开始,到main函数结束
b、本程序的第一个函数开始,到本程序文件的最后一个函数结束
c、本程序的main函数开始,到本程序文件的最后一个函数结束
d、本程序的第一个函数开始,到本程序main函数结束
2、以下叙述正确的是 。
a、在c程序中,main函数必须位于程序的最前面
b、c程序的每行中只能写一条语句
c、c语言本身没有输入输出语句
d、在对一个c程序进行编译的过程中,可以发现注释中的拼写错误
3、下叙述不正确的是 。
a、一个c源程序可由一个或多个函数组成
b、一个c源程序必须包含一个main函数
c、c程序的基本组成单位是函数
d、在c程序中,注释说明只能位于一条语句的后面
4、c语言规定:在一个源程序中,main函数的位置 。
a、必须在最开始
b、必须在系统调用的库函数的后面
c、可以任意
d、必须在最后
5、一个c语言程序是由 。
a、一个主程序和若干子程序组成
b、函数组成
c、若干过程组成
d、若干子程序组成
6、c语言的源程序必须通过 和连接后,才能被计算机执行。
7、在vc环境中用运行一个c程序时,所运行程序的后缀是 。
8、c语言源程序文件的后缀是 。
9、c语言源程序经过编译后,生成文件的后缀是 。
10、结构化程序由 顺序结构、选择结构、 三种基本结构组成。
11、在c语言中,输入操作是由库函数 完成的。
12、在c语言中,输出操作是由库函数 完成的
第二章 c语言基本数据类型、运算符与表达式测验1、设c语言中的一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为 。
a、0~255
b、0~32767
c、0~65535
d、0~2147483647
2、下列4组选项中,均不是c语言关键字的选项是 。
a、define iff typey
b、getc char printf
c、include scanf case
d、while go pow
3、下面4个选项中,均是合法整型常量的选项是 。
a、160 0xffff 011
b、-0xcdf 01a 0xe
c、-01 986,012 0668
d、x48a 2e5 0x
4、下面4个选项中,均是合法浮点数的选项是 。
a、 1e 1 5e-9.4 03e2
b、-.60 12e-4 -8e5
c、123e 1.2e-.4 2e-1
d、-e3 .8e-4 5.e-0
5、下面4个选项中,均是合法转义字符的选项是
a、'\'' '\\' '\n'
b、'\' '\018' '\"'
c、'\018' '\f' 'xab'
d、'\\0' '\101' 'xlf'
6、下面正确的字符常量是 。
a、"c"
b、"\\"
c、'w'
d、""
7、下面4个选项中,均是正确的八进制数或十六进制数的选项是 。
a、-10 0x8f -o19
b、0abc -017 0xc
c、010 0x11 0xf1
d、0a12 -0x123 -0xa
8、下面不正确的字符串常量是 。
a、'abc'
b、"12'12"
c、"0"
d、""
9、在c语言中,int、char和short三种类型数据在内存中所占用的字节数 。
a、由用户自己定义
b、均为2个字节
c、是任意的
d、由所用机器的机器字长决定
10、以下表达式值为3的是 。
a、16-13% 10
b、2 3/2
c、14/3-2
d、(2 6)/(12-9)
11、设有说明语句:int k=7,x=12;则以下能使值为3的表达式是 。
a、x%=(k%=5)
b、x%=(k=k%5)
c、x%=k=k%5
d、(x%=k)-(k%=5)
12、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为 。
a、4
b、16
c、32
d、52
13、以下不正确的叙述是
a、在c程序中,逗号运算符的优先级最低
b、在c程序中,aph和aph是两个不同的变量
c、若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变
d、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
14、在c语言中,要求运算数必须是整型的运算符是
a、/
b、
c、%
d、!=
15、表达式x=6应当读做 。
16、若有定义语句: int m=5,y=2; 则执行表达式y =y-=m*-y后的y值是 。
17、在c语言中的实型变量分为两种类型,它们是float和 (写关键字,不写中文)。
18、c语言所提供的基本数据类型包括:单精度型、双精度型、 (写汉字)、 字符型和空类型。
19、已知字母a的ascil码为十进制数97,设ch='c',则表达式ch-'a' '8'-'3'的值为 。
20、若有定义语句:int s=6;则表达式s%2 (s 1)%2的值为 。
21、若a是int型变量,则表达式(a=4*5,a*2),a 6的值为 。
22、若a、b和c均是int型变量,则执行表达式a=(b=4) (c=2)后a的值为 。
23、若a是int型变量,且a的初值为6,则执行表达式a =a-=a*a后a的值为
24、若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a b)/2 (int)x%(int)y的值为 (保留1位小数)。
25、若有定义语句:int x=3,y=2;float a=2.5,b=3.5;则表达式(x y)%2 (int)a/(int)b的值为 。(注意结果的类型)
26、假设变量a、b均为整型,则表达式(a=2,b=5,a ,b ,a b)的值为 。
第三章 简单c程序设计(顺序、选择、循环)顺序结构1、以下程序的运行结果是 。 #include
void main() { int m=5,n=10; printf("%d,%d\n",m ,--n); }
a、5,9
b、6,9
c、5,10
d、6,10
2、以下程序的运行结果是 。
a、01,12
b、201,10
c、01,10
d、20,01
3、#include void main() { char chl='a',ch2='a'; printf("%c\n",(chl,ch2)); }则以下叙述中正确的是 。
a、程序的输出结果为大写字母a
b、程序的输出结果为小写字母a
c、运行时产生错误信息
d、格式说明符的个数少于输出项的个数,编译出错
4、已有定义int a=-2;和输出语句:printf(“%8lx”,a);以下正确的叙述是 。
a、整型变量的输出格式符只有%d一种
b、%x是格式符的一种,它可以适用于任何一种类型的数
c、%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
d、%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
5、若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是 。
a、scanf(”%d%lx,%le”,&x,&y,&z);
b、scanf(”%2d*%d%lf”,&x,&y,&z);
c、scanf(”%x%*d%o”,&x,&y);
d、scanf(“%x%o%6.2f”,&x,&y,&z);
6、#include void main() { char cl,c2,c3,c4,c5,c6; scanf("%c%c%c%c",&cl,&c2,&c3,&c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf("%c%c\n",c5,c6); } 若运行时从键盘输入数据: abc<回车> defg<回车> 则输出结果是 。
a、abcd
b、abde
c、abef
d、abfg
7、以下不符合c语法的赋值语句是 。
a、m=(2 1,m=1);
b、m=n=0;
c、m=1,n=2;
d、5 ;
8、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是 。
a、int a=b=c=5;
b、int a,b,c; a=b=c=5;
c、a=5,b=5,c=5;
d、a=b=c=5;
9、已知ch是字符型变量,下面不正确的赋值语句是 。
a、ch='a b ';
b、ch='\0’;
c、ch='7' '9';
d、ch=5 9;
10、已知ch是字符型变量,下面正确的赋值语句是 。
a、ch='123 ';
b、ch='\xff ';
c、ch='\08 ';
d、ch=”\”;
11、以下程序的输出结果为 。 #include void main() { printf("*%.2f,%4.3f*",3.14,3.1415); }
12、以下程序的输出结果为 。 #include void main( ) { char c='x'; printf("c:dec=%d,oct=%o,hex=%x,ascii=%c",c,c,c,c); }
13、以下程序的输出结果是 。
14、以下程序的运行结果是 。 #include void main() { int n=100; char c; float f=10.0; double x; x=f*=n/=(c=48); printf("%d,%d,%3.1f,%3.1f",n,c,f,x); }
15、已知字母a的ascil码值为65。以下程序的输出结果是 。 #include void main() { char a,b; a='a' '4'-'3'; b='a' '6'-'2'; printf("a=%d,b=%c",a,b); }
选择结构和循环结构
1、下列关系表达式中结果为假的是 。
a、0!=1
b、2<=8
c、(a=2*2)==2
d、y=(2 2)==4
2、下列运算符中优先级最低的是 。
a、?:
b、 =
c、>=
d、==
3、以下程序的运行结果是 。#include void main( ) { int y=3,x=3,z=1; printf("%d %d\n",( x,y ),z 2); }
a、3 4
b、4 2
c、4 3
d、3 3
4、已知int x=10,y=20,z=30;执行以下语句后x、y、z的值是 。 if(x>y) z=x;x=y;y=z;
a、x=10,y=20,z=30
b、x=20,y=30,z=30
c、x=20,y=30,z=10
d、x=20,y=30,z=20
5、以下语法正确的if语句是 。
a、if(x>0) printf("%f",x)
b、if(x>0) { x=x y; printf("%f",x); }
c、if(x>0) { x=x y;printf("%f",x);}; else printf(”%f”,-x);
d、if(x>0) { x=x y;printf(”%f”,x)} else printf("%f",-x);
6、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是 。 if(a a、1
b、2
c、3
d、6
7、有一函数关系如下表所示。 x y x<0 x-1 x=0 x x>0 x 1 以下能正确表示上面关系的程序段是 。
a、y=x 1; if(x>=0) if(x==0)y=x; else y=x-1;
b、y=x-1; if(x!=0) if(x>0) y=x 1; else y=x;
c、if(x<=0) if(x<0)y=x-1; else y=x; else y=x 1;
d、y=x; if(x<=0) if(x<0) y=x-1; else y=x 1;
8、以下程序的输出是 。 #include void main() { int x=2,y=-1,z=2; if(x a、3
b、2
c、1
d、0
9、以下程序的输出是 。 #include "stdio.h" void main() { int x=1; if(x=2) printf("0k"); else if(x<2) printf("%d\n",x); else printf("quit"); }
a、ok
b、quit
c、1
d、无输出结果
10、若u、w、x、y均是正整型变量,则以下正确的switch语句是 。
a、switch(x y) { case l0:u=x y;break; case 11:w=x-y;break; }
b、switch x { default:u=x y; case 10:w=x-y;break; case 11:u=x*y;break; }
c、switch(x*x y*y) { case 3: case 3:w=x y;break; case 0:w=y-x;break; }
d、switch(pow(x,2) pow(y,2)) (注:pow是调用求幂的数学函数) { case 1: case 3:w=x y;break; case 0: case x:w=x—y; }
11、设有程序段:int k=10; while(k=0)k=k-1; 则下面描述中正确的是 。
a、while循环执行10次
b、循环是无限循环
c、循环体语句一次也不执行
d、循环体语句执行一次
12、设有以下程序段:int x=0,s=0; while(!x!=0) s = x; printf ("%d",s); 则以下叙述正确的是 。
a、运行程序段后输出0
b、运行程序段后输出1
c、程序段中的控制表达式是非法的
d、程序段执行无限次
13、下面程序段的运行结果是 。 x=y=0; while(x<15) y ,x = y; printf("%d,%d",y,x);
a、20,7
b、6,12
c、20,8
d、8,20
14、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请补充第5行while后的表达式。 #include void main() { int i=0,j,k; do{i ;k=316-13*i;}while( ); j=k/11; printf("316=13*%d 11*%d",i,j); }
a、k/11
b、k%11
c、k/11==0
d、k/11=0
15、下面程序的运行结果是 。 #include void main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); }
a、-1
b、1
c、8
d、0
16、下面程序的运行结果是 。 #include void main() { int i,b,k=0; for(i=1;i<=5;i ) { b=i%2; while(b-->=0)k ; } printf("%d,%d",k,b); }
a、3,-1
b、8,-1
c、3,0
d、8,-2
17、下面程序的运行结果是 #include void main() { 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); } }
a、39 81
b、42 84
c、26 68
d、28 70
18、下面程序的运行结果是 。 #include void main() { int k=0; char c='a'; do { switch(c ) { case 'a':k ;break; case 'b':k--; case 'c':k =2;break; case 'd':k=k%2;continue; case 'e':k=k*10;break; default:k=k/3; } k ; }while(c<'g'); printf("k=%d\n",k); }
a、k=3
b、k=4
c、k=2
d、k=0
19、下面程序的运行结果是 。 #include void main() { int i,j,a=0; for(i=0;i<2;i ) { for(j=0;j<4;j ) { if(j%2)break; a ; } a ; } printf("%d\n",a); }
a、4
b、5
c、6
d、7
20、以下程序的功能是:输出x、y、z三个数中的最大者。请补充第8行的表达式。 #include void main( ) { int x=4,y=6,z=7; int u; if(x>y) u=x; else u=y ; if( )y=u; else y=z; printf("y=%d",y); }
21、以下程序的功能是:输入3个整数,按从大到小的顺序进行输出。请补充第10行表达式。 #include void main() { int x,y,z,c; scanf("%d%d%d",&x,&y,&z); if(y
22、以下程序的功能是判断输入的某个年份是否是闰年。请补充第7行else后的子句。 #include void main( ) { int y,f; scanf("%d",&y); if(y% 400==0) f=1; else if(y% 4==0&&y% 100!=0) f=1; else ; if(f) printf("%d is",y); else printf("%d is not",y); printf("a leap year\n"); }
23、以下程序的输出结果是 。#include void main() { int a=2,b=7,c=5; switch(a>0) { case 1:switch(b<0) { case 1:printf("@");break; case 2:printf("!");break; } case 0:switch(c==5) { case 0:printf("*");break; case 1:printf("#");break; default:printf("#");break; } default:printf("&"); } }
24、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。请补充第9行程序。#include void main() { int day,x1,x2; day=0; x1=1020; while(x1>0) { x2=__________; xl=x2; day ; } printf("day=%d\n",day); }
25、下面程序的运行结果是 。 #include void main() { int a,s,n,count; a=2; s=0; n=1; count=1; while(count<=7) {n=n*a;s=s n; count;} printf("s=%d",s); }
26、下面程序的运行结果是 。 #include void main() { int i,t,sum=0; for(t=i=1;i<=10; ) { sum =t; i; if(i%3==0) t=-i; else t=i; } printf("sum=%d",sum); }
顺序结构作业
1、将华氏温度转换为摄氏温度和绝对温度分别为: 5 c= —(f-32) (摄氏温度) 9 k=273.16 c (绝对温度) 请编写程序,从键盘输入f值,输出c和k的值,输出结果保留两位小数。
循环结构作业
1、有一分数序列,求出前n项和(结果保留两位小数) 2/1, 3/2, 5/3, 8/5, 13/8, 21/13...
2、打印1~n(n为正整数)之间所有素数
3、输入两个正整数m和n,求其最大公约数和最小公倍数。
4、打印所有的水仙花数。 所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。如:153=1*1*1 5*5*5 3*3*3
选择结构作业
1、编写程序,求y值(结果保留两位小数,x值由键盘输入) y= (sinx cosx)/2 x ≥ 0 y=(sinx-cosx)/2 x <0
2、给出一个百分制整数成绩,要求输出成绩等级a、b、c、d、e。 90分以上为a 80~89分为b 70~79分为c 60~69分为d 60分以下为e
期中考试
期中考试客观题
1、用c语言编制的源程序要变为目标程序,必须经过( )。
a、汇编
b、解释
c、编辑
d、编译
2、下列字符序列中,不可用作c语言标识符的是( ) 。
a、b70
b、no.1
c、_symbol
d、a_1
3、一个c语言的源程序中,( ) 。
a、必须有一个主函数
b、可以有多个主函数
c、必须有主函数和其他函数
d、可以没有主函数
4、以下( ) 组中的常数都是合法的c语言常量。
a、"222" 7ff 03
b、'123' 78 ''
c、"12.50" -0x1g1 3.e-5
d、'e' "x-y" 3e5
5、若变量已正确定义并赋值,不符合c语言语法的表达式是( )。
a、a=a 7
b、a=7 b c,a
c、int(12.3%4)
d、m=a=c b
6、设a、b、c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是( )。
a、a&&b
b、b>=a
c、a||b c&&b-c
d、!((b>a)&&(c||1))
7、以下程序段的输出结果是 ( )。
a、b-20
b、c-20
c、67-20
d、b-21
8、以下是c语言的合法常量是 ( ) 。
a、'mm'
b、float a=5
c、1.25e2
d、029
9、设 a=10,则表达式a =a- =a*=a 的值为( )。
a、100
b、200
c、0
d、1
10、putchar 函数可以向终端输出一个( )。
a、整型变量表达式
b、实型变量值
c、字符型变量值
d、字符串变量值
11、若有以下函数关系 x<0 则 y=2x x>0 则 y=x x=0 则 y=x 1 下面程序段能正确表示以上关系的是( ) 。
a、y=2*x; if (x!=0) if(x>0) y=x; else y=x 1;
b、y=2*x if(x<=0) if(x==0) y=x 1; else y=x;
c、if (x>=0) if(x>0) y=x; else y=x 1; else y=2*x;
d、y=x 1; if(x<=0) if(x<0) y=2*x; else y=x;
12、表达式 !( 4 == 7 )&&( 3 > 6 ) 的值为( )。
a、1
b、0
c、4
d、7
13、以下符合c语言中选择型的语句是( )。
a、{ y=a*x y; goto end; } end: ;
b、while (x>0) y=a*x y;
c、if (x>=0) while (x>0) y=a*x y;
d、for (;x>0;) y=a*x y;
14、设有如下程序: 则以下叙述中正确的是( )。
a、程序的输出结果为大写字母a
b、程序的输出结果为小写字母a
c、运行时产生错误信息
d、格式说明符的个数少于输出项的个数,编译出错
15、以下程序段 ( )。
a、是死循环
b、循环执行二次
c、循环执行一次
d、有语法错误
16、break语句的作用是( )。
a、终止复合语句{ }内所有语句的执行
b、终止循环语句的执行
c、终止switch语句的执行
d、既终止循环语句的执行也能终止switch语句的执行
17、已知ch是字符型变量,下面不正确的赋值语句是( )。
a、ch='a b';
b、ch='\0';
c、ch='7' '9'
d、ch=5 9
18、下面关于for循环的正确描述是( )。
a、for循环只能用于循环次数已经确定的情况
b、for 循环是先执行循环体语句,后判断表达式
c、在for循环中,不能用break语句跳出循环体。
d、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。
19、设整型变量 x 的值为8,则下列表达式中值为1的是( )。
a、x =x-=x=x
b、x%=x-1
c、x%=x%=3
d、x/=x x
20、若有以下定义,则正确的赋值语句是 ( )。 int a,b; float x;
a、a=1,b=2,
b、b
c、a=b=5;
d、b=int(x);
21、表示关系x>=y>=z的c语言表达式为( ) 。
a、(x>=y)&&(y>=z)
b、(x>=y)and(y>=z)
c、(x>=y>=z)
d、(x>=y)&(y>=z)
22、以下描述中正确的是( )。
a、while、do-while、for循环中的循环体语句都至少被执行一次。
b、do-while 循环中,while(表达式)后面的分号可以省略。
c、while 循环体中,一定要有能使while后面表达式的值变为“假”的操作。否则会产生死循环
d、do-while循环中,根据情况可以省略while
23、以下程序的功能是判断某一年是否为闰年,请将【1】处补充完整。 闰年的条件是符合下列二者之一: (1)能被400整除 (2)能被4整除,但不能被100整除。
24、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。请将空【1】处补充完整。
25、设c语言中的一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为0至( ) 。
26、在一个c语言源程序中,注释部分左侧的分界符是( ) 。
27、在c语言中,输入操作是由库函数( ) 完成的。(说明:只填写函数名,不带括号)
28、以下程序的输出结果是 ( )。
29、以下程序的执行结果是( )。
30、以下程序的执行结果是( )。
31、以下程序的执行结果是( )。
32、阅读下列程序,并写出当从键盘上输入abcde# 后,下列程序的输出结果为( ) 。
33、以下程序的执行结果是( )。
34、以下程序的功能是:输入一个小写字母,将字母循环后移5个位置后输出。例如‘a’变成‘f’,‘w’变成‘b’。请将填空【1】补充完整。说明:写出最简洁的形式,不要任何空格,语句后的分号已经给出,填空时不要再重复写。
35、在表达式s=10中,其中“=”为( )运算符。
36、设变量的定义如下: char a; int b; float c,d; 则表达式a*b c/d 值的类型为 ( )(写关键字,不写汉字)。
37、表达式3.5 1/2计算结果是( )(保留一位小数)。
期中考试编程题
1、请为如下分段函数编写程序,当输入一个x值,计算输出y的数值,结果保留两位小数: y=x (x≤1) y=2x-1 (1
2、编程输出n以内的所有完全数,n从键盘输入。 所谓完全数是指一个数恰好等于它的因子之和。例如6的因子有1、2、3,而6=1 2 3,所以6是完全数。
3、输出1~20所有勾股数,即两个数的平方和等于第三个数的平方。
4、编程计算1~n的阶乘之和,n从键盘输入。
第四章 函数
函数测验
1、在以下的叙述中,正确的是 。
a、c语言中所有的函数名都是由用户自行命名。
b、c语言程序中主函数必须定义在程序的头部位置。
c、c语言中可以没有主函数。
d、c语言程序总是从主函数处开始执行。
2、在c语言预处理命令处有下列定义:# include “xxx……x.h”则” ”内正确的含义是 。
a、函数头文件
b、函数名的预说明部分
c、宏定义
d、程序名
3、构成一个完整的c源程序必须有且只有一个 。
a、函数
b、过程
c、主函数
d、程序
4、在以下的叙述中,正确的是 。
a、c语言程序总是从第一个定义的函数处开始执行
b、c语言程序中程序总是从主函数处开始执行
c、c语言中,所有函数必须在主函数内定义
d、c语言中,必须将主函数放在程序的头部
5、以下正确的函数定义是 。
a、double fun(int x,int y) { z=x y; return z; }
b、fun(int x,y) { int z; return z; }
c、fun(x,y) { int x,y ; double z; z=x y; return z; }
d、double fun(int x, int y) { double z; z=x y; return z; }
6、c语言中,以下正确的说法是 。
a、实参和与其对应的形参各占用独立的存储单元
b、实参和与其对应的形参共占用一个存储单元
c、只有当实参和与其对应的形参同名时才共占用存储单元
d、形参是虚拟的,不占用存储单元
7、关于return语句正确的说法是 。
a、必须后带表达式,作为函数的返回值
b、必须在每个函数中出现
c、可以在同一个函数中出现多次
d、不可以用在主函数中
8、函数的递归调用是指
a、函数a调用函数a
b、函数a调用函数b
c、函数b调用函数a
d、主函数调用函数a,函数a又调用函数b
9、以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空完成函数功能(两个空之间用一个#分隔,答案中不要空格)。 void fun(int a[10]) { int i; for(i=1; i<=10; i ) _________=i; for(i=0; i<5; i ) _________=a[i]; }
10、以下是将字符串str2插入到字符串str1的第n个字符以后的函数,请填空完成函数功能(两个空之间用一个#分隔,答案中不要加空格)。 void insert_string(char str1[],char str2[],int n ) { char temp[80]; strcpy(temp,str1 n); strcpy(________,str2); strcpy(&str1[n] _________,temp); }
函数作业
1、编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
2、编写递归函数,计算n!。要求n值从主函数输入,n为正整数。
第五章 数组
数组测验
1、设数组定义为:int a[5]; 则正确引用数组元素的是 。
a、a[0]
b、a[5]
c、a[2,3]
d、*a[0]
2、下面描述中不正确的说法是 。
a、对于char 型数组可以用于存放字符串
b、对于char 型数组可以用于存放整型量
c、使用赋值语句可以将数组名直接赋给某个指针型变量
d、不能用关系运算符直接对两个字符串进行比较
3、给出以下定义: char y[]={'a','b','c','d','e','f',''}; 则执行完下列语句后运行结果为: printf("%d,", sizeof(y)); printf("%d", strlen(y));
a、7,7
b、6,7
c、6,6
d、7,6
4、正确定义字符串变量的形式是 。
a、char str[5] ='a';
b、char str[5] ='abcd';
c、char str[5] ="a";
d、char str [5] ="abcde";
5、若有下列语句,则输出结果正确的是 。 char s[12]="a book!"; printf("%d",strlen(s));
a、12
b、8
c、7
d、11
6、下面哪一项不是正确的字符串赋值或赋初值表达式 。
a、char *str="china";
b、char str[]={'c','h','i','n','a'};
c、char str[5]="china";
d、char str[]="china";
7、仔细阅读下面程序,写出程序运行结果 。
8、以下程序运行结果是 。 #include #include void main() { int i,j,k; char str[]="nice to meet you"; for(i=0,j=strlen(str)-1; i
数组作业
1、编写程序,首先通过键盘输入二维整型数组(4×5)所有元素值,再找出最大数和最小数并输出结果。
2、从键盘上输入10个整数,编程将这10个数从小到大排序输出。
第六章 指针
指针测验
1、若有下列程序段: int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p; p=a 6; printf("%d",*p ) 则在屏幕上输出的结果是__________。
a、1
b、6
c、7
d、8
2、已知下列函数定义 setw (int *b,int m,int n,int dat) { int k; for(k =0;k a、setw (*a,5,8,1)
b、setw (&a,5,8,1)
c、setw ((int *)a,5,8,1 )
d、setw (a,5,8,1)
3、执行下列程序段后,a的值为________。 int a=12, *p; p=&a; a=*p 5;
a、5
b、17
c、15
d、20
4、若要对a进行自增运算,则a应具有下面说明_______.
a、int a[3][2];
b、char *b={"12","ab"}; int *a=&b;
c、char a[3];
d、int b[10], *a=b;
5、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确实现此功能的函数是_________.
a、void funa(int x , int y) { int t; t=x;x=y;y=t; }
b、void funa(int *x , int *y) { int t = *x; *x = *y; *y = t; }
c、void funa(int *x , int *y) { int *p; *p=*x;*x=*y;*y=*p; }
d、int funa(int *x , int *y) { *x=*y;*y=*x; }
6、对于如下定义,哪个表达式是不正确的。 int k,a[10],*p=a;
a、p[0]=k
b、p
c、a
d、*p =2
7、以下程序的运行结果是________。 #include void main() { int *p1, *p2, i1, i2, i ; i1=10; i2=20; p1=&i1; p2=&i2; i=*p1; *p1=*p2; *p2=i ; printf("i1=%d,i2=%d\n",i1, i2); }
8、阅读程序,写出执行结果___________。 #include void swap (int *p1,int *p2) { int p; p= * p1; *p1= *p2; *p2 = p; } void main() { int a=6,b=9; int * p1, * p2; p1=&a;p2=&b; if (a
9、阅读程序,写出执行结果___________。 #include void ast(int x,int y,int *cp,int *dp) { *cp=x y; *dp=x-y; } void main() { int a,b,c,d; a=4;b=3; ast(a,b,&c,&d); printf("%d,%d",c,d); }
指针作业
1、编写函数strc(s1,s2,n),用指针形式把s2中的前n个字符添加到s1尾部。要求:字符串s1、字符串s2、n值都在主函数进行输入(s1和s2中包含空格字符,输入时用回车隔开)。
第七章 结构体
结构体测验
1、设定义一个结构类型如下: struct student { char name[10]; char address[50]; long post; long tel; } 则在定义该结构变量struct student li 后,系统分配给变量li的内存单元字节数是 。
a、4
b、62
c、68
d、102
2、当定义一个结构体变量时,系统分配给它的内存是______。
a、各成员所需内存量的总和
b、结构中第一个成员所需内存量
c、成员中占内存量最大的容量
d、结构中最后一个成员所需内存量
3、下面程序的运行结果是______。 void main( ) { struct complx{ int x; int y; }cnum[2]={1,3,2,7}; printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); }
a、0
b、1
c、2
d、6
4、如下说明语句,则下面叙述不正确的是______。 struct stu { int a ; float b ; }stutype ;
a、struct是结构体类型的关键字
b、stu是用户定义的结构类型名
c、stutype是用户定义的结构体类型名
d、a和b都是结构体成员名
5、设有以下说明和定义语句 struct st { int n; struct st *next; }; static struct st a[3]={5,&a[1],7,&a[2],9,''},*p; p=&a[0]; 则以下表达式的值为6的是________。
a、p ->n
b、p->n
c、 p->n
d、(*p).n
6、以下对结构体变量成员不正确的引用是_______。 struct pupil { char name[20]; int age; int sex; } pup[5], *p=pup;
a、scanf("%s",pup[0].name);
b、scanf("%d",&pup[0].age);
c、scanf("%d",&(p->sex));
d、scanf("%d",p->age);
期中考试
期中考试客观题
1、用c语言编制的源程序要变为目标程序,必须经过( )。
a、汇编
b、解释
c、编辑
d、编译
2、下列字符序列中,不可用作c语言标识符的是( ) 。
a、b70
b、no.1
c、_symbol
d、a_1
3、一个c语言的源程序中,( ) 。
a、必须有一个主函数
b、可以有多个主函数
c、必须有主函数和其他函数
d、可以没有主函数
4、以下( ) 组中的常数都是合法的c语言常量。
a、"222" 7ff 03
b、'123' 78 ''
c、"12.50" -0x1g1 3.e-5
d、'e' "x-y" 3e5
5、若变量已正确定义并赋值,不符合c语言语法的表达式是( )。
a、a=a 7
b、a=7 b c,a
c、int(12.3%4)
d、m=a=c b
6、设a、b、c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是( )。
a、a&&b
b、b>=a
c、a||b c&&b-c
d、!((b>a)&&(c||1))
7、以下程序段的输出结果是 ( )。
a、b-20
b、c-20
c、67-20
d、b-21
8、以下是c语言的合法常量是 ( ) 。
a、'mm'
b、float a=5
c、1.25e2
d、029
9、设 a=10,则表达式a =a- =a*=a 的值为( )。
a、100
b、200
c、0
d、1
10、putchar 函数可以向终端输出一个( )。
a、整型变量表达式
b、实型变量值
c、字符型变量值
d、字符串变量值
11、若有以下函数关系 x<0 则 y=2x x>0 则 y=x x=0 则 y=x 1 下面程序段能正确表示以上关系的是( ) 。
a、y=2*x; if (x!=0) if(x>0) y=x; else y=x 1;
b、y=2*x if(x<=0) if(x==0) y=x 1; else y=x;
c、if (x>=0) if(x>0) y=x; else y=x 1; else y=2*x;
d、y=x 1; if(x<=0) if(x<0) y=2*x; else y=x;
12、表达式 !( 4 == 7 )&&( 3 > 6 ) 的值为( )。
a、1
b、0
c、4
d、7
13、以下符合c语言中选择型的语句是( )。
a、{ y=a*x y; goto end; } end: ;
b、while (x>0) y=a*x y;
c、if (x>=0) while (x>0) y=a*x y;
d、for (;x>0;) y=a*x y;
14、设有如下程序: 则以下叙述中正确的是( )。
a、程序的输出结果为大写字母a
b、程序的输出结果为小写字母a
c、运行时产生错误信息
d、格式说明符的个数少于输出项的个数,编译出错
15、以下程序段 ( )。
a、是死循环
b、循环执行二次
c、循环执行一次
d、有语法错误
16、break语句的作用是( )。
a、终止复合语句{ }内所有语句的执行
b、终止循环语句的执行
c、终止switch语句的执行
d、既终止循环语句的执行也能终止switch语句的执行
17、已知ch是字符型变量,下面不正确的赋值语句是( )。
a、ch='a b';
b、ch='\0';
c、ch='7' '9'
d、ch=5 9
18、下面关于for循环的正确描述是( )。
a、for循环只能用于循环次数已经确定的情况
b、for 循环是先执行循环体语句,后判断表达式
c、在for循环中,不能用break语句跳出循环体。
d、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。
19、设整型变量 x 的值为8,则下列表达式中值为1的是( )。
a、x =x-=x=x
b、x%=x-1
c、x%=x%=3
d、x/=x x
20、若有以下定义,则正确的赋值语句是 ( )。 int a,b; float x;
a、a=1,b=2,
b、b
c、a=b=5;
d、b=int(x);
21、表示关系x>=y>=z的c语言表达式为( ) 。
a、(x>=y)&&(y>=z)
b、(x>=y)and(y>=z)
c、(x>=y>=z)
d、(x>=y)&(y>=z)
22、以下描述中正确的是( )。
a、while、do-while、for循环中的循环体语句都至少被执行一次。
b、do-while 循环中,while(表达式)后面的分号可以省略。
c、while 循环体中,一定要有能使while后面表达式的值变为“假”的操作。否则会产生死循环
d、do-while循环中,根据情况可以省略while
23、以下程序的功能是判断某一年是否为闰年,请将【1】处补充完整。 闰年的条件是符合下列二者之一: (1)能被400整除 (2)能被4整除,但不能被100整除。
24、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。请将空【1】处补充完整。
25、设c语言中的一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为0至( ) 。
26、在一个c语言源程序中,注释部分左侧的分界符是( ) 。
27、在c语言中,输入操作是由库函数( ) 完成的。(说明:只填写函数名,不带括号)
28、以下程序的输出结果是 ( )。
29、以下程序的执行结果是( )。
30、以下程序的执行结果是( )。
31、以下程序的执行结果是( )。
32、阅读下列程序,并写出当从键盘上输入abcde# 后,下列程序的输出结果为( ) 。
33、以下程序的执行结果是( )。
34、以下程序的功能是:输入一个小写字母,将字母循环后移5个位置后输出。例如‘a’变成‘f’,‘w’变成‘b’。请将填空【1】补充完整。说明:写出最简洁的形式,不要任何空格,语句后的分号已经给出,填空时不要再重复写。
35、在表达式s=10中,其中“=”为( )运算符。
36、设变量的定义如下: char a; int b; float c,d; 则表达式a*b c/d 值的类型为 ( )(写关键字,不写汉字)。
37、表达式3.5 1/2计算结果是( )(保留一位小数)。
期中考试编程题
1、请为如下分段函数编写程序,当输入一个x值,计算输出y的数值,结果保留两位小数: y=x (x≤1) y=2x-1 (1
2、编程输出n以内的所有完全数,n从键盘输入。 所谓完全数是指一个数恰好等于它的因子之和。例如6的因子有1、2、3,而6=1 2 3,所以6是完全数。
3、输出1~20所有勾股数,即两个数的平方和等于第三个数的平方。
4、编程计算1~n的阶乘之和,n从键盘输入。
猜你喜欢
- 2022-12-05 20:21
- 2022-12-05 20:11
- 2022-12-05 19:52
- 2022-12-05 19:44
- 2022-12-05 19:28
- 2022-12-05 18:54
- 2022-12-05 18:36
- 2022-12-05 18:33
- 2022-12-05 18:20
- 2022-12-05 18:07