《C语言试题》第1页共4页四川师范大学试卷C语言试题(一)一、单选题(以下各题只有一个正确答案,请将正确答案的序号填到下面的表格中,每小题2分,共20分)1.C语言中,运算对象必须是整型数的运算符是。A.%B.\C.%和\D.**2.表示关系x=y=z的c语言表达式为。A.(X=Y)&&(Y=Z)B.(X=Y)AND(Y=Z)C.(X=Y=Z)D.(X=Y)&(Y=Z)3.合法的数组定义是。A.inta[]=string;B.inta[5]={0,1,2,3,4,5};C.chars=string;D.chara[]={0,1,2,3,4,5};4.假定a和b为int型变量,则执行以下语句后b的值为。a=1;b=10;do{b-=a;a++;}while(b--0);A.9B.-2C.-1D.85.下面程序的输出是。main(){intx=10,y=3;printf(%d\n,y=x/y);}A.0B.1C.3D.不确定的值6.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是。A.k=*P1+*P2;B.p2=k;C.P1=P2;D.K=*P1*(*P2);7.设有如下定义:int(*ptr)();则以下叙述中正确的是A.ptr是指向一维组数的指针变量B.ptr是指向int型数据的指针变量C.ptr是指向函数的指针,该函数返回一个int型数据D.ptr是一个函数名,该函数的返回值是指向int型数据的指针8.以下程序的输出结果是main(){inti,k,a[10],p[3]:k=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];for(i=0;i3;i++)k+=p[i]*2;printf(%d\n,k);}A.20B.21C.22D.239.不能把字符串:Hello!赋给数组b的语句是。《C语言试题》第2页共4页A.charb[10]={'H','e','l','l','o','!'};B.charb[10];b=Hello!;C.charb[10];strcpy(b,Hello!);D.charb[10]=Hello!;10.若定义:intx,y;chara,b,c;并有以下输入数据(此处CR代表换行符,└─┘代表空格符):1└─┘2CRA└─┘B└─┘CCR则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是A.scanf(x=%dy=%d,&x,&y);a=getchar();b=getchar();c=getchar();B.scanf(%d%d,&x,&y);a=getchar();b=getchar();c=getchar();C.scanf(%d%d%c%c%c”,&x,&y,&a,&b,&c);D.scanf(%d%d%c%c%c%c%c%c”,&x,&y,&a,&a,&b,&b,&c,&c);二、不定项选择(以下各题有一个或多个正确答案,请将正确答案的序号填到下面的表格中,每小题2分,共10分)1.下列语句中符合C语言语法的赋值语句是A.a=7+b+c=a+7;B.a=7+b++=a+7;C.a=7+b,b++,a+7D.a=7+b,c=a+7;2.以下对C语言函数的有关描述中,不正确的是A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参。B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中3.若有以下的定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是A.p+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p4.设有如下定义:char*aa[2]={abcd,ABCD};则以下说法中正确的是A.aa数组各元素的值分别是abcd和”ABCDB.aa是指针变量,它指向含有两个数组元素的字符型一维数组C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D.aa数组的两个元素中各自存放了字符'a'和'A'的地址5.下述对C语言字符数组的描述中正确的是A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.可以在赋值语句中通过赋值运算符=对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较三、程序阅读,并写出运行结果(每小题4分,共16分)1、main(){intx=1,y=1,z=1;y=y+z;x=x+y;printf(%d,,xy?y:x);《C语言试题》第3页共4页printf(%d,,xy?x++:y++);printf(%d,%d\n,x,y);}程序运行的结果是:2.main(){inta[6][6],i,j;for(i=1;i6;i++)for(j=1;j6;j++)a[i][j]=(i/j)*(j/i);for(I=1;I6;i++){for(j=1;j6;j++)printf(%2d,a[i][j]);printf(\n);}}程序运行的结果是:3.main(){intx,y;for(x=1,y=1;y50;y++){if(x=10)break;if(x%2==1){x+=5;continue;}x-=3;}printf(x=%d,y=%d\n,x,y);}程序运行的结果是:4.#includestdio.hinta[10]={1,2,3,4,5,6,7};rev(int*m,intn){intt;if(n1){t=*m;*m=*(m+n-1);*(m+n-1)=t;rev(m+1,n-2);}}main(){inti;rev(a,7);for(i=0;i10;i++)printf(%d,a[i]);}《C语言试题》第4页共4页程序运行的结果是:四、编写程序(按步骤给分)。1.试编程:利用循环语句按列顺序为一个5×5的二维数组A赋值为l到25的自然数,然后计算数组A两个对角线上的元素之和,并输出该数组的左下三角。2.从键盘上输入两个字符串a和b,将a和b连接成一个字符串c,将字符串c按升序排序输出。3.A是一个2×4的整型数组,且各元素均已赋值。函数max_value可求出其中的最大元素值max,并将此值返回主调函数.今有函数调用语句max=max_value(A);请编写max_value函数。函数原型是:Max_va1ue(intarray[][4]);4.已有变量定义和函数调用语句:intx=57;isprime(x)用来判断一个整型数x是否为素数.若是素数,函数返回1,否则返回0。请编写isprime函数。5.有10个学生,每个学生的数据包括学号、姓名、三门课的成绩(要求用结构体来定义学生的数据),从键盘输入10个学生数据,要求打印出三门课总平均成绩,以及平均成绩最高分的学生的数据(包括学号、姓名、三门课成绩、平均分数)。