c语言试卷带答案函数 c语言函数测试题及答案( 二 )


C.宏替换只是字符串替换 D.宏名必须用大写字母表示
7、执行char str[10]=”Ch\nina”; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的输出结果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定义int a[3][4][2];后,第10个元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的输出结果是:( )
typedef struct
{long x[2];brshort y[4];brchar z[8];br}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空题(每空1分,共11分)
1、字符串"A"在内存中占用的字节数为。
2、C语言中的标识符只能由字母、下划线和 组成 。
3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是
if(a++=25b--=2c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定义a[]="B\172\\\'a%%";则执行语句printf("%d",strlen(a));的结果为。
5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i4;i++) p[i]=a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为。若数组的首地址为2000,则p[1]指向的地址为。
6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是。
7、设x、y都是int型变量,初值都为1 , 则执行表达式:--xy++后,y的值为。
8、语句for(i=1;i==10;i++)continue;循环的次数是。
9、以下程序输出。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
【c语言试卷带答案函数 c语言函数测试题及答案】三、 写程序结果(每题5分,共35分)
1、#include
main()
{int x,y,z;brx=1,y=2,z=3; x+=y+=z;brprintf("1:%d\n",z+=xy?x++:y++);brx=0x02ff;y=0xff00;brprintf("2:%d\n",(xy)4|0x005f);brx=y=z=-1; ++x||++y++z;brprintf("3:%d,%d,%d\n",x,y,z);br}
2、#define f(x) x*x
main()
{int a=6,b=2,c;brc=f(a+b)/f(b);brprintf(“%d\n”,c);br}
3、fun(int k)
{ printf("%d",k);
if(k0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;brswitch(x)br{ case 1:brswitch(y)br{ case 0:printf(“first\n”);break;brcase 1:printf(“second\n”);break;br}
case 2:printf(“third\n”);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,s[0],2,s[1]};
main()
{ p=a; printf("%d,",p-x);
printf("%d\n",++(*(++p)-y));
}
7、假定在当前盘目录下有2个文本文件 , 其名称和内容如下:
文件名: a1.txt a2.txt
内容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;brvoid fc();brif((fp=fopen("a1.txt","r"))==NULL)br{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;brwhile((c=fgetc(fp1))!='#')putchar(c);br}
四、 程序填空(每空2分,共14分)
1、下面程序求矩阵a的主对角线元素之和,请填空 。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用 。

推荐阅读