4.(1)float a[ ],int n (2)return (sum/n); 5.(1)cp=str; (2)cp++;五、程序设计题(2个小题,共15分): 1. #include “stdio.h” void main( )
{ float s=0,t=1; „„„„„„„„ 1分 int n,p=1; „„„„„„„„ 1分
for(n=1;n<=10;n++) „„„„„„„„ 4分 { t=t*n; s=s+t*p; p=-p; }
printf(\"1!-2!+„„-10!=%f\\n\; „„„„„„„„ 1分 }
2. #include “stdio.h” int strlength(char *s); void main( ) { int n1,n2;
char *list1=“See no evil,hear no evil”; char *list2=“blind and deaf?; n1=strlength(list1); n2=strlength(list2); puts(list1);
printf(“The length of list1=%d\\n”,n1); puts(list2);
printf(“The length of list2=%d\\n”,n2); }
int strlength(char *s)
{ int n=0; while(*s!=‘\\0’) { n++; s++; } return (n); }
第三套试题
一、 选择题(15个小题,每小题2分,共30分): 1、C语言编译程序是____。
A.C程序的机器语言版本 B.一组机器语言指令
C.将C源程序编译成目标程序的程序 D.由制造厂家提供的一套应用软件 2、在一个C语言的源程序中,( )。 A.必须有一个主函数 B.可以有多个主函数 C.必须有主函数和其它函数 D.可以没有主函数 3、以下选项中不合法的用户标识符是____。 A.ABC B.abc C.a_bc D.ab.c
4、C语言中运算对象必须是整型的运算符是____。 A.% B./ C. ! D.*
5、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是____。 A.read(a,b,c); B.scanf(\"%d,%d,%d\C.scanf(\"%d%d%d\.scanf(\"%d%d%d\6、为表示关系x≥y≥z,应使用C语言表达式____。 A.(x>=y)&(y>=z) B.(x>=y)AND(y>=z) C.x>=y>=z D.(x>=y)&&(y>=z)
7、以下对二维数组a进行不正确初始化的是_____。
A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 8、若有定义:int x,*pb;则以下正确的赋值表达式是____。 A.pb=&x B.pb=x C.*pb=&x D.*pb=* 9、C语言中函数返回值的类型是由_____决定。
A.return语句中的表达式类型 B.调用函数的主调函数类型 C.调用函数时临时决定 D.定义函数时所指定的函数类型 10、设有如下函数: fff(float x)
{ printf(“%d\\n” , x*x); } 请问fff函数的返回值类型是____。
A.与参数x的类型相同 B.是void C.是int D.无法确定 11、在C语言程序中,下列说法正确的是_____。 A.函数的定义不可以嵌套,但函数的调用可以嵌套 B.函数的定义可以嵌套,但函数的调用不可以嵌套 C.函数的定义和调用都不可以嵌套 D.函数的定义和调用都可以嵌套
12、下述对C语言字符数组的描述中错误的是_____。
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用算术运算符对字符数组中的字符串进行运算 13、以下叙述正确的是_____。
A.do_while语句构成的循环不能用其它语句构成的循环来代替 B.do_while语句构成的循环只能用break语句退出
C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环 14、( )是不正确的C语言赋值语句。
A.x=1, y=2 ; B.x++ ; C.x=y=5 ; D.y=int(x) ; 15、若有如下说明,则_____的叙述是正确的。 struct st { int a; int b[2]; }a;
A.结构体变量a与结构体成员a同名,定义是非法的 B.程序只有在执行到该定义时才为结构体st分配存储单元 C.程序运行时为结构体变量a分配6个字节存储单元 D.不能将结构体类型说明与变量定义紧凑写在一起 二、 判断题(10个小题,每小题1分,共10分): 1、C语言是计算机高级语言。( ) 2、C语言中用非零表示逻辑值“真”。( ) 3、表达式3.5+3/5的计算结果是4.1。( )
4、能够实现局部翻转(0变1,1变0)的位运算是求反。( ) 5、若有以下定义:double w[10];则w数组元素下标的上界是9。( ) 6、C语言中的简单数据类型只有整型、实型两种。( ) 7、C语言源程序的基本单位是函数。( )
8、设有语句char a=‘\\72’; 则变量a声明不合法。( ) 9、printf(\"%d\\n\的输出结果是7。( ) 10、用在循环结构中,可以结束本次循环的语句是continue。( ) 三、 填空题(9个小题,每空2分,共20分): 1、C语言源程序文件的扩展名是____。
2、程序设计的三种基本结构是顺序结构、____、____。
3、设ch是char型变量,其值为A,且有表达式:ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch,该表达式的值为____。
4、调用C语言对字符串处理的库函数时,在#include命令行中应包含的头文件是______。 5、终止switch语句执行的语句是______。
6、用数组名作为函数参数是地址传递方式。地址传递是______(单向/双向)传递。 7、在C语言中,所谓“指针”就是______。
8、C程序的main函数是否允许有参数。____(是/否)。 9、文件打开时使用的函数是______。
四、 读下面程序,从选择项选出相应执行结果(每小题4分,共20分): 1、main()
{char a[]=\"I am a boy.\int i; p1=a;p2=b;
for(;*p1!='\\0';p1++,p2++) *p2=*p1; *p2='\\0';
printf(\"string b is:\"); for(i=0;b[i]!='\\0';i++) printf(\"%c\}
执行结果是( ) 2、main( ) { int a=0,i; for(i=1;i<5;i++) { switch(i) { case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; } }
printf(\"%d\\n\}
执行结果是( ) 3、#define N 2 #define M N+1 main( ) { int i;
for(i=1;i<=M;i++); printf(\"%d\\n\}
执行结果是( ) 4、main( )
{ int a[ ]={2,4,6,8,10}; int y=1,*p,x; p=&a[1];
for(x=0;x<3;x++) y+=*(p+x); printf(\"%d\\n\}
执行结果是( )
5、#define MIN(x,y) (x)<(y)?(x):(y) main( )
{ int i,j,k;
i=10; j=15; k=10*MIN(i,j); printf(\"%d\\n\}
执行结果是( ) 程序选择项:
A.31 B.string b is:I am a boy. C.100 D.3 E.19 五、 程序填空题(3个小题,每空2分,共20分): (根据程序要求,将程序补充完整,每空只能填写一条语句) 1、求1+2+„+100的和 main( ) {
int i, __①___; i=1; do
{ sum=sum+i; __②___; }while(__③___); printf(\"%d\}
2、求100~200间的全部素数。 # include main( ) {int m,k,i,n=0;
for(m=101; ___④__;m=m+2) { k=sqrt(m); for (i=2;i<=k;i++) if (m%i==0) __⑤___;
if (i>=k+1){printf(\"%d\ if(n%10==0) printf(\"\\n\"); }
printf (\"\\n\"); }
3、用起泡法对10个输入数排序(从小到大)。 main( ) {
int a[11]; int __⑦___;
printf(\"input 10 numbers :\\n\"); for (i=1;i<11;i++) scanf(\"%d\ printf(\"\\n\");
for(j=1;j<=9;j++)
for(i=1; __⑨___;i++) if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1]; __⑩___;} printf(\"the sorted numbers :\\n\"); for(i=1;i<11;i++) printf(\"%d\}
第三套试题答案
一、选择题(15个小题,每小题2分,共30分): 1、C 2、A 3、D 4、A 5、B 6、D 7、D 8、A 9、D 10、C 11、A 12、C 13、D 14、D 15、C
二、判断题(10个小题,每小题1分,共10分): 1、√ 2、√ 3、× 4、× 5、√ 6、× 7、√ 8、× 9、× 10、√
三、填空题(9个小题,每空2分,共20分): 1、.c或c 2、条件结构、循环结构 3、a 4、string.h 5、break 6、双向 7、地址 8、是 9、fopen
四、读下面程序,从选择项选出相应执行结果(每小题4分,共20分): 1、B 2、D 3、E 4、A 5、C
五、程序填空题(3个小题,每空2分,共20分):
①sum=0或sum ②i++ ③i<=100 ④m<=200 ⑤break ⑥n=n+1 ⑦i,j,t ⑧&a[i] ⑨i<=10-j ⑩a[i+1]=t
第四套试题
一、选择题(20个小题,每小题2分,共40分): 1、以下不正确的C语言标识符是____。 A.ABC B.abc C.a_bc D.ab.c
2、设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是____。 A.‘a’&&‘b’ B.a<=b C.a||b+c&&b-c D.!((aprintf(“%d,%c\\n”,c2-c1,c2-‘a’+‘A’);则输出结果是____。 A.2,M B.3,E
C.2,e D.输入项与对应的格式控制不一致,输出结果不确定
4、当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是____。 main( ){ int a;float b,c;
scanf(“%2d%3f%4f”,&a,&b,&c); printf(“\\na=%d,b=%f,c=%f\\n”,a,b,c); }
A.a=98,b=765,c=4321 B.a=10,b=432,c=8765
C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.0 5、设有如下函数定义:int f(char *s) { char *p=s;
while(*p!=‘\\0’) p++; return (p-s); }
如果在主程序中用下面的语句调用上述函数,则输出结果为____。 printf(“%d\\n”,f(“goodbye!”)); A.3 B.6 C.8 D.0
6、以下程序的输出结果是____。 main( )
{ int w=4,x=3,y=2,z=1;
printf(“%d\\n”,(wA.1 B.2 C.3 D.47、以下程序段的输出结果是____。 int k,j,s;
for(k=2;k<6;k++,k++) { s=1;
for(j=k;j<6;j++) s+=j; }
printf(“%d\\n”,s); A.9 B.1 C.11 D.10 8、以下叙述正确的是____。
A.do_while语句构成的循环不能用其它语句构成的循环来代替
B.do_while语句构成的循环只能用break语句退出
C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环 9、以下函数调用语句中,含有的实参个数是____。 func((exp1,exp2),(exp3,exp4,exp5)); A.1 B.2 C.4 D.5
10、以下程序的输出结果是____。 double f(int n) { int i; double s=1.0;
for(i=1;i<=n;i++) s+=1.0/i; return s; } main( ) { int i,m=3; float a=0.0;
for(i=0;iA.5.500000 B.3.000000 C.4.000000 D.8.25 11、以下程序段的输出结果是____。 int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d\\n”,m); A.12 B.15 C.20 D.2512、以下程序中若第一个printf语句输出的是194,则第二个printf语句输出结果是____。 main( )
{ int a[ ]={1,2,3,4,5,6,7,8,9,10},*p; p=a;
printf(“%x\\n”,p); printf(“%x\\n”,p+9); }
A.212 B.204 C.1a4 D.1a6
13、若有定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是____。
A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i)) 14、以下程序的输出结果是____。 main( )
{ int aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0]; for(i=0;i<2;i++)
{ if(i==0) aa[i][i+1]=*p+1; else ++p;
printf(“%d”,*p); }
printf(“\\n”); }
A.23 B.26 C.33 D.36
15、执行下列程序后,y的值是____。 main( )
{ int a[ ]={2,4,6,8,10}; int y=1,*p,x; p=&a[1];
for(x=0;x<3;x++) y+=*(p+x);
printf(“%d\\n”,y); }
A.17 B.18 C.19 D.20 16、以下程序的输出结果是____。 void sub(float x,float *y,float *z) { *y=*y-1.0; *z=*z+x; } main( )
{ float a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b; sub(b-a,pa,pa); printf(“%f\\n”,a); }
A.9.000000 B.1.500000 C.8.000000 D.10.500000 17、下面程序的输出结果是____。 #include “stdio.h” main( )
{ static char b[ ]= “Goodbye”; char *chp=&b[7];
while(--chp>=&b[0]) putchar(*chp); putchar(‘\\n’); }
A.Goodbye B.gOODBYE C.无任何输出 D.eybdooG 18、若有如下说明,则____的叙述是正确的。 struct st { int a; int b[2]; }a;
A.结构体变量a与结构体成员a同名,定义是非法的 B.程序只有在执行到该定义时才为结构体st分配存储单元
C.程序运行时为结构体变量a分配6个字节存储单元 D.不能将结构体类型说明与变量定义紧凑写在一起 19、设有如下定义:struct std { int a; float b; }data ,*p;
若有p=&data;则对data中的成员变量a的正确引用是____。 A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a 20、以下程序的输出结果是____。 main( ) { char x=040;
printf(“%d\\n”,x=x<<1); }
A.100 B.160 C.120 D.64
二、填空题(10个小题,每小题2分,共20分):
1、若a是int型变量,则执行表达式 a=25/3%3 后,a的值为____。 2、C语言中用____表示逻辑值“真”。
3、用在循环结构中,可以结束本次循环的语句是____。
4、用数组名作为函数参数是地址传递方式。地址传递是____(单向/双向)传递。
5、在二维数组初始化时,可以省略数组的____(行下标/列下标),系统会根据初值的个数,算出该下标的大小。
6、若输入字符‘A’,在以下while语句执行后ch的值为____。 while(ch=getchar( )==‘A’); 7、所谓“指针”,就是____。
8、设有宏定义:#define MUL(z) (z)*(z),则执行以下语句后,输出结果为____。 printf(“%d\\n”,MUL(1+2)+3);
9、若有定义和语句:char str[ ]=“ABCD”,*p=str; printf(“%d\\n”,*(p+4)); 则输出结果是____。
10、能够实现局部翻转(0变1,1变0)的位运算是____。
三、读下面程序,写出执行结果(4个小题,每小题5分,共20分):
1、若运行以下程序时,从第一列开始输入数据:2473(代表Enter),写出程序的执行结果。 #include “stdio.h” main( ) { char 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; }
printf(“\\n”);
}
2、main( )
{ int x=2,y=3,z=0; try(x,y,z);
printf(“(2)x=%d,y=%d,z=%d\\n”,x,y,z); }
try(int x,int y,int z) { z=x+y; x=x*x; y=y*y;
printf(“(1)x=%d,y=%d,z=%d\\n”,x,y,z); }
3、#include “stdio.h” #include “string.h” main( )
{ char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”; strcpy(str+2,strcat(p1,p2)); printf(“%s\\n”,str); }
4、#include “stdio.h” #define NUM 8
void invert(int *a,int n); main( )
{ int a[NUM]={10,20,30,40,50,60,70,80},i; invert(a,NUM); for(i=0;ivoid invert(int *a,int n) { int i,j,t; i=0;j=n-1; while(i{ t=a[i];a[i]=a[j];a[j]=t; i++;j--; } }四、编程题(2个小题,每小题10分,共20分):
1、编写程序,计算如下公式的值:t=1-1/(2*2)-1/(3*3)-„-1/(m*m)。 例如,若m=5,则应输出0.536389。 要求:利用scanf函数输入m的值。
利用子函数形式,m充当参数,不能只利用main函数形式实现。
2、编写程序,从输入的10个字符串中通过比较,找出最小和最大的字符串进行输出。 要求:利用二维字符数组。
利用gets函数进行输入,puts函数进行输出。
第四套试题答案
一、选择题(20个小题,每小题2分,共40分): 1、D 2、D 3、B 4、C 5、C 6、A 7、D 8、D 9、B 10、A
11、C 12、D 13、D 14、A 15、C 16、B 17、D 18、C 19、B 20、D 二、填空题(10个小题,每小题2分,共20分): 1、2 2、非零值 3、continue 4、双向 5、行下标 6、1 7、地址 8、12 9、0 10、^(异或)
三、读下面程序,写出执行结果(4个小题,每小题5分,共20分): 1、668977 2、(1)x=4,y=9,z=5 (2)x=2,y=3,z=0 3、xyabcABC
4、 80 70 60 50 40 30 20 10
四、编程题(2个小题,每小题10分,共20分): 1、main( )
{ float fun(int m),t; int m;
scanf(“%d”,&m); t=fun(m);
printf(“t=%f\\n”,t); }
float fun(int m) { float t=1,s; int i;
for(i=2;i<=m;i++) { s=1.0/(i*i); t=t-s; }
return t; }
2、#include “stdio.h” #include “string.h” main( )
{ char str[10][20],s[20]; int i;
for(i=0;i<10;i++) gets(str[i]); for(i=1;i<10;i++)
if(strcmp(str[0],str[i])>0) { strcpy(s,str[0]); strcpy(str[0],str[i]); strcpy(str[i],s); }
for(i=0;i<9;i++)
if(strcmp(str[i],str[9])>0) { strcpy(s,str[i]); strcpy(str[i],str[9]); strcpy(str[9],s); }
puts(str[0]); puts(str[9]); }
第五套试题
一、单项选择题(30个小题,每题2分,共60分): 1.一个C语言程序的执行是从_____。
A.main函数开始,直到main函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个函数开始,直到最后一个语句结束 D.main函数开始,直到最后一个函数结束
2.设ch是char型变量,其值为‘A’,且有表达式:ch=(ch>=‘A’&& ch<=‘Z’)?(ch+32):ch,该表达式的值为_____。 A.A B.a C.Z D.z
3.在C语言中,合法的字符常量是_____。 A.‘\\084’ B.‘\\x43’ C.‘ab’ D.“\\0”
4.当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是_____。 main( ){ int a;float b,c;
scanf(“%2d%3f%4f”,&a,&b,&c); printf(“\\na=%d,b=%f,c=%f\\n”,a,b,c); }
A.a=98,b=765,c=4321 B.a=10,b=432,c=8765
C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.0 5.以下叙述正确的是_____。
A.do_while语句构成的循环不能用其它语句构成的循环来代替 B.do_while语句构成的循环只能用break语句退出
C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环 6.以下的序的输出结果是_____。 main( )
{ int x=10,y=3;printf(“%d\\n”,y=x/y);} A.0 B.1 C.3 D.不确定的值 7.以下程序段的输出结果是_____。 int k,j,s;
for(k=2;k<6;k++,k++) { s=1;
for(j=k;j<6;j++) s+=j; }
printf(“%d\\n”,s); A.9 B.1 C.11 D.10
8.设有如下函数:ggg(float *x)
{ printf(“%d\\n”,*x);} 则函数的类型是_____。 A.与参数x的类型相同 B.void C.int D.无法确定 9.C语言源程序的基本单位是_____。 A.过程 B.函数 C.子程序 D.标识符 10.以下程序的输出结果是_____。 double f(int n)
{ int i; double s=1.0; for(i=1;i<=n;i++) s+=1.0/i; return s; } main( )
{ int i,m=3;float a=0.0; for(i=0;iA.5.500000 B.3.000000 C.4.000000 D.8.25 11.以下程序的输出结果是_____。 f(int a){ int b;static int c=3; b++; c++; return(a+b+c); } main( ) { int a=2,i;
for(i=0;i<3;i++) printf(“%d\\n”,f(a)); }
A.7 B.7 C.7 D.7 8 9 10 7 9 11 13 7
12.若a、b、c1、c2、x、y均是整型变量,正确的switch语句是_____。 A. switch(a+b);
{ case 1 : y=a+b;break; case 3 : y=a-b;break; }
B.switch(a*a+b*b) { case 3 ;
case 1 : y=a+b;break; case 3 : y=a-b;break;
C.switch a
{ case c1 : y=a-b;break; case c2 : y=a*b;break; default : x=a+b; }
D.switch(a-b)
{ default : y=a*b;break; case 3 : case 4 : x=a+b;break; case 10 : case 11 : y=a+b;break;
13.在C语言中,以下所列的各函数首部正确的是_____。
A.void play(var a : Integer,var b : Integer) B.void play(int a,b) C.void play(int a,int b) D.void play(a As Integer,b As Integer)
14.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是_____。
A.把x和y按从大到小排序 B.把x和y按从小到大排序 C.无确定结果 D.交换x和y中的值 15.在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为_____。 #include main( ) { char ch;while((ch=getchar( ))!=‘\\n’) { if(ch>=‘A’&& ch<=‘Z’) ch=ch+32; else if(ch>=‘a’&& ch<=‘z’) ch=ch-32; printf(“%c”,ch); } }
A.ABCdef B.abcDEF C.abc D.DEF 16.下列程序的运行结果是_____。 main( ) { int i,j,x=0; for(i=0;i<2;i++) { x++;
for(j=0;j<=3;j++) { if(j%2) break; x++; } x++; }
printf(“x=%d”,x); }
A.x=4 B.x=8 C.x=6 D.x=12
17.为表示关系x≥y≥z,应使用的C语言表达式是_____。
A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 18.设有语句char a=‘\\72’; 则变量a_____。
A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法
19.下面程序的输出结果是_____。 #include “stdio.h” main( ) { int num=0; while(num<=2) { num++;
printf(“%d\\n”,num); } }
A.1 B. 2 C. 1 D.1 2 2 2 3 3 4
20.下面程序的输出结果是_____。 void fun(int *x,int *y)
{ printf(“%d %d”,*x,*y); *x=3; *y=4;} main( ) { int x=1,y=2;
fun(&y,&x); printf(“%d %d”,x,y);} A.2 1 4 3 B.1 2 1 2 C.1 2 3 4 D.2 1 1 2 21.下面程序的输出结果是_____。 #include “stdio.h” #include “string.h” main( )
{ char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”; strcpy(str+2, strcat(p1, p2)); printf(“%s\\n”,str); }
A.xyzabcABC B.zabcABC C.yzabcABC D.xyabcABC 22.以下程序的输出结果是_____。 void prtv(int *x)
{ printf(“%d\\n”,++*x);} main( ) { int a=25; prtv(&a); }
A.23 B.24 C.25 D.26
23.以下程序中的for循环执行的次数是_____。 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main( ) { int i;
for(i=1;i<=NUM;i++);
printf(“%d\\n”,i); }
A.5 B.6 C.8 D.9
24.以下对二维数组a进行不正确初始化的是_____。
A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 25.若有定义和语句:char s[10]; s=“abcd”;
printf(“%s\\n”,s); 则结果是_____。 A.abcd B.a C.“abcd” D.编译不通过 26.执行下列程序后,y的值是_____。 main( )
{ int a[ ]={2,4,6,8,10},y=1,*p,x; p=&a[1];
for(x=0;x<3;x++) y+=*(p+x); printf(“%d\\n”,y); }
A.17 B.18 C.19 D.20 27.以下程序的输出结果是____。 main( )
{ char s[ ]=“ABCD”,*p;
for(p=s;p28.对于如下的结构体定义:
struct date { int year,month,day;}; struct worklist { char name[20]; char sex;
struct date birthday;
}person; 若对变量person的出生年份进行赋值,_____是正确的赋值语句。
A.year=1976; B.birthday.year=1976; C.person.birthday.year=1976; D.person.year=1976; 29.以下程序的输出结果是_____。 main( )
{ int aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0]; for(i=0;i<2;i++)
{ if(i==0) aa[i][i+1]=*p+1; else ++p;
printf(“%d”,*p); }
printf(“\\n”); }
A.23 B.26 C.33 D.36
30.根据以下定义,能输出字母‘M’的语句是_____。 struct person { char name[9];int age;};
struct person class[4]={“John”,17,“Paul”,19,“Mary”,18,“Adam”,16}; A. printf(“%c\\n”,class[3].name); B. printf(“%c\\n”,class[3].name[1]); C. printf(“%c\\n”,class[2].name[1]); D. printf(“%c\\n”,class[2].name[0]); 二、读下面程序,写出执行结果(5个小题,每题4分,共20分): 1.int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d\\n”,m); 2.f(int b[ ],int n) { int i,r=1;
for(i=0;i<=n;i++) r=r*b[i]; return r; } main( )
{ int x,a[ ]={2,3,4,5,6,7,8,9}; x=f(a,3);
printf(“%d\\n”,x); }
3.若输入“adequacy” ,写出程序的执行结果。 #include main( ){ char c; int v0=0,v1=0,v2=0; while((c=getchar( ))!=‘\\n’) { switch(c) { case ‘a’: case ‘e’: case ‘i’:
case ‘o’: case ‘u’:v1++; default:v0++;v2++; } }
printf(“v0=%d,v1=%d,v2=%d\\n”,v0,v1,v2); }
4.main( )
{ char a[ ]=“ABCDEDGH”,b[ ]=“abCDefGh”,*p1=a,*p2=b; int k;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k)); printf(“\\n”); }
5.若输入“I am a boy!” ,写出程序的执行结果。
char connect(char *string1 ,char *string2 ,char *string) { int i,j;
for(i=0;string1[i]!=‘\\0’;i++) string[i]=string1[i]; for(j=0;string2[j]!=‘\\0’;j++) string[i+j]=string2[j]; string[i+j]=‘\\0’; } main( )
{ char s1[100],s2[100],s[100];
printf(“输入string1:\\n”); scanf(“%s”,s1); printf(“输入string2:\\n”); scanf(“%s”,s2); connect(s1,s2,s); printf(“%s\\n”,s); }
三、编写程序题(3个小题,共20分):
1.利用scanf函数输入三个整数,按从小到大的顺序输出。(5分) 2.求n!,即计算1*2*3*„*n的值。(5分)
3.输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数输出。(要求:(1)使用数组存放成绩,数组名为score。 (2)编写三个函数,函数input:输入学生成绩, 函数average:求平均成绩,
函数result:将低于平均成绩的分数输出。
第五套试题答案
一、单项选择题(30个小题,每题2分,共60分): 1.A 2.B 3.B 4.C 5.D 6.C 7.D 8.C 9.B 10.A
11.A 12.D 13.C 14.D 15.B 16.C 17.A 18.A 19.C 20.A 21.D 22.D 23.C 24.D 25.D 26.B 27.A 28.C 29.A 30.D
10分) 二、读下面程序,写出执行结果(5个小题,每题4分,共20分): 1.20 2.120 3.v0=8,v1=4,v2=8 4.CDG 5.Iam 三、编写程序题(3个小题,共20分):
1.利用scanf函数输入三个整数,按从小到大的顺序输出。(5分) main( ) { int a,b,c,t;
printf(“Enter a,b and c:”); scanf(“%d,%d,%d”,&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf(“%d,%d,%d\\n”,a,b,c); }
2.求n!,即计算1*2*3*„*n的值。(5分) main( ) { int s=1,i,n; printf(“Enter n:”); scanf(“%d”,&n);
for(i=1;i<=n;i++) s=s*i; printf(“s=%d\\n”,s); }
3.输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数输出。(要求:(1)使用数组存放成绩,数组名为score。 (2)编写三个函数,函数input:输入学生成绩, 函数average:求平均成绩,
函数result:将低于平均成绩的分数输出。 void input(float score[10],int n) { int i;
printf(“Enter student’s scores:\\n”); for(i=0;ifloat average(float score[10],int n) { float sum=0; int i;for(i=0;ivoid result(float score[10],float ave,int n) { int i;printf(“Below the average:\\n”);
10分) for(i=0;iif(score[i]{ float ave,score[10]; input(score,10); ave=average(score,10);printf(“average=%6.2f\\n”,ave); print(score,ave,10); }
第六套试题
一、 选择题(15*2=30分)
1、下列对C语言的特点说法不正确的是_____。 A.c语言是结构化设计语言 B.c语言是机器语言
C.c语言生成目标代码质量高,程序执行效率高 D.c语言简洁、紧凑、使用方便、灵活 2、一个C语言程序的执行是从_____。
A.第一个函数开始,直到最后一个函数结束 B. main函数开始,直到main函数结束 C.第一个函数开始,直到最后一个语句结束 D.main函数开始,直到最后一个函数结束 3、下列标识符错误的是_____。 A.Hot_dog B.cat1 C.2dog D.S_exp 4、以下叙述正确的是_____。
A.do_while语句构成的循环不能用其它语句构成的循环来代替 B.do_while语句构成的循环只能用break语句退出
C.用do_while语句构成循环时,当while后的表达式成立时结束循环 D.用do_while语句构成循环时,当while后的表达式不成立时结束循环 5、以下程序的输出结果是_____。 main( )
{ int x=10,y=3;printf(“%d\\n”,y=x/y);} A.0 B.1 C.3 D.不确定的值 6、以下程序段的输出结果是_____。 int k,j,s;
for(k=2;k<6;k++,k++) { s=1;
for(j=k;j<6;j++) s+=j; }
printf(“%d\\n”,s); A.9 B.1 C.11 D.6
7、如果有下列说明int p,a=3;执行了p=&a;则与&*p表达的意思一致的是_____。 A.&a B.a C.&p D.*p
8、为表示关系x≥y≥z,应使用的C语言表达式是_____。
A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 9、设有语句char a=‘\\72’; 则变量a_____。
A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法 10、以下对二维数组a进行不正确初始化的是_____。
A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 11、对于如下的结构体定义: struct date { int year;int month;int day;}; struct worklist { char name[20]; char sex;
struct date birthday; }person;
若对变量person的出生年份进行赋值,_____是正确的赋值语句。
A.year=1976;B.birthday.year=1976;C.person.birthday.year=1976; D.person.year=1976; 12、如果int *p,a[3]={1,2,3};执行p=a;那么运行printf(“%d”,*p++);输出结果是_____。 A.1 B.2 C.3 D.不确定
13、下面是有关对算法的说法,其中不正确的是_____。
A. 算法是程序的灵魂 B.算法是解决“做什么”和“怎么做”的问题 C.N-S流程图表示算法比传统流程图紧凑易画,尤其是它废除了流程线。
D.传统的流程图表示算法如:顺序、选择、循环三种结构,一般有多个入口,多个出口 14、如果int a[]={1,2,3,4,5};int p=a+3; 那么printf(“%d”,*p+3);输出结果是_____。 A.4 B.1 C.5 D.7
15、下列对全局变量和局部变量说法不正确的是_____。 A.全局变量可以为其他文件中的函数所共用
B.全局变量的有效范围为从定义变量的位置开始到本源文件结束 C.局部变量只有在本函数内才能使用它们 D.局部变量不能为其他文件中的函数所共用 二、 程序填空(5*5=25分) 1、 将下列空白行程序填写完整
1) 下列程序完成打印出以下图案的功能,请将程序中的一处补充完整。 Main() * * * * * * * * * * * * * * * * {int i,j,k; for(i=0;i<=3;i++) { for( )
printf(“ ”); for(k=0;k<=2*i;k++) printf(“*”); printf(“\\n”); }
2) 下列程序完成求一个字符串长度的功能,请将程序中的两处补充完整。 Main() { int len; char *str[20];
printf(“Input string:”); scanf(“%s”, ); len=length(str);
printf(“The length of string is %d.”,len); }
length(char *p) { int n=0;
while(*p!=’\\0’); {n++; ; }
return(n); }
2、 写出下列程序的运行结果 1) main()
{int a=1;b=2;c=3; switch((a=b)= =c)
{case 0:printf(“false”); case 1: printf(“true”); case 2:
case 3:printf(“2,3”); } }
程序运行结果是: 2) main() { int n=0; char c;
while((c=getchar())!=’2’) n++,printf(“0%c”,c); printf(“%d”,n); }
假如输入1992,那么输出结果是: 3)
#include main(){int m,i,k; scanf(\"%d \k=sqrt(m); for(i=2;i<=k;i++); if(m%i= =0) break; if(i>k) printf(“YES”); else printf(“NO”); }
假如输入19,那么输出结果是: 三、 程序改错(3*5=15分)
说明:如果第4行有错,就写:第4行应改成*****;如果需要在第3行和第4行插入代码就写:在第3、4中间插入*****。 1、 求1!+2!+3!+4!+5! 1) #include 2) #include 3) main() 4) {5) float s=0,t=1; 6) int n;
7) for(n=1;n<=5;n++) 8) t=t*n; 9) s=s+t;
10) printf(\"1!+2!+3!+4!+5!=%f\\n\11) }
此程序运行后,没有任何语法错误提示,输出结果:120.000000,显然错误。请对以上程序改动2行后能使程序正常运行并输出正确结果:153.000000。 ① ②
2、 交换两个数 1) main() 2) {int a,b; 3) int *p1,*p2;
4) scanf(\"%d,%d\5) p1=&a; p2=&b; 6) if (a8) printf(\"\\n%d,%d\\n\9) }
10) swap(int *pa,int *pb) 11) {int p;
12) p=pa;pa=pb;pb=p; 13) }
此程序运行后,没有任何语法错误提示,如果输入3,4输出结果:3,4,显然错误。请对以上程序改动1行后能使程序正常运行并输出正确结果:4,3。 ①
四、 程序设计(2*15=30分)
1、下列这个程序是用函数的方式完成编写一个Fibonacci数列, 请补充完成函数number_fibonacci( )的代码。
这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即: F1=1 (n=1) F2=1 (n=2)
Fn=Fn-1+Fn-2 (n>=3) 运行结果为: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 . . . . . . . . 程序如下 main() { int n; scanf(\"%d\number_fibonacci(n); printf(\"\\n\"); }
void number_fibonacci(int n) { }
2、利用所学知识,设计下列程序
打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为 153=1*1*1+5*5*5+3*3*3
第六套试题答案
一、 选择题(15*2=30分)
1—5 BBCDC 6—10 DAAAD 11—15 CADDA 二、 程序填空(5*5=25分) 1、 完成下列程序
1) for(j=0;j<=2-i;j++) 2) str (2分) p++(3分) 2、 写出下列程序的运行结果 1) falsetrue 2,3 2) 0109093 3) NO
三、 程序改错(5*3=15分)
1、① 在第7和8行之间插入 {或者将第7行改为{ t=t*n; ② 在第9和10行之间插入 }或者将第9行改为s=s+t;} 2、① 第11行改成 p=*pa;*pa=*pb;*pb=p; 四、 程序设计(3*10=30分) 1、
void number_fibonacci(int n) { int m;
long fib,fib1=1,fib2=1; printf(\"%1d%1d\for(m=3;m<=n;m++) {
fib=fib1+fib2; fib1=fib2; fib2=fib;
printf(\"%1d\} return; } 2、 main() {
int i,j,k,n;
printf(“水仙花数是”); for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10;
if(n= =i*i*i+j*j*j+k*k*k) printf(“%4d”,n); }
pintf(“\\n”);}