程序设计.docx
- 文档编号:10482086
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:49
- 大小:27.08KB
程序设计.docx
《程序设计.docx》由会员分享,可在线阅读,更多相关《程序设计.docx(49页珍藏版)》请在冰豆网上搜索。
程序设计
22题目:
从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。
请编写fun函数。
/**********Program**********/
intmin,i;
min=x[0];
for(i=1;i {if(x[i] returnmin; /**********End**********/ 23题目: 从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。 例如: 7是素数,8不是素数。 请编写fun函数。 素数是仅能被1和自身整除的数 /**********Program**********/ inti; intj; j=1; for(i=2;i {if(n%i==0)j=0;} returnj; /**********End**********/ 29题目: 请编写一个函数fun,函数的功能是: 统计出若干个学生的平均成绩,最高分以及得最高分的人数。 /**********Program**********/ inti;floatsum=0,ave; Max=array[0]; for(i=0;i {if(Max sum=sum+array[i];} ave=sum/n; for(i=0;i if(array[i]==Max)J++; return(ave); /**********End**********/ 40题目: 请编写函数fun,它的功能是: 判断m是否为素数。 主函数的功能是: 求出100到200之间的素数的 个数。 /**********Program**********/ inti,k=1; if(m<=1)k=0; for(i=2;i if(m%i==0)k=0; returnk; /**********End**********/ 47.题目: 编写函数fun,函数的功能是: 计算并输出给定整数n的所有因子之和(不包括1与自身)。 规定 n的值不大于1000。 /**********Program**********/ ints=0,i; for(i=2;i if(n%i==0)s=s+i; returns; /**********End**********/ 52.题目: 编写函数fun,函数的功能是: 求给定正整数m(包括m) 以内的素数之和。 /**********Program**********/ inti,k,s=0; for(i=2;i<=m;i++) {for(k=2;k if(i%k==0)break; if(k==i)s=s+i;} returns; /**********End********** 53.题目: 编写函数fun,函数的功能是: 求一个给定字符串 中的字母的个数。 /**********Program**********/ inti,k=0; for(i=0;s[i]! ='\0';i++) if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') k++; returnk; /**********End**********/ 62.题目: 编写函数fun,函数的功能是: 找出一批正整数中的最大的偶数。 /**********Program**********/ inti,amax=-1; for(i=0;i if(a[i]%2==0) if(a[i]>amax)amax=a[i]; returnamax; /**********End**********/ 126.题目: 用函数将两个字符串连接起来,不允许使用strcat函数。 /**********Program**********/ inti,j; for(i=0;c1[i]! ='\0';i++); for(j=0;c2[j]! ='\0';j++) c1[i+j]=c2[j]; c1[i+j]='\0'; /**********End**********/ 127.题目: 用函数将一个N阶方阵进行转置,输入输出在主函数中实现。 /**********Program**********/ inti,j,k; for(i=0;i for(j=0;j<=i;j++) {k=a[i][j]; a[i][j]=a[j][i]; a[j][i]=k;} /**********End**********/ 128.题目: 用函数求一个N阶方阵右下三角元素的和(包括副 对角线上的元素)。 /**********Program**********/ inti,j,k=0; for(i=0;i for(j=N-1-i;j k=k+a[i][j]; return(k); /**********End**********/ 159.题目: 用函数求fibonacci数列前28项的和。 已知数列的第一项值为1,第二项值也为1,从第三项开始,每 一项均为其前面相邻两项的和。 运行结果: 832039 /**********Program**********/ longf,k=f1+f2; inti; for(i=3;i<=28;i++) {f=f1+f2; k=k+f; f1=f2; f2=f; } return(k); /**********End**********/ 177题目: 编写函数用选择排序法对数组中的数据进行从小到大的排序。 /**********Program**********/ inti,j,k,t; for(i=0;i {k=i; for(j=i+1;j if(a[k]>a[j])k=j; if(k! =i) {t=a[i]; a[i]=a[k]; a[k]=t; } } /**********End**********/ 214.题目: 编写函数用冒泡排序法对数组中的数据进行从小到大的排序。 /**********Program**********/ inti,j,t; for(i=0;i for(j=0;j if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1]; a[j+1]=t;} /**********End**********/ 217.题目: 给定n个数据,求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。 /**********Program**********/ inti,k; k=0; for(i=1;i if(s[i]>s[k])k=i; return(k); /**********End**********/ 219.题目: 用辗转相除法求两个整数的最大公约数。 /**********Program**********/ intr,t; if(n r=n%m; while(r! =0) {n=m;m=r;r=n%m;} return(m); /**********End**********/ 223.题目: 求字符ch在字符串s中出现的所有位置。 (用一个新生成的数组来表示出现的所有位置) /**********Program**********/ inti,j=0; for(i=0;s[i]! ='\0';i++) if(s[i]==ch)a[j++]=i; return(j); /**********End**********/ 257.题目: 用函数求N个[10,60]上的整数中能被5整除的最大的数,如存在则返回这个最大值,如果不存在则返 回0。 . /**********Program**********/ inti; for(i=0;i if(arr[i]%5==0&&arr[i]>m) m=arr[i]; /**********End**********/ 258.题目: 求一批数中最大值和最小值的差。 /**********Program**********/ inti,max,min; max=min=a[0]; for(i=1;i if(a[i]>max)max=a[i]; elseif(a[i] return(max-min); /**********End**********/ 262.题目: 编写函数求1~100(闭区间)中奇数的平方和。 结果为166650。 /**********Program**********/ floats=0; inti,j; for(i=1;i<=n;i=i+2) s=s+i*i; return(s); /**********End**********/ 263.题目: 将字符串中的小写字母转换为对应的大写字母,其它字符不变。 /**********Program**********/ inti; for(i=0;str[i]! ='\0';i++) if(str[i]>='a'&&str[i]<='z') str[i]=str[i]-32; /**********End**********/ 264.题目: 编写函数fun,函数的功能是: 求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。 每一分数的分母是前两项的分母之和每一分数的分子是前两项的分子之和 /**********Program**********/ inti; floatf1=1,f2=1,f3,s=0; for(i=1;i<=n;i++) {f3=f1+f2; f1=f2; f2=f3; s=s+f2/f1; } returns; /**********End**********/ 265.题目: 求一批数中最大值和最小值的积。 /**********Program**********/ inti,max,min; max=min=a[0]; for(i=1;i if(a[i]>max)max=a[i]; elseif(a[i] return(max*min); /**********End**********/ 270.题目: 编写函数fun用比较法对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中 输出排序结果。 /**********Program**********/ intk,j,t; for(k=0;k for(j=k+1;j if(array[k] {t=array[k]; array[k]=array[j]; array[j]=t;} /**********End**********/ 271.题目: 编写函数fun将一个数组中的值按逆序存放,并在main()函数中输出。 例如,原来存顺序为8,6,5,4,1。 要求改为: 1,4,5,6,8。 /**********Program**********/ inti,t; for(i=0;i {t=arr[i]; arr[i]=arr[n-1-i]; arr[n-1-i]=t; } /**********End**********/ 275.题目: 函数fact(x)的功能是求x! 。 编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。 计算公式是: 组合数=m! /(n! .(m-n)! )。 要求: m不能小于n,否则应有容错处理。 /**********Program**********/ while(m { printf("m \n"); scanf("%d%d",&m); } zhsgs=fact(m)/(fact(n)*fact(m-n)); /**********End**********/ 277题目: 编写函数fun生成一个主对角线元素为1,其他元素都为0的3*3的二维数组。 /**********Program**********/ for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) arr[i][j]=1; else arr[i][j]=0; /**********End**********/ 278.题目: 编写函数fun,求任一整数m的n次方。 /**********Program**********/ longintx=1; inti; for(i=1;i<=n;i++) x=x*m; returnx; /**********End**********/ 282.题目: 编写函数fun求1000以内所有7的倍数之和。 /**********Program**********/ ints=0,i; for(i=1;i if(i%m==0) s+=i; returns; /**********End**********/ 284.题目: 编写函数fun求sum=d+dd+ddd+……+dd...d(n个d), 其中d为1-9的数字。 例如3+33+333+3333+33333(此时d=3,n=5),d和n 在主函数中输入。 /**********Program**********/ longints=0,t=0; inti; for(i=1;i<=n;i++) {t=t+d; s=s+t; d=d*10; } returns; /**********End**********/ 选择结构程序设计作业答案 1、判断一个三位数是否是"水仙花数"。 所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。 例如,153是一个水仙花数,因为 153=1*1*1+5*5*5+3*3*3。 2、计算下列分段函数的值: x2+x+6x<0且x≠-3 f(x)=x2-5x+60≤x<10且x≠2及x≠3 x2-x-1其它 3、求一个不多于5位的正整数的位数。 (提示: 可利用if-else-if形式)。 4、对四个整数按由小到大顺序输出。 5、从键盘上输入一个百分制成绩score,按下列原则输出其等级: score≥90,等级为A; 80≤score<90,等级为B; 70≤score<80,等级为C; 60≤score<70,等级为D; score<60,等级为E。 1、判断一个三位数是否是"水仙花数"。 所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。 例如,153是一个水仙花数,因为 153=1*1*1+5*5*5+3*3*3。 #include"stdio.h" intfun(intn) { /**********Program**********/ intbw,sw,gw; bw=n/100; sw=(n-bw*100)/10; gw=n%10; if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw) return1; else return0; /**********End**********/ } main() { intn,flag; scanf("%d",&n); flag=fun(n); if(flag! =0) printf("%disShui-Xian-Huanumber\n",n); else printf("%disnotShui-Xian-Huanumber\n",n); } 2、计算下列分段函数的值: x2+x+6x<0且x≠-3 f(x)=x2-5x+60≤x<10且x≠2及x≠3 x2-x-1其它 floatfun(floatx) { /**********Program**********/ floaty; if(x<0&&x! =-3.0) y=x*x+x+6; elseif(x>=0&&x<10.0&&x! =2.0&&x! =3.0) y=x*x-5*x+6; elsey=x*x-x-1; returny; /**********End**********/ } main() {floatx,f; printf("Inputx="); scanf("%f",&x); f=fun(x); printf("x=%f,f(x)=%f\n",x,f); } 3、求一个不多于5位的正整数的位数。 (提示: 可利用if-else-if形式)。 main() {longintnum; intws; printf("Inputaintegernumber: "); scanf("%ld",&num); ws=fun(num); printf("%ldisa%dbitnumber\n",num,ws); getch(); } fun(intm) { /**********Program**********/ intplace; if(m>9999)place=5; elseif(m>999)place=4; elseif(m>99)place=3; elseif(m>9)place=2; elseplace=1; returnplace; /**********End**********/ } 4、对四个整数按由小到大顺序输出。 (参考P94-3.38) main() {inta,b,c,d; voidfun(); printf("Inputfourintegernumbers: \n"); scanf("%d%d%d%d",&a,&b,&c,&d); fun(a,b,c,d); } voidfun(inta,intb,intc,intd) { /**********Program**********/ intt; if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(a>d){t=a;a=d;d=t;} if(b>c){t=b;b=c;c=t;} if(b>d){t=b;b=d;d=t;} if(c>d){t=c;c=d;d=t;} printf("%d\t%d\t%d\t%d\n",a,b,c,d); /**********End**********/ } 5、从键盘上输入一个百分制成绩score,按下列原则输出其等级: score≥90,等级为A; 80≤score<90,等级为B; 70≤score<80,等级为C; 60≤score<70,等级为D; score<60,等级为E。 main()/*P87-10*/ {intscore,grade; printf(“Inputascore(0~100): ”); scanf(“%d”,&score); /*将成绩整除10,转化成switch语句中的case标号*/ grade=score/10; switch(grade) {case10: case9: printf(“grade=A\n”);break; case8: printf("grade=B\n");break; case7: printf("grade=C\n");break; case6: printf("grade=D\n");break; case5: case4: case3: case2: case1: case0: printf(“grade=E\n”);break; default: printf(“Thescoreisoutofrange! \n”); } } 循环结构程序设计作业答案 1、题目: 求1! +2! +3! +……+n! 的和。 由键盘输入n值,并输出运算结果。 例如: 若n值为10,则结果为4037913。 (实验教程P52-1) #include longfun(intn) {/**********Program**********/ inti; longf=1,s=0; for(i=1;i<=n;i++) {f=f*i; s=s+f; } returns; /**********End**********/ } main() {inti,n; longintresult; scanf("%d",&n); result=fun(n); printf("%ld\n",result); } 2、素数问题: (实验教程P52-1) (1)从键盘输入一个大于3的整数,判断其是否素数,然后输出相应的结论信息。 例如: 7是素数,8不是素数。 素数是仅能被1和自身整除的数。 main() {intm,flag; printf("inputaninteger: "); scanf("%d",&m); flag=fun(m); if(flag) printf("%disaprime.\n",m); else printf("%disnotaprime.\n",m); } intfun(intn) {/**********Program**********/ inti; intj; j=1; for(i=2;i if(n%i==0) {j=0; break; } returnj; /**********End**********/ } (2)求给定正整数m以内的素数之和。 例如: 当m=20时,函数值为77。 intfun(intm) {/**********Program**********/ inti,k,s=0; for(i=2;i<=m;i++) {for(k=2;k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计