考试科目:《C语言程序设计》第七章至第九章(总分100分) 时间:90分钟
学习中心(教学点) 批次: 层次: 专业: 学号: 身份证号: 姓名: 得分:
一、单项选择题(本题共20小题,每小题2分,共40分。)
1、若有以下说明和语句,则输出结果是( )。 char sp[]=\"\\x69\\082\\n\"; printf(\"%d\
A、3 B、5 C、1 D、字符串中有非法字符,输出值不定
2、 若有变量说明:char s,s1[20];执行语句:s=\"student\";s1=s;正确的叙述是( )。 A、二个语句都不正确
B、s所指向的字符串和s1的值都是\"student\" C、第一个语句正确,而第二个语句不正确 D、第二个语句正确,而第一个语句不正确
3、 变量的有效范围与其定义位置有关,( ),其作用域在整个源程序文件中都有效。 A、在第一个函数中定义的变量 B、在定义第一个函数之前所定义的变量 C、在主函数中定义的变量 D、在函数中定义的静态变量 4、若程序中定义了以下函数
double myadd(double a,double B) { return (a+B) ;}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 ( )。
A、 double myadd(double a,B) ; B、 double myadd(double,double); C、 double myadd(double b,double A) ; D、 double myadd(double x,double y);
1
5、有以下程序
void f(int v , int w) { int t; t=v;v=w;w=t; } main( )
{ int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf(“%d,%d,%d\\n”,x,y,z); }
执行后输出结果是( )。 A、 1,2,3
B、 3,1,2
C、 1,3,2 D、 2,3,1
6、函数调用可以……,以下错误的是( )。 A、出现在执行语句中
B、出现在一个表达式中
C、作为一个函数的实参
D、作为一个函数的形参
7、若有宏定义与变量说明如下:
#define X 5 #define Y X+1 #define Z Y*X/2 int a; a=Y;
则执行以下printf语句后输出的结果是( )。 Printf(\"%d %d\\n\A、7 5
B、12 6
C、12 5
D、7 6
8、下列说法不正确的是( )。
A、宏替换不占用运行时间 B、宏无类型
C、宏替换只是字符替换 D、宏名必须用大写字母表示
9、数组名作为参数传递给函数,此时作为实在参数的数组名被处理为(A、该数组的长度 B、该数组的元素个数 C、该数组中各元素的值 D、该数组的首地址 10.执行完下面的程序段后,屏幕显示的内容为( )。 main() { int a=2,i;
for(i=0;i<3;i++) printf(\"%d\
2
。 ) } f(int a) { int b=0; static int c=3; b++; c++;
return(a+b+c); }
A、777 B、7 7 7 C、789 D、7 8 9 11、以下描述中,正确的是( )。 A、调用函数时,实参可以是表达式 B、调用函数时,将为形参分配内存单元 C、调用函数时,实参与形参的原型必须一致 D、调用函数时,实参与形参可以用内存单元 12、以下能正确定义一维数组的选项是( )。 A、 int num []; int num[N];
13、有两个字符数组a,b,则以下正确的输入语句是( )。 A、gets (a,b);
B、scanf (\"%s%s\
D、gets (\"a\"),gets (\"b\");
C、scanf (\"%s%s\ A、字符数组可以存放字符串
B、字符数组的字符串可以整体输入、输出
C、可以在赋值语句中通过赋值运算符\"=\"对字符数组整体赋值 D、不可以用关系运算符对字符数组中的字符串进行比较
15、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )。 A、float型
B、int型
C、long型
D、double型
16、在C语言中,引用数组元素时,其下标的数据类型允许是( )。 A、整型常量 B、整型表达式 C、整型常量或整型表达式 D、任何类型的表达式
17、C语言中函数能否嵌套调用和递归调用?以下说法正确的是( )。 A、二者均不可 B、前者可,后者不可 C、前者不可,后者可 D、二者均可
3
B、 #define N 100 int num [N]; D、 int N=100;
C、 int num[0..100];
14、下述对C语言字符数组的描述中错误的是( )。
18、有语句char str1[10],str2[10]={\"books\则能将字符串books赋给数组str1的正确语句是( )。
A、str1={\"Books\、strcpy(str1,str2); C、str1=str2; D、strcpy(str2,str1); 19、以下函数调用中有( )个实参。 expd((a1,a2,a3),(a4,a5),a7,a8)
A、4个 B、3个 C、8个 D、5个
20、C语言的编译系统对宏命令是( )时候处理的。 A、在程序运行 B、在程序连接时
C、和源程序其它C语言同时进行编译时 D、对源程序其它成份正式编译之前进行处理的
二、填空题(本题共8小题,每空2分,共30分)
1、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 。 2、在C语言中,二维数组元素在内存中的存放顺序是按 存放的。
3、下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如:
1 2 3 4 1 5 9 13
5 6 7 8 2 6 10 14 当 A= 9 10 11 12 则 A’= 3 7 11 15 13 14 15 16 4 8 12 16 请填空
#define N 4
void rotate(int a[][N]) { int i,j,t;
for(i=0;i 4、以下程序实现从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若字符不在,则打印**。请完善以下程序。 #include”stdio.h” #include”string.h” main( ) { char str[100],ch; int bot=0,top,mid,flag=0; gets(str); 4 getchar(ch); top= ; while((top-bot)>=0) { mid= ; if(str[mid]==c) { ; ;} else if(str[mid] } if(flag) printf(“%c字符在已知字符串中位置是%d\\n”,c,mid+1); else printf(“**”);} 5、以下函数的功能是删除字符串s中的所有数字字符。请填空。 void dele(char s[]) { int n=0,i; for(i=0,s[i];i++) if( ) s[n++]=s[i]; s[n]= ; } 6、执行以下程序后,输出的结果是 。 int m = 10 ; int f (int x, int y) { int m = 5 ; m += x*y ; return m ; } main( ) { int a = 6, b = 7 ; printf (“%d\\n”, f(a,b) / m) ; } 7、以下程序运行后的输出结果是 。 #define SQR(x) x*x main() { int a,k=3; a=++SQR(k+1); printf(\"%d\\n\;} 8、有以下程序 5 void swap1(int c[]) { int t; t=c[0];c[0]=c[1];c[1]=t; } void swap2(int c0,int c1) { int t; t=c0;c0=c1;c1=t; } main( ) { int a[2]={3,5},b[2]={3,5}; swap1(A) ; swap2(b[0],b[1]); printf(“%d,%d,%d,%d\\n”,a[0],a[1],b[0],b[1]); } 其输出结果是 。 五、编程题(本题共2小题,每小题15分,共30分) 1、编写程序实现输入一个十进制数,将其转化为指定进制的数制字符。 2、编写程序将下标为奇数的数组元素从数组中删除,然后排序输出。 参考答案: 一、单项选择题:(本题共20小题,每小题2分,共40分) 1、B 2、A 3、B 4、A 5、C 6、D 7、A 8、D 9、D 10、C 11、A 12、B 13、B 14、C 15、B 16、C 17、D 18、B 19、A 20、D 二、填空题(本题共8小题,每空2分,共30分) 1、auto(动态存储) 2、行 3、j 五、编程题:(本题共2小题,每小题15分,共30分) 1、 #include\"string.h\" 6 #include\"stdio.h\" void f( int m,int r,char a[]) { int i=0,k; char b[17]=\"0123456789ABCDEF\ while(m!=0) { a[i++]=b[m%r]; m=m/r; } a[i]='\\0'; puts(a); k=strlen(a); for(i=0;i printf(\"please input m,r\\n\"); do { scanf(\"%d,%d\ }while(m<0 || r<2 || r>16); f(m,r,a); printf(\"%dzhuan huan cheng %d jin zhi zi fu chuan wei %s\\n\} 2、 #define N 10 void sort(int a[],int n) { int I,j,t; for(I=1;I<=n-1;I++) for(j=0;j { t=a[j];a[j]=a[j+1];a[j+1]=t;}} 7 main() {int a[N],I,k=0; for(I=0;I 8 因篇幅问题不能全部显示,请点此查看更多更全内容