xiaosaist for fun2017
#include <stdio.h> int main() { int answer=9699; printf("%d\n",answer); return 0; } 程序分析:属于数学题,直接输出结果即可,关键在于计算和细节。 二:B儿童节快乐 #include <stdio.h> int max(int x,int y); int min(int x,int y); int main() { int a,b,c,answer; while(scanf("%d%d%d",&a,&b,&c)!=EOF){ int maxs=max(a,max(b,c)); int mins=min(a,min(b,c)); answer=maxs-mins; printf("%d\n",answer); } return 0; } int max(int x,int y) { int t; t=x>y?x:y; return t; } int min(int x,int y) { int t; t=x<y?x:y; return t; } 程序分析:当时这道题做出来了,这次试了试调用函数。 三:D题程序: #include <stdio.h> int main(){ int a,b,c,d,s; while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF){ s=3*(a+b+c+d); printf("%d\n",s); } return 0; } 程序分析:最关键的是分析出“s=3*(a+b+c+d);”这个表达式。不然就会把问题想复杂。我遇到的问题是最后发现得多组输入,然后用了“while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)”这条语句。(设a=1,下落高度1 1/2 1/2 1/4 1/4 1/8 1/8 1/16 1/16.......然后是1+1+1/2+(1/4+1/8+1/8+1/16+1/16+.....)近似为3) 四:E题程序: #include <stdio.h> void read_array(int a[],int n); void bubble_sort(int a[],int n); main() { int a[1000]; int n,k,i; while(scanf("%d%d",&n,&k)!=EOF) { int s=0; read_array(a,n); bubble_sort(a,n); for(i=0;i<k;i++) s+=a[i]; printf("%d\n",s); } return 0; } void read_array(int a[],int n) { int i; for(i=0;i<n;i++) scanf("%d",&a[i]); } void bubble_sort(int a[],int n) { int i,j,t; for(i=0;i<=n-1;i++) for(j=0;j<=n-1;j++) if(a[j]>a[j-1]) {t=a[j];a[j]=a[j-1];a[j-1]=t;} } 程序分析:先分析到最后输出结果应该是先把每种商品的优惠值排序,然后根据买k种商品,把前k个商品优惠值相加,得到最终结果。所以排序应该是从大到小排。为了使程序一目了然先写出主函数然后调用一个数组输入函数和一个数组排序函数。出现的问题是数组大小不确定,但定义时不能用变量,通过请教学长,我知道定义时根据具体题目的范围大小来定义,其次由于c语言提供了sort函数,所以在调用时可以用变量n。调用排序函数时不能用写总范围,这样就把没用的也排上了。 五:F:Linux文件权限程序 #include <stdio.h> int main() { int n,a[3],i; while(scanf("%d",&n)!=-1){ a[0]=n/100; a[1]=n/10%10; a[2]=n%10; for(i=0;i<3;i++){ switch(a[i]) { case 0:printf("---");break; case 1:printf("--x");break; case 2:printf("-w-");break; case 3:printf("-wx");break; case 4:printf("r--");break; case 5:printf("r-x");break; case 6:printf("rw-");break; default:printf("rwx");break; } }printf("\n"); }return 0; } 程序分析:要求输入三个数字且数字之间没有空格这就需要分离个位十位百位,利用for循环得到三个数字,不同的数字分别代表不同的字符,利用switch语句,输出对应字符。最后再统一输成一句。 六:G王者荣耀 程序: #include <stdio.h> int main() { int n,m; while(scanf("%d%d",&n,&m)!=-1) { int a[10]; int i; for(i=0;i<n;i++) { scanf("%d",&a[i]); m-=a[i]; } if(m<=0) printf("0\n"); else printf("%d\n",m); } return 0; } 程序分析:此题重点是分析出公式,“k=m;k=k-a[i];”,利用循环用初血量依次减掉前n个收到的伤害,中途等于0时,输出0结束循环,代表在中间死亡。 七:I生活就像一盒巧克力程序 #include <stdio.h> int main(){ int n,m,s; while(scanf("%d%d",&n,&m)!=EOF){ s=n*m/2; printf("%d\n",s); } return 0; } 程序分析:最关键的是分析出“s=n*m/2;”这个表达式,不然就会把问题想复杂。 #include <stdio.h> int main() { char a,b,c,d,x,y,z; while(scanf("%c%c%c%c",&a,&b,&c,&d) != EOF) { x=a<b?a:b; x=x<c?x:c; z=a>b?a:b; z=z>c?z:c; y=a+b+c-x-z; printf("%c %c %c\n",x,y,z); } } #include <stdio.h> #include <math.h> int main(){ double a; while(scanf("%lf",&a)!=EOF){ if(a<0) a=-a; printf("%.2lf\n",fabs(a)); } } 给定一个日期,输出这个日期是该年的第几天。 #include <stdio.h> int main() { int year,month,day,i; int a[12]={0,31,28,31,30,31,30,31,31,30,31,30}; while(scanf("%d/%d/%d",&year,&month,&day)!=EOF){ int sum=0; for(i=0;i<=month-1;i++) sum+=a[i]; if((year%4==0)&&(year%100!=0)||(year%400==0)) { if(month>2) sum++; } sum+=day; printf("%d\n",sum); } } 给你n个整数,求他们中所有奇数的乘积。 #include <stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF){ int a[1005],i,s=1; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++){ if(a[i]%2==1) s*=a[i]; } printf("%d\n",s); } return 0; } 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。 #include <stdio.h> int main() { int m,n,j,i,x,y ; while(scanf("%d%d",&n,&m)!=EOF){ if(m>n) {j=m; m=n; n=j; } x=0; y=0; for(i=m;i<=n;i++){ if(i%2==1) y+=i*i*i; else x+=i*i; } printf("%d %d\n",x,y); } return 0; } 统计给定的n个数中,负数、零和正数的个数。 #include<stdio.h> int main() { int n,a,b,c,i; double s; while(scanf("%d",&n)!=EOF) { if(n==0) break; a=0; b=0; c=0; for(i=0;i<n;i++) { scanf("%lf",&s); if(s<0)a++;else if(s>0)c++; else b++; } printf("%d %d %d\n",a,b,c); } return 0; #include <stdio.h> int main() { int m,n; while(scanf("%d%d",&m,&n)!=EOF){ int x,i,j,k; int leap=0; for(x=m;x<=n;x++) { i=x/100; j=x/10%10; k=x%10; if(x==i*i*i+j*j*j+k*k*k) { if(leap!=0) printf(" "); printf("%d",x); leap++; } } if(leap!=0) printf("\n"); if(leap==0) printf("no\n"); } return 0; } #include<stdio.h> int main(){ int n; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++) s }} #include<stdio.h> #include<stdlib.h> int comp(const void*a,const void*b); int main() { int d,t; int s,a[1005]; scanf("%d",&d); while(d--) { scanf("%d",&t); for(s=0;s<t;s++) scanf("%d",&a[s]); qsort(a,t,sizeof(int),comp); for(s=0;s<t-1;s++) { printf("%d ",a[s]); } printf("%d\n",a[t-1]); } return 0; } int comp(const void*a,const void*b) { return *(int*)a-*(int*)b; } 最小公倍数 #include <stdio.h> int main() { int m,n; while(scanf("%d%d",&m,&n)!=EOF){ int t,i; if(m>n) {t=m;m=n;n=t;} for(i=m;i>=0;i--){ if((n%i==0)&&(m%i==0)) { printf("%d\n",m*n/i); break;} } }return 0; } #include<stdio.h> #include<stdlib.h> int comp(const void*a,const void*b); int main() { int d,t; int s,a[1005]; scanf("%d",&d); while(d--) { scanf("%d",&t); for(s=0;s<t;s++) scanf("%d",&a[s]); qsort(a,t,sizeof(int),comp); for(s=0;s<t-1;s++) { printf("%d ",a[s]); } printf("%d\n",a[t-1]); } return 0; } int comp(const void*a,const void*b) { return *(int*)a-*(int*)b; } #include <stdio.h> int main() { int n; double s,p; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%lf%lf",s,p); int i=0 if(p==-1) i++; else{ if(p>=90&&p<=100) d==4; if(p>=80&&p<=89) d==3; if(p>=70&&p<=79) d==4; if(p>=60&&p<=69) d==3; } } }