c语言程序设计经典考题.doc_第1页
c语言程序设计经典考题.doc_第2页
c语言程序设计经典考题.doc_第3页
c语言程序设计经典考题.doc_第4页
c语言程序设计经典考题.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1.找出二维数组中最大的数.int fun (int aM)int i,j,max=a00; for(i=0;i2;i+) for(j=0;jM;j+) if(max=eps) /*当某项大于精度要求时,继续求下一项*/ s1=s1*n/(2*n+1); /*求多项式的每一项*/ s=s+s1; /*求和*/ n+; return 2*s;3. 求出能被整除的个数void fun (int *a, int *n) int i,j=0; for(i=1;i=1000;i+) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/ if(i%7=0|i%11=0)&i%77!=0) aj+=i; *n=j; 4.求出字符串中只有字母的字符void fun( char *a )int i,j=0; for(i=0;ai!=0;i+) if(ai!=*) aj+=ai; /*若不是要删除的字符*则留下*/ aj=0;5.实现两个字符串的连接void fun(char p1, char p2)int i,j; for(i=0;p1i!=0;i+) ; for(j=0;p2j!=0;j+) p1i+=p2j; p1i=0;6.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。void fun(STREC *a)double ave=0.0; int i; for(i=0;iave=a-ave+a-si; a-ave/=N;7.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。例如,若学生的成绩是:8576698591726487,则平均分应当是:78.625。double fun( STREC *h ) double ave=0.0; STREC *p=h-next; while(p!=NULL) ave=ave+p-s; p=p-next; return ave/N;8.编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。例如,若输入17,则应输出:46891012141516。void fun( int m, int *k, int xx )/*int i,j;int t=0;for(i=2;im;i+)j=2;while(ji)if(i%j=0)xxt=i;t+;break;j+;*k=t;*/9.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。int fun(char *ss, char c)int i=0; for(;*ss!=0;ss+) if(*ss=c) i+;/*求出ss所指字符串中指定字符的个数*/ return i;10.其功能是计算n门课程的平均分,结果作为函数值返回。float fun ( float *a , int n )int i;float av=0.0; for(i=0; in;i+)av=av+ai; return(av/n);11.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。int fun( STREC *a, STREC *b ) int i,j=0,max=a0.s; /*找出最大值*/ for(i=0;iN;i+) if(maxai.s) max=ai.s; for(i=0;iN;i+) if(max=ai.s) bj+=ai; /*找出成绩与max相等的学生的记录,存入结构体b中*/ return j; /*返回最高成绩的学生人数*/12.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*ABCDEFG。void fun( char *a ) int i=0; char *p=a; while(*p&*p=*) ai=*p; i+; p+; while(*p) if(*p!=*) ai=*p;i+; p+; ai=0;13.下列给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指字符串为abcdefgh,执行结果为ahcbedgf。void fun(char *tt, int pp)int i; for(i=0;i=a&*tt=z) pp*tt-a+; 14.下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。void fun( char *a )while(*a!=0) a+; a-; /*指针a指向字符串的尾部*/ while(*a=*) a-; /*指针a指向最后一个字母*/ *(a+1)=0; /*在字符串最后加上结束标志符*/15.下列给定程序中已建立了一个带头结点的单向链表,在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。char *fun ( char *s, char *t)int i,j; for(i=0;si!= 0;i+); /*求字符串的长度*/ for(j=0;tj!= 0;j+); if(i=j) /*比较两个字符串的长度*/ return t; /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/ else return s;16.学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。 STREC fun( STREC *a, char *b )int i; STREC str=0,-1; /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置1*/ for(i=0;i字符数组2,函数值大于0(正数);若字符数组1字符数组2,函数值等于0;若字符数组1=1e-6);return x1;19.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部。例如,字符串中的内容为:*A*BC*DEF*G*,移动后,字符串中的内容应当是:A*BC*DEF*G*。在编写函数时,不得使用C语言提供的字符串函数。void fun( char *a )int i=0,n=0;char *p;p=a;while (*p=*) n+;p+;while(*p) ai=*p;i+;p+;while(n!=0)ai=*;i+;n-;ai=0;20.学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。【参考答案】int fun( STREC *a, STREC *b )int i,j=0,min=a0.s; for(i=0;iai.s) min=ai.s; /*找出最小值*/ for(i=0;iN;i+) if(min=ai.s) bj+=ai; /*找出成绩与min相等的学生的记录,存入结构体b中*/ return j; 【考点分析】本题考查:查找结构体数组中的最小数据,需要通过for循环语句和if条件语句来完成。【解题思路】本题中第一个循环语句的作用是遍历数组求出最低分数,第二个循环语句的作用是将数组中的元素与最低分比较,查找是否存在与最低分相等的成绩。21.编写函数fun,其功能是计算:s作为函数值返回。 在C语言中可调用log(n)函数求ln(n)。log函数的引用说明为:double log(double x)。【参考答案】double fun( int m ) int i; double s=0.0; for(i=1;i=m;i+) s=s+log(i); /*计算sln(1)ln(2)ln(3)ln(m)*/ return sqrt(s); /*对s求平方根并返回*/【考点分析】本题考查:计算表达式的值运用for循环语句通过累加操作求和;平方根函数sqrt()的使用。 【解题思路】首先计算从1到m的对数的和,因此循环变量的范围是1m,每次循环都进行一次累加求和。该题需要注意的是,log()函数的形式参数应当为double型变量,而用于循环的基数变量为整数,需要进行强制转换。在返回的时候求出平方根。22.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:只删除字符前导和尾部的*号,串中字母间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:A*BC*DEF*G。void fun( char *a, int n,int h,int e )int i,j=0; for(i=h;in-e;i+) aj+=ai; aj=0;【参考答案】void fun(char *s, char t)int i,j=0,k=strlen(s); /*k为字符串的长度*/ for(i=1;ik;i=i+2) /*将s所指字符串中下标为奇数的字符存入t所指字符串中*/ tj+=si; tj=0;【考点分析】本题考查:删除字符串中指定字符,采用保留非指定字符的方法操作。【解题思路】本题使用了一种i永远是奇数的循环方法,即for(i1;ik;ii2),因为开始时i的值为1,当i2循环时,值永远是奇数。循环结束后在新串的尾部加上结束符0。21.适用于数字.int fun(char *str) int i,n=0,fg=1; char *p=str; while (*p) /*将指针p置位到字符串末尾,并统计字符数*/ n+; p+; for(i=0;in/2;i+) /*循环比较字符*/ if(stri=strn-1-i) ;

温馨提示

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

评论

0/150

提交评论