第1题 (10.0分) 题号:390
功能:编写函数求1~100中奇数的平方和。 结果为166650.000000。 答案:---------------------- float s=0; int i;
for(i=1;i<=n;i=i+2) s=s+i*i; return(s);
----------------------
第2题 (10.0分) 题号:320
功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出主对角线元素的积,并在fun() 函数中输出。
答案:---------------------- int sum; int i,j; sum=1;
for(i=0;i<3;i++) sum=sum*a[i][i]; return sum;
----------------------
第3题 (10.0分) 题号:324
功能:能计算从1开始到n的自然数中偶数的平方的和,n由 键盘输入,并在main()函数中输出。(n是偶数) 答案:---------------------- int sum,i; sum =0;
for(i=2;i<=n;i=i+2) {
sum=sum+i*i;} return(sum);
----------------------
第4题 (10.0分) 题号:345
功能:将两个两位数的正整数a、b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在 c数的千位和十位上, b数的十位和个位数依次放在 c数的个位和百位上。
例如:当a=45,b=12。调用该函数后,c=4251。
答案:---------------------- *c=a/10*1000+a*10+b/10+b*100; ----------------------
第5题 (10.0分) 题号:366
功能:求一组数中大于平均值的数的个数。
例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。
答案:---------------------- int i,k=0; float s=0,ave; for(i=0;i printf(\ for(i=0;i ---------------------- 第6题 (10.0分) 题号:355 功能:对长度为8个字符的字符串,将8个字符按降序排列。 例如:原来的字符串为CEAedcab,排序后输出为edcbaECA。 答案:---------------------- int i,j; char t; for(i=0;i { t=s[i];s[i]=s[j];s[j]=t;} ---------------------- 第7题 (10.0分) 题号:44 功能:求出二维数组周边元素之和,作为函数值返回。二 维数组的值在主函数中赋予。 答案:---------------------- int s=0; int i,j; for(i=0;i ---------------------- 第8题 (10.0分) 题号:339 功能:判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大 于100。 说明:所谓“同构数”是指这样的数,这个数出现在它的 平方数的右边。 例如:输入整数5,5的平方数是25,5是25中右侧的数,所 以5是同构数。 答案:---------------------- int k; k=x*x; if((k==x)||(k0==x)) return 1; else return 0; ---------------------- 第9题 (10.0分) 题号:383 功能:用函数实现字符串的复制, 不允许用strcpy()函数。 答案:---------------------- int i; for(i=0;str1[i]!='\\0';i++) str2[i]=str1[i]; str2[i]='\\0'; ---------------------- 第10题 (10.0分) 题号:310 功能:计算并输出给定整数n的所有因子之和(不包括1与 自身)。 注意:n的值不大于1000。 例如:n的值为855时,应输出704。 答案:---------------------- int s=0,i; for(i=2;i ---------------------- 第11题 (10.0分) 题号:354 功能:求小于lim的所有素数并放在aa数组中,该函数返回 所求出素数的个数。 答案:---------------------- int n=0; int i,j; for(i=2;i<=lim;i++) {for(j=2;j return n; ---------------------- 第12题 (10.0分) 题号:341 功能:删除所有值为y的元素。数组元素中的值和y的值由 主函数通过键盘输入。 答案:---------------------- int i,j; for(i=0;i<*n;) { if(bb[i]==y) {for(j=i;j<*n;j++) bb[j]=bb[j+1]; *n=*n-1; } else i++; } ---------------------- 第13题 (10.0分) 题号:317 功能:求出N×M整型数组的最大元素及其所在的行坐标及 列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 答案:---------------------- int max,i,j; max=array [0][0]; Row=0; Col=0; for(i=0;i if(max return(max); ---------------------- 第14题 (10.0分) 题号:392 功能:求一批数中最大值和最小值的积。 答案:---------------------- int i,max,min; max=min=a[0]; for(i=1;i if(a[i]>max) max=a[i]; else if(a[i] 第15题 (10.0分) 题号:501 题目:从键盘输入一个大写字母,要求改用小写字母输出。 答案: c=c+32; return c; 第16题 (10.0分) 题号:502 题目:用while语句求1~100的累计和。 答案: int i=1,sum=0; while(i<=n) { } return sum; 第17题 (10.0分) 题号:409 题目:输入华氏温度求摄氏温度。转换公式为 c=5/9(f-32), 输出结果取两位小数。 答案: float n; n=(5.0/9.0)*(m-32); return n; 第18题 (10.0分) 题号:29 功能:对任意输入的 x,用下式计算并输出 y 的值。 5 x<10 sum=sum+i; i++; y= 0 x=10 -5 x>10 答案: int m; if(n<10) m=5; else if(n==10) m=0; else m=-5; return m; 或 int m; if(n>=10) if(n>10) m=-5; else m=0; else m=5; return m; 第19题 (10.0分) 题号:382 功能:给定n个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 答案:---------------------- int i,k; k=0; for(i=1;i ---------------------- 第20题 (10.0分) 题号:367 功能:找出一批正整数中的最大的偶数。 答案:---------------------- int i,amax=-1; for(i=0;i if (a[i]>amax) amax=a[i]; return amax; ---------------------- 第21题 (10.0分) 题号:384 功能:产生20个[30,120]上的随机整数放入二维数组a[5][4] 中,求每行元素的和。 答案:---------------------- int i,j; for(i=0;i<5;i++) { b[i]=0; for(j=0;j<4;j++) b[i]=b[i]+a[i][j]; } ---------------------- 第22题 (10.0分) 题号:334 功能:求给定正整数n以内的素数之积。(n<28) 答案:---------------------- long i,k; long s=1; for(i=2;i<=n;i++) {for(k=2;k ---------------------- 第23题 (10.0分) 题号:363 功能:求一个给定字符串中的字母的个数。 答案:---------------------- int i,k=0; for(i=0;s[i]!='\\0';i++) if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') k++; return k; ---------------------- 第24题 (10.0分) 题号:361 功能:编写程序, 求矩阵(3行3列)与2的乘积 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 200 400 600 800 1000 1200 1400 1600 1800 答案:---------------------- int i,j; for(i=0; i < 3; i++) for(j=0; j < 3; j++) array[i][j]=array[i][j]*2; ---------------------- 第25题 (10.0分) 题号:400 功能:编写main程序调用函数fact求解从m个元素选n个元 素的组合数的个数。计算公式是: 组合数=m!/(n!.(m-n)!)。要求:m不能小于n,否则 应有容错处理。 说明:函数fact(x)的功能是求x!。 答案:---------------------- while(m printf(\和n输入错!请重新输入:\\n\ scanf(\ } zhsgs=fact(m)/(fact(n)*fact(m-n)); ---------------------- 第26题 (10.0分) 题号:411 功能:对任意输入的 x,用下式计算并输出 y 的值。 -1 x<0 y= 0 x=0 1 x>0 答案: int m; if(n<0) m=-1; else if(n==0) m=0; else m=1; return m; 或 int m; if(n>=0) if(n>0) m=1; else m=0; else m=-1; return m; 第27题 (10.0分) 题号:509 功能:编写函数fun其功能是:根据整型形参m,计算如下 公式的值:y=1+1/3+1/5+1/7+…+1/(2m+1) 例如:若m=9,则应输出:2.133256 答案:---------------------- double y=1; int i; for(i=1; i<=m; i++) {y+=1.0/(2*i+1); } return(y); ---------------------- 第28题 (10.0分) 题号:394 功能:产生20个[30,120]上的随机整数放入二维数组 a[5][4]中, 求其中的最小值。 答案:---------------------- int i,j,s; s=a[0][0]; for(i=0;i<5;i++) for(j=0;j<4;j++) if(s>a[i][j])s=a[i][j]; return(s); ---------------------- 第29题 (10.0分) 题号:330 功能:计算出k以内最大的10个能被13或17整除的自然数之 和。(k〈3000)。 答案:---------------------- int a=0,b=0; while((k>=2)&&(b<10)) {if((k==0)||(k==0)) {a=a+k;b++;} k--; } return a; ---------------------- 第30题 (10.0分) 题号:364 功能:求一个四位数的各位数字的立方和。 答案:---------------------- int d,s=0; while (n>0) {d=n; s+=d*d*d; n/=10; } return s; ---------------------- 第31题 (10.0分) 题号:348 功能:从低位开始取出长整型变量s中偶数位上的数,依次 构成一个新数放在t中。 例如:当s中的数为:7654321时,t中的数为:642。 答案:---------------------- long sl=10; s /= 10; t = s % 10; while(s > 0) { s = s/100; t = s*sl + t; sl = sl * 10; } ---------------------- 第32题 (10.0分) 题号:313 功能:从键盘为一维整型数组输入10个整数,调用fun函数 找出其中最小的数,并在main函数中输出。 答案:---------------------- int min,i; min=x[0]; for(i=1;i {if(x[i] ---------------------- 第33题 (10.0分) 题号:391 功能:将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 答案:---------------------- int i; for(i=0;str[i]!='\\0';i++) if(str[i]>='a' && str[i]<='z') str[i]=str[i]-32; ---------------------- 第34题 (10.0分) 题号:397 功能:编写函数fun(str,i,n),从字符串str中删除第i个 字符开始的连续n个字符(注意:str[0]代表字符串 的第一个字符)。 答案:---------------------- while(str[i+n-1]) { str[i-1]=str[i+n-1]; i++; } str[i-1]='\\0'; ---------------------- 第35题 (10.0分) 题号:325 功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出主对角线元素的平方和,并在 fun()函数中输出。 答案:---------------------- int sum; int i; sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]*a[i][i]; return sum; ---------------------- 第36题 (10.0分) 题号:388 功能:编写函数判断一个整数能否同时被3和5整除,若能 则返回值为1,否则为0。调用该函数求出15~300之 间能同时被3和5整除的数的个数。 答案:---------------------- if(n%3==0&&n%5==0) return(1); return(0); ---------------------- 第37题 (10.0分) 题号:399 功能:编写程序求无理数e的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 答案:---------------------- long int j; int i,k; double e,jc; i=1; e=0.0; jc=1.0; while(jc>=0.000001) { e=e+jc; j=1; for(k=1;k<=i;k++) j=j*k; jc=1.0/j; i++; } return e; ---------------------- 第38题 (10.0分) 题号:312 功能:调用函数fun判断一个三位数是否\水仙花数\。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。 说明:所谓\水仙花数\是指一3位数,其各位数字立方和 等于该数本身。 例如:153是一个水仙花数,因为153=1+125+27。 答案:---------------------- int bw,sw,gw; bw=n/100;sw=(n-bw*100)/10;gw=n; if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1; else return 0; ---------------------- 第39题 (10.0分) 题号:335 功能:求一个n位自然数的各位数字的积。(n 是小于10的 自然数) 答案:---------------------- long d,s=1; while (n>0) {d=n; s*=d; n/=10; } return s; ---------------------- 第40题 (10.0分) 题号:379 功能:给定n个数据, 求最大值出现的位置(如果最大值出 现多次,求出第一次出现的位置即可)。 答案:---------------------- int i,k; k=0; for(i=1;i<=n;i++) if(s[i]>s[k]) k=i; return(k+1); ---------------------- 第41题 (10.0分) 题号:22 功能:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。 请编写fun函数。 答案:---------------------- int min,i; min=x[0]; for(i=1;i {if(x[i] ---------------------- 第42题 (10.0分) 题号:381 功能:求一批数中小于平均值的数的个数。 答案:---------------------- int i,sum=0,k=0; double average; for(i=0;i ---------------------- 第43题 (10.0分) 题号:352 功能:根据整型形参m,计算如下公式的值:y=1/2+1/4+ 1/6+...+1/2m 。 例如:若m=9,则应输出:1.414484 答案:---------------------- double y=0; int i; for(i=1; i<=m; i++) {y+=1.0/(2*i); } return(y); ---------------------- 第44题 (10.0分) 题号:33 功能:用do-while语句求1~100的累计和。 答案: int i =1, sum =0; do { sum = sum + i; i++; return sum; } while ( i <= n ); 第45题 (10.0分) 题号:347 功能:把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。 答案:---------------------- int i,min=0; for(i=1; i ---------------------- 第46题 (10.0分) 题号:343 功能:将两个两位数的正整数a、b合并形成一个整数放在c 中。合并的方式是: 将a数的十位和个位数依次放 在c数的个位和百位上, b数的十位和个位数依次放 在c数的十位和千位上。 例如: 当a=45,b=12, 调用该函数后, c=2514。 答案:---------------------- *c=a/10+a*100+b/10*10+b*1000; ---------------------- 第47题 (10.0分) 题号:504 功能:编写程序打印如图1所示图形。 * *** ***** ******* ***** *** * 要求:要求使用abs()。 答案: for(m=-i;m<=i;m++) { for(n=0;n 第48题 (10.0分) 题号:365 功能:求1到100之间的偶数之积。 答案:---------------------- double y=1; int i; for(i=1;i<=m;i++) if(i%2==0)y*=i; return y; ---------------------- 第49题 (10.0分) 题号:410 功能:编写函数fun将一个数组中的值按逆序存放,并在 main()函数中输出。 例如:原来存顺序为8,6,5,4,1。要求改为:1,4,5,6,8。 答案:---------------------- int i,t; for(i=0;i arr[i]=arr[n-1-i]; arr[n-1-i]=t; } ---------------------- 第50题 (10.0分) 题号:373 功能:用函数求fibonacci数列前n项的和。 说明:fibonacci数列为数列的第一项值为1,第二项值也 为1,从第三项开始,每一项均为其前面相邻两项 的和。 例如:当n=28时,运行结果:832039 答案:---------------------- long f,k=f1+f2; int i; for(i=3;i<=28;i++) {f=f1+f2; k=k+f; f1=f2; f2=f; } return(k); ---------------------- 第51题 (10.0分) 题号:378 功能:编写函数用冒泡排序法对数组中的数据进行从小到 大的排序。 答案:---------------------- int i,j,t; for(i=0;i ---------------------- 第52题 (10.0分) 题号:323 功能:求1到w之间的奇数之和。(w是大于等于100小于等 于1000的整数) 答案:---------------------- long y=0; int i; for(i=1;i<=w;i++) if(i%2==1)y+=i; return y; ---------------------- 第53题 (10.0分) 题号:380 功能:用辗转相除法求两个整数的最大公约数。 答案:---------------------- int r,t; if(n ---------------------- 第54题 (10.0分) 题号:503 题目:分别统计字符串中字母、数字、空格和其他字符出现的 次数(字符长度小于80)。 答案: int i; for(i=0;c[i]!='\\0';i++) if((c[i]>='A'&&c[i]<='Z')||(c[i]>='a'&&c[i]<='z')) a=a+1; else if (c[i]>='0'&&c[i]<='9') num=num+1; else if (c[i]==' ') b=b+1; else other=other+1; 第55题 (10.0分) 题号:395 功能:求n阶方阵主、副对角线上的元素之积。 答案:---------------------- int i,j; float t=1; for(i=0;i ---------------------- 第56题 (10.0分) 题号:318 功能:输入一个字符串,过滤此串,只保留串中的字母字 符,并统计新生成串中包含的字母个数。 例如:输入的字符串为ab234$df4,新生成的串为abdf 。 答案:---------------------- int i,j; for(i=0,j=0;*(ptr+i)!='\\0';i++) if(*(ptr+i)<='z'&& *(ptr+i)>='a'||*(ptr+i)<='Z' && *(ptr+i)>='A') {*(ptr+j)=*(ptr+i); j++;} *(ptr+j)='\\0'; return(j); ---------------------- 第57题 (10.0分) 题号:311 功能:计算n门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.600000。 答案:---------------------- int i; float y=0; for(i=0;i ---------------------- 第58题 (10.0分) 题号:358 功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。 例如:若m=9,则应输出:4.121185 答案:---------------------- double y=0; y=sin(m)*10; return(y); ---------------------- 第59题 (10.0分) 题号:23 功能:从键盘输入一个大于3的整数,调用函数fun判断 其是否素数,然后在main函数中输出相应的结论 信息。 例如:7是素数,8不是素数。请编写fun函数。素数是 仅能被1和自身整除的数 答案:---------------------- int i; int j; j= 1; for(i=2;i return j; ---------------------- 第60题 (10.0分) 题号:349 功能:从低位开始取出长整型变量s奇数位上的数,依次 构成一个新数放在t中。 例如:当s中的数为:7654321时,t中的数为:7531。 答案:---------------------- long sl=10; t = s % 10; while(s > 0) { s = s/100; t = s*sl + t; sl = sl * 10; } ---------------------- 第61题 (10.0分) 题号:332 功能:根据整型参数n,计算如图公式的值。 答案:---------------------- double a=1;int i; for(i=1;i return a; ---------------------- 第62题 (10.0分) 题号:327 功能:能计算从1开始到n的自然数的和,n由键盘输入, 并在main()函数中输出。 答案:---------------------- int sum,i; sum =0; for(i=1;i<=n;i++) {sum=sum+i;} return(sum); ---------------------- 第63题 (10.0分) 题号:351 功能:请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 答案:---------------------- int i,j; for(j=0;j pp[j]=tt[0][j]; for(i=1;i } ---------------------- 第64题 (10.0分) 题号:389 功能:编写函数求表达式的和(n的值由主函数输入)。 1-1/2+1/3-1/4+......+1/m 例如:当n=20时,表达式的值为0.668771。 答案:---------------------- float s=0; int i,k=1; for(i=1;i<=n;i++) { s=s+k*1.0/i; k=-k; } return(s); ---------------------- 第65题 (10.0分) 题号:54 功能:求1到100之间的偶数之积。 答案:---------------------- double y=1; int i; for(i=1;i<=m;i++) if(i%2==0)y*=i; return y; ---------------------- 第66题 (10.0分) 题号:353 功能:对长度为7个字符的字符串,除首、尾字符外,将其 余5个字符按降序排列。 例如:原来的字符串为CEAedca,排序后输出为CedcEAa。 答案:---------------------- int i,j; char t; for(i=1;i { t=s[i];s[i]=s[j];s[j]=t;} ---------------------- 第67题 (10.0分) 题号:328 功能:求k!(k〈13),所求阶乘的值作为函数值返回。 (要求使用递归) 答案:---------------------- if (k>0) return(k*fun(k-1)); else if(k==0) return 1L; ---------------------- 第68题 (10.0分) 题号:346 功能:将从键盘上输入的每个单词的第一个字母转换为 大写字母,输入时各单词必须用空格隔开,用’.’ 结束输入。 答案:---------------------- if (*c== ' ') return 1; else { if(status && *c <= 'z' && *c >= 'a') *c += 'A' - 'a'; return 0; } ---------------------- 第69题 (10.0分) 题号:403 功能:编写函数fun,求任一整数m的n次方。 答案:---------------------- long int x=1; int i; for(i=1;i<=n;i++) x=x*m; return x; ---------------------- 第70题 (10.0分) 题号:387 功能:求一批数中最大值和最小值的差。 答案:---------------------- int i,max,min; max=min=a[0]; for(i=1;i if(a[i]>max) max=a[i]; else if(a[i] 第71题 (10.0分) 题号:336 功能:从字符串中删除指定的字符。同一字母的大、小写 按不同字符处理。 例如:若程序执行时输入字符串为:turbocandborlandc++ 从键盘上输入字符:n,则输出后变为:turbocadbo rladc++,如果输入的字符在字符串中不存在,则字 符串照原样输出。 答案:---------------------- char *q=s; for(; *q; q++) if(*q != c) *(s++)=*q; *s=0; ---------------------- 第72题 (10.0分) 题号:338 功能:编写程序,实现矩阵(3行3列)的转置(即行列互换) 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 答案:---------------------- int i,j,t; for(i=0; i < 3; i++) for(j=0; j < i; j++) { t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } ---------------------- 第73题 (10.0分) 题号:42 功能:从字符串s中删除指定的字符c。 答案:---------------------- int i,k=0; for(i=0;s[i]!='\\0';i++) if(s[i]!=c) s[k++]=s[i]; s[k]='\\0'; ---------------------- 第74题 (10.0分) 题号:342 功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出矩阵第一行与第三行元素之和, 并在fun()函数中输出。 答案:---------------------- int sum; int i,j; sum=0; for(i=0;i<3;i+=2) for(j=0;j<3;j++) sum=sum+a[i][j]; return sum; ---------------------- 第75题 (10.0分) 题号:359 功能:实现两个整数的交换。 例如:给a和b分别输入:60和65,输入为:a=65 b=60 答案:---------------------- int t; t=*a;*a=*b;*b=t; ---------------------- 第76题 (10.0分) 题号:374 功能:编写函数实现两个数据的交换,在主函数中输入任 意三个数据,调用函数对这三个数据从大到小排序。 答案:---------------------- int k; k=*a; *a=*b; *b=k; ---------------------- 第77题 (10.0分) 题号:356 功能:求大于lim(lim小于100的整数)并且小于100的所 有素数并放在aa数组中,该函数返回所求出素数的 个数。 答案:---------------------- int n=0; int i,j; for(i=lim;i<=100;i++) {for(j=2;j return n; ---------------------- 第78题 (10.0分) 题号:53 功能:求一个四位数的各位数字的立方和 答案:---------------------- int d,k,s=0; while (n>0) {d=n; s+=d*d*d; n/=10; } return s; ---------------------- 第79题 (10.0分) 题号:322 功能:判断一个整数w的各位数字平方之和能否被5整除, 可以被5整除则返回1,否则返回0。 答案:---------------------- int k,s=0; do {s=s+(w)*(w); w=w/10; }while(w!=0); if(s%5==0)k=1; else k=0; return(k); ---------------------- 第80题 (10.0分) 题号:326 功能:求一个大于10的n位整数的后n-1位的数,并作为函 数值返回。 答案:---------------------- int n=0;int i=1; while(w>10) {n=n+i*(w); w/=10; i*=10;} return n; ---------------------- 第81题 (10.0分) 题号:321 功能:编写函数fun其功能是:根据整型形参m,计算如下 公式的值:y=1/2!+1/4!+…+1/m!(m是偶数) 答案:double y=0.0; int i,j; double s=1; for (i=2;i<=m;i+=2) { for(j=i-1;j<=i;j++) s=s*j; y=y+1.0/s; } return y; 第82题 (10.0分) 题号:337 功能:将两个两位数的正整数a、b合并形成一个整数放在 c中。合并的方式是:将a数的十位和个位数依次放 在c数的百位和个位上, b数的十位和个位数依次放 在c数的十位和千位上。 例如:当a=45,b=12。调用该函数后,c=2415。 答案:---------------------- *c=a/10*100+a+b/10*10+b*1000; ---------------------- 第83题 (10.0分) 题号:396 功能:编写函数fun对主程序中用户输入的具有10 个数据的数组a按由大到小排序,并在主程序中输出 排序结果。 答案:---------------------- int k,j,t; for (k=0;k t=array[k]; array[k]=array[j]; array[j]=t; } ---------------------- 第84题 (10.0分) 题号:407 功能:编写函数fun求sum=d+dd+ddd+……+dd...d(n个d), 其中d为1-9的数字。 例如:3+33+333+3333+33333(此时d=3,n=5),d和n在主函 数中输入。 答案:---------------------- long int s=0,t=0; int i; for(i=1;i<=n;i++) { t=t+d; s=s+t; d=d*10; } return s; ---------------------- 第85题 (10.0分) 题号:50 功能:求出菲波那契数列的前一项与后一项之比的极限的 近似值。 例如:当误差为0.0001时,函数值为0.618056。 答案:---------------------- float f1=1,f2=1,f3; float r1=2,r2; do {r2=r1; r1=f1/f2; f3=f1+f2; f1=f2; f2=f3; }while(fabs(r1-r2)>1e-4); return r1; ---------------------- 第86题 (10.0分) 题号:372 题目:用函数求一个N阶方阵右下三角元素的和(包括副 对角线上的元素)。 答案:---------------------- int i,j,k=0; for(i=0;i ---------------------- 第87题 (10.0分) 题号:401 功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶 数,则求x到y之间的偶数和。 答案:---------------------- int i,s=0; for(i=x;i<=y;i+=2) s=s+i; return s; ---------------------- 第88题 (10.0分) 题号:398 功能:编写函数fun求s=1^k+2^k +3^k + ......+N^k的值, (1的K次方到N的K次方的累加和)。 答案:---------------------- long power,sum=0; int i,j; for(i=1;i<=n;i++) { power=i; for(j=1;j return sum; ---------------------- 第89题 (10.0分) 题号:315 功能:将主函数中输入的字符串反序存放。 例如:输入字符串“abcdefg”,则应输出“gfedcba”。 答案:---------------------- int i,j; char c; for(i=0,j=n-1;i ---------------------- 第90题 (10.0分) 题号:329 功能:对某一正数的值保留2位小数,并对第三位进行四舍 五入。 答案:---------------------- int i; i=(int)(h*1000); if(i>=5) return(int)(h*100+1)/100.0; else return(int)(h*100)/100.0; ---------------------- 第91题 (10.0分) 题号:333 功能:计算并输出给定整数的所有因子之积(包括自身)。 规定这个整数的值不大于50。 答案:---------------------- long s=1,i; for(i=2;i<=n;i++) if(n%i==0)s=s*i; return s; ---------------------- 第92题 (10.0分) 题号:62 功能:求5行5列矩阵的主、副对角线上元素之和。注意, 两条对角线相交的元素只加一次。 例如:主函数中给出的矩阵的两条对角线的和为45。 答案:---------------------- int s=0; int i,j; for(i=0;i s=s+a[i][i]+a[i][M-1-i]; s=s-a[(M-1)/2][(M-1)/2]; return s; ---------------------- 第93题 (10.0分) 题号:375 功能:从键盘上输入任意实数,求出其所对应的函数值。 z=e的x次幂(x>10) z=log(x+3) (x>-3) z=sin(x)/((cos(x)+4) 答案:---------------------- double z; if(x>10) z=exp(x); else if(x>-3) z=log(x+3); else z=sin(x)/(cos(x)+4); return(z); ---------------------- 第94题 (10.0分) 题号:452 功能:有一个一维数组score,内放10个学生的成绩,用一 个函数来求平均成绩。 例如:如果10个学生的成绩分别为92,87,68,56,92,84, 70,65,90,60 则平均成绩为:76.400000 答案:---------------------- int i; float aver,sum=array[0]; for(i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return aver; ---------------------- 第95题 (10.0分) 题号:377 功能:编写函数用选择排序法对数组中的数据进行从小到 大的排序。 答案:---------------------- int i,j,k,t; for(i=0;i for(j=i+1;j {t=a[i]; a[i]=a[k]; a[k]=t; } } ---------------------- 第96题 (10.0分) 题号:357 功能:根据整型形参m,计算如下公式的值: y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5) 例如:若m=9,则应输出:1.168229 答案:---------------------- double y=0; int i; for(i=0; i<=m; i++) {y+=1.0/(i+5); } return(y); ---------------------- 第97题 (10.0分) 题号:56 功能:找出一批正整数中的最大的偶数。 答案:---------------------- int i,amax=-1; for(i=0;i if (a[i]>amax) amax=a[i]; return amax; ---------------------- 第98题 (10.0分) 题号:319 功能:判断m是否为素数。 答案:---------------------- int i,k=1; if(m<=1) k=0; for(i=2;i ---------------------- 第99题 (10.0分) 题号:368 功能:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13… 的前n项之和。 说明:每一分数的分母是前两项的分母之和,每一分数的 分子是前两项的分子之和 例如:求前20项之和的值为32.660259。 答案:---------------------- int i; float f1=1,f2=1,f3,s=0; for(i=1;i<=n;i++) {f3=f1+f2; f1=f2; f2=f3; s=s+f2/f1; } return s; ---------------------- 第100题 (10.0分) 题号:316 功能:统计出若干个学生的平均成绩,最高分以及得最高 分的人数。 例如:输入10名学生的成绩分别为92,87,68,56,92, 84,67,75,92,66,则输出平均成绩为77.9, 最高分为92,得最高分的人数为3人。 答案:---------------------- int i;float sum=0,ave; Max=array[0]; for(i=0;i { if(Max ---------------------- 第101题 (10.0分) 题号:331 功能:找出一个大于给定整数且紧随这个整数的素数,并 作为函数值返回。 答案:---------------------- int i,k; for(i=n+1;;i++){ for(k=2;k ---------------------- 第102题 (10.0分) 题号:362 功能:求给定正整数m以内的素数之和。 例如:当m=20时,函数值为77。 答案:---------------------- int i,k,s=0; for(i=2;i<=m;i++) {for(k=2;k ---------------------- 第103题 (10.0分) 题号:360 功能:把20个随机数存入一个数组,然后输出该数组中的 最大值。 答案:---------------------- int i,max=0; for(i=1; i ---------------------- 第104题 (10.0分) 题号:37 功能:输入2个学生3门课的成绩,计算学生成绩平均分, 课程平均分和最高分. 例如:输入2名学生3门课的成绩分别为92,87,68,56, 92,84 则 学生1平均分:82.33 学生2平均分:77.33 课程1平均分:74.00 课程2平均分:89.50 课程3平均分:76.00 最高分为:92 答案: int i,j; float sum; { sum=0; for(i=0;i<2;i++) /*计算第i个学生平均分*/ for(j=0;j<3;j++) sum=sum+score[i][j]; StuAgv[i]=sum/3; } for(j=0;j<3;j++) /*计算第j门课的平均分*/ { sum=0; for(i=0;i<2;i++) sum=sum+ score [i][j]; CouAgv[j]=sum/2; Max=score[0][0]; for(i=0;i<2;i++) for(j=0;j<3;j++) if(Max<=score[i][j]) { Max=score[i][j]; } } return ; 第105题 (10.0分) 题号:369 功能:编写函数判断一个整数m的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 答案:---------------------- int k,s=0; do {s=s+m; m=m/10; }while(m!=0); if(s%7==0)k=1; else k=0; return(k); ---------------------- 第106题 (10.0分) 题号:405 功能:编写函数fun计算下列分段函数的值: x^2+x+6 x<0且x≠-3 f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3 x^2-x-1 其它 答案:---------------------- float y; if (x<0 && x!=-3.0) y=x*x+x+6; else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=x*x-5*x+6; else y=x*x-x-1; return y; ---------------------- 第107题 (10.0分) 题号:393 功能:编写函数求3!+6!+9!+12!+15+18!+21!。 答案:---------------------- int i,j; float t,s=0; for(i=3;i<=n;i=i+3) {t=1; for(j=1;j<=i;j++) t=t*j; s=s+t;} return(s); ---------------------- 第108题 (10.0分) 题号:350 功能:请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最小元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 答案:---------------------- int i,j; for(j=0;j pp[j]=tt[0][j]; for(i=1;i } ---------------------- 第109题 (10.0分) 题号:376 功能:从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 答案:---------------------- float z; if(x>4) z=sqrt(x-4); else if(x>-4) z=pow(x,8); else if(x>-10) z=4/(x*(x+1)); else z=fabs(x)+20; return(z); ---------------------- 第110题 (10.0分) 题号:386 功能:用函数求N个[10,60]上的整数中能被5整除的最大 的数,如存在则返回这个最大值,如果不存在则 返回0。 答案:---------------------- int i; for(i=0;i if(arr[i]%5==0 && arr[i]>m) m=arr[i]; ---------------------- 第111题 (10.0分) 题号:340 功能:编写一个函数,该函数可以统计一个长度为2的字符 串在另一个字符串中出现的次数。 例如:假定输入的字符串为:asdasasdfgasdaszx67asdmklo, 字符串为:as,则应输出6。 答案:---------------------- int i,n=0; for(i=0;i<=strlen(str)-2;i++) if((str[i]==substr[0])&&(str[i+1]==substr[1])) n++; return n; ---------------------- 第112题 (10.0分) 题号:507 功能:编写函数fun求一个字符串的长度,在main函数中 输入字符串,并输出其长度。 答案:---------------------- char *p; int n=0; p=p1; while(*p++) n++; return n; ---------------------- 第113题 (10.0分) 题号:16 功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函 数中由键盘输入n值,并输出运算结果。请编写fun 函数。 例如:若n值为5,则结果为153。 答案:---------------------- int i; float f=1,s=0; for(i=1;i<=n;i++) {f=f*i; s=s+f;} return s; ----------------------