C程序设计题库道含答案_第1页
C程序设计题库道含答案_第2页
C程序设计题库道含答案_第3页
C程序设计题库道含答案_第4页
C程序设计题库道含答案_第5页
已阅读5页,还剩214页未读 继续免费阅读

下载本文档

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

文档简介

1、试卷编号:8172所属语言:C+试卷方案:题库182道设计题试卷总分:1820分共有题型:1种一、程序设计 共182题 (共计1820分)第1题 (10.0分) 题号:664/*-【程序设计】- 题目:已知有结构体类型定义: struct node int data; struct node *nextPtr; ; 请编写函数void computingList(node * head),对head 指向的单向链表,分别统计结点的data成员值为负数、0、 正数的结点个数分别存入变量negtive、zero、positive中。 - 注意:部分源程序给出如下。请勿改动主函数main和其它函数中

2、 的任何内容,仅在函数的花括号中填入所编写的若干语句。-*/#include #include using namespace std;void grading(int,int,int);struct node int data; struct node *nextPtr;void computingList(node * head) int positive=0,negtive=0,zero=0; /*Program*/ /* End */ /忽略阅读 grading(positive,zero,negtive); /忽略阅读结束struct node *createList(void) n

3、ode *head=NULL, *p1, *p2; int i; int a10 = -1,3,4,0,9,4,11,-6,2,-10; head=p2=p1= new node; p1-data = a0; for (i=1; idata = ai; p2-nextPtr=p1; p2=p1; p2-nextPtr=NULL; return (head);int main() struct node *head; head = createList(); computingList(head); return 0;/以下忽略阅读void grading(int a,int b,int c)

4、fstream myfile; myfile.open(out.txt,ios:out); myfilea b cdata 0)positive+; else if (p-data data = 0)zero+; p=p-nextPtr;第3题 (10.0分) 题号:672/*-【程序设计】-题目:函数mySum(int a , int m, int n)返回二维 整数数组a中所有元素的和,m、n分别为数组a的行 数、列数。填写适当的代码,使得mySum()完成正确 的功能。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-

5、*/#include#include using namespace std;int mySum(int a23, int m, int n);void gfkd();void main() int a23=1,2,3, 4,5,6; cout mySum(a, 2, 3) endl; / - main()函数此后部分可以不阅读 - gfkd();int mySum(int a23, int m, int n)/* Program */* End */void gfkd() fstream myF; int a23; myF.open(in.dat,ios:in); myF.read(char

6、 *)a, sizeof(int)*2*3); myF.close(); myF.open(out.dat,ios:out); myF mySum(a, 2, 3); myF.close();答案:int i, j, s=0;for (i=0; im; i+)for (j=0; jn; j+)s = s + aij;return s;第4题 (10.0分) 题号:588/*-【程序设计】-题目: 求1-1000之间同构数的个数n。同构数是: 某数与其自身的平方数的后几位相同。 例如:2525625,25是同构数。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函

7、数的花括号中填入所编 写的若干语句。-*/#include#includeusing namespace std;void writeinfile(int n);void main() int m,k,j,n=0; for(m=1;m=1000;m+) /*Program*/ int i=1;k=m;j=m*m;while(k!=0)k/=10;i*=10;if(j%i=m)n+; /* End */ writeinfile(n);void writeinfile(int n) fstream myfile; myfile.open(f.txt,ios:out); myfilenendl; m

8、yfile.close();答案: int i=1;k=m;j=m*m;while(k!=0)k/=10;i*=10;if(j%i=m)n+;第9题 (10.0分) 题号:707/*-【程序设计】-题目:从文件中读入n个字符串,将其中以字母A开头的字符串复制 到二维字符数组str1中。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/# include # include # include using namespace std;# define n 5# define M 20void wwjt(int len);c

9、har str1nM;void main() int i; char strnM; ifstream infile(in.txt,ios:in); if(!infile.is_open() coutFile Open Error!endl; return; for(i=0;istri; infile.close(); int j=0; /*Program*/ /* End */ wwjt(j);void wwjt(int len) ofstream outfile(out.txt,ios:out); if(!outfile.is_open() coutFile Open Errorendl;

10、return; for(int i=0;ilen;i+) outfilestr1in; outfile.close();答案:for(i=0;i=0)&(strcmp(stri,B)0) strcpy(str1j,stri); j+; 第10题 (10.0分) 题号:673/*-【程序设计】-题目:函数myStrCat(char *dst, char *src)将字符串src 连接到字符串dst的后面。填写适当的代码,使得 mySum()完成正确的功能。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/#include#

11、include using namespace std;void myStrCat(char *dst, char *src);void gfkd();void main() char dst100=Hello, ; char src100=Good luck!; myStrCat(dst, src); cout dst endl; / - main()函数此后部分可以不阅读 - gfkd();void myStrCat(char *dst, char *src)/* Program */* End */void gfkd() fstream myF; char dst100, src100;

12、 myF.open(in.dat,ios:in); myF.read(dst, 100); myF.read(src, 100); myF.close(); myF.open(out.dat,ios:out); myStrCat(dst, src); myF dst; myF.close();答案:int i=0, len;len = strlen(dst);while (srci)dstlen+ = srci+;dstlen = 0;第11题 (10.0分) 题号:723/*-【程序设计】-题目:编写函数eachPrime,判断两个正整数m和n是否为 互质数。若是,返回1;否则,返回-1。

13、互质数:最大公约数为1的两个数称为互质数。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/#include #include #include using namespace std;int eachPrime( int m, int n) /*Program*/ /* End */void grading();int main() int num1, num2, result; cout 0):n; cin num1 num2; if ( num1=0 | num2=0 ) cout Input error!n; r

14、esult = eachPrime(num1, num2); if(result = 1) cout num1 和 num2 是互质数!n; else cout num1 和 num2 不是互质数!n;/忽略阅读 grading();/忽略阅读结束 return 0;/以下忽略阅读void grading() int n1, n2, result; fstream infile172,myfile; infile172.open(in172.txt,ios:in); myfile.open(out172.txt,ios:out); for(int i=0; i n1 n2; result =

15、eachPrime(n1, n2); myfile result endl; infile172.close(); myfile.close();答案:int temp;while (n != 0) temp = m; m = n; n = temp % n; if(m = 1)return 1;elsereturn -1;第12题 (10.0分) 题号:529/*-【程序设计】-题目:定义函数double max(double a,double b,double c)实现求三个实数中的最大值。-注意:1.部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在*program*

16、 和*end*所标记的区域内完成题干要求的函数功能。2./忽略阅读与/忽略阅读结束内的程序可以忽略阅读。-*/#include#includeusing namespace std;void wwjt();/*Program*/* End */void main() coutmax(3.2,7.4,4.5)endl; /忽略阅读 wwjt(); /忽略阅读结束/忽略阅读void wwjt() double m,n,l; fstream infile, outfile; infile.open (in.txt,ios:in); outfile.open(out.txt,ios:out); for

17、 (int i=0;im; infilen; infilel; outfilemax(m,n,l)b&ac) return a;if(ba&bc) return b;return c;第13题 (10.0分) 题号:697/*-【程序设计】-题目:邮政汇款的收费标准是汇款金额的1%,但单笔收费上限是50元。 编写一个函数double shouFei(double money),根据输入的 汇款金额money,返回所要收取的费用。 -注意:仅在标有Program和End的注释行之间补充填写代码。 请勿改动主函数main和其它任何已有内容。-*/#include #include void wri

18、teinfile( );/*Program*/* End */void main() coutm; cout本次汇款收费:shouFei(m)endl; writeinfile( );void writeinfile( ) double m; ifstream inFile(in.txt, ios:in | ios:nocreate); if(!inFile) cerr无法打开数据文件in.txt。需要核查!endl; return ; fstream myfile; myfile.open(out.txt,ios:out); if(!myfile.is_open() cerr无法打开数据文件

19、out.txt。需要核查!endl; return ; for(int i=0; im; if(inFile.fail() break; myfileshouFei(m)endl; inFile.close(); myfile.close();答案:double shouFei(double money)double sf = 0;if(money 50.0)sf = 50.0;return sf;第14题 (10.0分) 题号:695/*-【程序设计】-题目:请输出个、十、百位数字各不相同的所有三位数, 结果写入f2.txt中,一个数一行。要求:输出时按从小到大的顺序输出。-注意:部分源程序

20、给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在注释形式标识Program和 End之间填入所编写的若干语句。-*/#include #include using namespace std;int main() int i, j, k, count = 0; ofstream output; output.open(f2.txt, ios:out); /*Program*/ /* End */ output.close(); cout Press the enter key to exit! in_avail() + 1); return 0;答案:for(i = 0; i 1

21、0; i+)for(j = 0; j 10; j+)for(k = 1; k 10; k+)if(i != j & j != k & i != k)output k j i;count+;if(count = 60)count = 0;output endl;elseoutput ;第15题 (10.0分) 题号:647/*-【程序设计】-题目:下面程序中的函数char *delc(char *s, char c);去掉字符串s中的字符c,并将新得到的字符串返回,完成该函数。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-

22、*/#include#include#includeusing namespace std;char *delc(char *s, char c);int main() int i; char s100,c = a; fstream infile,outfile; infile.open(in.txt,ios:in); outfile.open(out.txt,ios:out); for (i=0;is; delc(s, c); outfilesendl; c+; infile.close(); outfile.close(); return 0;char *delc(char *s, cha

23、r c)/*Program*/* End */答案:char *p;while (p = strchr(s,c)strcpy(p,p+1);return s;第16题 (10.0分) 题号:595/*-【程序设计】-题目:已知三个数a,b,c,按由小到大的顺序存入a,b, c中并输出。 三个数a,b,c的值从已有文件infile596.txt中读 取。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/#include#includeusing namespace std;#include void writeinfile

24、(int a,int b,int c);void main() int a,b,c,t; ifstream ifile; ifile.open (infile596.txt,ios:in); if(! ifile ) coutabc; ifile.close(); /*Program*/ /* End */ writeinfile(a,b,c); return 0;void writeinfile(int a,int b,int c) fstream myfile; myfile.open(f.txt,ios:out); myfilea,b,cb)t=a;a=b;b=t;if(ac)t=a;a

25、=c;c=t;if(bc)t=b;b=c;c=t;第17题 (10.0分) 题号:699/*-【程序设计】-题目:编写函数pfh,功能是返回两个实数的平方和。-注意:仅在标有Program和End的注释行之间补充填写代码。 请勿改动主函数main和其它任何已有内容。-*/#include #include /*Program*/* End */int grading( );int main() coutxy; cout它们的平方和是:pfh(x, y)endl;/忽略阅读 grading( );/忽略阅读结束 return 0;/以下忽略阅读int grading( ) double x,y;

26、 ifstream inFile(in.txt, ios:in | ios:nocreate); if(!inFile) cerr无法打开数据文件in.txt。需要核查!endl; return 1; fstream myfile; myfile.open(out.txt,ios:out); if(!myfile.is_open() cerr无法打开数据文件out.txt。需要核查!endl; return 1; for (int i=0; ixy; myfile(int)pfh(x, y)endl; /在此仅输出整数部分 inFile.close(); myfile.close(); ret

27、urn 0;答案:double pfh(double x, double y) return x*x+y*y;第18题 (10.0分) 题号:586/*-【程序设计】-题目: 编写函数getSum()求整数m的各位数字之和并返回该值。 例如m252时,各位数字之和为9。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/#include#includeusing namespace std;#include void writeinfile();int getSum(int m)/*Program*/* End */voi

28、d main()int m,s=0;m=252;s=getSum(m);couts;writeinfile();void writeinfile()fstream myfile;myfile.open(f2.txt,ios:out);myfilegetSum(252)endl;myfilegetSum(1457)endl;myfile.close();答案:-int s=0,n;while( m!=0)n=m%10;s+=n;m=m/10;return s;-第19题 (10.0分) 题号:636/*-【程序设计】-题目:约瑟夫问题这是17世纪的法国数学家加斯帕在数目的游戏问题中讲的一个故事:

29、15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/#include #include using namespace std;void output(int i);void circle(struct node link );struct node int nextp;

30、 /*指向下一个人的指针(下一个人的数组下标)*/ int no_out; /*是否被扔下海的标记。1:没有被扔下海。0:已被扔下海*/link31; /*30个人,0号元素没有使用*/int main() int i; for(i=1;i=30;i+) /*初始化结构数组*/ linki.nextp=i+1; /*指针指向下一个人(数组元素下标)*/ linki.no_out=1; /*标志置为1,表示人都在船上*/ link30.nextp=1; /*第30个人的指针指向第一个人以构成环*/ circle(link); for(i=1;i=30;i+) /*输出排列结果*/ cout(linki.no_out?教徒 :非教徒 ); output(linki.no_out

温馨提示

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

评论

0/150

提交评论