C语言考试题目汇总.doc_第1页
C语言考试题目汇总.doc_第2页
C语言考试题目汇总.doc_第3页
C语言考试题目汇总.doc_第4页
C语言考试题目汇总.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

设计的基本环节及主要内容(一)基本要求题目 1、猜数游戏(掌握程序结构及随机函数应用)程序说明:游戏的开始由机器产生一个随机数(1100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH,try again. ,否则,程序提示:Your answer is LOW,try again.,直到猜对为止。程序可实现连续猜数,直到游戏者退出。程序输出要求:累计游戏者猜对一个数所需次数n,当n=15时,用exit(0)库函数退出程序。2、百钱百鸡(穷举算法)我国古代数学家张丘键在算经中出了一道题“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 注:穷举法是最简单、最常见的一种程序设计方法。它充分利用了计算机处理的高速特性。使用穷举法的关键是确定正确的穷举范围,即不能过分扩大、也不能过分缩小穷举的范围。3、简单计算器请编写一个程序计算表达式:data1 op data2的值。其中,op为运算符、*、/。4、打印出所有的“水仙花数”所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为:153=13+53+33 。5、字符串处理函数编写三个函数:求字符串长度函数(函数原型为:int strlen(char *p)),字符串复制函数(函数原型为:void strcpy(char *p1,char *p2)),字符串比较函数(函数原型为:int strcmp(char *p1,char *p2),返回值为第一个不相同字符的ASCII码差。)。要求:在主函数中根据用户需要调用不同的函数功能。6、编一程序,实现将输入的一个无符号整数转换为二进制和八进制表示,分别存入字符数组中并输出。(提示:算法采用模拟人工法。)注:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。7、判断一个数是否是数组中的成员(用二分法查找)已知数据a中一共有10个已排序的整数(由小到大排列)。现在从键盘上输入一个数,判断这个数是否是数组a中的数,如果是的话,打印出此数在数组a中的位置来,否则打印“找不到“。(提示:设待查找的数为x,设三个位置变量l、m、h分别代表查找范围的顶部、中间位置和底部,m=(l+h)/2,把数分成以am为中点的两段范围。判断x 是否等于am,若是,则找到。若大于am,则x必在后半段范围,即在am+1至ah。则舍弃前半段,再在后半段重新划分两段范围,定出l、m和h,重复以上步骤,逐步缩小查找范围。)8、位数大小排序(掌握数值排序算法)程序说明:输入一个五位整数,对此整数中的五个数值进行从大到小的顺序排序,形成一个新的五位整数,并输出这个整数。要求:用函数调用。9、请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。(数组维数用宏定义)10、矩阵乘法(数值求解算法)编写一个函数实现矩阵A(2行3列)与矩阵B相乘(3行2列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结果。11、求所有不超过200的N值,N的平方是具有对称性质的回文数。回文数就是将一个数从左向右读是一样的,如满足题意要求的数有:N11,112121。12、插入后自动排序(掌握用穷举法进行比较、交换)把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列。要求:用数据指针。13、计算分数的精确值 使用数组精确计算MN(0MN=100)的值。如果 MN是无限循环小数,则计算并输出它的第一循环节,同时要求输出循环节的起止位置(小数位的序号。)注:由于计算机内字长有限,常规的浮点运算都有精度限制,为了得到高精度的计算结果,就必须自行设计算法。提示:可将商存放在一维数组中,进行除法运算时,可模拟人的手工操作,即每次求出商的一位后,将余数乘以10,再计算商的下一位。若某次余数为0,则为有限不循环小数。若某次计算后的余数与前面的某个余数相同时,则MN是无限循环小数。14、马克思手稿中的数学题(穷举算法)马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令:每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人、小孩各有几人?15、用梯形法求定积分(数值求解算法)用梯形法编程求函数f(x)=x2+2x+1的定积分提示:把积分区间a,b等分为n等分(a,b,n的值由程序输入。),可得到若干个小梯形,积分面积就近似为这些小梯形面积之和。16、小孩吃梨问题:小孩买了一些梨,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的梨吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半,并又多吃了一个。到第18天只剩下一个梨了,问小孩共买了多少梨?(提示:据初始条件,用倒推法。)17、一个奇异的三位数(穷举算法)一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。18、约瑟夫问题(掌握一维数组的用法)。15个基督徒和15个异教徒在海上遇险,必须将一半的人投入大海,其余的人才能幸免于难,于是想了一个办法:30个人围成一个圆圈,从第一个人开始依次报数,每数到第9个人就将他扔入大海,如此循环直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是异教徒。提示:30个人顺序编号,自增量k报数,k%90时,此人投入大海。投入大海标志为置数组元素值为0(或1)。投入大海的人不再报数。 程序输出要求:程序运行后,显示原始顺序,每次投入大海的人的信息及剩下人的顺序。19、回文数的形成:任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步骤,则最终可得到一个回文数。请编程验证。(回文数就是将一个数从左向右读是一样的,如121,11等)。(注:回文数不超过2147483647)回文数的这一形成规则目前还属于一个猜想,尚未获得数学上的验证,有些回文数要经历上百个步骤才能获得,请编程验证,打印形成过程。如输入整数78,则形成回文数的过程为:7887165,165561726,7266271353,135335314884。提示:一个函数用来求反序数,另一个函数判断是否为回文数,在主函数中输入输出。20、人机猜数游戏由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四个数中有几个猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜 ,直到人猜出计算机所想的四位数为止。请编程实现该游戏,游戏结束时,显示人猜一个数用了几次。提示:用库函数random()产生一个随机数。如:Int z;z= random(9999);21、求转置矩阵编写一个程序,求34数组的转置矩阵。要求在main函数里读数,在change函数里把矩阵转置。22、条件编译用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如a变成b.z变成a。其他字符不变)。用#define命令来控制是否要译成密码。例如:#define change 1则输出密码。若#define change 0则不译成密码,按原码输出。23、取子串函数编写求子串函数substr(s,n1,n2),在串s中从n1位置开始取n2个字符的子串24、输出九九乘法口决表(循环结构的应用,表的格式自己设定)25、设计一个函数,对n个字符串按由小到大的顺序排序,n由程序读入,字符串的输入和输出都在main函数中进行。26、输入三行文字,找出其中有多少个空格和多少个单词(规定单词间以一个或多个空格分开)。若一个单词恰好在行末结束,则下一行的开头应有空格,句号和逗号后面也应有空格。27、计算字符串中子串出现的次数程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。28、递归算法用递归算法编写求1n的累加和。在主函数中调用。29、计算字符串中子串出现的次数程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。30、数值算法编写求以下函数(二)程序改错题程序1:main() int a b; a=2; b=3; c=a*b printf(c=%c,c);程序2:main() int x=1; y; y=x+; printf(y=%d ,y); int z; z=+x; print(z=%dn,z);程序3:#include main() int a; char ch; ch=A; scanf(%d,a); printf(%c+%d=%cn,ch,ch+a);程序4:#include #include main() int i,j; char ch; while(ch=getch()!=r) i+; printf(%c,ch); printf(you type %d charactersn,i);程序5:#include #include main() int i,j; int sum,k=0; for(i=0;i5;i+); printf(input a number:); scanf(%d,k); sum+=k; printf(the sum is %d,sum);程序6:#include #include main() int i,j; clrscr(); for(i=0;i10;i+) for(j=0;j10;j+) if(i=j)break; printf(* ); printf(n);程序7:#include int fun( ) int a33, sum; int i, j; _; for(i=0; i3; i+) for(j=0; j3; j+)scanf(%d aij); for(i=0; i3; i+) sum = sum * aii; printf(Sum=%dn, sum);main( ) fun( ); 程序8:#include #include void fun(int a, b) int t; t = b; b = a ; a = t;main( ) int a, b; clrscr( ); printf(Enter a,b :); scanf(%d%d, &a, &b); fun(&a, &b); printf(a=%d b=%dn, a, b);程序9:#include #include fun(double *a, *b) if(a*b 0.0) return 1; else return 0;main( ) double n, m;clrscr( );printf(Enter n , m : ); scanf(%lf%lf, &n, &m);printf(nThe value of function is: %dn, fun(&n, &m);程序10:#include #include #include int fun(char *s, char *t) int n; char *p, *r; n = 0; while(*s)p = s; r = t;while(*r)if(*r = *p) r+; p+ elsebreak; if(r = 0)n+;s+; return n;main( ) char s100, t100; int m; clrscr( ); printf(nPlease enter string S: );scanf(%s, s); printf(nPlease enter substring t:); scanf(%s, t); m = fun(s, t); printf(nThe result is : m = %dn, m);程序11:对候选人得票的统计程度。设由3个候选人,每次输入一个得票的候选人的名字,要求最后输入各人得票结果。(总票数为n)。 程序如下:#include structpersoncharname20;intcount;leader3=Li,0,Zhang,0,Fun,0;main()inti,j;/*error*/charleader_name20;scanf(%ddn,&n);for(i=0;i=n;i+)/*error*/scanf(%s,leader_name);for(j=0;j3;j+)if(leader_name=)/*error*/printf(n);for(i=0;i3;i+)printf(%5s:%dn,,leaderi.count);程序12:函数str1的功能是输入一个英文句子(字符串),将其中每个单词的最后一个字母改写成大写,然后输出此句子。(这里的单词是指由空格隔开的字符串)。例如:若输入:thisisabook,则应输出:thiSiSAbooK请改正函数str1中的两个错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。程序如下:#includestdio.h#includectype.h#includeconio.hvoidstr1(char*p)intk=0;for(;*p;p+)if(k) if(p=)k=0;*p=toupper(*(p-1);elsek=1;voidmain()charstr100;intd;clrscr();printf(npleaseinputastring:);gets(str);str1(str);printf(nafterchanging:n%s,str);程序13:下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如:给字符串s输入:AAaaBBb123CCccccd,则应该输出结果:upper=6,lower=8。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #include void fun (char *s,int a, int b) a应为*a,b应为*b while(*s) if (*s=A & *s=a & *s=z)b+; (*b)+;s+;main() char s100;int upper=0,lower=0;clrscr();printf(nPlease a string:);gets(s);fun(s,&upper, &lower);printf(n upper=%d lower=%dn,upper,lower);程序14:下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #include void; fun(char *p,char *q,char *c)去分号 int k=1; 1改为0 while(*p!=*q) != 改为 | if (*p*q) ck=*q; 小于号改为小于等于else ck=*p;if (*p) p+;if (*q) q+;k+; main()char a10=aBCDeFgh,b10=ABcd,c80=;fun(a,b,c);printf(The string a:); puts(a);printf(The string b:); puts (b);printf(The result:); puts(c);程序15:下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #include void fun (char *s) int i,j;for (i=0,j=0;si!=0;i+)if (si=0 & si=9)sj=si; j改为jsj=0; sj=0 main()char item80;clrscr();printf(nEnter a string:);gets(item);printf(nnThe string is :%sn,item);fun (item);printf(nnThe string of changing is :%sn,item);程序16:假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #define N 20fun (int *a,int n, int x)int p=0,i;an=x;while (x!=ap)p=p+1;if (p=n) return -1;elsefor (i=p;in;i+)ai+1=ai; ai=ai+1; return n-1;main()int wN=-3,0,1,5,7,99,10,15,30,90,x,n,i;n=10;printf(The original data:n);for (i=0;in;i+) printf(%5d,wi);printf(nInput x (to delete):);scanf(%d,&x);printf(Delete:%dn,x);n=fun(w,n,x);if (n=-1) printf(*Nor be found!*nn);elseprintf(The data after deleted:n);for (i=0,in;i+) printf(%5d,wi);printf(nn);程序17:下列给定程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。t=1-1/22-1/33-1/mm。例如,若m中的值为5,则应输出:0.536389。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #include double fun (int m) double y=1.0;int i;for (i=2;im;i+) “”改为“=” y-=1/(i*i); “1”改为“1.0” return(y);main ()int n=5;clrscr();printf(nRhe result is %1fn,fun(n);程序18:下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #define N 20void fun(int a,int n) int i,j,t,p;for (j=0;jn-1;j+)p=j 加上“;”for (i=j;i,n;i+) j改为j+1 if (aiap)p=j; j改为i t=ap;ap=aj;aj=t;main()int aN=9,6,8,3,-1,i,m=5;printf(排序前的数据:);for (i=0;im;i+) printf(%d,ai);printf(n);fun(a,m);printf(排序后的数据:);for (i=0;im;i+) printf(%d,ai);printf(n);程序19:给定程序MODI1.C中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include int fun ()int a 3 3, sum;int i, j;_;sum = 1;for (i=0;i3;i+) for (j=0;j3;j+) scanf (%d a i j); scanf(%d, &aij); for (i=0; i3; i+)sum=sum*ai i;printf (Sum=%dn, sum);main () fun (); 程序20:下列给定程序中,函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,一次构成一个新数放在t中。例如,当s中的数为7654321时,t是的数为642。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include #include void fun (long s, long t)1 long sl=10;s/=10;*t=s%10;While(s0)2 s=s/100;*t=s%10*sl+*t;sl=sl*10;main()long s,t;clrscr();printf(nPlease enter s:);scanf(%ld,&s);fun(s,&t);printf(The result is : %ldn,t);(三)综合题目设计课题一:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。二、功能要求:1. 本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。2. 本系统显示这样的菜单:请选择系统功能项:a、 成绩录入b、 成绩显示c、 成绩保存d、 成绩排序e、 成绩修改(要求先输入密码)f、 成绩统计(1) 显示每门课程成绩最高的学生的基本信息(2) 显示每门课程的平均成绩(3) 显示超过某门课程平均成绩的学生人数g、 退出系统3. 执行一个具体的功能之后,程序将重新显示菜单。4. 将学生成绩保存到文件中。三、算法提示:1. 数据结构:结构体类型数组。2. 数据库结构:下表构成该系统的基本数据库。姓名学号课程名称1课程名称2charCharfloatfloat四、测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治五、其它 对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。设计课题二:班级档案管理系统一、问题描述:对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。二、功能要求:1. 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。2. 本系统显示这样的菜单:请选择系统功能项:a. 学生基本信息录入b. 学生基本信息显示c. 学生基本信息保存d. 学生基本信息删除e. 学生基本信息修改(要求先输入密码)f. 学生基本信息查询(1) 按学号查询(2) 按姓名查询(3) 按性别查询(4) 按年龄查询g. 退出系统3. 执行一个具体的功能之后,程序将重新显示菜单。4. 将学生基本信息保存到文件中。5. 进入系统之前要先输入密码。三、算法提示:1. 数据结构:结构体类型数组2. 数据库结构:下表构成该系统的基本数据库。姓名学号性别年龄备注charcharcharintchar四、测试数据:学生人数N=10五、其它:对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。设计课题三:飞机订票系统一、问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。二、功能要求:1. 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。2. 本系统显示这样的菜单: (1) 输入航班信息 (2) 输出航班信息 (3) 查找航班信息 a.显示空座的数量 b.显示空座的信息 c.显示已订座的信息 d.起飞时间 (4)订票预约 (5)删除定票预约 (6)退出系统 3. 本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。4. 查找航班信息既可按线路查,也可按目的地查。5. 在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据.三、算法提示:1. 数据结构:结构体类型数组2. 数据库结构:下表构成该系统的基本数据库。航班号起飞时间目的地座次号座次订出与否的标记订票者姓名订票者身份证号码intcharcharintCharcharchar四、测试数据:每架飞机的座位N=12,M=5五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。设计课题四:猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。二、功能要求:1. 本游戏显示这样的菜单:(1) 随机产生数据(2) 用户输入数据(3) 退出游戏2. 游戏成功与否都能返回主菜单三、算法提示:1. 数据结构:数组2. 用简单的程序设计方法四、测试数据:测试数据:3792第一次输入:12340A2B第二次输入: 56780A1B第三次输入:08670A1B第四次输入: 97861A1B第五次输入: 17942A0B第六次输入:27932A2B第七次输入: 37924A0B游戏成功!五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。设计课题五:电子英汉词典设计一、问题描述:英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。二、功能描述:1. 在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。2. 词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。3. 对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。4. 采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。5. 要求整个设计以人为本,用户界面友好。三、算法提示:1. 数据结构:结构体数组2. 简单的程序设计3. 友好的窗口菜单的设计 四、测试数据:要求被选用的词条有200个左右,以中学的单词为主。五、其它:对该系统有兴趣

温馨提示

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

最新文档

评论

0/150

提交评论