《程序设计》考试试卷七
1.C语言中,如果对函数类型未加说明,则函数的隐含类型为( )
A.duoble B. void C.int D.char
2.union data
{ int i;
char c;
float f; };
定义了( )
A.共用体类型data B.共用体变量data
C.结构体类型data D.J结构体变量data
3.设a=3,b=4,表达式a>b?b:a的值是( )
A.3 B. 4 C.4:3 D.0
4.下面对枚举类型的叙述,不正确的是( )
A.定义枚举类型用enum开头 B.枚举常量的值是一个常数
C.一个整数可以直接赋给一个枚举变量 D.枚举值可以用来作判断比较
5.求0到50的总和,不正确的程序段是( )
A. int i,sum;
sum=0;
for(i=0;i<51;i++) sum+=i;
B. int i,sum;
for(i=0,sum=0;i<51;sum+=i++);
C. int i,sum;
i=0;sum=0;
for(i<51) {sum+=i;i++;}
D. int i,sum=0;
for(i=0; ;i++) {if(i>50) break; sum+=i;}
6. 表达式 (int)3.6*3的值为( )
A.9 B. 10 C . 10.8 D.18
7.程序的结果为( )
main()
{ int a=3,b=4,t=1;
if (a>b)
{t=a;a=b;b=t;}
printf(“%d”,a) }
A. 3 B.4 C.1 D.0
8.程序main()
{ int a=1;
switch(a)
{ case 1: printf(“1”);
case 2: printf(“2”);
default: printf(“other”);} } 的结果为( )
A.12other B.1 C.2 D.Other
9.函数strcmp(“A”, “B”) 的值为( )
A.0 B.-1 C.1 D.3
10.下程序的结果为( )
int f(a) int a;{ auto int b=0; static int c=3; b=b+1; c=c+1;
return(a+b+c);}
main()
{ int a=2,i;
for (i=0;i<3;i++)
printf(“%d”,f(a));}
A.789 B.777 C.8910 D.9
11.合法的C语言标识符是( )
A.ab&c B.2ab C._a1 D./n
12.若有定义int a=2,b=9,k;k=a+b++/a++;则k的值是( )
A.6.5 B.7 C.6 D.8
13.标有/* */语句的输出结果为( )
int x=20; printf(“%d,%o,%x”,x,x,x);/* */
A.20,20,20 B.20,24,14 C.20,14,24 D.20,024,14
14. 将p定义为指向含n个元素的一维数组的指针变量,正确的语句为 ( )
A. int (*p)[n]; B. int *p[n]; C.int p[n]; D. int **p[n];
15. 下面程序执行结果是( )
main()
{ char c1,c2;
int i=2;
c1=’a’;c2=’c’;
c1=c1+i; c2=c2-i;
printf(“%c,%d”,c1,c2);/*’a’的ASCII码为97*/
A.语法错误 B.99,97 C.c,a D.c,97
16.请问:071^052的结果是( )
A.032 B.016 C.023 D.022
17.下面对函数的叙述,不正确的是( )
A.函数的返回值是通过函数中的return语句获得的
A.函数的返回值是通过函数中的return语句获得的
B.函数不能嵌套定义
C.一个函数中有且只有一个return语句
D.函数中没有return语句,并不是不带回值
18.下面的叙述,不正确的是( )
A.宏名无类型,其参数也无类型
B.宏定义不是C语句,不必在行末加分号
C.宏替换只是字符替换
D.宏替换定义命令必须写在文件开头
19.有定义int a[3][4],输入其3行2列元素的正确语句为( )
A.scanf(“%d”,a[3,2]); B.scanf(“%d”,*(*(a+2)+1))
C.scanf(“%d”,*(a+2)+1); D.scanf(“%d”,*(a[2]+1));
20.下面对指针变量的叙述,正确的是( )
A.指针变量可以加上一个指针变量
B.可以把一个整形数赋给指针变量
C.指针变量的值可以赋给指针变量
D.指针变量不可以有空值,即该指针变量必须指向某一变量
二、阅读程序,写出执行结果(每题5分,共20分)
1、#include “stdio.h”
main()
{ int i,k,a[10],p[3];
k=5;
for ( i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for ( i=0;i<3;i++) k+=p[i]*2;
printf(“%d\n”,k); }
2、#include “stdio.h”
main( )
{ int a=2,*p,**pp;
pp=&p;
p=&a;
a++;
printf(“%d,%d,%d\n”,a,*p,**pp);}
3、main( ){ union
{ char s[2];
int i;
}g;
g.i=0x4142;
printf(“g.i=%x\n”,g.i);
printf(“g.s[0]=%x\t g.s[1]=%x\n”,g.s[0],g.s[1]);
g.s[0]=1;
g.s[1]=0;
printf(“g.s=%x\n”,g.i); }
4、#include “stdio.h”
main( )
{ int x=1;
void f1( ),f2( );
f1( );
f2(x);
printf(“x=%d\n”,x);}
void f1(void)
{ int x=3; printf(“计算机编程语言x=%d\n”,x);}
void f2(x)
int x;
{ printf(“x=%d\t”,x);}
Q (下列每小题只有一个错误,请改正。)
1.str_space(char *str)/*统计字符串中空格数*/
{ int num=0;
char ch;
while((ch=*str++)!=’\0’)
if(ch=’’) num++;
return (num); }
2.main()
{ int a,b;
float x,y,z;
scanf(“%f%f%f”,&x,&y,&z);
a=b=x+y+z;
c=a+b;
printf(“%d%d%d”,a,b,c);}
3.#include “stdio.h”
main()
{ static int a[]={0*5};
int i=0,sum=0;
for(;i<5;i++) sum=sum+*(a+i)+i;
printf(“sum=%d”,sum); }
4.#include “stdio.h”
main()
{ char a[20];
int i=0;
scanf(“%s”,&a);
while(a[i]) printf(“%c”,a[i++]);}
四、程序填空(每空2.5分,共10分)
1、本程序实现判断m是否为素数,请在程序空白处填空
# include “stdio.h”
main( )
{
int m, i, k;
scanf(“%d”,&m);
k=______________;
for (i=2;i<=k;i++)
if(m%i==0) break;
if (__________________)
printf(“%d”is a prime number\n”,m);
else
printf(“%d is not a prime number\n”,m);
}
2、下面invert函数的功能是将一个字符串内容颠倒过来,请填空。
# include “string.h”
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论