题目:输入一些整数,求出他们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。
样例输入:28351736
样例输出:184.375
#include#defineINF1000000000intfile_freopen(){intx,min=INF,max=-INF,S=0,count=0;freopen("E:\\Code\\C\\算法竞赛入门经典\\Debug\\input.txt","r",stdin);freopen("E:\\Code\\C\\算法竞赛入门经典\\Debug\\output.txt","w",stdout);while(scanf("%d",&x)==1){S+=x;if(xmax)max=x;count++;}printf("%d%d%.3lf\n",min,max,(double)S/count);return0;}
#include#defineINF1000000000intfile_fopen(){intx,min=INF,max=-INF,S=0,count=0;FILE*fin,*fout;fin=fopen("E:\\Code\\C\\算法竞赛入门经典\\Debug\\input.txt","rb");fout=fopen("E:\\Code\\C\\算法竞赛入门经典\\Debug\\output.txt","wb");while(fscanf(fin,"%d",&x)==1){S+=x;if(xmax)max=x;count++;}fprintf(fout,"%d%d%.3lf\n",min,max,(double)S/count);fclose(stdin);fclose(stdout);return0;}
题目:输出100~999中的所有水仙花数,若3位数ABC满足ABC=A3+B3+C3,则称其为水仙花数。例如153=13+53+33,所以153是水仙花数。分析:考查的是循环的用法。源码:
#includeintdaffodil(){inta,b,c,x;for(a=1;a<=9;a++){for(b=0;b<=9;b++){for(c=0;c<=9;c++){x=a*100+b*10+c;if(x==a*a*a+b*b*b+c*c*c)//ABC=A*A*A+B*B*B*C*C*Cprintf("%d\n",x);}}}return0;}
运行结果:
题目:输入正整数n<=20,输出一个n层的倒三角形。例如n=5时输出如下:
分析:考查的是循环的用法,注意空格和#于层数之间的关系。源码:
#includeinttriangle(){intn,i,j,k;//共n行scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j题目:输入两个正整数n#includeintsubsequence(){intn,m,i;doublesum=0.0;scanf("%d%d",&n,&m);for(i=n;i<=m;i++){sum+=1.0/i/i;//防止i*i溢出}printf("%.5lf\n",sum);return0;}
题目:用1,2,3,……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解。提示:不必太动脑筋。分析:利用数组,sign[1]~sign[9]初始赋值为0,令sign[出现的数字]=1,若sign[1]+sign[2]+……+sign[9]==9,则9个数字本次均出现一次。源码:
#includeintpermutation(){intabc,def,ghi,sign[10]={0};//数组sign的初始值为0,当1,2,3,……,9中某一数字出现就令对应下标的数组元素为1inti,sign_sum=0;for(abc=100;abc<333;abc++)//abc一定小于333{def=2*abc;ghi=3*abc;/*令sign[在三位数的百位、十位、个位出现的数字]=1*/sign[abc/100]=sign[abc/10%10]=sign[abc%10]=1;sign[def/100]=sign[def/10%10]=sign[def%10]=1;sign[ghi/100]=sign[ghi/10%10]=sign[ghi%10]=1;for(i=1;i<=9;i++)//将sign相加,若和为9则1~9全部数字都出现一次sign_sum+=sign[i];if(sign_sum==9)printf("%d\t%d\t%d\n",abc,def,ghi);for(i=1;i<=9;i++)//数组sign重新赋值为0sign[i]=0;sign_sum=0;//sign_sum置0}return0;}