收藏 分销(赏)

2023年二级C语言程序设计题.doc

上传人:二*** 文档编号:4484825 上传时间:2024-09-24 格式:DOC 页数:21 大小:70.04KB 下载积分:5 金币
下载 相关 举报
2023年二级C语言程序设计题.doc_第1页
第1页 / 共21页
本文档共21页,全文阅读请下载到手机保存,查看更方便
资源描述
C语言程序设计 请编写函数fun,其功能是:找出2×M整型二维数组中最大元素值,并将此值返回调用函数。 int fun (int a[][M]) { int i,j,max=a[0][0]; for(i=0;i<2;i++) for(j=0;j<M;j++) if(max<a[i][j]) max=a[i][j]; return max; } 编写函数fun,其功能是:依照如下公式求π值(规定精度0.0005,即某项不大于0.0005时停止迭代)。 程序运营后,若输入精度0.0005,则程序应输出为3.14…。 double fun ( double eps) { double s=1.0,s1=1.0; int n=1; while(s1>=eps) /*当某项不不大于精度规定期,继续求下一项*/ {s1=s1*n/(2*n+1); /*求多项式每一项*/ s=s+s1; /*求和*/ n++; } return 2*s; } 编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同步被7和11整除所有整数,并将其放在a所指数组中,通过n返回这些数个数。 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) a[j++]=i; *n=j; } 规定输入字符串中只涉及字母和*号。编写函数fun,其功能是:删除字符串中所有*号。编写函数时,不得使用C语言提供字符串函数。 例如,字符串中内容为:****A*BC*DEF*G*******,删除后字符串中内容应当是:ABCDEFG。 void fun( char *a ) { int i,j=0; for(i=0;a[i]!='\0';i++) if(a[i]!='*') a[j++]=a[i]; /*若不是要删除字符'*'则留下*/ a[j]='\0'; } 规定输入字符串中只涉及字母和*号。编写函数fun,其功能是:将字符串中前导*号所有删除,中间和尾部*号不删除。 例如,字符串中内容为:"*******A*BC*DEF*G****",删除后字符串中内容应当是:"A*BC*DEF*G****"。编写函数时,不得使用C语言提供字符串函数。 void fun( char *a ) { char *p=a; while(*p=='*') p++; /*指针p指向字符串第一种字母*/ for(;*p!='\0';p++,a++) *a=*p; /*从第一种字母开始,其后字符都放入指针a所指字符串中*/ *a='\0'; /*在字符串最后加上字符串结束标记*/ } 假定输入字符串中只涉及字母和*号。请编写函数fun,其功能是:除了尾部*号之外,将字符中其他*号所有删除。形参p已指向字符串中最后一种字母。在编写函数时,不得使用C语言提供字符串函数。 例如,字符串中内容为****A*BC*DEF*G*******,删除后,字符串中内容应当是ABCDEFG*******。 void fun( char *a,char *p ) { char *t=a; for(;t<=p;t++) if(*t!='*') *(a++)=*t; for(;*t!='\0';t++) *(a++)=*t; *a='\0'; /*在字符串最后加上字符串结束标记*/ } 规定输入字符串中只涉及字母和*号。请编写函数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;i<n-e;i++) /*第一种字母和最后一种字母之间字符全不删除*/ a[j++]=a[i]; a[j]='\0'; /*在字符串最后加上结束标记*/ } 规定输入字符串中只涉及字母和*号。请编写函数fun,其功能是:除了字符串前导*号之外,将串中其他*号所有删除。在编写函数时,不得使用C语言提供字符串函数。 例如,字符串中内容为:****A*BC*DEF*G*******,删除后,字符串中内容应当是:****ABCDEFG。 void fun( char *a ) { int i=0; char *p=a; while(*p&&*p=='*') { a[i]=*p; i++; p++; } while(*p) { if(*p!='*') {a[i]=*p;i++;} p++; } a[i]='\0'; } 规定输入字符串中只涉及字母和*号。请编写函数fun,其功能是:将字符串尾部*号所有删除,前面和中间*号不动。 例如,字符串中内容为:"****A*BC*DEF*G*******",删除后,字符串中内容应当是:"****A*BC*DEF*G"。在编写函数时,不得使用C语言提供字符串函数。 void fun( char *a ) { while(*a!='\0') a++; a--; /*指针a指向字符串尾部*/ while(*a=='*') a--; /*指针a指向最后一种字母*/ *(a+1)='\0'; /*在字符串最后加上结束标志符*/ } 规定输入字符串中只涉及字母和*号。请编写函数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=='*') /*判断*p与否是*号,并记录*号个数*/ { n++;p++; } while(*p) /*将前导*号后字符传递给a*/ { a[i]=*p;i++;p++; } while(n!=0) { a[i]='*';i++;n--; } a[i]='\0'; } 编写函数fun,其功能是:实现两个字符串连接(不要使用库函数strcat),即把p2所指字符串连接到p1所指字符串背面。 例如,分别输入下面两个字符串: FirstString-- SecondString 程序输出: FirstString--SecondString void fun(char p1[],char p2[]) { int i,j; for(i=0;p1[i]!='\0';i++) ; for(j=0;p2[j]!='\0';j++) p1[i++]=p2[j]; p1[i]='\0'; } 某学生记录由学号、8门课程成绩和平均分构成,学号和8门课程成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生平均分,并放入记录ave成员中。 例如,学生成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则她平均分应为78.875。 void fun(STREC *a) { int i; a->ave=0.0; for(i=0;i<N;i++) a->ave=a->ave+a->s[i]; /*求各门成绩总和*/ a->ave/=N; /*求平均分*/ } N名学生成绩已在主函数中放入一种带头节点链表构造中,h指向链表头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。 例如,若学生成绩是:85 76 69 85 91 72 64 87,则平均分应当是: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; } 编写函数fun,其功能是:将所有不不大于1不大于整数m非素数存入xx所指数组中,非素数个数通过k返回。 例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。 void fun( int m,int *k,int xx[] ) { int i,j,n=0; for(i=4;i<m;i++) /*找出不不大于1不大于整数m非素数*/ { for(j=2;j<i;j++) if(i%j==0) break; if(j<i) xx[n++]=i; } *k=n; /*返回非素数个数*/ } 编写函数fun,其功能是:求ss所指字符串中指定字符个数,并返回此值。 例如,若输入字符串,输入字符为1,则输出3。 int fun(char *ss,char c) { int i=0; for(;*ss!='\0';ss++) if(*ss==c) i++;/*求出ss所指字符串中指定字符个数*/ return i; } 编写函数fun,其功能是:计算n门课程平均分,成果作为函数值返回。 例如:若有5门课程成绩是:90.5,72,80,61.5,55,则函数值为:71.80。 float fun ( float *a , int n ) { int i; float av=0.0; for(i=0;i<n;i++) /*求分数总和*/ av=av+a[i]; return(av/n); /*返回平均值*/ } 学生记录由学号和成绩构成,N名学生数据已放入主函数中构造体数组s中,请编写函数fun,其功能是:把分数最高学生数据放在b所指数组中。注意:分数最高学生也许不止一种,函数返回分数最高学生人数。 int fun( STREC *a,STREC *b ) { int i,j=0,max=a[0].s; /*找出最大值*/ for(i=0;i<N;i++) if(max<a[i].s) max=a[i].s; for(i=0;i<N;i++) if(max==a[i].s) b[j++]=a[i]; /*找出成绩与max相等学生记录,存入构造体b中*/ return j; /*返回最高成绩学生人数*/ } 编写函数void fun(char *tt,int pp[]),记录在tt所指字符串中'a'到'z'26个小写字母各自浮现次数,并依次放在pp所指数组中。 例如,当输入字符串abcdefgabcdeabc后,程序输出成果应当是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 void fun(char *tt,int pp[]) { int i; for(i=0;i<26;i++) pp[i]=0; /*初始化pp数组各元素为0*/ for(;*tt!='\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; } 编写函数fun,其功能是:比较字符串长度,(不得使用C语言提供求字符串长度函数),函数返回较长字符串。若两个字符长度相似,则返回第一种字符串。 例如,输入beijing<CR>shanghai<CR>(<CR>为回车键),函数将返回shanghai。 char *fun ( char *s, char *t) { int i,j; for(i=0;s[i]!= '\0';i++); /*求字符串长度*/ for(j=0;t[j]!= '\0';j++); if(i<=j) /*比较两个字符串长度*/ return t; /*函数返回较长字符串,若两个字符串长度相等,则返回第1个字符串*/ else return s; } 学生记录由学号成绩构成,N名学生数据已放入主函数中构造体数组s中,请编写函数fun,其功能是:函数返回该学号学生数据,指定学号在主函数中输入。若没找到指定学号,在构造体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较函数是strcmp)。 STREC fun( STREC *a,char *b ) {int i; STREC str={"\0",-1}; /*若没找到指定学号,在构造体变量中给学号置空串,给成绩置-1*/ for(i=0;i<N;i++) if(strcmp(a[i].num,b)==0) /*找到指定学号学生数据*/ str=a[i]; return str; /*返回学生记录*/ } 函数fun功能是:将s所指字符串中除下标为偶数同步ASCII码值也为偶数字符外,别的所有删除;字符串中剩余字符所形成新串放在t所指数组中。 例如,若s所指字符串中内容为"ABCDEFG123456",其中字符AASCII码值为奇数,因而应当删除;字符BASCII码值为偶数,但在数组中下标为奇数,因而也应当删除;字符2ASCII码值为偶数,在数组中下标也为偶数,因而不应当删除,其她依此类推。最后t所指数组中内容应是"246"。 void fun(char *s,char t[]) { int i,j=0; for(i=0;s[i]!='\0';i++) if(i%2==0 && s[i]%2==0) /*将s所指字符串中下标和ASCII码值都为偶数字符放入数组t中*/ t[j++]=s[i]; t[j]='\0'; /*在字符串最后加上结束标记*/ } 编写函数fun,其功能是:运用下面简朴迭代办法求方程cos(x)-x=0一种实根。 迭代环节如下: (1)取x1初值为0.0; (2)x0=x1,将x1值赋给x0; (3)x1=cos(x0),求出一种新x1; (4)若x0-x1绝对值不大于0.000001,执行步聚(5),否则执行步聚(2); (5)所求x1就是方程cos(x)-x=0一种实根,作为函数值返回。 程序将输出成果Root=0.739086。 double fun() { double x0,x1; x1=0.0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>=1e-6); return x1; } 学生记录由学号和成绩构成,N名学生数据已放入主函数中构造体数组中,请编写函数fun,其功能是:把分数最低学生数据放入b所指数组中,注意:分数最低学生也许不止一种,函数返回分数最低学生人数。 int fun( STREC *a,STREC *b ) { int i,j=0,min=a[0].s; for(i=0;i<N;i++) if(min>a[i].s) min=a[i].s; /*找出最小值*/ for(i=0;i<N;i++) if(min==a[i].s) b[j++]=a[i]; /*找出成绩与min相等学生记录,存入构造体b中*/ return j; } 编写函数fun,其功能是计算: s作为函数值返回。 在C语言中可调用log(n)函数求ln(n)。log函数引用阐明为:double log(double x)。 例如,若m值为20,则fun函数值为6.506583。 double fun( int m ) { int i; double s=0.0; for(i=1;i<=m;i++) s=s+log(i); /*计算s=ln(1)+ln(2)+ln(3)+…+ln(m)*/ return sqrt(s); /*对s求平方根并返回*/ } 函数fun功能是:将s所指字符串中下标为偶数字符删除,剩余字符形成新串放在t所指数组中。 例如,当s所指字符串中内容为"ABCDEFGHIJK"时,在t所指数组中内容应是:"BDFHJ"。 void fun(char *s,char t[]) { int i,j=0,k=strlen(s); /*k为字符串长度*/ for(i=1;i<k;i=i+2) /*将s所指字符串中下标为奇数字符存入t所指字符串中*/ t[j++]=s[i]; t[j]='\0'; } 编写函数fun,其功能是:将a、b中两个两位正整数合并成一种新整数放在c中。合并方式是:将a中十位和个位数依次放在变量c百位和个位上,b中十位和个位数依次放在变量c十位和千位上。 例如,当a=45,b=12,调用该函数后c=2415。 void fun(int a,int b,long *c) { *c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000; } 学生记录由学号和成绩构成,N名学生数据已放入主函数中构造体数组s中,请编写函数fun,其功能是:按分数降序排列学生记录,高分在前,低分在后。 void fun( STREC a[] ) { int i,j; STREC t; for(i=1;i<N;i++) /*用冒泡法进行排序,进行N-1次比较*/ for(j=0;j<N-1;j++) /*在每一次比较中要进行N-1次两两比较*/ if(a[j].s<a[j+1].s) {t=a[j];a[j]=a[j+1];a[j+1]=t;} /*按分数高低排列学生记录,高分在前*/ } 学生记录由学号和成绩构成。N名学生数据已放入主函数中构造体数组s中,请编写函数fun,其功能是:把高于等于平均分学生数据放在b所指数组中,高于等于平均分学生人数通过形参n传回,平均分通过函数值返回。 double fun( STREC *a,STREC *b,int *n ) { int i; double av=0.0; *n=0; for(i=0;i<N;i++) av=av+a[i].s; av=av/N; /*求平均值*/ for(i=0;i<N;i++) if(av<=a[i].s) { b[*n]=a[i];*n=*n+1;} /*将高于等于平均分学生存入b所指存储单元中,并记录人数*/ return av; /*返回平均分*/ } 编写函数fun,其功能是:将1到m之间(含m)能被7或11整除所有整数放在数组a中,并通过n返回这些数个数。例如,若传给m值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 void fun ( int m,int *a ,int *n ) { int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) /*求出1到m(含m)之内能被7或11整除所有整数放在数组a中*/ a[j++]=i; *n=j; /*返回这些数个数*/ } N名学生成绩已在主函数中放入一种带有头节点链表构造中,h指向链表头节点。请编写函数fun,其功能是:找出学生最高分,并由函数值返回。 double fun( STREC *h ) { double max=h->s; while(h!=NULL) /*通过循环找到最高分数*/ {if(max<h->s) max=h->s; h=h->next; } return max; } 请编写函数fun,其功能是:找出一维整型数组元素中最大值及其所在下标,并通过形参传回。数组元素中值已在主函数中赋予。 主函数中x是数组名,n是x中数据个数,max存储最大值,index存储最大值所在元素下标。 void fun(int a[],int n,int *max,int *d) { int i; *max=a[0]; *d=0; for(i=0;i<n;i++) /*将最大元素放入指针max所指单元,最大元素下标放入指针d所指单元*/ if(*max<a[i]) {*max=a[i];*d=i;} } 编写函数fun,其功能是:将s所指字符串中除了下标为奇数同步ASCII值也为奇数字符之外,别的所有字符所有删除,串中剩余字符所形成一种新串放在t所指数组中。 例如,若s所指字符串内容为:"ABCDEFG12345",其中字符AASCII码值为奇数,但所在元素下标为偶数,因而需要删除;而字符1ASCII码值为奇数,所在数组中下标也为奇数,因而不应当删除,其他依此类推。最后t所指数组中内容应为:"135"。 void fun(char *s,char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i<n;i++) if(i%2!=0&&s[i]%2!=0) {t[j]=s[i]; /*将下标为奇数同步ASCII码值为奇数字符放入数组t中*/ j++; } t[j]='\0';/*最后加上结束标记符*/ } 编写函数fun,其功能是:实现B=A+A',即将矩阵A加上A转置,存储在矩阵B中。计算成果在main函数中输出。 例如,输入下面矩阵:其转置矩阵为:       程序输出: void fun ( int a[3][3],int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩阵a加上a转置,存储在矩阵b中*/ } 请编写函数fun,该函数功能是:将M行N列二维数组中数据,按列顺序依次放到一维数组中。一维数 组中数据个数存储在形参n所指存储单元中。 例如,若二维数组中数据为 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中内容应是: 33 44 55 33 44 55 33 44 55 33 44 55 void fun(int (*s)[10],int *b,int *n,int mm,int nn) { int i,j; for(j=0;j<nn;j++) /*将二维数组中数据按列顺序依次放入一维数组中*/ for(i=0;i<mm;i++) { b[*n]=*(*(s+i)+j); *n=*n+1; /*通过指针返回元素个数*/ } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服