C语言上机程序题库_第1页
C语言上机程序题库_第2页
C语言上机程序题库_第3页
C语言上机程序题库_第4页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学与工程学院C语言上机150道题参考答案001.某ー门课程考试之后,需要统计考生(10人)的平均成績,并找出其中的最髙分和最低分。#include<stdio.h>#include<conio.h>main()(floata[10],ave,max,min,sum=0;inti;printf(”请输入10个考生的成绩:VT);for(i=0;i<10;i++)scanf(n%r,&a[i]);for(i=0;i<10;i++)sum+=a[i];ave=sum/10;max=a[0];for(i=1;i<10;i++)if(a[i]>max)max=a[i];min=a[0];for(i=1;i<10;i++)if(a[i]<min)max=a[i];p「intf("平均成绩:%f,最高分:%f,最低分:%f',ave,max,min);getch();}003.用while循环结构编写程中打印ASCII码为33-127的字符。#include<stdio.h>#include<conio.h>main()(inti=33;while(i<=127)(printf("%cワ);i++;)getch();}004用do-while,for循环结构・写程序打印ASCII码为33-127的字符。#include<stdio.h>#include<conio.h>main()(inti=33;do(printf("%c",i);i++;}while(i<=127);getch();}006.在1-500中,找出能同时満足用3除余2,用5除余3,用7除余4的所有整数,用箇环结构。#include<stdio.h>#include<conio.h>main()(inti;for(i=i;j<=500;i++)(if(i%3==2&&i%5==3&&i%7==5)printf(M%d\n",i);)getch();}007,输入ー个整数将其倒着输出,如54321——12345«(方法一)#include<stdio.h>#include<conio.h>#include<string.h>main()(chara[100];intlen,i;printf("请输入ー个整数:'n");scanf("%s",a);len=strlen(a);for(i=len-1;i>=0;i-)printfC%c",a[i]);getch();}007(方法二)#include<stdio.h>#include<conio.h>main()(intnum,t;printfC请输入ー个整数:、バ);scanf("%dM,&num);while(num>0)t=num%10;num=num/10;printf("%dM,t);)getch();008.计算s=1+1/3+1/5+...+1/n,梭止到#include<stdio.h>#include<conio.h>main()(intn;floatt=1,s=0;for(n=1;t>0.0001;n+=2)(t=(float)1/n;s=s+t;}printf(Hs=%r,s);getch();)009.从健盘输入ー差数n,计算1*1+2*2+...+n*n的值。#include<stdio.h>#include<conio.h>main()(intn,i,s=0;printf("请输入ー个整数:、バ);scanf(”%d”,&n);for(i=1;i<=n;i++)s=s+i*i;printf(M%d",s);getch();}010.用while価环计算1+2+……ZOO的和。#include<stdio.h>#include<conio.h>main()(ints=0,i=1;while(i<=100){s=s+i;i++;)printf(M%d",s);getch();)11.用dowhile循环计算1+2+……+100的和#include<stdio.h>main()(inti,result;i=1;result=O;while(i<=100)result=i+result;i++;)printffl+2+...+100=%dM,result);while(1);}12.用for箇环计算1+2+……+100的和。#include<stdio.h>main()(inti.result;for(i=1,result=0;i<=100;i++){result=i+result;}printf(M1+2+...+100=%dn,result);while(1);)13.输入一个小于等于10的整数n,计集n!。#include<stdio.h>longfac(intn)(longresult;if(n==0||n==1){result=1;}else {result=n*fac(n-1);}returnresult;}main()(intn;longresult;printf("请输入ー个小于等于10的整数、べ);scanf(”%d”,&n);if(n>=0&&n<=10){result=fac(n);printf(',%d!=%ld",n,result);)elseprintf("输入数据错误つ;while(1);)14.输入两个正整数m和n,计算m!+n!,m和n的值均小于10。#include<stdio.h>longfac(intn)(longresult;if(n==0||n==1){result=1;}else {result=n*fac(n-1);}returnresult;)main()(intn,m;longresult;printf("请输入两个小于等于10的整数、バ);scanf("%d%d”,&n,&m);if(n>=0&&n<=10&&m>=0&&n<=10)(result=fac(n)+fac(m);printf(',%d!+%d!=%ld",n,m,result);)elseprintf("输入数据错误ッ;while(1);}.用循环语句,计算1—100之间的所得3的倍数之和。#include<stdio.h>main()(inti.result;for(i=1,result=0;i<=100;i++){if(i%3==0)result=result+i;)printf("1-100之间的所有3的倍数之和为%d",result);while(1);}.用循环语句,计算10〇ー200之间的所有7的倍数之和。#include<stdio.h>main()(inti.result;for(i=100,result=0;i<=200;i++)(if(i%7==0)result=result+i;}printf("100-200之间的所有7的倍数之和为%d",result);while(1);}.输出1-100之间,7的鼻数倍数或数字尾数为7的数字,统计出这些数字个数。#include<stdio.h>main()inti,num;for(i=1,num=0;i<=100;i++){if(i%7==0||i%10==7)num++;)printf("1-100之间,7的整数倍数或数字尾数为7的数字个数为%d",num);while(1);}.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。#include<stdio.h>intmain()(inti=0,space=O,num=O,n=0,ch=O;chars[1000000];printf("请输入一串字符”);gets(s);while(s[i]!=ヘ〇')(if(s[i]==*')space++;elseif(s[i]<='9*&&s[i]>='0')num++;elseif(s[i]<='z'&&sp]>='a'||s[i]<=T&&s[i]>='A')ch++;elsen++;i++;}printf("刚才输入的字符中英文字符个数为%d\n",ch);printf("刚オ输入的字符中空格个数为%d\n",space);printf("刚才输入的字符中数字个数为%d\n",num);printf("刚オ输入的字符中其他个数为%d\n",n);while(1);}.输入ー个整数,统计它な几位数。如输入367.则该数宿3位数。#include<stdio.h>main()(intn,i,j;i=1;j=0;printf。请输入ー个整数、n");scanf("%d",&n);if(n==O)printf("这个数是!位数”J);else{while(n>=i)i=10*i;j=j+1;)printf("这个数是%d位数”,。;}while(1);}.•写程序,输出1到50中间所有能被3楚除的正差数。#include<stdio.h>main(){printf(M1到50中间所有能被3整除的正整数如下、バ);intn;for(n=1;n<=50;n++){if(n%3==0)printf("%d\t”,n);)while(1);).把100~200之间不能被3整除的輸出。#include<stdio.h>main()(printf(M100-200之间不能被3整除的正整数如下、バ);intn;for(n=100;n<=200;n++)(if(n%3!=0)printf("%dゼ,n);}while(1);}.・程Y=1+3+5+7+...111o#include<stdio.h>main()(printf(MY=");intnjesult;for(n=1,result=0;n<=111;n=n+2)(printf(“%d+”,n);

result=result+n;)printf(H=%d\nM,result);while(1);.编程y=1*1/2*1/3*1/4*1/5*1/6・・・.前十项之积〇#include<stdio.h>#include<conio.h>main()(inti;longinty;y=l;for(j=i;i<=io;i++)(y=y*i;)printfCy=1/%ldH,y);getch();}.编程输出九九乗法表。#include<stdio.h>#include<conio.h>main()(inti,j;for(i=1;i<=9;i++)(for(j=1;j<=i;j++)printf("%d*%d=%d\t",j,i,i*j);printf("\n");}getch();}.求1到100奇数和。#include<stdio.h>#include<conio.h>main()(inti=0,n;for(n=1;(2*n-1)<100;n++)i=i+(2*n-1);printf("1到100以内的奇数之和为:%d\n”,i);getch();).求1到100偶数和。#include<stdio.h>#include<conio.h>main()inti,s;s=0;for(i=2;i<=100;i=i+2)s=s+i;printf(H1到100的偶数和是:");printf(,,s=%d\n",s);getch();).编程求200以内所有质数(索数,#include<stdio.h>#include<math.h>#include<conio.h>intisprime(intm){inti;for(i=2;i<=sqrt(m);i++)if(m%j==O){returnO;break;}if(i>=(int)sqrt(m)+1)return1;)main(){intn.flag;for(n=1;n<=200;n++){flag=isprime(n);if(flag)printf("%d\tH,n);}getch();}.从健盘输入ー个整数,求该数的绝对值。#include<stdio.h>#include<conio.h>main()(floata,t;printf("Pleaseinputthevalue\tM);scanf("%f”,&a);if(a<0)t=-a;elset=a;printf("Theabsolutevalueis:\t%f,t);getch();).从健盘输入+、-、・ヽノ中的任一个,输出对应的英文单词:plus、minus,mutiply.divide»如輸入的不是这4个字符中的任一个,则输出、。rry,youarewrong:#include<stdio.h>#include<stdlib.h>main()charch;ch=getchar();if(ch=='+')printf("plus\nM);elseif(ch==,-')pnntf(nminus\n");elseif(ch=='*')printf("multiply\nM);elseif(ch==7)printf("divide\n");elseprintf(Myouarewrong1');system("pause");).从健盘输入一个字符,判断其是否为a,r,或f,并输出相应的信息(不区分大小写b#include<stdio.h>#include<conio.h>main()(charn1='a',n2ゴr\n3='f,n4;charm1=7V,m2=R',m3='F';printf(“请输入一个字符:");scanf("%c",&n4);if(n4==n1||n4==m1){printf("youareright!\n");printf("n4=%c\nM,n4);}elseif(n4==n2||n4==m2){printf("youareright!\n");printf("n4=%c\n",n4);)elseif(n4==n3||n4==m3){printf("youareright!\n");printf("n4=%c\n",n4);)elseprintf("youputintoawrongchar!\n");getch();}.求解一元二次方程ax2+bx+c=0的跟(a不等于〇),a,b,c均为实数,其值由健盘輸入。#include<math.h>#include<stdio.h>#include<conio.h>main()(doublea,b,c;doubles,x1,x2;printf("pleaseentera,b,c:\n");scanf(”%lf%lf%「&a,&b,&c);if(a>=-(1e-6)&&a<=(1e-6))printf("sorry!youhaveawrongnumbera.\nH);else(s=b*b-4*a*c;if(s>(1e-6))(x1=(-b+sqrt(s))/(2*a);x2=(-b-sqrt(s))/(2*a);printf(Htherearetwodifferentreal:\nx1=%5.2f,x2=%5.2f\n",x1,x2);}elseif(s>=-(1e-6)&&s<=(1e-6))(x1=x2=-b/(2*a);

printf("therearetwoequalreal:\nx1=x2=%5.2f\n",x1);}else(s=-s;x1=-b/(2*a);x2=fabs(sqrt(s)/(2*a));printf(Htherearetwodifferentcomplex:\nM);printf(Hx1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\nM,x1,x2,x1,x2);))getch();}.■ー程序,对于给定的ー个百分制成绩»输出用像‘ハ,B,C ピ表示的等级成绩。设:90分以上为7V,8〇〜89分为宜,7〇〜79分为‘C',6〇〜69分’D',60分以下为'E'。(要求用switch语句・程b#include<stdio.h>#include<stdlib.h>main()(intscore,temp,logic;chargrade;logic=1;while(logic){printf("inputscore:\n'*);scanf("%d",&score);if((score>100)||(score<0))printfOnerror,inputagain!\n");elselogic=0;printf("\nM);)if(score==100)temp=9;elsetemp=(score-score%10)/10;switch(temp)(case9:grade='A';break;case8:grade='B';break;case7:grade-C';break;case6:grade='d';break;case5:case4:case3:case2:case1:case0:grade='e';break;)printf(Hscoreis:%d,thegradeis:%c.\n*',score,grade);system("pause");).输入ー个整数,判新它能否被3,5.7整除。#include<stdio.h>#include<conio.h>main()(intx;printf("Pleaseenterx:");if((x%3==0)&&(x%5==0)&&(x%7==0))printf("%d能被3,5,7整除",x);elseprintf("%d不能被3,5,7整除“,x);getch();}.用整数1~12依次表示1~12月,由健盘输入一个月份数,输出对应的季节英文名称(12~2月为冬季;3~5月为春季;%8月为!1季;9-11月为秋季。要求用if嵌套实现卜#include<stdio.h>#include<conio.h>main()(intmonthj;100p:printf("enteraninteger。~12):\n");scanf("%d”,&month);if(month<1||>12)gotoloop;r=month%12;r=r/3;if(r==O)printf("winter\n*');elseif(r==1)printf("spring'n");elseif(r==2)printf("summer\nH);elseprintf("autumn\n");getch();}.•写输入整数a,b,c,当a为1时显示b和c之和,a为2时显示b与c之差,a为3时显示b*c之积,a为4时取b/c之商,a为其他数值时不做任何操作的程序。#include<stdio.h>#include<conio.h>main()(inta,b,c;printffpleaseentera,b,c:\n");scanf("%d%d%d",&a,&b,&c);switch(a)(case1:printf(',%d+%d=%d\n",b,c,b+c);break;case2:printf(M%d-%d=%d\n",b,c,b-c);break;case3:printf(',%d*%d=%d\n',,b,c,b*C);break;case4:printf(H%d/%d=%d\n",b,c,b/c);break;default:break;}getch();}.端写输入一个薨数,将其数值按小于10,10~99,100-999,1000以上分类并显示。#include<stdio.h>#include<conio.h>main()(inta;printf("请输入整数A:\n");scanf("%d",&a);if(a<10)printf("整数%d小于10〇H,a);elseif((a>=10)&&(a<99))printf("整数%d大于等于10且小于100。”,a);elseif((a>=100)&&(a<999))printf(”整数%d大于等于100且小于1000。”,a);elseprintf(”整数%d大于等于1000。",a);getch();}.编写输入一个薨数,当为65时显示A,66时显示B,67时显示C,其他值时显示END的程序。#include<stdio.h>#include<conio.h>main()(inta;printf("请输入整数a:\n");sea吋%d”,&a);switch(a)(case65:printf("A");break;case66:printf(,,B");break;case67:printf("CH);break;default:printf(HENDM);}getch();}.事程实现:输入4个整数,要求按由小到大输出。#include<stdio.h>#include<conio.h>main()(inta,b,c,d,t;printf("请输入4个整数:a,b,c,d:\n");scanf("%d%d%d%d”,&a,&b,&c,&d);if(a>b){仁a;a=b;b=t;)if(c>d)(t=d;d=c;c=t;)if(a>c){t=c;c=a;a=t;)if(b>d)(t=b;b=d;d=t;}if(b>c){t=b;b=c;c=t;)printf("排序后:%d<%d<%d<%d",a,b,c,d);getch();}.企业发放的奖金根据利润的提成,利润I低于或等于10万元的,奖金可提10%;利润髙于10万元低于20万时,低于10万的部分按10%提成,髙于10万元的部分,可提成7.5%;20万元W=40万元时,低于20万的部分仍按上述办法,髙于20万元部分按5%提成;利润超过40万元时,低于40万元的部分按上述办法,髙于40万元部分按1%提成。从健盘输入当月利润I,求应发奖金部分。#include<stdio.h>#include<conio.h>main()(ints,p;floattax;printff'enterincome:*');scanf("%d",&s);printf("\n");if(s>800){if((s-800)%100!=0)p=(s-800)/100+1;elsep=(s-800)/100;switch(p)case0:case4:tax=(s-800)*0.05;break;case5:tax=400*0.05+(s-1200)*0.08;break;default:tax=400*0.05+800*0.08+(s-2000)*0.2;break;})elsetax=O;printf("Tax=%.2f',tax);getch();)40.给出ー百分制成箱,要求输出成绩等级90分以上为‘A',80»89分为7679分为‘C,60-69分为‘D',60分以下为‘E;>#include<stdio.h>#include<conio.h>main()(intscore,temp,logic;chargrade;logic=1;while(logic){printf("inputscore:");scanf("%d",&score;);if((score>100||score<0)printf("\nerror,inputagain!\n");elselogic=0;printfCAn");}if(score==100)temp=9;elsetemp=(score-score%10)/10;switch(temp){case9:grade='A';break;case8:grade='B';break;case7:grade-C1;break;case6:grade='D,;break;case5:case4:case3:case2:case1:case〇:gradeゴE';)printf("scoreis:%d,thegradeis:5c.\n",score,grade);getch();}.给出ー个不多于5位的正豊数,分别打印出毎一位数字。#include<stdio.h>intmain(void)(intx,i=0;do{printf("请输入数字:");scanf(”%d”,&x);if(x>99999||x<0)printf("输入的数据不合法.请重新输入!\n");}while(x>99999||x<0);while(x!=O)(printf("%d\t',,x%10);x=x/10;i++;)printfCn这个数共有%d位、n”,i);return0;}.从健盘输入三个正整数,判断这三个数能否构成三角形。#include<stdio.h>#include<conio.h>doublesquare(intajntbjntc);main()(intx,y,z;floatS;printf(Hpleaseenterx.y.andz(x,y,z>0)\nM);scanf(”%d%d%d”,&x,&y,&z);if((x+y<=z)||(x-y>=z)||(x+z<=y)||(x-z>=y)||(y+z<=x)||(y-z>=x))printf(nsorry,youarewrong!\nM);ElsePrintf(Myes!\n");.・写输入两个整数a和b,若azb时,求其积c并显示,若a〈b时,求其商c并显示的程序。#include<stdio.h>#include<conio.h>main()(inta,b,c;printffpleaseenter:\n");scanグ%d%d”,&a,&b);if(a>=b){c=a*b;printf(,,%d*%d=%d\n,,,a,b,c);)else(c=b/a;printf("%d/%d=%d",a,b,c);)getch();}•程实现:从催盘输入三个正事数,判断它<!是否构成直角三角形。#include<stdio.h>#include<math.h>voidmain()(inta,b,c;printf("请输入三角形的三条边用逗号隔开a,b,c:");scanf("%d,%d,%d,,,&a,&b,&c);if((a>0)&&(b>0)&&(c>0)&&((a+b)>c)&&((b+c)>a)&&((a+c)>b))(if((a*a==b*b+c*c)||(b*b==a*a+c*c)||(c*c==a*a+b*b))printf("直角三角形'n");elseprintf("不是直角三角形'n");)elseprintf("不能组成三角形、バ);}•程实现:从催盘输入三个正立数,判断它们是否构成等腰三角形。#include<stdio.h>main()(inta,b,c;printf(”请输入三角形的三条边用逗号隔开a,b,c:M);scanf("%d,%d,%d",&a,&b,&c);if((a+b)>c&&(a-b)<c)if(a==b||b==c||c==a)printf(”这是个等腰三角形、バ);elseprintf(”这不是等腰三角形'n”);elseprintf(”这三条边不能构成三角形'n“);).从健盘输入ー个鼻数,判断其是否索数。#include<stdio.h>main()(inti,j=O,a;printf(”请输入ー个整数'n”);scanf(”%d”,&a);if(a>0&&a!=1)(for(i=1;i<=a;i++)(if(a%i==0)j++;printf("这不是素数、n");printf("这是素数、n");if(a<0)printf("输入错误リ;if(a==1||a==0)printf("这不是素数”);).两个乒乓球队进行比赛,各出3人。甲队为A,B,C3人,已队为X,Y,Z3人。已抽签决定比赛名单。*人向队员打听比赛的名单,A说他不和X比,C说他不和XZ比,清・程找出3对赛手的名单。#include<stdio.h>#include<conio.h>main()(chari,j,k;for(i=,X,;i<=,Z*;i++)forU='X';j<=T;j++)if(叼)for(k='X';k<=,Z';k++)if(i!=k&&j!=k)if(i!='X'&&k!='X'&&k!=,Z,)printf("A--%c\tB--%c\tC--%c\t”,i,j,k);getch();.修写程序从健盘输入两个不等于零的正薨数a,b(avb),求它们之间的几何级数的和0#include<stdio.h>#include<math.h>voidmain()(inta,b,c,d,e,f,t;printf("从键盘输入两个不等于零的正整数a,b(a〈b)\n“);scanf("%d,%d",&a,&b);printf("\n从键盘输入两个不等于零的正整数c,d-使数据以c的d次方増长、バ);scanf("%d,%d",&c,&d);e=a*pow(c,d);f=b*pow(c,d);t=e+f;printf(,r\n%d的几何级数二%d\n",a,e);printf(M%d的几何级数二%d”,b,f);printfC%d,%d之间的几何级数的和二%d\n”,a,b,t);.•写程序,统计从健盘输入的字符的个数(回车换行将也是ー个字符),当遇到结束标志时程序结束。#include<stdio.h>main()(charch;unsignedcount=0;printf("Pleaseenteryourwords:\nM);while((ch=getchar())!=EOF)count=count+1;printf("count=%u\n",count);).・写程序,求面积在100平方米以内的半径,输出所有満足条件的半径值和圖的面积的值。#include<stdio.h>voidmain()(intr,s;for(r=1;r<100;r++)(s=3.14*r*r;if(s<100)printf("半径为%d,面积为%d\n",r,s);)}.a写程序,在屏幕上输出阶梯形式的乗法口诀表。#include<stdio.h>voidmain()(inti,j;for(i=1;i<=9;i++){forG=1;j<=i;j++)printf(M%d*%d=%d\r,j,i,i*j);printf("\nH);)}.求两个正整数的最大公约数和最小公倍数。#include<stdio.h>main()(intp,rtn,m,temp;printf(”请输入两个正整数,用逗号隔开:");scanf("%d,%d",&n,&m);if(n<m)(temp=n;n=m;m=temp;}p=n*m;while(m!=O)r=n%m;n=m;m=r;)printf("这两个数的最大公约数是:%d\n”,n);printf(〃这两个数的最小公倍数是:%d\n”,p/n);}.某人有5张2角和4张3角的邮票,使用这些邮票能组合出多少种不同面值的邮资〇#include<stdio.h>voidmain()(inti,j,sum=0;floata[10],b[10];for(i=0;i<=5;i++)(for(j=0;j<=4;j++)(if(i==0&&j==0);//i=0,j=0时,组合出的面值是〇,所以sum不加1,即什么都不执行elsesum++;)}for(i=1;i<=5;i++) 〃检测可能组合出的相同的面值,并减去(a[i]=float(i*0.2);f0r(j=i;j<=4;j++)(b[j]=float(j*0.3);•f(a[i]==bO])sum-;})printfC'5张2角和4张3角的邮票共能组合出%d种不同面值的邮资いn”,sum);}57,求不超过1000的回文素数。#include<stdio.h>#include<math.h>voidprime_number(intn)//判断整数n是否为素数(inti,m,t,s=1; //s是一个标志,s=1表示是素数,s=0表示不是素数m=sqrt(n);for(i=2;i<=m;i++)t=n%i;if(t==O)s=0;)if(s==1) 〃如果s=1,n就是素数printf("%d\n",n);;)voidhuiwen(intn)(intj.k.a;k=n;a=0;while(k!=0) 〃把整数n反向表示成a,即如果n=321,反向后a=123(j=k%10;k=k/1O;a=a*10+j;}if(a==n)〃如果a=n,那么n就是回文数,然后再调用素数判断函数判断n是否为素数prime_number(n);)voidmain()(inti;printf(H1OOO以内的回文素数有:'バ);f0r(i=i;i<=iooo;i++)huiwen(i);}.自守数是指ー个数的平方的尾数等于该数自身的自然数。如:762=5776I求出2000000以内的自守数。#include<stdio.h>intpow(intn)(inti,s=1;for(i=0;i<n;i++)s*=10;returns;}voidfun(intnum)(inti,a[7],b[7],c[7],number,s=0,sum;number=num;while(num!=0)a[s]=num%10;num/=10;s++;)for(i=1;i<s;i++)(b[i]=a[i]*pow(i);)for(i=1;i<s;i++)(c[i]=number%(pow(i));}sum=a[O]*number;for(i=1;i<s;i++)(sum+=b[i]*c[s-i];)if(sum%pow(s)==number)printf(u%d\n",number);)voidmain()(inti,m;for(i=0;i<2000000;i++)fun(i);).输入自然数n,将n分解为质因子连乗的形式输出。例如,输入y56,则程序显示为756=2*2*3*3*3*7〇#include<stdio.h>#include<math.h>intprime_number(intn)〃判断整数n是否为素数(inti,m,t,s=1; Ils是一个标志,s=1表示是素数,s=0表示不是素数m=sqrt(n);for(i=2;i<=m;i++)(t=n%i;if(t==O)s=0;)returns;}voidmain()(inti,count=0,n,primes[1000],a[1000];ints,j=O,k=O;printf(”请输入ー个数据n(n>=1):");scanf("%d",&n);while(n<=1)printf("数据不合法,请重新输入数据:");scanf("%dH,&n);)for(i=2;i<=n;i++)(s=prime_number(i);if(s==1)primes[++j]=i;)count=j;pnntf("%d=H,n);for(i=1;i<=count&&n>=primes[i];i++)(while(n%primes[i]==O)(a[k]=primes[i];k++;n/=primes[i];)}for(i=0;i<k-1;i++)printf(M%d*M,a[i]);printf("%d\n",a[k-1]);).从健盘上输入若干个学生的成绩,当成绩小于等于〇时结束输入。计算出平均成績,并输出不及格的成績和人數。#include<stdio.h>voidmain()(floata,grade[100],average,sum=0;〃grade[100]存储不及格成绩,average表示平均成绩,sum表示总成绩inti=O,j,n=O;Z/i表示不及格人数,n表示总人数printf("请输入ー个学生的成绩(0-100):");scanf("%f',&a);while(a>0&&a<=100) //要求输入成绩在0-100之间(n++;sum+=a;if(a<60){grade[i]=a;i++;}printf("请输入一个学生的成绩(0-100):");scanf("%f',&a););average=sum/n;printf("平均成绩是:%4.2f/%d=%4.2f\n",sum,n,average);printf("共有%d同学成绩不及格,他们的成绩如下ヘバ,i);for(j=0;j<i;j++)(printf(w%4.2f\r,gradeO]);)printf(”\n");).金ー函数,将一个字符串的字符反向输出到屏幕。#include<stdio.h>#include<string.h>intmain()(chara[81];intsum=O;gets(a);for(inti=strlen(a)-1;i>=0;i-)//strlen是统计字符串长度的函数,它的头文件是string.hprintf(H%cM,a[i]);printf(”\n");return0;}.例&5■ー函数,从健盘输入ー个正整数n,求nl。.修ー函数,从健盘输入ー个正整数n,求Xn#include<stdio.h>intfun(intn)(if(n==0||n==1)return1;elsereturnn*fun(n-1);)voidmain()(intn,s;printf(”请输入一个正整数:ツ;scanf("%d",&n);s=fun(n);printf("%d!=%d\nM,n,s);}.・ー函数»从健盘输入2个正整数,求最小公倍数。#include<stdio.h>voidSwap(int&x,int&y)inttem;tem=x;x=y;y=tem;}intmain()(intx,y;printf("请分别输入两个整数:");scanf("%d%d",&x,&y);intmax=x*y;intt;if(x<y)Swap(x,y);t=x%y;while(t!=O)(x=y;y=t;t=x%y;)max=max/y;printf("最小公倍数为:%d\nM,max);return0;).输入1行字符(不超过80个字符、*ー函数,统计该行字符中数字的个数。#include<stdio.h>#include<string.h>voidnumber()(chara[81];inti,sum=0,s;printf(”请输入一个字符串:");gets(a);s=strlen(a);for(i=0;i<s;i++)(if(a[i]>=48&&a[i]<=57)sum++;)printf("该字符串中数字的个数为:%d\n",sum);}intmain(){number();return0;).输入ー个5行、6列的整数数组,先以5行6列的格式输出该数组:从镰盘输入ー个整数,然后修一函数,査找该数是否在数组中。#include<stdio.h>〃此程序,对于如果要查找的数据在数组里,且此数据有重复,只输出查找的第一个数据的位置。〃如果要把所有与查找的数据都输出来,将第20行的代码return0;去掉。intmain()(inta[5][6];intijx;printf("输入5行6列的数组:\n");for(i=0;i<5;i++)for(j=0;j<6;j++)scanf("%d",&a[i]O]);printf("输入你要查询的数:");scanf("%d"J&x);for(i=0;i<5;i++)for0=O;j<6;j++)if(x==a[i][j]){printf("你要查找的数在第%d行,第%d列!\nM,i+1,j+1);return0;)return0;).编写程序,通过调用函数intabs_sum(inta,intb),求从健盘输入的任意3个整数的绝对值的和。#include<stdio.h>intabs_sum(inta,intb)(if(a<0&&b>0)returnb-a;elseif(a>0&&b<0)returna-b;elseif(a<0&&b<0)return-(a+b);returna+b;}intmain()(intx,y,z;printf("请分别输入x,y,z的值:");scanf("%d%d%dH,&x,&y,&z);printf(H%d\n'\abs_sum(abs_sum(xly),z));return0;).Hbonacd数列的蛆成规律为:0,1,1,2,3,5,8,13,21,..,〇・写程序,求Fibonacci数列第I项的值(〇布40).#include<stdio.h>intFibonacci(intn)(if(n==O)return0;elseif(n<=1)return1;returnFibonacci(n-1)+Fibonacci(n-2);}intmain()(inti;for(i=0;i<=40;i++)printf("%d\n"lFibonacci(i));return0;).金写程序,通过调用函数doublearea(doubler)»计算园的面积,要求圖的半径r从健盘输入。#include<stdio.h>#definePI3.14doublearea(doubler)(returnPl*r*r;}intmain()(doubler;printf("请输入半径:");scanf("%lf\&r);printf("%.3lf\n",area(r));return0;}.修写程序,通过调用函数doublearea(doubler,doubleh),计算圆柱的表面积,要求囲柱的半径r及髙h的值从健盘输入。#include<stdio.h>#include<math.h>#definePI3.14doublenum(doubler,doubleh);main()(doublearea,r,h;scanf("%lf%ir,&r,&h);area=num(r,h);printf("%lf',area);}doublenum(doubler,doubleh)(return(4*PI*r*r+2*PI*r*h);).•写程序,通过调用函数doublearea(doubler,doubleh)»计算圆柱的体积,要求HI柱的半径r及髙h的值从健盘输入。#include<stdio.h>#definePI3.1415926floatarea(floatr,floath)doublev;v=p|*r*r**h;returnv;)main()(floatr,h,v;printf("请输入圆的半径和髙度、n“);scanf(M%f%r,&r,&h);v=area(r,h);printf("%f,v);getchar();getchar();)72.11j写ー个函数(计算并返回一个整数的立方。#include<stdio,h>Intfunc(intn)(Returnn*n*n;)main(){intx,y;printf(Mpleaseinputthevalueofx:\nH);scanf("%d”,&x);y=func(x);printf(My=%dn,y);}73.设计ー个函数,交换数组a和数组b的对应元素。#include<stdio.h>;#defineN10voidswap(inta[],intb[])(inti,temp;for(i=0;i<N;i++)(temp=a[i];a[i]=b[i];b[i]=temp;}}main()(intj;inta[N],b[N];forO=0;j<N;j++)scanf("%d",&aO]);forG=0;j<N;j++)scanf("%d”,&b[j]);swap(a,b);printf("afterchange:\n");forG=0;j<N;j++)printf("%d”砌;printf("\nM);forG=0;j<N;j++)printfC'%d)75.设有两个整型数组a,b,试比较这两个数组统计出这两个数组中对应元素相等与不相等的个数。#include<stdio.h>#definen6main()(inta[n],b[n];inti,j,sum=O,c;printf("pleaseinput6num:");for(i=0;i<n;i++)scanf("%d",&a[i]);printf(”\n");printf("pleaseinput6num:**);for(i=0;i<n;i++)scanf("%dn,&b[i]);printf("\nM);for(i=0;i<n;i++)forO=0;j<n;j++)(if(a[i]==bD])sum++;)printf("相等的个数:");printf(M%d\n",sum);c=n-sum;printf("不相等的个数一);printf("%d\nw,c);}.•写程序,将字符串str中的所存字符k・除。.找出ニ维数组的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有歎点。#include<stdio.h>#include<conio.h>#defineN4#defineM5main()(inti,j,k,a[N][M],max,maxj,flag;printf(HpleaseinputAn");for(i=0;i<N;i++)for(j=0;j<M;j++)scanf("%dM,&a[i]O]);for(i=0;i<N;i++)(max=a[i][O];maxj=O;for(j=0;j<M;j++)if(a[i][j]>max)(max=a[i][j];maxj=j;}for(k=0;k<N;k++)if(max>a[k][maxj])(flag=O;continue;)if(flag){printf("a[%d][%d]=%d\n",i,maxj,max);break;}}if(用ag)printf("ltisnotexistin'');getch();78.回文是从前向后和从后向前读起来都一样的句子。写ー个函数,判断ー个英文字符串是否为回文。#include<stdio.h>#include<string.h>inthuiwen(charstr口);intmain()(charstr[50];printf("pleaseinputstringsAn");gets(str);if(huiwen(str))printf("%s是回文数:'n”,str);elseprintf("%s不是回文数:\n”,str);getchar();inthuiwen(charstrロ)(inti,j,len,flag=1;len=strlen(str);for(i=0,j=len-1;i<=j;i++,j-)if(str[i]!=strO])flag=O;returnflag;).若荷说明:inta[2][3]={{1,2,3},{4,5,6});»现要将a的行和列的元素互换后存到另一个二维数组b中,试・程。#include<stdio.h>main()(inta[2][3]={{1,2,3},{4,5.6});inti,j;intb[3][2];for(i=0;i<2;i++)(forO=0;j<3;j++)printf("a[%d][%d]=%d\t",i,j,a[i]g]);printfOn");)for(i=0;i<3;i++)for0=O;j<2;j++)b[i]OJ=aO][i];for(i=0;i<3;i++)(for(j=0;j<2;j++)printf(wb[%d][%d]=%d\tM,i,j,b[i]O]);printf(H\n");)}}if(andian(a,n,m)==-1)printf(H\nnoandian\n");}.求Sn=a+aa+aaa+...+aaa...a的值。例如当a=2,n=4时»Sn=2+22+222+2222oa和n由健盘输入。(用函数调用实现)#include<stdio.h>main()(inta,n,i,t=0,sn=0;scanf(”%d%d”,&a,&n);for(i=1;i<=n;i++)t=t*10+a;sn+=t;printf("sn=%dn,sn);getch();.求两个正事数的最大公约数(用函数调用实现)。#include<stdio.h>intgcd(intm,intn)(if(m%n==0)returnn;elsereturngcd(n,m%n);)intmain()(intm,n,t;scanf("%d%d",&m,&n);if(m<n)(t=m;m=n;n=t;}printf("%d\nH,gcd(m,n));return0;}.计算11+21+3!+…+n!的值,n值由健盘输入(要注意n1的宿效性)。#include<stdio.h>intmain()(longn,i,sum=0,tmp=1;scanf(M%ld",&n);for(i=1;i<=n;i++)(tmp*=i;sum+=tmp;}printf("%ld\n",sum);return0;).■写程序,用・泡法对20个整数排序。#include<stdio.h>intmain(){inti,j,a[20],tmp;for(i=0;i<20;i++)scanf("%d",&a[i]);for(i=0;i<20;i++)forG=i+1;j<20;j++)(if(a[i]>aO])(tmp=a[i];a[i]=aO];a[j]=tmp;})for(i=0;i<20;i++)printf("%d",a[i]);return0;).・写程序,将一个数插入到有啓的数列中去,排入后的数列仍然有序。#include<stdio.h>#defineN6intmain()(inti,j,n,a[N]={1,7,10,20,50);scanf("%d",&n);for(i=0;i<N-1;i++)(if(a[i]>n)(forO=N-1;j>i;j-)a[j]=a[j-1];a[i]=n;break;if(i==N-1)a[N-1]=n;for(i=0;i<N;i++)printf("%d",a[i]);return0;).输入1行字符(不超过80个字符)。♦ー函数,统计该行字符中空格的个数。#include<stdio.h>#include<string.h>intmain(){inti=0,count=0;chara[100];gets(a);for(i=0;i<strlen(a);i++)if(a[i]==',)count++;}printf("%d\n,',count);return0;).金ー函数,连接2个字符串,输出連接后的字符串。#include<stdio.h>intmain()(inti=0,j=0;chara[100],b[100];scanf(H%s%s",a,b);while(a[i++]!='\0,);i一;while(b[j]!Wa[i++]=b0++];a[i]=へ(T;printf("%s\nH,a);return0;).端ー函数,将1个字符串え制到另1个字符串,输出字符事。#include<stdio.h>#include<string.h>intmain()(inti=0,count=0;chara[100],b[100];gets(a);while(a叩バ0'){b[i]=a[i];i++;)b[i]=へ。';printf("%s\n",b);return0;}.输入ー个5行、6列的数姐,先以5行6列的格式输出该数组,然后金ー函数»找出该数组中值最小的元素,输出该元素及其两个下标。#include<stdio.h>intmain()(inti,j,a[5][6],x,y,min;for(i=0;i<5;i++)for(j=0;j<6a++)scanf("%d",&a[i]OJ);for(i=0;i<5;i++)forO=0;j<6;j++)printグ%d”,a皿]);printf("\n");}x=O;y=O;min=a[O][O];for(i=0;i<5;i++)for(j=0;j<6;j++)if(a[i]O]<min)(min=a皿];x=i;y=j;)printf("i=%dj=%dval=%d\n",x,y,min);return0;}.输入1行字符(不超过80个字符)0・ー函数,统计该行字符中字母的个数。#include<stdio.h>#include<string.h>intmain()|inti=0,count=0;chara[100];gets(a);for(i=0;i<strlen(a);i++)(if(a[i]>=,a'&&a[i]<=<z,||a[i]>='A'&&a[i]<='Z')count++;)printf(H%d\nM,count);return0;).■写程序,对10个从健盘任意输入的字符排序后输出。#include<stdio.h>#defineN10intmain(){chara[N],tmp;inti,j;for(i=0;i<N;i++)scanf("%c*',&a[i]);for(i=0;i<N;i++)for(j=i+1;j<N;j++)if(a[i]>aU])tmp=a[i];a[i]=aUl;aQ]=tmp;for(i=0;i<N;i++)printf(”%c”,a[i]);return0;}.■写程序,在有序的数列中査找某数,若该数在此数列中,则输出它所在的位置,否则输出nofoundo#include<stdio.h>intmain()|inti,n,a[10]={1,2.3,4,5,67,8,9,10);scanf(M%dH,&n);for(i=0;i<10;i++)(if(a[i]==n)(printf(M%d\n",i+1);break;}}if(i==10)printf("nofound'd);return0;).编写函数,从ー个排好序的整型数组中•去某数。#include<stdio.h>#defineN5intmain()(inti,j,n,a[N]={1,2,3,4.5};scanf(M%d",&n);for(i=0;i<N;i++)(if(a[i]==n)(for(j=i;j<N-1;j++)affl=ag+1];break;)}for(i=0;i<N-1;i++)printf(M%dM,a[i]);return0;}94.数组a长度为10,保存10个薨数。试・程将数组中的元素逆要求:使用自定义函数实现逆厦操作。(将数组中元索順序順倒)#include<stdio.h>#definen10//定义n的值为10(数组长度)voidnizhi(intp口)//定义函数nizhi(逆置),传进ー个数组(传址)intx=n-1,i,j=n/2,temp;for(i=0;i<j;i++)temp=p[i];P[i]=PM;p[x]=temp;x-;)}voidmain()(inti,a[n]={1,2,3,4,5,6,7,8,9,10);for(i=0;i<n;i++)printf(M%dM,a[i]);printfOn");nizhi(a);for(i=0;i<n;i++)printf(M%d-)95编程模拟字符串短制函數strcpy。要求:不能调用系统函数,使用自定义函数实现。#include〈iostream.h>char*strcopy1(char*p,char*q)(char*a=q;while(*p!='\0'){*q++=*p++;}returna;}intmain()(chara[10]-'aaaH;charb[10]=HssssM;char*c;c=strcopy1(a,b);cout«c;return0;}96•・程模拟字符串比较函数strcmp。要求:不能调用系统函数,使用自定义函数实现。#include<iostream.h>#include<string.h>intmin(inta,intb)(return((a<b)?a:b);)voidmain()chara[1000],b[1000];intlena,lenb,i,t,res,flag=O;cin»a»b;lena=strlen(a);lenb=strlen(b);t=min(lena,lenb);for(i=0;i<t;i++)if(a[i]>bO])(res=1;flag=1;break;}elseif(a[i]<b[i])(res=-1;flag=1;break;}if(!flag)if(lena>lenb)res=1;elseif(lena<lenb)res=-1;elseres=O;cout«res«endl;.・程模拟字符串连接函数strcat。要求:不能调用系统函数,使用自定义函数实现。#include<stdio.h>#include<stdlib.h>/・注:第一个for()循环用于让i成为第一个字符串的结束符的下标,要注意在这个for()后要有一个分号否则出错。第二个for()的作用是将第二个字符串ー个一个字符依次放到第一个字符串的未尾。此外,还要注意最后一定要有p1[i尸へ。’;来给字符串加上结束符。・/voidfun(charp1口,charp2Q){inti,j;for(i=0;p1[i];i++);ford=O;p20];j++)p1[i++]=p20];p1[iドへ。';}main(){chars1[80],s2[80];system("cls");printf("Enters1ands2:\n");scanf("%s%s",s1,s2);printf("s1=%s\n",s1);printf("s2=%s\n",s2);printf("lnvokefun(s1,s2):\nw);fun(s1,s2);printf(HAfterinvoking:\n");printf("%s\n",s1);return0;}.・程模拟字符串操作函数strupr(小写转化为大写、要求:不能调用系统函数,使用自定义函数实现。#include<stdio.h>#include<stdlib.h>intmain(){chara[30]=fa,,T,,c',T,'g\,h*};(自己输入)inti;for(i=0;i<30;i++)if(a[i]>='a,&&a[i]<='z')a[i]=a[i]-32;for(i=0;i<30;i++)printf("%cM,a[i]);system("pauseM);}.・程模拟字符串掾作函数str1wr(大写转化为小写,要求:不能调用系统函数,使用自定义函数实现。include<stdio.h>#include<string.h>voidfun(chara。,intsize)(inti;for(i=0;i<size;++i){if(a[i]>=TV&&a[i]<=Z)a[i]+=32;)}voidmain()(charstrf]="A,B,C,D,E,F":(自己输入)fun(str,strlen(str));puts(str);).从健盘输入5个整数,保存于数组中。编程找出其中最大值和最小值,把二者位置对调,然后输出调整后的数组。要求:使用自定义函数实现对调。#include<stdio.h>inti,max,min,n,a[1000];voidswapvar(intsjntt)(inttemp;temp=a[s];a[s]=a[t];a[t]=temp;)intmain(){printfC请输入nゴ);scanf(”%d”,&n);printf("shuru5geshu*');for(i=0;i<n;i++)scanf(M%d",&a[i]);for(i=max=min=O;i<n;i++)(if(a[i]>a[max])maxn=i;if(a[i]<a[min])minn=i;)swapvar(min,max);for(i=0;i<n;i++)printf("a[%d]=%d\tM,i,a[i]);return0;)101,有一个已排序好的数组,现输入ー个数,要求按原来排序规则插入到数组中。使用自定义函数实现。#include<stdio.h>intmain()(inta[7]={1,2,3,4,5,6.7},k[10];intm,i,j=0,h=0;scanf(M%d",&m);for(i=0;i<7;i++)(if(a[i]<=m&&a[i+1]>=m&&h==0){kg++]=a[i];k0++]=m;h=1;}elsek[j++]=a[i];)for(i=0;i<j;i++)printf(',%dM,kp]);return0;}这只是按升序排列的,降序自己改103.编写ー个函数,该函数可以统计ー个长度为2的字符串在另ー个字符串中出現的次數。#include<stdio.h>#include<string.h>#include<stdlib.h>intfun(char*str,char*substr)(inti,j=0;for(i=0;str[i+1]!='\0';i++)if(str[i]==substr[0]&&str[i+1]==substr[1])j++;returnj;)voidmain()(FILE*wf;charstr[81],substr[3];intn;system("CLS");printf("输入主字符串:");gets(str);printf("输入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf("n=%d\nM,n);^******************************/wf=fopen("out.dat","w");n=fun(Hasdasasdfgasdaszx67asdmklo",^'as',);fprintf(wf;,%d",n);fclose(wf);y*****************************I}104.调・ー个函数!un(char、),函数的功能是把字符串中所有的字母改写成该字母的下ー个字母,最后ー个字母z改写成字母a:大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。#include"conio.h"include”string.h”include"stdio.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论