C语言编程.docx
- 文档编号:8791991
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:56
- 大小:32.33KB
C语言编程.docx
《C语言编程.docx》由会员分享,可在线阅读,更多相关《C语言编程.docx(56页珍藏版)》请在冰豆网上搜索。
C语言编程
1.程序设计题
函数fun的功能是:
将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后,t所指的数组中的内容应是“246”。
答案:
voidfun(char*s,chart[])
{
intk,n=0;
for(k=0;k if(k%2==0&&s[k]%2==0) t[n++]=s[k]; t[n]='\0'; } 2.程序设计题 编写函数fun,它的功能是: 利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。 Yn+1=cos(yn) 迭代步骤如下: (1)取y1初值为0.0。 (2)y0=y1,把y1的值赋给y0。 (3)y1=cos(y0),求出一个新的y1。 (4)若y0-y1的绝对值小于0.000001,则执行步骤(5),否则执行步骤 (2)。 (5)所求y1就是方程cos(x)-y=0的一个实根,作为函数值返回。 程序将输出结果Result=0.739085。 答案: floaty1=0.0,y0; do { y0=y1; y1=cos(y0); } while(fabs(y0-y1)>=1e-6); returny1; 3.程序设计题 程序定义了N×N的二维数组,并在主函数中自动赋值。 请编写函数fun(inta[][N],intn),函数的功能是: 使N×N的二维数组左下三角元素中的值乘以n。 例如: 若n的值为3,a数组中的值为: 197 238 456 则返回主程序后a数组中的值应为: 397 698 121518 答案: intfun(inta[][N],intn) { intj,k; for(j=0;j for(k=0;k a[j][k]*=n; } 4.程序设计题 请编写函数fun,它的功能是: 计算n门课程的平均分,计算结果作为函数值返回。 例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为: 71.80。 答案: floatfun(float*a,intn) { floats=0.0; intI; for(i=0;i s+=a[i]; returns/n; } 5.程序设计题 请编写一个函数unsignedfun(unsignedn),n是一个大于10的无符号整数,若n是m(m≥2)位的整数,则函数求出n的后m-1位的数作为函数值返回。 例如,若n的值为1234,则fun()函数值为234。 答案: unsignedt,s=0,s1=1,p=0; t=m; while(t>10) { if(t/10) p=t%10; s=s+p*s1; s1=s1*10; t=t/10; } returns; 6.程序设计题 编写函数fun,其功能是: 根据以下公式计算s,将结果作为函数值返回;n通过形参传入: S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…n) 例如: 若n的值为11时,函数的值为: 1.833333 答案: floatfun(intn) { floats=0.0; intt=0,k; for(k=1;k<=n;k++) {t+=k;s+=1.0/t;} returns; } 7.程序设计题 请编写函数fun,其功能是: 计算并输出3到m之间所有素数的平方根之和。 例如,若主函数从键盘给m输入50后,则输出为s=63.665791。 答案: intn,k,i; doublesum=0.0; for(n=3;n<=m;n++) { k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1) sum+=sqrt(n); } returnsum; 8.程序设计题 请编写函数fun,它的功能是: 求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传送给m的值为50,则程序输出: 711142122283335424449 答案: voidfun(intm,int*a,int*n) { intk; *n=0; for(k=0;k<=m;k++) if(k%7==0||k%11==0) a[(*n)++]=k; } 9.程序设计题 N名学生的成绩已在主函数中放入一个带头节点的链表结构中,a指向链表的头节点。 请编写函数fun,它的功能是: 找出学生的最高分,由函数返回。 答案: doublemax; STR*q=a; max=a->s; do { if(q->s>max) max=q->s; q=q->next; } while(q! =0); returnmax; 10.程序设计题 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 函数返回指定学号的学生数据,指定的学号在主函数中输入。 若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。 答案: STRECfun(STREC*a,char*b) { STRECt={NULL,-1}; intk; for(k=0;k if(! strcmp(a[k].num,b)) returna[k]; returnt; } 11.程序设计题 函数fun的功能是: 将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为: “ABCDEFG12345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。 最后t所指的数组中的内容应是: “135”。 答案: voidfun(char*s,chart[]) { intk,n=0; for(k=0;k if(k%2==1&&s[k]%2==1) t[n++]=s[k]; t[n]='\0'; } 13.程序设计题 给定程序中,函数fun的功能是: 把形参str所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注意: 字符串的长度大于等于2)。 答案: inti,n,j; charc; n=0; for(i=0;str[i]! ='\0';i++) n++; if(n%2==0) j=n-1; else j=n-2; c=str[j]; for(i=j-2;i>=1;i=i-2) str[i+2]=str[i]; str[1]=c; 14.程序设计题 函数fun的功能是: 将两个三位数的正整数a、b合并形成一个长整数在c中。 合并的方式是: 将a数的百位、十位和个位放在c数的十万位、千位和十位上,b数的百位、十位和个位放在c数的万位、百位和个位上。 例如: 当a=456,b=123,调用该函数后c=415263。 答案: voidfun(inta,intb,long*c) { *c=a/100; *c=*c*10+b/100; *c=*c*10+(a/10)%10; *c=*c*10+(b/10)%10; *c=*c*10+a%10; *c=*c*10+b%10; } 15.程序设计题 给定程序中,函数fun的功能是: 将两个两位数的正整数a、b合并形成一整数放在c中。 合并的方式是: 将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12。 调用该函数后,c=4152。 答案: voidfun(inta,intb,long*c) { *c=a/10*1000+a%10*10+b/10*100+b%10; } 16.程序设计题 下列程序定义了N×N的二维数组,并在主函数中赋值。 请编写函数fun,函数的功能是: 求出数组周边元素的平均值并作为函数值返回给主函数中的变量r。 例如,若c数组中的值为: 则返回主程序后r的值应为4.625000。 答案: inti,j,k=0; doubler=0.0; for(j=0;j { r+=b[0][j]; k++; } for(j=0;j { r+=b[N-1][j]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][0]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][N-1]; k++; } returnr/=k; 17.程序设计题 请编写一个函数voidfun(char*tt,intpp[]),统计在tt所指字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串: abcdefgabcdeabc后,程序的输出结果应该是: 33322110000000000000000000 答案: voidfun(char*tt,intpp[]) { intn; for(n=0;n<26;n++) pp[n]=0; while(*tt! ='\0') { if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; tt++; } } 18.程序设计题 假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 除了字符串前导和尾部的*号之外,将串中其他*号全部删除。 形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。 在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为: ****A*BC*DEF*G******,删除后,字符串中的内容应当是: ****ABCDEFG******。 答案: voidfun(char*a,char*h,char*p) { char*q=h; intn=0; while(q<=p) {if(*q! ='*')h[n++]=*q;q++;} while(*q) {h[n++]=*q;q++;} h[n]='\0'; } 19,程序设计题 请编写函数fun,其功能是: 计算并输出当x<0.97时如下多项式的值,直到|Sn-Sn-1|<0.000001为止: 例如,在主函数中从键盘给x输入0.21后,输出为: s=1.100000。 答案: doublefun(doublex) { intn=1; doubles0,s1=1.0,t=1.0; do { s0=s1; t=t*(0.5-n+1)*x/n; s1=s0+t; n++; }while(fabs(s1-s0)>=0.000001); returns1; } 20,程序设计题 请编写函数fun,它的功能是: 将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。 例如,若输入字符串"-1234",则函数把它转换为整数值-1234。 答案: longfun(char*p) { longt=0; intflag=1; if(*p=='-') {flag=-1;p++;} while(*p) {t=t*10+(*p-'0');p++;} returnflag*t; } 21.程序设计题 函数fun的功能是: 将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其voidfun(char*s,chart[]) 他依此类推。 最后t所指的数组中的内容应是“BDF12345”。 答案: voidfun(char*s,chart[]) { intk,n=0; for(k=0;k if(k%2! =0||s[k]%2! =1) t[n++]=s[k]; t[n]='\0'; } 22.程序设计题 编写函数fun,其功能是实现矩阵(3行3列)的转置(即行列互换)。 例如,输入下面的矩阵: 100200300 400500600 700800900 程序输出: 100400700 200500800 300600900 答案: intfun(intarray[3][3]) { intj,k,t; for(j=0;j<3;j++) for(k=0;k { t=s[j][k]; s[j][k]=s[k][j]; s[k][j]=t; } } 23.程序设计题 请编写函数fun,函数的功能是: 将大于形参m且紧靠m的k个素数存入xx所指的数组中。 例如,若输入17、5,则应输出: 19、23、29、31、37。 答案: voidfun(intm,intk,intxx[]) { intj,n=0; while(n { m++; for(j=2;j if(m%j==0)break; if(j>=m)xx[n++]=m; } } 24.程序设计题 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把分数最低的学生数据放在b所指的数组中。 注意,分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 答案: intfun(STREC*a,STREC*b) { intj,n=0;doublemin=100.0; for(j=0;j if(min>a[j].s) min=a[j].s; for(j=0;j if(a[j].s==min) b[n++]=a[j]; returnn; } 25.程序设计题 N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 请编写函数fun,其功能是: 找出学生的最低分,由函数值返回。 答案: doublefun(STREC*h) { doublemin=h->s; while(h! =NULL) { if(min>h->s)min=h->s; h=h->next; } returnmin; } 26.程序设计题 规定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 将字符串中的前导*号全部删除,中间和尾部的*号不删除。 例如,字符串中的内容为: *******A*BC*DEF*G****,删除后,字符串中的内容应当是: A*BC*DEF*G****。 在编写函数时,不得使用C语言提供的字符串。 答案: fun(char*s) { intk=0,j=0,n=strlen(s); while(s[k]=='*') k++; for(;k s[j++]=s[k]; } 27.程序设计题 请编写函数fun,其功能是计算并输出下列多项式的值: Fn=1+1/1! +1/2! +1/3! +1/4! +…+1/m! 例如,若主函数从键盘给m输入5,则输出为F=2.716667。 答案: doublet,s=1.0; inti,j; for(i=1;i<=m;i++) { t=1.0; for(j=1;j<=i;j++) t*=j; s+=1.0/t; } returns; 28.程序设计题 请编写函数fun,其功能是: 计算并输出: 例如,若主函数从键盘给m输入10后,则输出为F=104.478749。 答案: inti; doublef=1.0,p=1.0; for(i=2;i<=m;i++) { p+=pow(i,0.5); f+=p; } returnf; 29.程序设计题 函数fun的功能是: 将a、b两个两位正整数合并形成一个新的整数放在c中。 合并的方式是: 将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。 例如,当a=45、b=12时,调用该函数后c=1425。 答案: voidfun(inta,intb,long*c) { *c=a/10*100+a%10+b/10*1000+b%10*10; } 30.程序设计题 数组a[N]保存着一组3位数的无符号正整数,其元素的个数通过变量len传入fun函数。 请补充fun函数,该函数的功能是: 从数组a中找出个位和百位数字相等的所有无符号整数,结果保存在数组yy中,其个数由fun函数返回。 例如,当a[6]={111,323,677,456,987,999}时,b[3]={111,323,999}。 答案: inti,n=0; intg,b; for(i=0;i { g=a[i]%10; b=a[i]/100; if(g==b) bb[n++]=a[i]; } returnn; 31.程序设计题 请编写函数fun,其功能是求出二维数组周边元素之和,该和值作为函数值返回。 二维数组中的值在主函数中赋予。 例如: 二维数组中的值为 13579 29994 69998 13570 则函数值为61。 答案: intfun(inta[M][N]) { intk,s=0; for(k=0;k s+=a[0][k]+a[M-1][k]; for(k=1;k s+=a[k][0]+a[k][N-1]; returns; } 32程序设计题 请编写函数fun,其功能是: 将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入“abc4EFg”,则应输出“aBc4EFg”。 答案: voidfun(char*ss) { intk; for(k=1;k if(ss[k]>='a'&&ss[k]<='z') ss[k]=ss[k]-'a'+'A'; } 33.程序设计题 编写函数fun,其功能是,根据以下公式求P的值,结果由函数值返回。 M与n为两个正整数且要求m>n: P=m! /(n! *(m-n)! ) 例如: m=12、n=8时,运行结果为495.000000。 答案: floatfun(intm,intn) { floats=1.0; intk; for(k=n+1;k<=m;k++) s*=k; for(k=1;k<=(m-n);k++) s/=k; returns; } 34.程序设计题 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60、69,则应当把分数在60~69之间的学生数据进行输出,包含60分和69分的学生数据。 主函数中将把60放在low中,把69放在heigh中。 答案: intfun(STREC*a,STREC*b,intl,inth) { intk,n=0; for(k=0;k if(a[k].s>=l&&a[k].s<=h) b[n++]=a[k]; returnn; } 35.程序设计题 请编写函数fun,函数的功能是: 移动一维数组中的内容;若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为: 1、2、3、4、5、6、7、8、9、10,p的值为3;移动后一维数组中的内容应为: 5、6、7、8、9、10、1、2、3、4。 答案: voidfun(int*w,intp,intn) { intj,k,t=0; for(j=0;j<=p;j++) { t=w[0]; for(k=1;k w[k-1]=w[k]; w[n-1]=t; } } 36.程序设计题 请编写函数fun(),该函数的功能是: 统计一行字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。 答案: intfun(char*s) { inti,j=0; for(i=0;s[i]! ='\0';i++) if(s[i]! =''&&(s[i+1]==''|| s[i+1]=='\0')) j++; returnj; } 37.程序设计题 请编写函数fun(),该函数的功能是: 统计各年龄段的人数。 N个年龄通过调用随机函数获得,并放在主函数的age数组中。 要求函数把0~9岁年龄段的人数在d[0]中,把10~19岁年龄段的人数放在d[1]中,把20~29岁年龄段的人数放在d[2]中,依次类推,把100岁(含100)以上年龄的人数都放在d[10]中。 结果在主函数中输出。 答案: voidfun(int*a,int*b) { inti,j; for(j=0;j b[j]=0; for(i=0;i if(a[i]>=100)b[10]++; elseb[a[i]/10]++; } 38.程序设计题 请编写函数fun(),该函数的功能是: 删去一维数组中所有相同的数,使之只剩一个。 数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程
![提示](https://static.bdocx.com/images/bang_tan.gif)