C语言程序设计基础试题三

  • 格式:doc
  • 大小:49.00 KB
  • 文档页数:7

山东科技大学200 —200 学年第学期《程序设计基础》考试试卷三班级姓名学号____________一.选择题(20分):1. 判断下面标识符中哪个是C语言中合法的用户定义标识符:A. a-bB. #abdC. typedefD. _max2. …b‟在内存中占个字节,“B”在内存中占个字节。

A. 1B. 2C. 3D. 43. 下列表达式的值哪些不等于0?A. 2>>1B. ~a&aC. 1>5D. a^a4. 设有一分段函数:x=1 a<b且c=dx=2 a>=b则下列程序段哪个是正确的?A. if(a<b)B. if (a<b)C. if (a>b)D. if (a>=b)If(c==d) {if (c==d) if (c==d) x=2;x=1; x=1; x=1; elseelse x=2; else x=2;} else x=2; {if(c==d) x=1;}5. 下列关于switch和break语句的讨论中,只有是正确的。

A. break语句是switch 语句的一部分B.在switch语句中可以根据需要使用或不使用break语句C. switch语句中必须使用break语句D.以上三种说法都不正确。

6. 若有两条语句:static char x[]=”abcde”;static char y[]={…a‟,‟b‟,‟c‟,‟d‟,‟e‟};则下列说法中正确的是:。

A. x数组和y数组长度相同B.x数组长度大于y数组长度C.x数组长度小于y数组长度D.以上三种说法均错误。

7. 返回值为void的函数,其含义是:A. 调用函数之后,被调用的函数没有返回值;B. 调用函数之后,被调用的函数不返回C. 调用函数之后,被调用的函数返回值为任意类型D. 以上三种说法均不正确。

8. C语言中函数的隐含存储类别是,在一个C源程序文件中,若要定义一个只允许在本源文件中所有函数使用的全局变量,则变量需要使用的存储类别是。

A. autoB. staticC. registerD. extern9. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++) s=s+1;则与上述程序段功能等价的赋值语句是A. s=a+b;B. s=a+c;C. s=s+c;D. s=b+c;10. 以下叙述中不正确的是A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B. 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。

C. 在C中,外部变量的隐含类别是自动存储类别。

D. 在C中,函数形参可以说明为register变量。

11. 对于scanf(“A=%d”,&a)语句,输入10的正确的输入形式是:A. a=10B. A=10C. 10D. =1012. C语言中,运算对象必须是整型的运算符是。

A. %B./C.%和/D.>=13. 为表示关系x≥y≥z,应使用C语言表达式。

A. (x≥y)&&(y≥z)B. (x>=y) and(y>=z)C. (x>=y)&&(y>=z)D. (x>=y)‖(y>=z)14. 若要求在if后一对圆括号中标式a不等于0的关系,则能正确表示这一关系的表达式是。

A. a<>0B.!aC. a=0D. a15. 以下说法正确的是。

A. C语言程序总是从第一个定义函数开始执行;B. 在C语言程序中,要使用的函数必须在main()函数中定义;C. C语言程序总是从main()函数开始执行;D. C语言程序的main()函数必须在程序的开始部分。

16.下列描述中不正确的是A. 字符型数组中可以存放字符串B. 可以对字符型数组进行整体输入、输出C. 可以对整型数组进行整体输入、输出D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值17. C语言中用于结构化程序设计的三种基本结构是A. 顺序结构、选择结构、循环结构B. if、switch、breakC. for、while、do-whileD. if、for、continue18.若已定义x和y为double类型,则表达式(x=1,y=x+3/2)的值是A. 1B. 2C. 2.0D. 2.519.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后三位,并将第四位四舍五入的是A. x=(int)(x*1000+0.5)/1000.0;B. x=(x*1000+0.5)/1000.0;C. x=x*1000+0.5/1000.0;D. x=(x/1000+0.5)*1000.0;20. 执行以下程序后,输出结果是A. –1B. 1C. 8D. 0main(){ int y=11;while(--y){ y--;}printf(“%d\n”,y--);}二.写出下列程序的执行结果(20分):1.执行下列程序后,变量I的正确结果是int I=10;switch (i){case 9: i+=1;case 10: i+=1;case 11: i+=1;default: I+=1;}2. 下面程序的输出结果是main(){ int a[4][4]={{3,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,12,-33,0}};int i,j,s=0;for(i=0;i<4;i++){ for(j=0;j<4;j++){ if(a[i][j]<0) continue;if(a[i][j]= =0) break;s+=a[i][j];}}printf("%d\n",s);}3. 下面程序的输出结果是aaa(char *s){ char *t=s;while(*t) t++;return(t-s);}main(){ char b[]={“Hello!”};printf(“%d\n”,aaa(b));}4. main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf(“%d”,*p); printf(“%d\n”,*(p+8));}输出结果是。

三.程序改错:找出下列程序存在的错误,并进行改正。

(20分) 1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。

#include <stdio.h>void main(){int r;float s;scanf("%d",r);s=PI*r^2;printf("s=%f\n",s);}2、以下程序用于计算一个一维数组各元素平方根的和。

#include <stdio.h>#include <math.h>void main(){int a[10],i;float sum;for (i=0;i<=10;i++)scanf(“%d”,&a[i]);i=0;while (!(i=9)){sum+=sqrt(a[i]);i++;}}3. 下面的函数是用于求一个3*5的二位数组m的最大元素值。

Max_value(m[3][5]){ int i,j,max;max=m[0][0];for (i=0;i<3;i++)for (j=0;j<5;j++)if(m[i][j]<max) max=m[i][j];return (max);}4. 下程序是从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

main(){ float x,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while(x<0){ if (x>amax) amax=x;if(x<amin) amin=x;scanf(“%f”,&x); };printf(“amax=%f\n amin=%f\n”,amax,amin);}四.把以下的程序补完整(10分):1. 下面的函数pow是求xy的值,请填空:pow(int x,int y){ int j;for ( ;y>=1; )j= ;return j;}2. 计算一个以5*5矩阵的主对角线和次对角线元素的和。

main(){ static int a[5][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};int pri_line=0;int sec_line=0;int i=0,j=0;for (;i<5;i++)for (;j<5;j++){ if pri_line+=a[i][j];if sec_line+=a[i][j];}printf(“The sum of pri_line is:%d\n”,pri_line);printf(“The sum of seci_line is:%d\n”,sec_line);}五.编程题,要求画出N-S图或PAD图并给出程序(30分)1. 设计一个C函数,对输入的a、b两个整型参数,返回其中的最小数。

利用main函数调用该函数,并输出结果。

2. 编程输入10个学生5门课程的成绩,实现:①计算每个学生的平均分;②计算每门课程的平均分;③计算平均方差:22111()niniiixxn nσ===-∑∑,其中xi为第i个学生的平均分。

3. 编写一个C程序,求解n!。

要求分别用非递归程序和递归程序实现。