浙江理工大学
C程序设计 试题(二)
浙江理工大学
一、判断题(判断下列各小题,正确的在题后括号内打\√\,错的打\×\。每小题1分,共10分) 1. s(s-a)(s-b)(s-c)是合法的C语言表达式。 2. 表达式!!6的值是6。 3. 在C语言程序中,在函数内部定义的变量称为全局变量。 4. 结构体变量可以被整体赋值. 5. 结构体类型的成员可以定义成该结构体类型的指针类型 6. 字符型数组中可以存放字符串 7. 可以在赋值语句中通过赋值运算符\对字符型数组进行整体赋值 8. 运算符“=”和“&=”的优先级相同。 9. ?%f?是不正确的字符常量。 10. 表达式~(~2<<1)的值是5。
二、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共20分) 1. 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是______ A c=b=a; B (a=c)‖(b=c); C (a=c)&&(b=c); D a=c=b; 2. 在C语言中,不正确的int类型的常数是________ A ?C? B 0 C 037 D 0xAX 3. 在C语言类型中,int ,char, short等类型的长度是_________
A.固定的 B.由用户自己定义 C.任意的 D.与机器字长有关 4. 设a=3,b=2,c=3,d=4,则表达式:a
____
A 1 B 0 C -1 D 2 6. 下列语句中符合C语言语法的赋值语句是__________ A a=7+b+c=a+7; B a=7+b++=a+7; C ) a=7+b,b++,a+7 D a=7+b,c=a+7; 7. 若a为二维数组,则a[1][2]等价于_________
A. *((a+1)+3) B. *(a[1]+3) C. (*(a+1)+3) D. &a[1]+3 8. 下列表达式中,错误的是______.
A.2>1 ? a:b B.i+++j C.4.0%2.0 D.x*=y+8 9. 若以数组元素作为函数的实参,则实参向形参传送的是______. A.数组元素的地址 B.数组元素的值 C.数组的首地址 B.数组名 10. 设有如下的共用体定义:
union data{ int i; long b; float f; }a;
则a所占的内存单元为______个字节.
A.4 B.16 C.8 D.10 三、程序填空题(阅读以下程序说明和相应程序(段),在每小题提供的若干可选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共20分) 1.【程序说明】
下面程序是查找学生的成绩,完成该程序。输入值为学生序号,当输入为-1时程序结束。 【程序】
#include
void search (float (*p) [3], int i );
float score [4][3]={{75,78,82},{66,72,77},{85,90,81},{74,89,68}}; while (1){
scanf (“%d” &i ); if(___1____)
break;
search(_____2_______);
} }
void search (float (*p)[3],int i ){
int k;
print (“The score of No %d are \\n”,i ); for(_____3_______)
printf( “%5.2f”,_____4_________); }
(1) A、i= =0 B、break C、return D、i = = -1 (2) A、p B、score, i C、&score, i D、p, i
(3) A、i=0;i<3; i++ B、k=1;k<=3;k++i C、k=2; k>0; k-- D、k=0;k<3;k++ (4) A、*p[i]+k B、p[i][k] C、score[i][k] D、*score[i]+k
2.【程序说明】
输入一个字符串,将其中的大写字母转换为小写字母后输出。 【程序】
#include
char str[80]; int k; gets(str);
for (k=0;str[k]!=’\\0’;k++); if ( (5) )
(6) ;
puts(str);
}
(5) A、k= =0 B、str[k]
(6) A、k++ B、str[k]=str[k]-32 C、k=32 D、str[32] -= k
3.【程序说明】
在 n 行 n 列的矩阵中,每行都有最大的数,本程序求这 n 个最大数中的最小一个 【程序】
#include〈stdio.h〉 #define N 100 int a[N][N]; void main(){
int row ,col ,max ,min ,n;
/*输入合法 n (〈100 〉,和输入 n×n 个整数到数组 a 的代码略*/ for ( row = 0;row < n;row++) {
for ( max = a[row][0],col = l ;col < n;col++) if (__7_)
max = a[row][col];
if (__8__)
min = max;
else if(__9__)
min = max;
}
printf (\}
(7) A、maxa[row][col] C、max>a[i][j] D、max = =a [i][j] (8) A、minmin D、i= =0
(9) A、maxmin D、max = =min (10) A、%5i B、] C、_ D、\
四、阅读理解题(阅读下列程序或程序段,写出运行结果,每小题5分,共20分) 1. 阅读下面程序,给出输出结果。 main( ){ int i, j, k;
for(i=1; i<10; i++){ printf(“\\n”); if(i<=5)
for(j=1; j<=i; j++){
for(k=1;k<=5-i;k++) printf(“#”); printf(“* “); } else
for (j=1; j<=10-i;j++){ for(k=1;k<=i-5;k++) printf(“#”); printf(“* ”); } }
}
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;
res=res*10+number; printf(“%d#”,res); return flag*res; }
3. 阅读下面程序,指出下面程序所完成的功能 main(){
int a=5,b=6; int c,d,x; c=1; d=-1; a++; if (a
if (c x=1; else if(a x=2; else x=3; else x=6; else x=7; printf(“x==\\n”,x); } 4.分析以下程序: #include “string.h” main(){ char c,string[81]; int i,a=0,b=0; gets(string); for(i=0;(c=string[i])!='\\0';i++) if (c==' ') a=0; else if (a==0){ a=1;b++; } printf(\ } 若输入:a b c,则程序运行后,?输出结果为______, 且c的值为______,a的值为______. 五、编程题(每题10分,共30分) (1) 有函数f(x)=1-x /2+x/4-x/6+x/8… 编写程序求f(x),使误差小于0.0000001。 (2) 有一函数: ?ax2?bx?c(x?1)?3 y??alogx?cosx(1?x?10) ?3x?10(x?10)? 写一程序,输入x, 输出y 值。 (3)随机产生15个数属于[30,150]范围的数,请按由从小到大排序。请输出排序前后的数,要求每行输出5个数。