已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009年上海市高等学校计算机等级考试试卷二级 C语言程序设计 ( B 卷)一、单选题 1. 下列C语言的标识符中,不合法的标识符为_ A. starB. 1234C. _a100D. circuit92. 若已定义: int x=10; 则表达式 x=(4*5,x*5,x+25) 的值是 _ 。A. 20B. 45C. 125D. 353. 若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,则执行语句: scanf(“%d, %f”,&x,&y,); 时,正确的键盘输入是 _ 。 A. 55,55.5B. x=55, y=55.5C. 5555.5D. x=55y=55.54. 若有说明语句:int x=25,y=20,z=30; 则执行语句:if(xy) y=z; z=x; x=y; printf(“%d,%d,%d”,x,y,z); 后,输出是_ A. 25,20,30B. 30,30,25C. 25,30,30D. 25,30,255. 程序段:int num=2; while(num) printf(“%d ,”,num-);的运行结果是_ A. 2,1,B. 2,1C. 2,1,0D. 2,1,0,6. 若有说明:int a34,s;则对数组a的元素引用正确的是_ A. s=0; for(i=0;i=3;i+) for(j=0;j4;j+) s+=aij;B. s=0; for(j=0;j=4;j+) for(i=0;i3;i+) s+=aij;C. s=0; for(i=0;i4;i+) for(j=0;j=3;j+) s+=aji;D. s=0; for(i=0;i3;i+) for(j=0;jname0C. 8D. per.id10. 若有以下语句:char x=5,y=9,z; z=(y|x)2; 则z的二进制值是_ A. 00011011B. 00001010C. 00110100D. 00001100二、填空题 1. 设有说明语句:int a=15, b=6; 则a/b的十进制数值为_ 2. 设有说明语句:int x=3, y=2; 则计算表达式(x=0)& (y=6*x) 后变量y的值是_ 3. 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1|b+c/2后,t的值是_ 4. 定义函数时,将其类型定义为void 则表示所定义的函数返回值为_. 5. 下列程序的输出结果是_f(int a) int i=0; while (ai=10) printf(“%d ”, ai); i+;main() int a=8,4,10,11,9,20; f(a);6. 下列程序的输出结果是_ long fib(int g) switch(g) case 0: return(0); case 1: case 2: return(2); return ( fib(g-1) + fib(g-2) ); main() long k; k = fib(5); printf(k=%ldn, k);7. 假定建立了以下链表结构:struct nodeint id ; struct node *next; *head,*p;如图6-11所示:指针p指向一个新结点,将新结点插入到链表中的两条C语言语句是【 】插入P后的链表 p head 7 2 9 2 图6-11 新结点插入到链表三、程序填空题 ( 本大题 3 道小题 ,每空 3 分,共 30 分)。1. 下列程序的功能是:计算机给出10个不大于31的正整数让人猜,并根据猜中的情况统计总得分后输出。具体规则如下:(1) 计算机每给出一个要猜的数最多允许中5次,第一次猜对得10分,第二次猜对得8分,第三次猜对得6分,第四次猜对得4分,最后一次猜对得2分,否则不得分。(2) 若人猜的数太小,计算机给出提示“too small !”;若人猜的数太大,计算机给出提示“too large !”;若人猜对这个数,计算机给出提示“right !”, 并给出下一个数继续让人猜;若一个数已经猜了5次都猜错,计算机给出提示“out of time !”,也给出下一个数继续让人猜。直至猜完10个数。下面是人猜一个数的过程,有下划线的部分是人猜的数:(假设机器产生的随机数为9)请输入你猜测的数y= 16too large !请输入你猜测的数y= 4too small !请输入你猜测的数y= 9right ! (本题是第三次猜对,得6分)#include #include void main() int i, c, x, y, score, right; 1 ; /* 变量赋初值 */ for (i=1; i=10; i+) x=random(32); /* 随机产生一个不大于31的要猜的数 */ c=0; do c+; printf(n 请输入你猜测的数y= ); scanf(%d, &y); right=(y=x); /* 猜对时right为1,否则为0 */ if (right=1) printf( 2 ); else printf(%sn, ( 3 )? too small ! :too large !); while(right=0& 4 ); if (right) score+= ( 5 ); /* 统计成绩 */ else printf(out of time !n); printf(nTotal score:%dn, score);2. 以下程序输入10行字符串,要求按字典顺序从小到大排序。#include #define N 10int biggerthan( char *str1, char *str2 ) /*若字符串str1大于 str2时,则返回1*/ for ( ; *str1 | *str2; 1 ) if ( *str1 *str2 )return 2 ; else if (*str1*str2)return 0 ;return 0; /* 两个字符串相等 */ void main()char lsN100;char *psN, *t;int i, j;for ( i = 0; i N; i+ )gets( lsi );psi = lsi;for ( i = 0; i N-1; i+ ) /* 冒泡法排序 */ for ( j = 0; j N-i-1; j+ )if ( biggerthan( 3 ) ) t = psj; 4 ; 5 ; for ( i = 0; i N; i+ ) printf( %s n,psi );3. 将两个文本文件中字符$之后的内容合并到一个文件中去,其中函数void sub(FILE*all, FILE*f1 ,FILE *f2 )的功能是将文件指针f1,f2所指向的文件中的内容写到文件指针all所指向的文件中; main函数完成如下功能:先打开目标文件,再依次打开源文件,调用sub函数完成文件内容的拷贝。例如三个源文件 f1.txt ,f2.txt, 每个文件的内容分别如下文件名 内容f1 aaa$aaf2 bbb$bb则产生一个新的目标文件fall.txt,包括f1,f2三个文件字符$之前的内容,fall的内容为aabb。#include #include main()FILE *f1, *f2,*fall;void sub(_1_ );if (fall=fopen(_2_ )=NULL) printf(Cannot open file!n);exit(1); if (f1=fopen(f1.txt,r)=NULL | (f2=fopen(f2.txt,r)=NULL) printf(Cannot open file!n);exit(1); else sub(_3_ );_4_ ;fclose (f1);fclose(f2);void sub(FILE *all, FILE *f1, FILE *f2)char c;while(fgetc(f1)!=$);while(c=fgetc(f1)!=EOF) fputc(c,all);while(fgetc(f2)!=$);while(c=fgetc(f2)!=EOF) fputc(c,all);四、操作题三程序调试题 1. 程序调试题1(E_3_1.c)调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括E_3_1.c文件和E_3_1.exe文件)保存到指定目录中。功能说明:统计一字符串中各个字母出现的次数,该字符串从键盘输入,统计时不区分大小写。对数字、空格及其他字符都不予统计。最后在屏幕上显示统计结果。例如字符串:“abcdefgh23 ABCDEF abc”的统计结果与输出格式为: a b c d e f g h i j k l m n o p q r s t u v w x y z 出现的次数为:;3 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #include #include void main( ) int i, a26; char ch,str80,*p=str; gets(&str); /* 获取字符串 */ for(i=0;i=A&ch=Z ?ch+a-A:ch; /* 大小写字符转换*/ if(a=ch=z) ach-a+; for(i=0;i26;i+) printf(“%2c”, a+i); /* 输出26个字母 */ printf(“出现的次数为:n”); for(i=0;i26;i+) printf(“%2d”,ai); /* 输出各字母出现次数 */ printf(“n”); 2. 程序调试题2(E_3_2.C)调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括E_3_1.c文件和E_3_1.exe文件)保存到指定目录中。功能说明:递归算法求xn,即xn=x*xn-1,其中x为实数,n0。原程序(见E_3_2.c) void main() float x, y; int n; scanf(%f%d,&x,&n); y=xn(x,n); printf(xn=%fn,y); float xn(float x, int n) fload z; if(n0) printf(n is a wrong number!n); exit(0); if(n!=0) z=1; else z=xn(x,n); return z; 五 编程题1编程题1(E_5_1.c)编程要求:请按题中的功能要求,编写程序并能得到正确结果。将结果(包括E_5_1.c文件和E_5_1.exe文件)保存到指定目录中。功能说明:编写一个函数,将数组a中的n个数每5个相邻的元素为一组分别求和(假设求和结果不溢出),结果放到数组b中,最后一组如果不足5个也进行求和。例如,若数字a的元素为4,8,3,3,0,5,2,9,7,8,4,3,2,1,8,4,3,2,则数组b的元素为18,31,18,9。2编程题2(E_5_2.c)编程要求:请按题中的功能要求,编写程序并能得到正确结果。将结果(包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上海对外经贸大学单招职业倾向性考试题库附参考答案详解(能力提升)
- 2026年三亚中瑞酒店管理职业学院单招职业倾向性考试题库附答案详解ab卷
- 2026年云南省昆明市单招职业适应性考试题库带答案详解(巩固)
- 2026年云南省西双版纳傣族自治州单招职业适应性考试题库含答案详解(新)
- 2026年中山火炬职业技术学院单招职业技能测试题库及答案详解(真题汇编)
- 2026年仙桃职业学院单招职业适应性考试题库及答案详解1套
- 2026年乐山职业技术学院单招职业倾向性考试题库含答案详解(精练)
- 2026年云南工程职业学院单招职业技能考试题库带答案详解(a卷)
- 2026年上海戏剧学院单招职业倾向性考试题库附参考答案详解(考试直接用)
- 2026年云南省昭通地区单招职业适应性考试题库带答案详解(满分必刷)
- (2026年)中华护理学会团体标准2024针刺伤预防与处理课件
- 严厉的主奴协议书
- 2026年区块链基础培训课件与可信数据应用场景指南
- 《多元统计分析》(第6版)课件 第1章 多元正态分布及其抽样分布
- 2025年10月自考15040习概论试题及答案
- 不良事件上报流程及处理
- 妇产科护士长工作总结范文
- 娱乐场所合作协议书合同
- 派出所安全培训
- 物业会计知识培训内容
- 轧钢工艺培训课件模板
评论
0/150
提交评论