《C语言试题09春(A).doc》由会员分享,可在线阅读,更多相关《C语言试题09春(A).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. . 计算机程序设计基础C试题 班级 姓名 考号 第 1 页20092010学年第二学期期末考试试题(A)题目一二三四五六七八总分数分数评卷人(适用专业:过测材热储机机电09、应08)一 单项选择题(每题1分,共10分)1请选出可用作C语言用户标识符的是( )A. 5get B. p_flow C.struct D. w.sum2设char s10= “abcde”,t = “12345”;则s和t在内存中分配的字节数分别是()A6和5 B6和6 C10和5 D10和63C语言程序是由( )构成的。A、子程序 B、过程 C、函数 D、子例程4. 定义长度为10的一维整型数组,不正确的是( )
2、。 A. int a10; B. int n=10,an; C. int a10=1,2; D. #define N 10 int aN; 5. 下列说法正确的是( )A. 一个程序中可以出现一个以上的主函数B. 主函数中定义的变量,其作用域为整个程序C. C程序不区分大小写D. 实参和形参可以同名6. 设int a5=1,2,3,4,5,*p=a; 要访问数组中值为5的元素,错误的是( )A. *(p+4) B. p+4 C.a4 D. * (a+4)7. 以下对结构变量stul中成员age的非法引用是( )struct student int age;int num;stu1,*p=&st
3、u1;A stu1.age B) (*p).age C) p-age D) student.age 8. 下列字符串赋值方式不正确的是( ) Achar str20; B. char *str ; str=”I am a boy!”; str=”I am a boy!”;C. char *str=”I am a boy!”; D. char str20=” I am a boy!”;9. 函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是( )。 A、void funa(int *x, int *y)C、void funb(int x , int y) i
4、nt *p; int t; *p=*x ; *x=*y; *y=*p; t=x; x=y; y=t; B、void func(int *x, int *y) D、void fund(int *x, int *y) int *p; int t;p=x;x=y; y=p; t=*x; *x=*y; *y=t; 10设struct student char name10;int age;stu2= “Tom”,25,“Mary”,26,*p=stu;则执行语句printf(“%s%dn”,stu1. name, p-age);后输出结果是()ATom25 BTom26 CMary25 DMary26
5、二、 阅读程序(每小题5分,共40分)1. #include void main() char c; while(c=getchar()!=$) if(a=c&c=z) putchar(c); else if(A=c&c=Z) putchar(c-A+a); 当输入为ab12CD%cd#CD$时,运行结果为:程序功能为: 2. #define M 4 运行结果: void main() int aM=6,3,4,1; int i, j;for (i=0;iM;i+)printf“%d”,ai; for(j=1;j=ai;j+)printf(“*”);printf(“n”); 计算机程序设计基础
6、C试题 班级 - 姓名 考号 第 2 页3. #include void main()int m;scanf(%d, &m);if (m = 0) if (m%2 = 0)printf(%d is a positive evenn, m); elseprintf(%d is a positive oddn, m);else if (m % 2 = 0) printf(%d is a negative evenn, m);else printf(%d is a negative oddn, m);若判断程序是否正确,应至少做几次测试?选择你认为必须的几组测试数据,并写出运行结果。测试数据 运行结
7、果4. #include void main() int color;printf(“nplease input num:”); scanf(“%d”,&color);switch(color) case l: printf(“redn”);break;case 2: printf(“yellown”);break;case 3: printf(“bluen”) break;default: printf(“errorn”);如输入2,输出结果为:如果将程序中所有的break语句去掉,输出结果为:5. #include 如输入:9 8 7 3 2 1#define M 3运行结果为:#defi
8、ne N 2void main( ) int aMN,bNM,i,j;for(i=0;iM;i+)for(j=0;jN;j+)scanf(“%d”,&aij);printf(“array a:n”);for(i=0;iM;i+) for(j=0;jN;j+) printf(“%5d”,aij);printf(n”); for(i=0;iN;i+)for(j=0;jM;j+)bij=aji; 程序功能:printf(“array b:n”);for(i=0;iN;i+) for(j=0;jM;j+)printf(“%5d”,bij);printf(n”); 6. #include int fun
9、6(int num) 若输入73,运行结果为: int k=1;do k=k*(num%10); num= num/10;while(num); return k;若输入-129,运行结果为:void main() int m=1,n; printf(“ninput data:”); scanf(“%d”,&n); if(n0) m=-1; printf(“%dn”,m*fun6(m*n); 计算机程序设计基础C试题 班级 - 姓名 考号 第 3 页7 #define N 5#include int main(void) int i, aN, x ,flag; printf(“nEnter i
10、ntegers: ); for(i = 0; i N; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i N; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag = 0) printf(Not Findn); return 0; 程序运行:(带下划线的是键盘输入的数据)Enter integers:8 5 3 2 5Enter x: 5运行结果为:如去掉程序中的break语句,运行结果为:8. #include
11、 若输入:31 33 运行结果为:void main(void) int f, fl, fh; float c; printf(Enter fl and fh:); scanf(%d%d , &fl, &fh); printf(fahr celsiusn); for (f =fl; f = fh; f+) c = (5.0 / 9) * (f - 32); printf(%d %6.1fn, f, c); 如for语句后面加了分号,即for (f =fl; f = fh; f+); 则运行结果为:三、根据程序要求的功能,完善程序(1题4分,2题6分,共10分)1. 填空,函数fun 用于计算数
12、组各元素之和(每空2分)#include int fun(int a , int n) int i,s=0; for (i=0;in;i+)s=s+ai; void main() int i,b5=1,2,3,4,5,s; s=fun( ); printf(“%d”, s ); 2程序功能为输入一批以负数结束的数据的均值,分析程序,如输入数据为-5 60 50 90时,运行结果如何?(2分)若想避免这种情况,请完善程序(可以在程序中直接改写)(4分)#include void main(void) int num, grade; float total; num = 0; total = 0;
13、 printf(“Enter grades: n); scanf(%d, &grade); /* 输入第1个数*/ while (grade= 0) /* 输入负数,循环结束 */ total = total + grade; num+; scanf (“%d”, &grade); printf(“Grade average is %.2fn, total/num); 计算机程序设计基础试题 班级 - 姓名 考号 第 4 页四. 根据程序功能要求,找出错误,并改正,若是找不出错误,请具体说明如何调试排错(每题5分,共10分)1. 程序功能:输入n个数,求和#include void main(
14、 ) int i, x, n,sum ; printf(输入数据个数:);scanf(%d, &n);printf(输入数据:); for ( i = 1;i = n;i+) scanf(%d, &x);sum = sum +x; printf(sum = %dn, sum); 程序没有语法错误,但运行结果不对,分析程序,找出错误(2处)并改正。2. 程序功能:输入10个字符,统计其中数字字符、空格和其他字符的个数。#include void main(void) char ch; int digit, space, other , i; digit = space = other = 0;
15、printf(“nEnter 10 characters: ); for(i = 1; i = 10; i+) ch = getchar(); if (ch = ) space +; else if(0 = ch 0) printf(“Grade average is %.2fn, total/num); else printf(“invalid data) ;四. 根据程序功能要求,找出错误,并改正(每题5分,共10分)1. #include void main( ) int i, x, n,sum; sum=0; 2.5分 printf(输入数据个数:);scanf(%d, &n);pri
16、ntf(输入数据:); for ( i = 1;i = n;i+) scanf(%d, &x);sum = sum +x; 2.5分 printf(sum = %dn, sum); 2. #include void main(void) char ch; int digit, space, other, i; digit = space = other = 0; printf(“nEnter 10 characters: ); for(i = 1; i = 10; i+) ch = getchar(); if (ch = ) 改为ch= 2.5分 space +; else if(0 = ch
17、 =0& ch = 9 2.5分 digit +; else other +; printf(space=%d,digit=%d,other=%dn,space,digit,other);如没有改正错误,但能给出排错方法的,每题可得0.54分五. 编程题(1、2题各7分, 3、4题各8分,共30分)评分标准:(1) 对于程序中出现的语法错误,每错一处扣0.5分,但最多不得超过满分的40% (2) 变量数据类型定义准确,编程思路清晰,算法设计合理,程序结构完整,输入输出语句格式正确,完全实现了题目的要求,程序书写规范,给满分。(3) 算法设计合理,基本上实现了题目的要求,给70%95%。(4)
18、算法设计合理,但程序中出现有逻辑错误,给满分的30%70%。(5) 没有明确的编程思路,基本上没有实现题目的要求,给满分的10%30%。(6) 最低得分为0分。(编程方法不唯一,答案仅供参考)1. #include void main(void) int i,n,flag; float s,item;flag= 1;s=0;printf(“nplease input n:”);scanf(“%d”,&n); for (i = 1; i = n ; i+) item = 1.0*flag/i ; /第i项 s = s+ item; flag=- flag; printf ( “s = %fn”,
19、 s); 2. #include void main( ) int score; char grade; printf(“n please input your grade:”); scanf(“%c”,&grade); switch(grade) case A: score =95; break; case B : score =85; break; case C: score =75; break;case D : score =65; break;case E : score =35; break; default : score=-1; if (score=-1)printf(“inp
20、ut error!n”);else printf(“your grade%c-score%dn”,grade, score);3. #include #include int prime (int m);void main(void) int x; printf(“nplease input x:”);scanf(“%d”,&x); if ( prime(x) != 0 ) printf(%d is a sushun, x ); else printf(%d is not a sushun, x ); int prime (int m) int i, n; if ( m = 1 ) retur
21、n 0; n = sqrt (m); for( i = 2; i = n; i+) if (m % i = 0) return 0; return 1; 4. #include #define SIZE 10void main(void) int i, k, index; int aSIZE ; printf(“Enter %d integers: , SIZE); for(i = 0; i SIZE; i+) scanf(%d, &ai); for(k = 0; k SIZE -1; k+) index = k; for(i = k + 1; i SIZE ; i+) if(ai aindex) index = i; temp = aindex; aindex = ak; ak = temp; for(i = 0; i SIZE; i+) printf(%6d, ai);