《2022年C语言程序设计——答案 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言程序设计——答案 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计- 注意: 部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。-*/ 题目 1:调用函数fun 判断一个三位数是否水仙花数。 在 main 函数中从键盘输入一个三位数,并输出判断结果。请编写 fun 函数。 所谓水仙花数 是指一个3 位数,其各位数字立方和等于该数本身。例如, 153 是一个水仙花数,因为153=13+53+33。#include stdio.h int fun(int n) /*Program*/ /* End */ int main(void) int n,flag; scanf(%d,&n); fla
2、g=fun(n); if(flag) printf(%d 是水仙花数 n,n); else printf(%d 不是水仙花数n,n); return 0; 答案: - int bw,sw,gw; bw=n/100;sw=(n-bw*100)/10;gw=n%10; if(n=bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1; else return 0; - 题目 2:请编写一个函数fun,函数的功能是: 求出NM 整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。例如:输入的数组为: 1 2 3 4 15 6 12 18 9 1
3、0 11 2 求出的最大数为18,行坐标为2, 列坐标为1。#define N 4 #define M 3 #include int Row,Col; int fun(int arrayNM) /*Program*/ /* End */ int main(void) int aNM,i,j,max,row,col; printf(input a array:); for(i=0;iN;i+) for(j=0;jM;j+) scanf(%d,&aij); for(i=0;iN;i+) for(j=0;jM;j+) printf(%d,aij); printf(n); max=fun(a); pr
4、intf(max=%d,row=%d,col=%d,max,Row,Col) ;return 0; 答案: - int max,i,j; max=array 00; Row=0; Col=0; for(i=0;iN;i+) for(j=0;jM;j+) if(maxarray ij) max=array ij; Row=i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - Col=j; return(max); - 题目 3:编
5、写函数判断一个整数m 的各位数字之和能否被 7 整除 , 可以被 7 整除则返回1,否则返回0。调用该函数找出100200 之间满足条件的所有数。#include stdio.h int sub(int m) /*Program*/ /* End */ int main(void) int i; for(i=100;i=200;i+) if(sub(i)=1)printf(%4d,i); 答案: - int k,s=0; do s=s+m%10; m=m/10; while(m!=0); if(s%7=0)k=1; else k=0; return(k); - 题目 3:编写函数fun,函数的
6、功能是: 求一分数序列 2/1, 3 /2,5/3, 8/5,13/8,21/13的前 n项之和。每一分数的分母是前两项的分母之和 , 每一分数的分子是前两项的分子之和. 例如:求前20 项之和的值为32.660259。#include stdio.h float fun(int n) /*Program*/ /* End */ int main(void) float y; y=fun(20); printf(y=%fn,y); return 0; 答案: - int i; float f1=1,f2=1,f3,s=0; for(i=1;i=n;i+) f3=f1+f2; f1=f2; f2
7、=f3; s=s+f2 /f1; return s; - 题目 4: 编写函数fun 其功能是在键盘上输入一个3行 3 列矩阵的各个元素的值(值为整数), 然后输出主对角线元素的平方和,并在 fun()函数中输出。#include stdio.h int main(void) int i,j,s,a33; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s=fun(a); printf(Sum=%dn,s); return 0; int fun(int a33) /*Program*/ /* End */ 名师资料总结 - - -精品资料欢迎下载 -
8、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 答案: - int sum; int i,j; sum=0; for(i=0;i3;i+) sum=sum+aii*aii; return sum; - 题目 5:编写函数fun,函数的功能是: 求给定正整数 m 以 内的素数之和。例如:当m=20 时,函数值为77。#include stdio.h int fun(int m) /*Program*/ /* End */ int main(void) int y; y=fu
9、n(20); printf(y=%dn,y); return 0; 答案: - int i,k,s=0; for(i=2;i=m;i+) for(k=2;k4) z=x8(x-4) z=4 /(x*(x+1) (x-10) z=|x|+20 (其他)#include #include stdio.h float y(float x) /*Program*/ /* End */ int main(void) float x; scanf(%f,&x); printf(y=%fn,y(x); return 0; 答案: - float z; if(x4) z=sqrt(x-4); else if(
10、x-4) z=pow(x,8); else if(x-10) z=4/(x*(x+1); else z=fabs(x)+20; return(z); - 题目 7:编写函数fun ,函数的功能是:求1 到 100之间的偶数之积。#include stdio.h double fun(int m) /*Program*/ /* End */ int main(void) printf(ji=%fn,fun(100); 答案: - double y=1; int i; for(i=1;i=m;i+) if(i%2=0)y*=i; return y; 名师资料总结 - - -精品资料欢迎下载 - -
11、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - - - 题目 8:输入三个字符串,按由小到大顺序输出。编写交换函数fun,用交换指针的方式实现交换。#include int main(void) static char s120,s220,s320; char fun(); printf( 输入三个字符串:n); scanf(%s,s1); scanf(%s,s2); scanf(%s,s3); if(strcmp(s1,s2)0) fun(s1,s2); if(strcmp
12、(s1,s3)0) fun(s1,s3); if(strcmp(s2,s3)0) fun(s2,s3); printf( 排序结果是: n%sn%sn%sn,s1,s2,s3); char fun(char *p1,char *p2) /*Program*/ /* End */ 答案: - char *p=NULL; strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); - 题目 9:编写函数fun,函数的功能是: 计算并输出给定整数n 的所有因子之和(不包括1 与自身)。规定 n 的值不大于1000。例如: n 的值为 855 时,应输出704。#includ
13、e stdio.h int fun(int n) /*Program*/ /* End */ int main(void) printf(s=%dn,fun(855); 答案: - int s=0,i; for(i=2;in;i+) if(n%i=0)s=s+i; return s; - 题目 10: 用函数求一个N 阶方阵右下三角元素的和(包括副对角线上的元素)。#include #include stdio.h #define N 3 int sum(int aN) /*Program*/ /* End */ int main(void) int aNN,i,j; clrscr(); fo
14、r(i=0;iN;i+) for(j=0;jN;j+) aij=random(10)+10; printf(%3d,aij); printf(n); printf(=n); printf(sum=%5dn,sum(a); return 0; 答案: - int i,j,k=0; for(i=0;iN;i+) for(j=N-1-i;jN;j+) k=k+aij; return(k); - 题目 11:编写函数fun ,函数的功能是:求一组数中大于平均值的数的个数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
15、- - - - - - 第 4 页,共 5 页 - - - - - - - - - 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88 时,函数值为 3。#include stdio.h int fun(int a,int n) /*Program*/ /* End */ int main(void) int a10=1,3,6,9,4,23,35,67,12,88; int y; y=fun(a,10); printf(y=%dn,y); return 0; 答案: - int i,k=0; float s=0,ave; for(i=0;in;i+) s+=ai; ave=
16、s/n; printf(%f ,ave); for(i=0;iave)k+; return k; - 题目 12: 求一批数中最大值和最小值的差。int max_min(int a,int n) /*Program*/ /* End */ #define N 30 #include stdlib.h #include stdio.h int main(void) int aN,i,k; clrscr(); for(i=0;iN;i+) ai=random(51)+10; for(i=0;iN;i+) printf(%5d,ai); if(i+1)%5=0) printf(n); k=max_min(a,N); printf(the result is:%dn,k); return 0; 答案: - int i,max,min; max=min=a0; for(i=1;imax) max=ai; else if(aimin) min=ai; return(max-min); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -