C程序设计_谭浩强_期末考试题.pdf
《C程序设计_谭浩强_期末考试题.pdf》由会员分享,可在线阅读,更多相关《C程序设计_谭浩强_期末考试题.pdf(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、填空题1.输入一个不包含空格的字符串,将字符串反序输出,如#include void f(char*p)while()(c=*pl;*p 1 =;*p2=;pl+;p2-;void main()(chars200;printf(输入一个字符串:);scanf();f(s);(char*pl,*p2;char c;pl=p2=;while(*p2+);:“abcl2”的输出为“21cba”。printf(字符串反序:sn,s);)2.输入1个长整数,求各位数字的平方和。例如:输 入 123,输出14#include void main()int dgit;long in,s;scanf(%l
2、d,&in);while(in0)s=s+digit*digit;printf(sum=%ldn,s);)二、程序阅读题1.写出下面程序运行结果(5 分)#include#define MSIZE 8void main()char imMSIZEMSIZE+l=*#,#*#*#*#,,*,“#*,C*,#);int i,j;for(j=MSIZE-l;j=O;j-)(for(i=0;iMSIZE;i+)printf(%c”,imi;printf(n”);)2.写出下面程序运行的输出结果(5 分)#include void main()(char*str 1=12123434,*str2=123
3、424315”;int x=0,i;for(i=O;strl i!=0&str2i!=0;i+)if(strlfi=str2i)x+;printf(%dn,x);3.写出下列程序的输出结果(4分)#include main()int a=4,b=6;printf(na=%dn,a 1);printf(ub=%dnn,b l);)4.写出调用函数H-123)的输出结果是多少。void f(int n)(if(n0)(printf();f(-n);)else if(n2)printf(d”,n);else(f(n/2);printf(d”,n%2);)(6分)三、读程序,找出其中存在的10个错误并
4、修改。#include#define N UM 3struct prob I emschar prob I em20;i nt answer;myprosN UM=2+3=?,5,2*3-1 3二?”,-7,“(2*31*5)%3=?int main(void)(int i=0,a,score;pr i ntf(test begin:n)for(i=0,inum;i+)(printf(problem%d:n”,i+1);printf(%cn,prob I emsi.prob I em);scanf(%d,a);if(a=problemsi.answer)score+;1score=lO Xsc
5、ore;pr intf(your score:%dn”,score);return 0;/*indicates successfuI termination*/*end ma i n*/错误的语句:修改为:1、2、3、4、5、J ;6、7、8、9、10、四、编程。1、首先按要求生成两个有序链表P 和 q 如下图所示:然后将这两个链表合并生成一个新的链表h ea d,使得h ea d仍然从大到小有序,并且不允许有重复的元素。最后将新的链表输出。(本题2 5 分)比如,p、q 链表中节点da t a 的值若分别为:P:1 2,1 1,1 0,9,8,7,6,5,4,3q:1 5,1 3,1 1,9
6、,7则生成的h ea d链表中节点da t a 的值为:1 5,1 3,1 2,1 1,1 0,9,8,7,6,5,4,3#i n cl u de S i n cl u de s t r u ct n o de i n t da t a;s t r u ct n o de*n ext;);v o i d m a i n()i n t a =1 2,1 1,1 0,9,8,7,6,5,4,3;i n t b =1 5,1 3,1 1,9,7;s t r u ct n o de*p,*q,*h ea d;/*以下程序实现生成链表p 和 q,使得p 链表中节点da t a 的值依次为a 数组,q 链
7、表中节点da t a 的值依次为b 数组*/*按题意要求合并生成新的链表h ea d*/*输出链表h ea d*/2.把-英文文章中的字母全部转换成密文字母输出到另一个文件中,文中其他字符以及换行不变。字母转换规则为:A-E,B-F,V-Z,W-A,-Z-D,a-e,b-f,v-z,w-a,-z-d,即变成其后面第四个字母。文件名用命令行参数给出。假设源程序名en cr y p t.c,命令行写法如下:en cr y p t s cr i p t,t xt ci p h er,t xt其中s cr i p t,t xt 为原始的英文文章,ci p h er,t xt 为完成加密后的新文件。(本
8、题1 5 分)一、填空题1.输入1 0 个点的坐标(设坐标为整数值),输出距原点最远的点(设唯一)的坐标及该点距原点的距离.#include void main()struct(int x,y;float length;point10;int k,sub=0;for(k=0;k 10;k+)scanf(,%d%df,&pointk.x,&pointk.y);pointk.length=_)for(k=l;k10;k+)if(_)printf(n(%d,%d)%fnn,pointsub.x,pointsub.y,pointsub.length);2.以下程序统计从终端输入的字符中大写字母的个数,
9、num中统计字母A 的个数,num中统计字母B 的个数,其它依次类推.用#号结束输入,请填空.#include#include main()int num26=0,i;char c;wh i l e()!=#)if(isupper(c)numc-tA,+=;for(i=0;i26;i+)printf(大写字母c 的个数是d n,);)3.函数main。的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空#include struct node int data;struct node*next;int min(struct node*first)/*指针 first 为链表头指针*/
10、strct node*p;int m;p=i m=;p=p-next;f o r(;p!=N U L L;p=)if(pdatam);return m;二、程序阅读题1.写出下面程序运行的输出结果(6分)#include void main()(int i,j;for(i=3;i=l;i)for(j=l;j=2;j+)printf(%d,i+j);printf(n);)2.写出下面程序的输出结果(3分)#include int fun(int a,int b)if(b=O)return a;elsereturn(fun(-a,-b);)main()printf(n%dn,fun(4,2);)3
11、.写出输出结果是多少。(5分)#include main()intj,al,3,5,7,9,ll,13,15),*p=a+5;for(j=3;j;j-)(switch(j)case 1:case 2:printf(n%dnn,(*p)+);break;case 3:printf(,%dn,*(p);)4.写出输出结果是多少。(6分)#include void funl(char*p)char*q;q=p;wh i l e(*q!=O )(*q)+;q+;m a i n()ch a r a =P r o g r a m ,*p;p=&a 3 ;f u n l(p);p r i n t f(%s
12、n ,a);)三、改错题(2 0分)i n cl u de i n t i s p r i m e()i n t i;f o r(i=2,i =n;i+)i f(n%i=0)r et u r n 0;r et u r n 1;)v o i d m a i n O(i n t i,j;p r i n t f(p r i m es f r o m 1 t o 1 0 0:n );f o r(i=2;j=0;i =1 0 0;i+);i f(i s p r i m e(i)printf(%d,i);j+;IF(j%5=0)printf Cn);)四、编 程(共4 0分。1.编写一个程序,将主函数给出
13、的一个有序数组,利用编写的二分法(折半法)查找函数,查找主函数给出的数,如找到,返回数组的下标。主程序的框架以及部分代码给出,二分法的函数原型也已给出。(本题2 0分)#include#define SIZE 10/*function prototypes*/int binarySearch(int*p,int searchKey,int low,int high);/*function main begins program execution*/int main(void)(int a SIZE =88,77,66,55,44,33,22,11,8,2;/*create array a*/
14、int key;/*value to locate in array a*/printf(Enter a number between 0 and 88:);scanf(%d,&key);/*end main*/2.请编写函数sum fact(number),返回number的因子之和。(能整除number的数就是它的因子,number定义为int)例如sum_fact(6)=12(因为1,2,3,6是6的 因 子)(本 题1 0分)3.编写函数f f(c h a r *s t r,c h a r c h)的功能是统计并返回字符c h 在字符串s t r 中出现的次数。例如:调用f f (e
15、v e r y ,e )后返回2,因为在字符串 e v e i y 中字符 e 出现了 2 次。(本题10分)C 语言期末考试试题2008年04月12日 星 期 六 00:22一 选 择 题(24分,每小题2分)1.已知函数fread的调用形式为fread(buffer,size,count,fp),持 buffer代表的是()A 存放读入数据项的存储区B 存放读入数据的地址或指向此地址的指针C 一个指向所读文件的文件指针D 一个整形变量,代表要读入的数据项总数2.以下程序的输出结果为()。main()inti=010,j=10;printf(%d,%dn)i+,j-);)A11,9B9,10
16、C8,10D9,93.设 a 为 int型变量,执行下列赋值语句后,a 的取值分别是()。a=125.534;a=20.0/3;a=(int)125.521%4;a=52;A 125,6,31,1B 125,6,1,20C 125,6.666666,31,20D 125.534,6.666666,2,204.设 i 和 k 都是int类型,则 for循环语句()。for(i=0,k=-1;k=1;i+,k+)printf(M*nn);A 循环结束的条件不合法B 循环体一次也不执行C 循环体只执行一次D 是无限循环5.以下程序的输出结果为()。main()char c;int i;for(i=6
17、5;i68;i+)(c=i+32;switch(c)(case a:case b*:case c:primf(c,”,c);break;default:printf(end);)Aa,b,c,endB a,a,a,endC a,a,a,D a,b,c,6.函数调用语句:fseek(fp,-10L,2);的含义是()。A 将文件位置指针从文件末尾处向文件头的方向移动10个字节B 将文件位置指针从当前位置向文件头的方向移动10个字节C 将文件位置指针从当前位置向文件末尾方向移动10个字节D 将文件位置指针移到距离文件头10个字节处7.以下程序的输出结果为()。main()int0,j=0;whil
18、e(s1i!=,0,)i+;while(s20!=,O,)s1i+=s2j+;s1i=0;printf(H%sn,s1);)AsideB countryC sidetryD countryside8.下列说法不正确的是()oA 主函数main中定义的变量在整个文件或程序中有效B 不同函数中,可以使用相同名字的变量C 形式参数是局部变量D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效9.在下列程序段中,枚举变量c1的 值 是()。enum color red,yellow,blue=4,green,whitec1;c1=yellow;c1=white;A1B3C5D61
19、0.设有说明int(*ptr)();其中标识符ptr是()A 是一个指向整形变量的指针B 是一个指针,它指向一个函数值是in t的函数C 是一个函数名D 定义不合法11.定义由n 个指向整形数据的指针组成的数组p,其正确的方式为(A int p;B int(*p)n;C int*pn;D int(*p)();12.具有相同类型的指针类型变量p 与数组a,不能进行的操作是()。Ap=a;B*p=aO;C p=&aO;D p=&a;二 判断对错,对的划y”,错的划“X”(20分,每小题2分)1.参加位运算的数据可以是任何类型的数据。()2.若有定义和语句:int a;char c;float f;
20、scanf(M%d,%c,%f,&a,&c,&f);若通过键盘输入:10 A 12 5则 a=10,C=,A,f=12.5。()3.C 语言把文件看作是一个字符(字节)的序列。()4.若有宏定义:#define S(a,b)t=a;a=b;b=t由于变量t 没定义,所以此宏定义是错误的。()5.在 Turbo C 中,下面的定义和语句是合法的:file*fp;fp=fopen(a.txt,r);()6.若有定义:char s=china;则 Turbo C 系统为数组s 开辟6个字节的内存单元。()7.若有定义和语句:int a33=3,5,8,9,12,35,i,sum=0;for(i=0;
21、i3;i+)sum+=ai2-i;则 sum=21。()8.若有定义和语句:struct student(int num;char name10;float score;s5=1,lili,98.5,9,xiaohua,66,*p=s;printf(%d,*p+);输出结果是1。()9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量010.在 Turbo C 中,此定义和语句是合法的:enum aa a=5,b,cbb;bb=(enum aa)5;()三 写出下列程序的运行结果(36分,每小题6分)1.main()(int i=29,j=6,k=2,s;s=i+i/j%k-
22、9;/s=i+(i/j)%k-9printf(s=%dn”,s);)2.main()int x=31,y=2,s=0;do(s-=x*y;x+=2;y-=3;)while(x%3=0);先执行,后判断printf(l*x=%dty=%dts=%dn,x,y,s);)3.main()(int a6=10,20,30,40,50,60,i;invert(a,0,5);for(i=0;i6;i+)printf(*%d,ai);printf(n”);)invert(int s,int i,int j)(intt;if3)invert(s,i+1,j-1);t=si;si=sUJ;s01=t;倒置函数自
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 谭浩强 期末 考试题
限制150内