浙江理工大学
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、%u
B、%s
C、%e
D、%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; C、int d;
B、unsigned b; D、float c;
(29) 对于变量定义;char *pp[100],pp是一个 (29) 。
A、函数
B、数组元素
C、指针变量
D、数组
(30) 下列程序段的输出结果是 (30) 。
char *st[ ]={ \ printf(\ 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.0 C、point.x=2.0
B、(*p).y=3.0 D、p→s=\
(32) 下列程序段的输出结果是 (32) 。
int a=10,b=0; if (a>15) b=1;
else if (a<2) b=2; else b=3
printf(\;
A、3
B、2
C、1
D、0
(33) 只有当输入数据满足1<=month<=12时,循环语句 (33) 才能正常退出。
A、do{
scanf(\ ;
} while (month>=1‖month<=12); B、do{
scanf(\ ;
} while (month>=1 && month<=12); C、do{
scanf(\ ;
} while (month<1‖month>12); D、do{
scanf(\ ;
} while (month<=1‖month>=12);
调用函数f(27)的输出结果是 (34) 。 void f(int n) { if (n<5)
printf(\ else
printf(\ f(n/5); } A、102 B、201 C、21
34)
D、20
(35) 下列程序段的输出结果是 (35) 。 int k=3,j=4; int *p=&k,*q=&j; (*p)--; j=k; (*q)--
printf(\
A、(2,1)
B、(1,2)
C、(4,3)
D、(3,3)
试题三、程序填空题(每空2分,共20分)
说明:阅读下列程序说明和相应的程序,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1、
【程序说明】
输入一批以-1结束的整数,求偶数和。 【程序】
#include
scanf(\ (36) {
if( (37) ) sum=sum+x; (38) ; printf(“sum=%d”,sum); }
(36) A、while(x==-1) C、if(x==-1) (37) A、x==2 C、x%2==0 (38) A、scanf(\ C、sum=0
程序2、 【程序说明】
a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵,输出“YES”,否则,输出“NO”。 (下三角矩阵,即对角线以上的元素都为0,主对角线为从矩阵的左上角至右下角的连线。)
【程序】
#include
for (i=0;i<3;i++)
for (k=0;k<3;k++);
scanf(\”,&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(\ else printf(\ }
(39) A、flag=0 B、flag==0 (40) A、a[k][i]!=0 B、a[i][k]==0 (41) A、flag=0 B、flag==0
B、while(x !=-1) D、if(x!=-1) B、x%2==2 D、x/2==0
B、scanf(\ D、x=sum
C、flag==1 C、a[i][k]!=0 C、flag==1 D、flag=1 D、a[k][i]=0 D、flag=1
程序3、 【程序说明】
输入一个字符串,将其中的大写字母转换为小写字母后输出。 【程序】
#include
for (k=0;str[k]!=?0?;k++); if ( (42) ) (43) ; puts(str); }
(42) A、?A?<=str[k]<=?Z? B、str[k]>?A?&&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 f2(char *s) 【程序】
{ char *ss; int f1(char s[])
{ int k=0; (44) ; while (s[k]!=?\\0?) while (*s!=?\\0?) k++;
s++;
return k;
return (45) ;
}
}
(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分)
说明:阅读下列程序,将运行的输出结果写在答卷纸的相应题号下。 1、程序1
#include
for (k=1;k<3;k++){
for (j=1;j printf(\”,s); } } 2、程序2 #include { long fun(long number); printf(“\\n”,fun(-974)); } long fun(long number) { int flag; long res=0 flag=number<0 ? -1:1; if (number<0) number=-number while(number!=0) { res=res*10+numbr number/=10 printf(“%d#”,res); } return flag*res; } 3、程序3 #include 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次幂(即xn),2个函数的返回值类型都是double。 x? x?x?x2!3!2344!?...?(?1)n?1xnn!