1、例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。void fun(char *p,char *q,char *c) int k=0; while(*p|*q)/*found*/ if (*p=*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+ ; k+ char a10=fshADfg,b10=sdAEdi,c80=0; fun(a,b,c);The string a: puts(a);The string
2、 b: puts(b);The result : puts(c);3 . 编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=16,b=35,调用该函数后,c=5361。部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include(2)错误:k+k+;【解析】错误1:依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为=错误2:C语言规定,每个语句要用
3、分号结束。3. 编程题 *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;【解析】语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意/和%的用法。下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个
4、元素求平均值。#define SIZE 20fun (double *s,double *w) int k,i; double sum; for(k=2,i=0;iSIZE; si=k;k+=2; sum=0.0; for(k=0,i=0; sum+=si; if(i+1)【1】5=0) wk=sum/5; sum=0; 【2】 k; double aSIZE,bSIZE/5; int i, k; k=fun(a,b);The original data:n if(i%5=0) printf(%4.0f,ai);nnThe result:k;i+) printf(%6.2f,【3】);nn(2
5、)函数fun()的功能是:求出一个2M整型二维数组中最大元素的值,并将此值返回调用函数。#define M 4fun (int 【1】) int i,j,max=【2】;2; for(j=0;jM;j+) if(max【3】aij) max=aij; return max; FILE *wf; int arr2M=5,8,3,45,76,-4,12,82;max=%dn,fun(arr); wf=fopen(out.dat,w fprintf (wf,%d fclose(wf);下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。y=1-1/(22)+1/(33)-1/(4
6、4)+(-1)(m+1)/(mm)m中的值为5,则应输出0.838611。double fun(int m) double y=1.0; int j=1; for(i=2; i=m; i+) j=-1*j; y+=1/(i * i); return(y); int n=5;nThe result is %lfn ,fun(n);请编一个函数void fun(int ttMN, int ppN), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。#define M 3#define N 4void fun(int ttM
7、N,int ppN) int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56; int pN,i,j,k;The riginal data is:N;%6d,tij); fun(t,p);nThe result is: for(k=0;kmax) /*如果各列中的其他元素比最大值还大,则将这个更大的元素看做当前该将s所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。ctype.hvoid fun(char *s)while(【1】) if(*s*saz) if(*s=) *s=; else if(*s= e
8、lse *s+=【2】; 【3】; char s80;n Enter a string with lengthsj) /*如果后面字符的ASCII码值小于该字符的ASCII码值*/ t=si; /*则交换这两个字符*/ si=sj; sj=t;【解析】本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素si和sj进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,则交换这两个数组元素的值。下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在
9、高位,低位仍在低位。当s中的数为87653142时,t中的数为7531。void fun(long s,long *t)int d; long s1=1; *t=0; while(s0) d=s【1】10; if(d%2!=0) *t=d*s1+*t; s1*=【2】; s/=【3】; long s, t;nPlease enter s:%lds); fun(s,&t);The result is :,t);下列给定程序中函数fun()的功能是计算1/n!的值。给n输入5,则输出0.008333。int fun(int n) double result =1.0; if(n=0) return
10、 1.0; while(n1 & n double fun(int n)clrscr();printf(s=%fn, fun(1000);【1】% 【2】10 【3】10根据题目的意思,此处是由低到高逐位地提取变量d的每一位,然后再进行判断,所以可以推断出这里应该使用取余符号 。根据题目的意思,这里是把提取出来满足条件的数字依次从低到高填入一个新的变量t中,所以进行的操作应该是每一个数字都循环乘以10,再加上原来的部分,例如:依次得到数字321,最后应该输出123。由算法可以看出,这里应该是进行完毕一次提取,所以应该舍弃最低位-个位,即把变量s除以10。result *=n+ ;result
11、*=n- ;函数的返回值为实型数据,所以函数的返回类型应为double。根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。double s=0.0;int i;for(i=0;n;i+) /*从0n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/ if(i%5=0&i%11=0) s=s+i;s=sqrt(s); /*对s求平方根*/return s;【解析】本题的解题思路是逐个取得从0n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:这两个条件要求同时成立,因此用到了运算符。满足条件,该数就被累加到s中去,求出所
12、有符合条件的数后,用sqrt()函数(包含于头文件中)对s求平方根。下列给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的单词是指有空格隔开的字符串)。例如,若输入:I am a student to take the examination 则应输出:I aM A studenT tO takE thE examinatioN void fun(char *p) int k=0; for ( ;*p;p+) if (k) if (*p= ) 【1】; 【2】=toupper(*(p-1); k=1;char chrstr64; int d;nPlea
13、se enter an English sentence within 63 letters: gets(chrstr); d=strlen(chrstr); chrstrd= chrstrd+1=0;nBofore changing:n %s,chrstr);nAfter changing:下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。输入352,则输出应该是38;若输入328,则输出应该是77。long fun(long num) long k=1; do k+=(num%10)*(num%10); num/=10; while(num) return (k); long n;Please enter a number:n)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1