C语言程序设计-C语言历年试题_第1页
C语言程序设计-C语言历年试题_第2页
C语言程序设计-C语言历年试题_第3页
C语言程序设计-C语言历年试题_第4页
C语言程序设计-C语言历年试题_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

选择题:(选择最合适的答案填空,每小题2分,共20分)()1.下面的文字中是不正确的变量名。A.Case B._12C.elseD.eve()2.下面的四个选项中,正确的字符型常量是.BoA.'\68' B.'\t'C.“\n”D・'\xdh,()3.表达式sizeof(float)的结果为c类型。A.单稱度 B.双精度C・整型D.不合法的()4.设有变量定义:intm=O,n=O;则执行表达式(m—>=0)I(n++<0)后,TOC\o"1-5"\h\zm,n的值为 。-1和0 B.-1和1 C.0和0 D.0和1()5.C语言的编译系统对宏命令是 。A.在程序执行时处理的 B.在程序连接时处理的C.和源程序其他语句一起编 D.在对源程序中其它成分正译 式编译之前进行处理的()6.以下正确的程序语句段为—D ochars叩="123456",s2[]="abcdef,;strcat(sl,s2);char*sl=”1234”,*s2=”abcde'';strcpy(sl,s2);char*sl,*s2=T234”;strcpy(sl,s2);charsl[10]=””,s2[5]="1234";strcat(sl,s2);()7.设inta[3][4],0<p)[4];p=a;则表达式*(p+l)等价于__C—。A.&a[0][l] B.a+1 C.&a[l][0] D.a[l][0]()8.如果执行打开文件函数fopenO时发生错误,该函数返回值为-B QA.EOF B.NULL C.-1 D.随机值()9.若有以下说明和语句,则下面四个选项中对ttd中lab域的正确引用方式是—A °structexample{charlab;intnum;(ttd,*p;p=&ttd;

A.(*p).labB.p->ttd.lab C・(水p)・ttd・lab D.p.ttd.Iab()10.表达式(int)(6.8+7/2)的结果是 。A.10 B.9 C.11 D.8文字填空(共15分)1.break语句出现在循环语句中的作用是—终止整个彳1.break语句出现在循环语句中的作用是—终止整个彳i环的执行如果int类型数据在内存中占据2个字节,则int类型数据取值范围为从-32768「— 至I」—32767 。在C语言中,全局变量定义时在数据类型前面增加前缀static,则表示该变量仅在—本文件内或者定义它的文件中或者整个程序—一内有效。设x、y为ch孔类型变量,请写出以下命题:X和y都为大写字母 (x>=‘A'&&x<—Z')&&(y>=‘A'&&y<9Z‘评分要点:少写“二”给1分x和y中至少_个是数字 &&xU9’)||(y>=P9L1 评分要点:少写“二”给1分TOC\o"1-5"\h\z假设d二3,b二7,c二5,则表达式a<b<c的结果等于 1 。设有如下定义inta[10];long*p,*q;p=(long*)a;q=(long*)(a+8),则表达式q-p的结果等于 4—答16个字节也算正确 o库函数malloc(sizeof(long))曲作用是_动态申请存放一个long类型数据内存 o评分要点:写明动态申请内存即算正确&表达式10&12的结果等于— _8 ■三・ 程序填空(请在空白处填写合适内容以正确完成整个程序,共10分)以下程序的功能是:统计100到1000之间各位数字之和为8的数据个数。#include<stdio.h>voidmain(){inti,s,k,count=0;for(i=100;i<=1000;i++){TOC\o"1-5"\h\zs=CDo ;k二 ②1 ;while( ③k!=0或者k或者k>0或者k>=l){s=s+k%10;k二④k/10 ;1if(s!=8) :3break;count++;

printf(H%dM,count);1下面程序的功能是:从一个字符串中删除指定字符,例如,从字符$"Prolog"中删除字符则结果为”Prig”。#include<stdio.h>voiddeletechar( ,charc){inti=0,j;while( ⑦s[i]!='\0‘或者s[i]!=0或者s[i]或者s[i]〉0 )if(s[i]==c){j二⑧i;while(⑨ s[j]!=‘\0‘或者s[j]!=0或者s[j]或者s[j]>0 ){ s[j]=s[j+l];j++;}}else⑩i++或者++i或者i二i+1或者i+=l;}voidmain(void){chars[20],c;gets(s);getchar(c);deletechar(s,c);puts(s);}⑦填s[i卄]!='\0‘或者s[i++]!二0或者s[i++]或者s[i++]>0⑩填continue算正确U!程序阅读与分析(共U!程序阅读与分析(共10分)分析以下程序执行流程,并写出下列程序的运行结果。#include<stdio.h>intx=0;intfat(intn){ staticintf=0;x+=2;f=f+n;return(f);)voidmain(void){inti,j;for(i=3;i<=5;++i){printf(u%d\f\fat(i));}printf(u%d\if\x);)答案:3274126评分要点:给岀上述6个正确结果,给满分5分结果完全不对,但是给岀程序执行流程分析基本正确,最多给3分阅读以下递归函数,假设有如下定义:inta[6]={6,l,4,7,4,0};分析进行printn(a)调用时程序运行过程;并写出该调用产生的运行结果。#include<stdio.h>voidprintn(int*x){ if(*x!=O)printn(x+l);if(*x%2)priiitf(u%d/\*x*2);elseprintf(u%d/\*x);1答案:0,4,14,4,2,6评分要点:给出答案6,2,4”14,4,0给4分,如果结果完全不对,但是给出程序执行流程分析基本正确,最多给3分五.子程序设计(每小题15分,共30分)本题说明:完成函数设计时,请自行说明所有的形式参数的类型设计•一个函数getnum(s,&n),字符串s是十六进制字符串,函数getnum统计s的字符个数并作为函数值返回,另外n返回s对应的十进制整数数据值。例如,有如下定义,chars[]=”12a”;intn,m:则有函数调用m=getnum(s,&n)后,m的值为3,n的值为298即等于IX16'+2X16+10二298。参考答案#include<stdio.h>intgetnum(chars[],int*m){intn^sum=0;n=0;while(s[n]!=W){switch(s[n]){case^09:caseUncase929:case635:case949:case'5icase965:case'7icase'8"case9:sum=s*16+s[n],0';bi・eak;case6a5:case9b9:case5c5:case6d5:case心se,化sum=sum*16+s[i]-<a,+10;break;case^A5:case,BYcase9D?:case'CYcase5E5:casesum=sum*16+s[l]-^A5+10;break;}n++;}*m=sum;returnn;}评分要点:1计算s的长度并正确返回2将字符串s的内容转换为十进制整数的求解算法正确注意语法错误最多扣2分,重点在于程序的思路正确设计•一个函数rightarr(a,m,n),a为一维整数数组(数组元素的个数为m),该函数实现数组a的循环左移n位。例如:有如下定义,inta[5]={l,2,3,4,5};则,rightarr(a,5,2)调用完成后,数组a的内容为{3,4,5,1,2}。参考答案:voidrightarr(inta[],intm,intn){intx=0yt;while(x<n){t=a[O];for(y=0;y<m-l;y++)a[y]=a[y+i];a[m-l]=t;x++;评分要点:1移位方向为左移2循环移位算法正确,重点注意a[0]移动正确注意语法错误最多扣2分,重点在于程序的思路正确六.算法设计(选做一题15分)说明:•仪需任意选做一题.多选者,以卷而先列出的为判分依据:分析思路、重要数据类型的左义、模块的功能、形式参数、函数返回值说明;用伪代码或其它方法描述子程序:不必完整写出函数程序的代码,完整代码将不作为判分依据。函数link(h,n),其中h是一个曲整数组成的从小到大排列的有序单链表,n为整数。函数link实现把n按照顺序插入到链表h中,函数返回值为完成插入n之后的有序链表中结点个数。具体要求如下:A) 说明链表结点类型的C语言定义形式;B) 给出函数1ink(h,n)的原型。C) 描述函数的算法。参考答案:评分要点:以算法可行,基本正确为主要评分指标(1) 链表结点类型为结构类型(2) 函数link(h,n)中参数h为二级指针,n为整型(3) 插入算法:首先査找插入位置,然后完成插入操作(注意插入在链表头部和非头部的区别。任意输入一个年、月、日,编程实现判断该日期是星期儿。具体要求如下:D) 说明如何表示一个日期数据,以及星期一到星期天;E) 说明程序中划分多少模块?并给出每个模块的原型;F) 描述每个模块的算法。

参考答案:评分要点:以算法可行,基本正确为主要评分指标日期可为结构类型或者整型,星期一到星期天可为枚举.字符串或者整数等算法中主要功能:判断某年是否为闰年;给出一个基准日期的星期数据为计算的初始数据;计算该天为多年第几天;计算星期几。武汉大学计算机学院

2005-2006学年度第2学期2005级《高级语言程序设计》期末考试试卷B卷姓名: 学号: 专业: 说明:未经主考教师同意,考试试卷、答题纸、草稿纸均不得带离,否 —答案请全部写在答题纸上,写在试卷上无效。一、单项选择题:(选择最合适的答案填空,每小题2分,共20分)()1.下面四个选项中 是合法的标识符。E. 壮‘ F. A#12 G.sum.5 H・ eveTOC\o"1-5"\h\z()2. 下面四个选项中,不正确的浮点型常量为—B_ oE. -234. F. .23E1.2 G..84e+2 H. .174()3. 若有以下类型说明语句:chara;intb;floatc;doubled;则表达式a*b+d-c的运算结果的类型为 C_ oE.char F.float G.double H.int()4. 设有变量定义:intm二0,n二0;则执行表达式(m--<0)&&(n++〈0)后,m,n的值为一A— oE.-1和0 F.-1和1 G.0和0 H.0和1()5. 以下关于C语言中预处理的叙述中不正确的是预处理命令行必须位于源程序的开始部位。H.预处理命令是在正式编译之前先行被处理的B预处理命令行必须位于源程序的开始部位。H.预处理命令是在正式编译之前先行被处理的E.C源程序中凡是以”#“号开F.始的控制行都是预处理命令行。G.一条有效的预处理命令行必须单独占据一行。()6. 若有说明语句:int&[][3]二{1,2,3,4,5,6,7,8};,则数组的行数为—C。E.1 E.1 F.2 G.3H.缺少数据,不能确定()7. 设inta[3][4],(*p)[4];p=a;则表达式(*(p+l))[0]等价于—D—oG.&G.&a[l][0]H.a[l][01()8.—()8.—B.正常执行关闭文件函数fclose()后,该函数返回值为E.EOFF.0G.-1H.E.EOFF.0G.-1H.随机值()9・选项中()9・选项中设有如下定义,若要使px指向rec中的x域,则下面四个D 是正确的赋值语句。structaaintX;floaty;}rec,*px;E.px=rec.x;F.px=&rcc.x;G.px=(structaa*)rec.x;E.px=rec.x;F.px=&rcc.x;G.px=(structaa*)rec.x;H.px=(stmctaa*)&rec.x;()10.表达式(int)(6.8+(-7)%2)的结果是.A()10.表达式(int)(6.8+(-7)%2)的结果是.AB.B.6C.7D.8二、文字填空(共15分)1.2.3.continue1.2.3.坯 o如果unsignedint类型数据在内存中占据2个字节,则int类型数据取值范圉为从=0_一 至II_65535__在C语言中,局部变量定义时在数据类型前面增加前缀static,则表示该变量在—整个程序执行 过程中占据固定的内存单元。设x、y为ch吐类型变量,请写出以下命题:x为数字并且y不是数字—(x>~0’&&x〈99’0fI|y>^9^1 或者 isdigit(x)&&!isdigit(y)_ x和y中至少一个不是数字_O'IQy」ll(y<‘0,||y>9或者 !isdigit(x)||!isdigit(y) TOC\o"1-5"\h\z假设沪8,则表达式3<=a<=6的结果等于 1 。设有如下定义longa[10];int*p,*q;p=(int*)a;q=(int♦)(a+8),则表达式q-p的结果等于 或者32个字节 o库函数free(p)的作用是〜 释放p指向的内存 。&表达式10|9的结果等于_11__三、 程序填空(请在空白处填写合适内容以完成整个程序,共10分)1.以下程序的功能是:列岀100到1000之间各位数字之和可以被3整除的数。#include<stdio.h>voidmain(){TOC\o"1-5"\h\zinti,s,k;for(i=100:iv二 ①1000 ;i++){s二②0 ;k= ;while( ④ k!=0或者k或者k>0或者k>=l){s=s+k%10;k二⑤k/10 ;}if(s%3==0)printf(“%6<T:i);)}2.下面程序的功能是:把一个字符串中的所有大写字母改变为小写字母,而小写字母改成大写字母,其他字符不变。例如对字符串”ProloglO"操作后结果为”pROLOG10”。#include<stdio.h>TOC\o"1-5"\h\zvoidconvert( ⑥chars口或者char*s ){inti二0;while( ⑦ s[i]!9\(f或者*(s+i)!~\(T或者s[i]!二0或者*(s+i)!二0或者s[i]或者*(s+i) ){if( ⑧s[i]〉=‘A' 1? )s[i]二s[i]+32;elseif( ⑨ s[i]>=‘a'z‘ )s[i]=s[i]-32; ⑩i++或者++i或者i=i+l或者i+=l ;}voidmain(){chars[20];inti;gets(s);convert(s);puts(s);}评分要点:注意s[i]和*(s+i)是完全等价的形式。四、 程序阅读与分析(共10分)分析以下程序执行流程,并写出下列程序的运行结果。#include<stdio.h>intx=2;intfat(intn){ staticintf=0;intx=0;x+=2;f=f-n;return(f);}voidmain(void){intiJ;for(i=3;i<=5;++i){ printf(“%d\t”,fat(i));printf(44%d\if\x);))答案:・3 2-7 2-122评分要点:给出上述6个正确结果,给满分5分结果主全不对,但是给出程序执行流程分析基本正确,最多给3分阅读以下递归函数,假设有如下定义:inta[6]={6,l,4,7,4,0},分析进行printn(a)调用时程序运行过程;并写出该调用结束后数组d的内容是多少?#include<stdio.h>voidprintn(int*x){ if(*x!=O)printn(x+l);*x+=2;1答案:该调用结束后数组a的内容是{&3,6,9,6,0}评分要点:如果结果完全不对,但是给出程序执行流程分析基本正确,最多给3分五、子程序设计(每小题15分,共30分)本题说明:完成函数设计时,请自行说明所有的形式参数的类型设计•一个函数tnum(s,n),函数tnum把十进制整数n转换为十六进制字符串,函数值为该十六进制字符串的长度,而转换后的十六进制字符串由S返回。例如,有如下定义chars[10]=,n=29&m;则有函数调用m=tnum(s,n)后,m的值为3,s的为T2a”。参考答案:inttnum(char*s,intn){intk,m」;charc;k=0;while(n)

m=n%16;n=n/16;switch(m)case15:case15:s[k]=case14:s[k]=e'case13:s[k]=(Tcase12:s[k]=c'case11:s[kHb'case10:s[k]=a';break;;break;;break;;break;;break;;break;default:s[k]=m+^O';k++;}s[k]=O;for(i=0,m=k-l;i<m;i++,m—){c=s[i];s[i]=s[m];s[m]=c;}returnk;}评分要点:1计算S禹长度并正确返回2将十进制整数转换为十六进制字符串s的内容的求解算法正确注意语法错误最多扣2分,重点在于程序的思路正确4.设计•一个函数rightarr(a,m,n),a为一维整数数组(数组元素的个数为m),该函数实现数组a的循环右移n位。4.例如:int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论