河南理工大学万方科技学院 2010-2011 学
B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个年第 2 学期
二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一《C程序设计》试卷(A卷)(张丽)
个二进制文件
D)后缀为.obj和.exe的二进制文件都可以直接运行
2.按照C语言规定的用户标识符命名规则,不能出现在标识符考试方式: 闭卷 本试卷考试分数
占学生总评成绩的 70 % 中的是()
A)大写字母 B)连接符 C)数字字符 D)下划线 总 3.以下叙述中错误的是( ) 分 题号 一 二 三 四 五 六 七 八 九 十 核A)C语言是一种结构化程序设计语言
分 得 B)结构化程序有顺序、分支、循环三种基本结构组成 人 分 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法
4.对于一个正常运行的C程序,以下叙述中正确的是()
A)程序的执行总是从main函数开始,在main函数结束 B)程序的执行总是从程序的第一个函数开始,在main函数结 复查总分 总复查人 束
C)程序的执行总是从main函数开始,在程序的最后一个函数 中结束
得分
(本题30分)一、选择题(在每小题列出的四个选D)程序的执行总是从程序的第一个函数开始,在程序的最后一 项中只有一个选项是符合题目要求的,请将正确选项个函数中结束
前的字母填在题后的下划线“ ”上。本题2分/5.设变量均已正确定义,若要通过
scanf
小题) (“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2
1.下列叙述中错误的是( )
赋数值10和20,为变量c1和c2赋字符X和Y。以下所示A)计算机不能直接执行用C语言编写的源程序
的输入形式中正确的是(注:□代表空格字符)( ) A)10□X□20□Y〈回车〉 B)10□X20□Y〈回车〉
《C程序设计》试卷 第1页(共4页)
C)10□X〈回车〉 D)10X〈回车〉 20□Y〈回车〉 20Y〈回车〉 6.若有代数式( )
A)sqrt(abs(n^x+e^x)) B)sqrt(fabs(pow(n,x)+pow(x,e))) C)sqrt(fabs(pow(n,x)+exp(x))) D)sqrt(fabs(pow(x,n)+exp(x)))
7.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()
A)k++ B)k+=1 C)++k D)k+1
8.有以下程序,其中%u表示按无符号整数输出() main()
{unsigned int x=0xFFFF; /* x的初值为十六进制数*/ printf(“%u\\n”,x); }
程序运行后的输出结果是
A)-1 B)65535 C)32767 D)0xFFFF
9.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )
A)if(x++); B)if(x>y&&y!=0); C)if(x>y)x-- D)if(y<0){;} else y++; else x++;
10.以下选项中,当x为大于1的奇数时,值为0的表达式( )
(其中e仅代表自然对数的底数,不
A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0 11.以下叙述中正确的是( ) A)break语句只能用于switch语句体中
B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环
C)break 语句只能用在循环体内和switch语句体内 D)在循环体内使用break语句和continue语句的作用相同 12.有以下程序 main()
{int k=5,n=0; do {switch(k)
{case1: case3:n+=1; break; default:n=0;k--;
case2:case4:n+=2;k--;break; } printf(“%d”,n); }while(k>0&&n<5); }
程序运行后的输出结果是( )
A)222 B)0235 C)02356 D)2356 13.有以下程序 main() {int i,j;
for(i=1;i<4;i++)
{for(j=i;j<4;j++)printf(“%d*%d=%d”,i,j,i*j);
是变量),则以下能够正确表示该代数式的C语言表达式是
《C程序设计》试卷 第2页(共4页)
printf(“\\n”); } }
程序运行后的输出结果是( )
A)1*1=1 1*2=2 1*3=3 B)1*1=1 1*2=2 1*3=3
2*1=2 2*2=4 2*2=4 2*3=6 3*1=3 3*3=9 C)1*1=1 D)1*1=1
1*2=2 2*2=4 2*1=2 2*2=4
1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9 14.以下合法的字符型常量是( )
A)”\\x13” B)”\\018” C)”65” D)”\\n” 15.在C语言中,函数返回值的类型最终取决于() A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型 C)调用函数时主函数所传递的实参类型 D)函数定义时形参的类型 得分
(本题15分)二、程序填空题(下面给出了2个程序,请按照题意将下划线处缺少的部分补上,使其能正确运行。本题3分/空)
int a, b, c, temp,max;
printf(“请输入3个数: ” ); scanf(“%d, %d, %d”, &a,&b,&c); temp= ; max= ;
printf(“最大数是%d\\n”,max ); return 0; }
2. 求一个3x3的整型矩阵对角线元素之和。请填空完成。
main ( )
{ int a[3][3],sum=0; int i, j; printf (“enter data:\\n”); for (i=0;i<3;i++); ; scanf(“%3d,”, &a[i][j]);
; ; printf(“sum=%6d\\n”,sum );
return 0; } 得分
(本题15分)三、程序改错题(请改正下列程序中的错误,使之能得出正确的结果。
注意:只能修改“/******found******/”之间的行,
1. 有3个整数a,b,c,由键盘输入,输出其中最大的数。请用条件表达大完成填空。
main( ) {
不得增行或减行,也不得更改程序的结构。本题3分/处) 1.求100~200之间的全部素数,请改正程序中的错误,使它能得出正确的结果。
《C程序设计》试卷 第3页(共4页)
#include /*********found*********/ for (n=101; n<=200; n=++) {k=sqrt(n); /*********found*********/ for (i=2;i<=k;i++) if (n/i==0) ; if(i>=k+1) {printf(“%d”,n); m=m+1; } /*********found*********/ if(m%10==0)printf(“\\n”); } printf(“\\n”); return 0 ; } 2. 自编写一个函数,将两个字符串连接。请改正程序中的错误,使它能得出正确的结果。 #include int main( ) { void concatenate(char string1[ ], char string2[ ], char string[ ]); char s1[100 ], s2[100 ], s[100 ]; /****************found****************/ printf(“input string1: ”); scanf(“%s”,s1); printf(“input string2: ”); scanf(“%s”,s2); concatenate(string1, string2, s); printf(“\\n the new string is: %s\\n,”, s ”); /****************found****************/ return 0; } void concatenate(char string1[ ], char string2[ ], char string[ ]) { int i, j; for (i=0;string1[ i]!=‟\\0‟;i++) string [ i]= +string1[ i]; /****************found****************/ for (i=0;string2[ j]!=‟\\0‟;j++) string [ i+j]= string2[ j]; string [ i+j]!=‟0‟; } /****************found****************/ 得分 (本题15分)四、程序阅读题(阅读下面的程序并 填空。本题5分/空) 1. 有如下程序段: int i=1,sum=0; while(i<=100) { 《C程序设计》试卷 第4页(共4页) sum+=i; i++; } printf(“sum=%d\\n”,sum); 输出结果: 。 2. #include {int a[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9}; for(int i=0;i<5;i++) for(int j=0;j<6;j++) if(*(a+i)==*(b+j)) printf(“%d ”,*(a+i)); printf(“\\n”); } 输出结果: 。 3. #include void main() { char str1[]=“*******”; for(int i=0;i<4;i++) { printf(“%s\\n”,str1); str1[i]= „ ‟; str1[strlen(str1)-1]= „\\0‟; } } 输出结果: 。 得分 (本题25分)五、编程题(共3小题;第1小题5 分,第2、3小题,每小题10分) 1. 对10个数组元素依次赋值为0~9,要求用for语句实现循环并逆序输出。(5分) 2. 编程实现用递归法计算n!,n!可用下述公式表示:(10分) n!n!1(n0,1) n(n1)(n1) 3. 输入a和b两个整数,按先大后小的顺序输出a和b,要求用指针方法编程。(10分) C程序设计》试卷 第5页(共4页) 《 因篇幅问题不能全部显示,请点此查看更多更全内容