c语言试卷及答案1浙江理工大学C程序设计试题(一)试题二、语言基础题(本题共30分)(一)判断题(本题共10分,每小题1分)说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。
(16) C语言程序的三种基本结构是顺序、选择和嵌套。
(17) 在C语言程序中,在函数内部定义的变量称为全局变量。
(18) 运算符“=”和“&=”的优先级相同。
(19) ‘%f’是不正确的字符常量。
(20) 运算符“+”不能作为单目运算符。
(21) 如果运算符“*”和“/”都是右结合的,则表达式10*6/5的值是10。
(22) s(s-a)(s-b)(s-c)是合法的C语言表达式。
(23) 表达式!!6的值是6。
(24) 表达式~(~2<<1)的值是5。
(25) 对于变量定:int a[10],*p=a+8;数组a的最后一个元素是p[1]。
(二)单选题(本题共20分,每小题2分)(26) 执行语句printf("(26) ","A");将得到出错信息。
A、%uB、%sC、%eD、%d(27) 设c是一个字符变量,求解表达(27) 后,c的值不是1就是0。
A、c=getchar()!=’\n’B、(c=getchar()!)=’\n’C、c=’1’D、c=EOF(28) 下列定义中,(28) 定义的变量可以存放-123.4。
A、long a;B、unsigned b;C、int d;D、float c;(29) 对于变量定义;char *pp[100],pp是一个(29) 。
A、函数B、数组元素C、指针变量D、数组(30) 下列程序段的输出结果是(30) 。
char*st[ ]={ "SUM","MOON","STAR","X"};printf("(%s,%c)",*(st+1)+1,*(*(st+2)+2)+2)A、(MOON,M)B、(OON,C)C、(OON,Q)D、(OON,A)(31) 对于以下的变量定义,表达式(31) 是不正确的。
struct node {float x,y;char s[10];} point,*p=&point;A、p→x=2.0B、(*p).y=3.0C、point.x=2.0D、p→s="a"(32) 下列程序段的输出结果是(32) 。
int a=10,b=0;if (a>15)b=1;else if (a<2)b=2;elseb=3printf("%d",b);A、3B、2C、1D、0(33) 只有当输入数据满足1<=month<=12时,循环语句(33) 才能正常退出。
A、do{scanf("%d",&month);} while (month>=1‖month<=12);B、do{scanf("%d",&month);} while (month>=1 && month<=12);C、do{scanf("%d",&month);} while (month<1‖month>12);D、do{scanf("%d",&month);} while (month<=1‖month>=12); 34) 调用函数f(27)的输出结果是(34) 。
void f(int n){ if (n<5)printf("%d",n);elseprintf("%d",n%5);f(n/5);}A、102B、201C、21D、20(35) 下列程序段的输出结果是(35) 。
int k=3,j=4;int *p=&k,*q=&j;(*p)--;j=k;(*q)--printf("(%d,%d) ",k,j);A、(2,1)B、(1,2)C、(4,3)D、(3,3)试题三、程序填空题(每空2分,共20分)说明:阅读下列程序说明和相应的程序,在每小题提供的若干可选答案中,挑选一个正确答案。
程序1、【程序说明】输入一批以-1结束的整数,求偶数和。
【程序】#include <stdio.h>void main( ){ int x,sum;sum=0;scanf("%d",&x);(36) {if((37) )sum=sum+x;(38) ;printf(“sum=%d”,sum);}(36) A、while(x==-1)B、while(x!=-1)C、if(x==-1)D、if(x!=-1)(37) A、x==2B、x%2==2C、x%2==0D、x/2==0(38) A、scanf("%d",&x)B、scanf("%d",x)C、sum=0D、x=sum程序2、【程序说明】a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵,输出“YES”,否则,输出“NO”。
(下三角矩阵,即对角线以上的元素都为0,主对角线为从矩阵的左上角至右下角的连线。
)【程序】#include <stdio.h>void main( ){ int flag,i,k;int a[3][3];for (i=0;i<3;i++)for (k=0;k<3;k++);scanf("%d”,&a[i][k]);(39) ;for (i=0;i<3&&flag;i++)for(k=i+1;k<3&&flag;k++)if( (40) ) (41) ;if (flag) printf("YES\n");else printf("NO\n");}(39) A、flag=0 B、flag==0 C、flag==1D、flag=1(40) A、a[k][i]!=0B、a[i][k]==0 C、a[i][k]!=0D、a[k][i]=0(41) A、flag=0B、flag==0 C、flag==1D、flag=1程序3、【程序说明】输入一个字符串,将其中的大写字母转换为小写字母后输出。
【程序】#include <stdio.h>void main( ){ char str[80];int k;gets(str);for (k=0;str[k]!=’0’;k++);if ((42) )(43) ;puts(str);}(42) A、’A’<=str[k]<=’Z’B、str[k]>’A’&&str[k]<’Z’C 、str[k]>=’A ’&&str[k]<=’Z ’D 、str[k]>=’A ’‖str[k]<=’Z ’ (43) A 、str[k]=str[k]-32 B 、str[k]=str[k]-‘a ’+’A ’ C 、tolower(str[k]) D、str[k]=str[k]-‘A ’+’a ’ 程序4、 【程序说明】请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。
【程序】 int f1(char s[]){ int k=0;while (s[k]!=’\0’)k++; return k; }(44) A 、s=ss B 、ss=s C 、ss=NUL D 、s=NUL (45) A 、ss-s B 、s-ss-1 C 、s-ss D 、s-ss+1试题四、程序阅读题(每小题5分,共15分)说明:阅读下列程序,将运行的输出结果写在答卷纸的相应题号下。
int f2(char *s) { char *ss; (44) ;while1、程序1#include <stdio.h>void main( ){ int j,k;float f,s;s=0;f=1;for (k=1;k<3;k++){for (j=1;j<k;j++);f=f*k;s=s+f;printf("%.0f#”,s);}}2、程序2#include <stdio.h>void main( ){ long fun(long number);printf(“%1d\n”,fun(-974));}long fun(long number){ int flag;long res=0flag=number<0 ? -1:1;if (number<0) number=-number while(number!=0) {res=res*10+numbr%10number/=10printf(“%d#”,res);}return flag*res;}3、程序3#include <stdio.h>#include <std1ib.h>void main( ){ FILE *in;char *string1=”IF YOU FAIL TO PLAN”;char *string2=”YOU PLAN TO FAIL”;if((in=fopen(“file1.txt”,”w”)) !=Null)while(*string2!=’\0’)fputc(*string2++,in);fclose(in);if((in=fopen(“file1.txt”,”r”)) !=NULL)while(fgetc(in)!=EOF)putchar(*string1++);fclose(in);}试题五、程序设计题(每题10分,共20分)1. 输入10个整数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。
2. 输入一个正实数x 和一个正整数n ,求下列算式的值。
要求定义和调用2个函数:fact(n)计算n 的阶乘;mypow(x,n)计算x 的n 次幂(即x n ),2个函数的返回值类型都是double 。
!...!4!3!2)1(1432n x x x x x nn --++-+-《C 程序设计》试题1考试答案与评分标准试题二 (16) (17) (18) (19) (20) (21) (22) (23) (24) (25)B B A A A A B B A A (26) (27) (28) (29) (30) (31) (32) (33) (34) (35)C D D C B B A C B A(3 6)(37)(38)(39)(40)(41)(42)(43)(44)(45)B C A D B A C D B D程序1 程序21#3# 4#47#479#-479程序3 程序4IF YOU FAIL TO P五、程序设计题(每小题10分,满分20分)1、#include <stdio.h>#include <math.h>int main(){int n,i,a[10],t,min,minpot;scanf("%d",&a[0]);min=a[0];minpot=0;for(i=1;i<10;i++){scanf("%d",&a[i]);if(fabs(a[i])<fabs(min)){min=a[i];minpot=i;}}t=a[9];a[9]=a[minpot];a[minpot]=t;for(i=0;i<10;i++){if(i>0) printf(" ");printf("%d",a[i]);}printf("\n");}2、#include <stdio.h> double fact(n){if(n==1) return 1;elsereturn n*fact(n-1); }double mypow(x,n){int i; double t=1;for(i=1;i<=n;i++)t=t*x;return t;}int main(){double s=0,x;int i,n;scanf(“%lf %d”,&x,&n);for(i=1;i<=n;i++)s=s+mypow(-1,i-1)*mypow(x,n)/fact(n);printf(“%lf\n”,s);}。