C程序设计 谭浩强 期末考试题.doc_第1页
C程序设计 谭浩强 期末考试题.doc_第2页
C程序设计 谭浩强 期末考试题.doc_第3页
C程序设计 谭浩强 期末考试题.doc_第4页
C程序设计 谭浩强 期末考试题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

一、填空题1输入一个不包含空格的字符串,将字符串反序输出,如:“abc12”的输出为“21cba”。#include void f(char *p)char *p1, *p2;char c; p1=p2= ; while( *p2+) ; ; while ( ) c=*p1;*p1= ;*p2= ; p1+; p2-; void main() char s200; printf(“输入一个字符串:”);scanf( );f(s); printf(“字符串反序:%sn”,s);2输入1个长整数,求各位数字的平方和。 例如:输入 123,输出14。#include void main( ) int digit; long in,s; scanf(%ld, &in); ; ; while(in0) ; s=s+digit*digit; ; printf(sum=%ldn, s);二、程序阅读题1写出下面程序运行结果(5分)#include #define MSIZE 8void main()char imMSIZEMSIZE+1=“*”,“#”,“#*#*#”,“#*#”,“*”,“#*”,“*”,“#”;int i,j;for(j= MSIZE -1;j=0;j-)for(i=0;iMSIZE;i+)printf(“%c”,imij);printf(“n”);2写出下面程序运行的输出结果(5分)#include void main() char *str1=12123434, *str2=”123424315”; int x=0, i; for(i=0;str1i!=0& str2i!=0;i+) if(str1i=str2i) x+; printf(%dn,x); 3写出下列程序的输出结果 (4分)#include main() int a=4,b=6; printf(a=%dn,a1);4. 写出调用函数f(-123)的输出结果是多少。(6分)void f(int n)if(n0) printf(“-”);f(-n);else if(n2) printf(“%d”,n);elsef(n/2);printf(“%d”,n%2);三、读程序,找出其中存在的10个错误并修改。#include #define NUM 3struct problems char problem20; int answer; myprosNUM=”2+3=?”,5,”2*3-13=?”,-7,“(2*31*5)%3=?”,1;int main( void ) int i=0,a,score; printf(“test begin:n”)for(i=0,inum;i+)printf(“problem %d:n”,i+1);printf(“%cn”, problemsi. problem);scanf(“%d”,a);if(a=problemsi.answer) score+;score=10score;printf(“your score: %dn”,score); return 0; /* indicates successful termination */ /* end main */ 错误的语句: 修改为:1、2、3、4、5、6、7、8、9、10、四、编程。1、首先按要求生成两个有序链表p和q如下图所示:43 NULL1112p 97 NULL1315q 然后将这两个链表合并生成一个新的链表head,使得head仍然从大到小有序,并且不允许有重复的元素。最后将新的链表输出。(本题25分)比如,p、q链表中节点data的值若分别为:p: 12,11,10,9,8,7,6,5,4,3q: 15,13,11,9,7则生成的head链表中节点data的值为:15,13,12,11,10,9,8,7,6,5,4,3#include #include struct nodeint data; struct node *next;void main() int a=12,11,10,9,8,7,6,5,4,3; int b=15,13,11,9,7; struct node *p,*q,*head;/* 以下程序实现生成链表p和q,使得p链表中节点data的值依次为a数组, q链表中节点data的值依次为b数组*/ /*按题意要求合并生成新的链表head*/ /*输出链表head*/ 2把一英文文章中的字母全部转换成密文字母输出到另一个文件中,文中其他字符以及换行不变。字母转换规则为:A-E,B-F,V-Z,W-A,Z-D, a-e,b-f,v-z,w-a,z-d,即变成其后面第四个字母。文件名用命令行参数给出。假设源程序名encrypt.c,命令行写法如下: encrypt script.txt cipher.txt其中script.txt为原始的英文文章,cipher.txt为完成加密后的新文件。(本题15分)二一、填空题1输入10个点的坐标(设坐标为整数值), 输出距原点最远的点(设唯一)的坐标及该点距原点的距离.#include void main() struct int x, y; float length; point10; int k, sub=0; for(k = 0; k 10; k+) scanf(%d%d, &pointk.x, &pointk.y); pointk.length = for(k=1; k10; k+) if( ) printf(%d,%d) %fn, pointsub.x, pointsub.y, pointsub.length);2以下程序统计从终端输入的字符中大写字母的个数,num0中统计字母A的个数,num1中统计字母B的个数,其它依次类推.用#号结束输入,请填空.#include #include main() int num26=0,i; char c; while(_)!=#) if(isupper(c) numc-A+= _; for(i=0;i26;i+) printf(大写字母%c的个数是%dn, ); 3函数main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空#include struct node int data;struct node *next;int min(struct node *first)/*指针first为链表头指针*/ strct node *p; int m; p= ; m= ; p=p-next; for(;p!=NULL;p=_) if(p-datam) ; return m;二、程序阅读题1写出下面程序运行的输出结果( 6 分)#include void main() int i,j; for(i=3;i=1;i-) for(j=1;j=2;j+) printf(%d,i+j); printf(n); 2写出下面程序的输出结果( 3 分) #include int fun(int a,int b) if(b=0) return a; else return (fun(-a,-b);main() printf(%dn,fun(4,2);3. 写出输出结果是多少。( 5 分)#include main() int j,a=1,3,5,7,9,11,13,15,*p=a+5; for(j=3; j ;j-) switch(j) case 1: case 2: printf(%dn,(*p)+);break; case 3: printf(%dn,*(p-); 4. 写出输出结果是多少。( 6 分)#include void fun1(char*p) char *q; q=p; while(*q!=0) (*q)+; q+; main()char a=Program,*p; p=&a3; fun1(p); printf(%sn,a);三、改错题(20分)include int isprime()int i;for(i=2,i=n;i+) if(n%i=0) return 0;return 1;void main()int i,j;printf(primes from 1 to 100:n);for(i=2;j=0;i=100;i+);if(isprime(i)printf(%d ,i );j+;IF(j%5=0) printf(n);四、编程(共 40 分)。1编写一个程序,将主函数给出的一个有序数组,利用编写的二分法(折半法)查找函数,查找主函数给出的数,如找到,返回数组的下标。主程序的框架以及部分代码给出,二分法的函数原型也已给出。(本题 20 分)#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 */ int key; /* value to locate in array a */ printf( Enter a number between 0 and 88: ); scanf( %d, &key );. /* end main */ 2. 请编写函数 sum_fact(num

温馨提示

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

评论

0/150

提交评论