c试卷
内蒙古农业大学职业技术学院信息管理系
《C 程序设计》期末试卷(A )
二、选择题:(共30分,每题2分)
1.组成C 程序的基本单位是________。 A .表达式与语句 B .若干文件 C .函数
D .main 函数
2.若用数组名作为函数调用时的实参,则实际上传递给形参的是 。 A .数组的首地址
B. 数组的第一个元素值
C .数组中全部元素的值 D. 数组元素的个数
3.在while (x )语句中的x 与下面条件表达式等价的是: 。 A. x!=0 B. x==1 C. x!=1 D. x==0 4.以下程序运行结果是 main()
{char s[]=”Address ”; printf(”%d\n ”, strlen(s)); }
A) 7 B) 8 C) 9 D) 10 5.以下不正确的描述是
A) 在函数外部定义的变量是全局变量 B) 在函数内部定义的变量是局部变量 C) 函数的形参是局部变量 D) 局部变量不能与全局变量同名
6.下列数据中,为字符的是________。
A .'AB'
B ."A"
C .How
D .'A'
7.下列表达式没有错误的是________。 A .5.0%2 B .x+1=5 C .&p D .&(x+1)
8.任何复杂的程序,都是由________构成的。 A .分支结构、顺序结构、过程结构 B .循环结构、分支结构、过程结构
C .顺序结构、循环结构、分支结构
D .循环结构、分支结构
9.若有以下变量说明和数据的输入方式,则正确的输入语句为________。 变量说明:float x1,x2;
数据的输入方式:4.52<回车> 3.5<回车> A .scanf (“%f,%f”,&x1,&x2);
B .scanf (“%f%f”,&x1,&x2);
C .scanf (“%3.2f,%2.1f”,&x1,&x2);
D .scanf (“%3.2f%2.1f”,&x1,&x2); 10.已知:int a,*p=&a; 则为了得到变量a 的值,下列错误的表达式为
________。 A .p[0] B .*p C .&*a D .*&a 11.若有定义:int b[5];则以下对b 数组元素的正确引用是________。 A .*&b[5] B .b+2
C .*(*(b+2))
D .*(b+2)
12.设有int x,y; 以下语句判断x 和y 是否相等,正确的说法是该语句________。
if (x=y) printf(" x is equal to y."); A .语法错 B .不能判断x 和y 是否相等
C .编译出错
D .能判断x 和y 是否相等
13.以下有关switch 语句的正确说法是________。 A .break 语句是语句中必须的一部分
B .在switch 语句中可以根据需要使用或不使用break 语句
C .break 语句在switch 语句中不可以使用
D .在switch 语句中的每一个case 都要用break 语句
14.凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是
________。
A .静态(static )
B .外部(extern )
系 班 级 姓 名 学号
.........密..............封.................线...................内....................不..................准..................答................题...........................
C.自动(auto)D.寄存器(register)
15.下列对字符串的定义中,错误的是。
A.char str[5]= "abcde"; B.char str[ ]= "abcde";
C.char *str ="abcde"; D.char str[ ]={ 'a', 'b', 'c', 'd', 'e', '\0'};
二、填空题(每空1分,共20分)
1.C语言中用_______表示逻辑值“假”,用________表示逻辑值“真”。2.设有语句“int a=3;”,执行语句“printf(”%d”,-a++ );”后,输出结果是 , 变量a的值是。
3. 如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可以在程序编译阶段自动被初始化为。
4.在C语言中使用到的变量,都应先,后。
5.若有定义:char c=′\010′;则变量c中包含的字符个数为______。
6.函数的返回值是通过函数中的语句获得的。
7.下面函数用来求出两个整数之和,并通过形参传回两数相加之和,请填空。 int add(int x,int y, z)
{ return( =x+y);}
5.C程序的基本单位是。
7.C程序中函数调用的方法为、和 .
8.C的五种语句类型为、、、和。
三、分析程序结果(每题5分共20分)
1.main()
2.main()
{ int x=1,y=2,z=3; { int a=24,b=16,r;
x+=y+=z; while (b)
printf("%d",(x } a=b; b=r; } 结果:printf("%d",a); }结果:3.#include main() {int a=10; { int a=15; printf(“a.1=%d,”,a); } printf(“a.2=%d\n”,a); }结果: 4.int runc(int a,int b) {return(a+b); } main() {int x=2,y=5,z=8,r; r=runc(runc(x,y),z); printf(“%d\n”,r); }结果: 四、程序填空(每题5分共10分) 1.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、及其它字符的个数,请填空。 #include main() { int alpha,space,digit,other; char *p,s[80]; alpha=space=digit=other=0; gets(s); for(p=s;*p!=’\0’;p++) if( )alpha++; else if( )space++; else if( )digit++; else other++; printf(“alpha:%d space:%d digit:%d other:%d\n”,alpha,space,digit,other);} 2.以下程序用来求数组全部元素的和,请填写缺少的语句。 #include main( ) { int a[ ]={0,1,2,3,4,5,6,7,8,9}; int s=0 , i, *p; p= ; for (i=0; i<10; i++) ; printf("sum=%d", s); } 五、编程题(共20分) 1.编程序对键盘输入的10个数由小到大排序,并输出结果。(8分) (要求:用选择法) 2.编写程序,计算s=1+3+5+7...+99。(6分) 3.输出一下图形(用循环) * *** ***** ******* ***** *** * 系 班 级 姓 名 学号 .........密..............封.................线...................内....................不..................准..................答................