二级C语言程序设计方案题.docx
- 文档编号:17046144
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:20
- 大小:39.30KB
二级C语言程序设计方案题.docx
《二级C语言程序设计方案题.docx》由会员分享,可在线阅读,更多相关《二级C语言程序设计方案题.docx(20页珍藏版)》请在冰点文库上搜索。
二级C语言程序设计方案题
C语言程序设计
请编写函数fun,其功能是:
找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
intfun(inta[][M])
{
inti,j,max=a[0][0]。
for(i=0。
i<2。
i++)
for(j=0。
j j++) if(max max=a[i][j]。 returnmax。 } 编写函数fun,其功能是: 根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。 程序运行后,若输入精度0.0005,则程序应输出为3.14…。 doublefun(doubleeps) { doubles=1.0,s1=1.0。 intn=1。 while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/ {s1=s1*n/(2*n+1)。 /*求多项式的每一项*/ s=s+s1。 /*求和*/ n++。 } return2*s。 } 编写函数fun,其功能是: 求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。 voidfun(int*a,int*n) { inti,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。 voidfun(char*a) { inti,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语言提供的字符串函数。 voidfun(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*******。 voidfun(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"。 voidfun(char*a,intn,inth,inte) { inti,j=0。 for(i=h。 i i++)/*第一个字母和最后一个字母之间的字符全不删除*/ a[j++]=a[i]。 a[j]='\0'。 /*在字符串最后加上结束标识*/ } 规定输入的字符串中只包含字母和*号。 请编写函数fun,其功能是: 除了字符串前导的*号之外,将串中其它*号全部删除。 在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为: ****A*BC*DEF*G*******,删除后,字符串中的内容应当是: ****ABCDEFG。 voidfun(char*a) { inti=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语言提供的字符串函数。 voidfun(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语言提供的字符串函数。 voidfun(char*a) { inti=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 voidfun(charp1[],charp2[]) { inti,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。 voidfun(STREC*a) { inti。 a->ave=0.0。 for(i=0。 i i++) a->ave=a->ave+a->s[i]。 /*求各门成绩的总和*/ a->ave/=N。 /*求平均分*/ } N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 请编写函数fun,其功能是: 求出平均分,并由函数值返回。 例如,若学生的成绩是: 8576698591726487,则平均分应当是: 78.625。 doublefun(STREC*h) { doubleave=0.0。 STREC*p=h->next。 while(p! =NULL) {ave=ave+p->s。 p=p->next。 } returnave/N。 } 编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。 例如,若输入17,则应输出: 46891012141516。 voidfun(intm,int*k,intxx[]) { inti,j,n=0。 for(i=4。 i i++)/*找出大于1小于整数m的非素数*/ {for(j=2。 j j++) if(i%j==0)break。 if(j } *k=n。 /*返回非素数的个数*/ } 编写函数fun,其功能是: 求ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串123412132,输入字符为1,则输出3。 intfun(char*ss,charc) { inti=0。 for(。 *ss! ='\0'。 ss++) if(*ss==c) i++。 /*求出ss所指字符串中指定字符的个数*/ returni。 } 编写函数fun,其功能是: 计算n门课程的平均分,结果作为函数值返回。 例如: 若有5门课程的成绩是: 90.5,72,80,61.5,55,则函数的值为: 71.80。 floatfun(float*a,intn) { inti。 floatav=0.0。 for(i=0。 i i++)/*求分数的总和*/ av=av+a[i]。 return(av/n)。 /*返回平均值*/ } 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是: 把分数最高的学生数据放在b所指的数组中。 注意: 分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 intfun(STREC*a,STREC*b) { inti,j=0,max=a[0].s。 /*找出最大值*/ for(i=0。 i i++) if(max for(i=0。 i i++) if(max==a[i].s) b[j++]=a[i]。 /*找出成绩与max相等的学生的记录,存入结构体b中*/ returnj。 /*返回最高成绩的学生人数*/ } 编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。 例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是: 33322110000000000000000000 voidfun(char*tt,intpp[]) { inti。 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 char*fun(char*s,char*t) { inti,j。 for(i=0。 s[i]! ='\0'。 i++)。 /*求字符串的长度*/ for(j=0。 t[j]! ='\0'。 j++)。 if(i<=j)/*比较两个字符串的长度*/ returnt。 /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/ else returns。 } 学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是: 函数返回该学号的学生数据,指定的学号在主函数中输入。 若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。 (用于字符串比较的函数是strcmp)。 STRECfun(STREC*a,char*b) {inti。 STRECstr={"\0",-1}。 /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/ for(i=0。 i i++) if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/ str=a[i]。 returnstr。 /*返回学生记录*/ } 函数fun的功能是: 将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为"ABCDEFG123456",其中字符A的ASCII码值为奇数,因此应当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。 最后t所指的数组中的内容应是"246"。 voidfun(char*s,chart[]) { inti,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。 doublefun() { doublex0,x1。 x1=0.0。 do { x0=x1。 x1=cos(x0)。 }while(fabs(x0-x1)>=1e-6)。 returnx1。 } 学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是: 把分数最低的学生数据放入b所指的数组中,注意: 分数最低的学生可能不止一个,函数返回分数最低的学生人数。 intfun(STREC*a,STREC*b) { inti,j=0,min=a[0].s。 for(i=0。 i i++) if(min>a[i].s) min=a[i].s。 /*找出最小值*/ for(i=0。 i i++) if(min==a[i].s) b[j++]=a[i]。 /*找出成绩与min相等的学生的记录,存入结构体b中*/ returnj。 } 编写函数fun,其功能是计算: s作为函数值返回。 在C语言中可调用log(n)函数求ln(n)。 log函数的引用说明为: doublelog(doublex)。 例如,若m的值为20,则fun函数值为6.506583。 doublefun(intm) { inti。 doubles=0.0。 for(i=1。 i<=m。 i++) s=s+log(i)。 /*计算s=ln (1)+ln (2)+ln(3)+…+ln(m)*/ returnsqrt(s)。 /*对s求平方根并返回*/ } 函数fun的功能是: 将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中。 例如,当s所指字符串中的内容为"ABCDEFGHIJK"时,在t所指数组中的内容应是: "BDFHJ"。 voidfun(char*s,chart[]) { inti,j=0,k=strlen(s)。 /*k为字符串的长度*/ for(i=1。 i 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。 voidfun(inta,intb,long*c) { *c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000。 } 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是: 按分数降序排列学生的记录,高分在前,低分在后。 voidfun(STRECa[]) { inti,j。 STRECt。 for(i=1。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言程序设计 方案