C语言程序设计基础_复习资料一.doc
- 程序设计基础 院(系) 班级 学号 姓名 试卷卷面成绩占课程考核成绩 %平时 成绩占 %课程考核成绩题号一二三四五六七八九十小计得分装 订 线 内 不 得 答 题自 觉 遵 守 考 试 规 则,诚 信 考 试,绝 不 作 弊得 分一、单项选择题(每小题2分,共30分)1. 下面四组字符串中,可用作C语言的用户标识符的是【】。A) a2_b3、 _123、For B) define、static 、sumC) 2a、DO、sizeof D) while、_abc、 m_122. 下面数据中不是C语言常量的是【】。A) '0' B) "a" C) 1.4e-2 D) 0843. 若有定义int a; char b; float c; 则表达式 a*b-c 的类型是【】。A)char B) doubleC) float D) int 4. 完整的计算机系统由【】组成。A) 运算器、控制器、存储器、输入设备和输出设备 B) 主机和外部设备 C) 硬件系统和软件系统D) 主机箱、显示器、键盘、鼠标、打印机5. 若有定义int a=0100; 则执行printf("%d, %o, %xn", a, a, a); 后输出为【】。A) 64, 100, 40B) 64, 64, 40C) 100, 100, 64D) 100, 144, 646. 下面表达式中,错误的是【】。A) y+=+x B) b = -c= +cC) 15>x<0!=0 D) - m ? 0 : 1>=37. 判断字符串s1是否大于s2,应当使用【 】。A ) if(s1 > s2) B) if(strcmp(s1, s2)C) if(strcmp(s2, s1) > 0) D) if(strcmp(s1, s2) > 0)8. 任何程序都必须加载到【】中才能被CPU执行。 A)磁盘 B) 硬盘 C) 内存 D) 外存9. 以下能对二维数组b正确进行初始化的语句是【】。A) int b23=1,1,2,2,3,3;B) int b3 = 1,2,3;C) int b =1,2,3,4,5,6;D) int b 3=1,1,1,2,2,3;10. 若有如下程序段 int x=3; do x-=2; while(!(-x); printf("%d",x); 则输出结果是【】。 A) -3 B) -2 C) 1 D) 是死循环11. 若有如下定义:int a5=1,2,3,4,5,*p=a;则值为5的表达式是【】。A) *(p+5) B) *p+=4 C) p+4 D) *p+512. 若有定义int m, n=3, *p=&m; 则与m=n; 等价的语句是【】。A) *p=&*n;B) *&p=*&n;C) *p=n; D) m=*p;13. 若有定义char ch ="abc0edf", *p=ch; 则执行printf("%c", *p+5); 输出为【】。A) df B) f C) d D) e14. 若有下面的程序段,则正确的fun函数的首部是【】。main( ) char a10; int n, m; m=fun (n, a); A) int fun(int x, char *y)B) int *fun (int p, char q20)C) int fun (int m, char n)D) int *fun (int a, char b)15. 若有以下定义,则以下结构体成员引用形式中不正确的是【】的。 struct int m, n; char ch; a, *p=&a;A)a.n B)(*p).n C)p.n D)p->n得 分二、填空题(每小题2分,共10分)1. 在计算机内部采用_进制进行信息的存储、运算和传递。2. 已知D盘中的文件存储如下图所示,假设当前路径为d:program designexam, 访问文件作业1.doc文件的相对路径为_。progrom designD:homeworkscriptexam作业1.doc作业2.doc3. 若要定义一个包含100个元素的整型数组a ,并使前两个数组元素为3,其余元素均为0,应该使用的定义语句为_ 。4. 若有int a,*pa=&a;则从键盘给变量a赋值的语句是_。5. 若定义char s1 ='g','o','o','d','0','b','y' 则表达式strlen(s1)的值是 _ 。得 分三、读程序写结果(每小题5分,共20分)1 #include <stdio.h>void main( ) int k; 装 订 线 内 不 得 答 题自 觉 遵 守 考 试 规 则,诚 信 考 试,绝 不 作 弊 for (k=1;k<3;k+) switch(k) case 2 : putchar('B'); default : break; case 1 : putchar('A'); putchar ('#'); printf("n");输出结果是:_。2 #include <stdio.h>int fun( ) int a=1; static int n=4; a+=n; n+=2; return a; void main( ) int i, s=0; for(i=0;i<3;i+) s+=fun(); printf("%dn",s);输出结果是:_。3#include <stdio.h>void funt(int *p1, int *p2, int p3) *p1=*p2+10; *p2=*p1+10; p3 = *p1+ *p2; void main( ) int a=10,b=20,c=30,*p=&a,*q=&b; funt(p,q,c); printf("*p=%d, *q=%d, c =%d n", *p,*q, c); 输出结果是:_。4 #include <stdio.h>struct date int year; int month; int day;struct date func(struct date p) p.year = 2011; p.month = 1; p.day = 7; return p;void main() struct date d; d.year = 2010; d.month = 12; d.day = 1; printf("%d/%d/%d,", d.year, d.month, d.day); d = func(d); printf("%d/%d/%dn", d.year, d.month, d.day);输出结果是:_。得 分四、程序选择填空题(每空2分,共20分) 33333 222 11以下程序的运行结果是输出如右侧数字组成的图形。请选择填空将程序补充完整。void xyz(int m) int j, k; for(j=0; 【 1 】;j+) printf(" "); for(k=0;k<【 2 】;k+) printf("%c", 【 3 】); printf("n"); void main( ) int i; for(i=0;i<5;i+) xyz(i); 【1】A) j = m B) j = m C) j>m D) j<m【2】A) mB) m+1 C) 9-2*m D) 2*m-1【3】A) '0'+5-m B) 5-m C) '0'+m D) '0'+52下面程序的功能是:用冒泡排序法对数组m中8个无序整数按由大到小排序,并输出排序结果。请选择填空将程序补充完整。void sort(int *p, int n) int *pp, t, i; for(i=1; i<=n-1; i+) for(pp=p;【 1 】; pp+) if(【 2 】) t=*pp;*pp=*(pp+1);*(pp+1)=t; main( ) int m8,*pp; for(pp=m; pp<m+8;pp+) scanf("%d", 【 3 】); 【 4 】; for(pp=m;pp<m+8; pp+ ) printf("%4d",*pp); printf("n"); 【1】A) pp<p+n B) pp<p+n-i C) p<pp+n D) p<pp+n-i【2】A) *pp<*(pp+1)B) pp<pp+1 C) *pp>*(pp+1)D) pp>pp+1装 订 线 内 不 得 答 题自 觉 遵 守 考 试 规 则,诚 信 考 试,绝 不 作 弊【3】A) *pp B) &pp C) pp D) mpp【4】A) sort(*m, 8)B) sort(pm, 8) C) sort(m8, 8) D) sort(m, 8)3下列程序是计算并输出两个数的最大公约数。请填空将程序补充完整。 #include <stdio.h>【 1 】/*函数原型声明*/【 2 】/*全局变量定义*/void main()int a, b;printf("Input a,b:");scanf("%d,%d",&a,&b);MaxCommonFactor(a,b);printf("%dn", 【 3 】);void MaxCommonFactor(int a, int b) /*求最大公约数函数*/int i;for(i=1;i<=(a<b?a:b);i+)if(a%i=0&&b%i=0) maxShu=i; 【1】A) void MaxCommonFactor(int a, int b);B) MaxCommonFactor(a, b); C) void MaxCommonFactor(int a, b);D) int MaxCommonFactor();【2】A) int a; B) int maxShu; C) int b;D) int i;【3】A) a-b B) a C) bD) maxShu得 分五、程序填空(每空2分,共20分)1下列程序的功能是:从键盘输入某门课程的学生成绩,当输入负数时结束输入。统计并输出最高分、最低分和全班的平均分。请填空将程序补充完整。#include <stdio.h> void main( ) float aver; int count, score, maxs, mins, sum; scanf("%d", &score); maxs= mins =score ; 【 】; count=0; while (【 】) sum=sum+score; 【 】; if (score>maxs) maxs=score; if (score<mins) mins=score; scanf("%d",&score); aver=【 】; printf("%d, %d, %d, %.2fn", count, maxs, mins, aver);2以下程序是用迭代法求 的近似值,迭代公式为:请填空将程序补充完整。#include <math.h>#include <stdio.h>void main( ) double m,y1,y2; printf("Enter a positive number:"); scanf(【 】); y2=m/2; do 【 】; y2= (y1+m/y1)/2; while (【 】); printf("the square root of %5.2f is %8.5fn",m,y2);3下列程序是判断输入的字符串是否是“回文”,即正读反读都一样的字符串。如:level是回文字符串。请填空将程序补充完整。#include <stdio.h>void main( )char ch100,*p,*q; gets(ch); p=ch; q=【 】; while(p<q) if(*p!=*q) 【 】; else p+; q-; if(【 】) printf("No!n"); else printf("Yes!n"); 六、附加题:程序设计请为教师编写一个记录30个学生的学号(num)、姓名(name)和C语言成绩(score)的程序。要求使用结构,从键盘获得数据输入,同时计算全班平均分,并将全部学生的信息和全班平均分用屏幕显示输出。