1.C语言中,char 型 和 float 型变量所占的内存分别为:( )。
A) 2B 和 3B B) 1B 和2B C) 2B 和4B D) 1B 和 4B
2.已知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
3.设有定义:int a=5,b; 执行下列语句后,b的值不为2的是( )。
A.b=6-(--a) B.b=a/2
C.b=a>3?2:4 D. b=a%2
4.字符串常量"ab\\\\c\d\\376"的长度是( )
A. 7 B. 12 C. 8 D. 14
5.下列运算符中,优先级最高的是( )
A. <= B. = C. % D. &&
6.C语言中,数组名代表( )
A. 数组全部元素的值 B. 数组首地址
C. 数组第一个元素的值 D. 数组元素的个数
7. 以下的程序输出结果是( )。
main(){ int x=10,y=10,i;
for(i=0;x>8;y=++i) printf("%d %d",x--,y);}
A.10 8 9 11 B.8 1 10 2 C.10 10 11 1 D.10 10 9 1
8. 表达式!E等价于( )。
A.E==0; B. E!=0; C. E!=1; D. E==1;
9. 假设所有变量均为整型,则表达式(a=2,b=5,++b,a+b)的值是( )。
A.8 B. 7 C. 6 D. 2
10. 若有如下定义,则正确的叙述为( )。
char x[]="student";
char y[]={'s', 't', 'u', 'd', 'e', 'n', 't'};
A.数组x和数组y的长度相同 B.数组x的长度大于数组y的长度
C.数组y的长度大于数组x的长度 D.数组x和数组y等价
11. 如果函数运行结束后所产生的值在下一次调用时仍存在,则应将变量定义为( )类别。
A. extern B. auto C. register D. static
12. 若有以下说明语句,则下面叙述中正确的是( )。
typedef struct
{ int n;
char ch[8];
}PER;
A.typedef struct 是结构体类型 B. PER是结构体类型名
C. PER 是结构体变量名 D. struct 是结构体类型名
13. 在C语言程序中,实现字符串连接的系统函数是( )。
A.strcpy() B. strcmp() C. strcat() D.strlen()
14. 有如下语句int a=10,b=20,*p1,*p2; p1=&a;p2=&b;若要实现p1指向变量b,则可选用的赋值语句是( )。
A.*p1=*p2; B.p1=p2; C.p1=*p2; D.*p1=p2;
15. 以下( )是不正确的。
A.int a[ ]={1,2,3,4}; B. int a[ ][3]={1,2,3,4,5,6};
C. int a[3][]={1,2,3,4,5,6}; D. int a[3][3];
二.程序填空题(每空2分,共30分)
1. 以下函数是使用递归法求解n!。
float fact(int n)
{
float f;
if(n<0) {printf(“n<0,dataerror!”); f = -1;}
else if ( ) f=1;
else f= ;
return f ;
2. 找出200以内(包括200)满足下列条件的正整数,并按每行4个数字的格式显示在屏幕上。条件:能被7整除但不能被9整除,或者不能被7整除但可以被11整除。
main()
{
int i, count =0; /*count 变量用来存放符合条件的正整数的个数*/
printf("\\nthese numbers are:\\n");
for(i=1; ;i++)
if(( &&i%9!=0)_______(i%7!=0_____i%11==0))
{
;
printf("%10d",i);
if(count% ==0 ) /* 如果每行输出4个数,则换行*/
printf("\\n");
}
}
3. 将整型数组a中的十个整型数逆序存放并输出。
main()
{ int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d__ _____);
for(i=0,j=9;___ ____;i++,j--)
{___ ______; a[i]=a[j]; ___ _____;} /* 交换*/
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
4.函数strcen()的功能是实现两个字符串的连接(串三s2连接到串s1后)。
void strcen()
{ char s1[80],s2[80];
int i=0,j=0;
while(s1[i]!=’\0’) ; /* 改变i下标至结束符位置*/
{ s1[i]=s2[j]; / *将s1的字符连接到s2后*/
;
i++;
}
; /*s1末尾必须补上串结尾符号*/
}
三.读程序写结果( 每题8分,共40分)
1. 下面程序的输出结果是:
main()
{ int x=3,y=3,z=1;
printf("%d,%d\\n",(++x,y++),z+2);
}
2. 下面程序的输出结果是:
main()
{
int a,b;
for(a=1,b=1;a<100;a++)
{ if(b>=20) break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf("%d\\n",a);
}
3. 下面程序的输出结果是:
main()
{ int x=1,a=0,b=0;
switch(x)
{case 0: b++;
case 1: a++;
case 2: a++;b++;}
printf("a=%d,b=%d",a,b);}
4. 下面程序的输出结果是:
int a,b;
void fun()
{ a=100;
b=200;
}
main()
{ int a=5,b=7;
fun();
printf(“%d,%d”,a,b);
}
5. 下面程序的输出结果是:
int fun(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=fun(a,3);
printf(“%d”,x);
}下载本文