成教计算机专科班(函授)
考试试卷1
课程:c语言程序设计 班级: 任课教师: 姓名: 学号: 考试时间:90分钟
题 号 满 分 得 分 一 30 二 20 三 50 四 五 六 满分 100
一. 选择题:(每小题2分,共30分) 1.以下选项中合法的字符常量是 A)“B” B) „\\010‟ C) 68 D) D
2. t为int类型,进人下面的循环之前,t的值为0 while( t=l ) { …… } 则以下叙述中正确的是
A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对 3.以下合法的赋值语句是 A) x=y=100 B) d--; C) x+y; D) c=int(a+b);
4. 设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是 pprintf(”%d,%d\\n”,x--,--y); A) 10,3 B) 9.3 C) 9.2 D)10.2 5.以下程序的输出结果是 main() { int a=3; printf(“%d\\n”,(a+a-=a*a) ); } A) –6 B)12 C) 0 D) -12
6. 设 a、b、c、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=a>b)&&(n=c>d)运算后,n的值位为 A) 0 B) 1 C)2 D) 3
7. 以下定义语句中,错误的是 A) int a[]={1,2}; B) char *a[3]; C) char s[10]=”test”; D) int n=5,a[n];
8.以下各选项企图说明一种新的类型名,其中正确的是 A) typedef v1 int; B) typedef v2=int; C) typedefv1 int v3; D) typedef v4: int;
9.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 A) 地址传递 B) 单向值传递
C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定 10.以下函数值的类型是 fun ( float x ) { float y; y= 3*x-4;
return y; }
A) int B) 不确定 C) void D) float 11.以下程序的输出结果是 main()
{ char c=‟z‟; printf(“%c”,c-25); }
A) a B) Z C) z-25 D) y
12. 以下数组定义中不正确的是 A) int a[2][3]; B) int b[][3]={0,1,2,3}; C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 13. 以下程序的输出结果是 main()
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(“%d%d%d%d\\n”,a[0][3],a[1][2],a[2][1],a[3][0]; )
A} 0650 B} 1470 C} 5430 D} 输出值不定 14. 以下程序的输出结果是 main()
{ char st[20]= “hello\\0\\\\\\\”; printf(%d %d \\n”,strlen(st),sizeof(st)); }
A) 9 9 B) 5 20 C) 13 20 D) 20 20 15.以下选项中,不能正确赋值的是 A) char s1[10];s1=“Ctest”;
B) char s2[]={„C‟, „t‟, „e‟, „s‟, „t‟}; C) char s3[20]=“Ctest”; D) char *s4=“Ctest\\n”
二、填空题(每小题2分,共20分)
1. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 【 】。
2. 以下程序输出的最后一个值是【 】 。 int ff(int n) { static int f=l; f=f*n; return f; }
main() { int i;
for(I=1;I<=5;I++ printf(“%d\\n”,ff(i));
)
3.设有以下程序: main()
{ int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl==&m; b=(*p1)/(*p2)+7; printf(“a=%d\\n”,a); printf(“b=%d\\n”,b); } 执行该程序后,a的值为【 】 ,b的值为【 】 。
4. 若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。 fun( int a[ ]) { int i;
for(i=1; i<=10; i++) 【 】=i; for(i=0; i<5; i++) 【 】=a[i]; }
5. 若有定义语句: char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) while([i]){ d[j]= 【 】;j++;} d[j]=0;
6. 以下程序的输出结果是【 】 main() { int a, b; for(a=1, b=1; a<=100; a++) { if(b>=10) break; if (b%3= =1)
{ b+=3; continue; } }
printf(“%d\\n”,a); }
7. 以下程序运行后的输出结果是 【 】 。 main()
{ int i=10, j=0; do
{ j=j+i; i-; while(i>2); printf(“%d\\n”,j); }
8. 设有以下程序: main() { int n1,n2; scanf(“%d”,&n2);
while(n2!=0) { n1=n2%10; n2=n2/10;
printf(“%d”,n1); } } 程序运行后,如果从键盘上输入1298;则输出结果为 【 】 。 9. 以下程序段用于构成一个简单的单向链表,请填空。 struct STRU { int x, y ; float rate; 【 】 p; } a, b;
a.x=0; a.y=0; a.rate=0; a.p=&b; b.x=0; b.y=0; b.rate=0; b.p=NULL; 10. 以下程序的输出结果是【 】 union myun { struct
{ int x, y, z; } u; int k; } a; main() { a.u.x=4; a.u.y=5; a.u.z=6; a.k=0; printf(%d\\n”,a.u.x); }
三、编程题:
1.编写程序判断m是否为素数。(10分)
2.用选择法对数组中10个整数由小到大排序。所谓选择法就是先将10个数中最小的数与a[0]对换,再将a[1]到a[9]中最小的数与a[1]对换。。。,每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。(15分) 3.有一个3╳4的矩阵,求所有元素中的最大值。(10分) 4.用递归方法求n!.(15分)