上午做的两道hdu2004和2007的题
hdu2004成绩转换已AC代码,如下:
#include<stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF) { if(n<0||n>100) printf("Score is error!\n"); else if(n<=100&&n>=90) printf("A\n"); else if(n<=89&&n>=80) printf("B\n"); else if(n<=79&&n>=70) printf("C\n"); else if(n<=69&&n>=60) printf("D\n"); else if(n<=59&&n>=0) printf("E\n"); } return 0; }
我还用switch编写了一个,也已AC,如下:
#include<stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==100) printf("A\n"); else if(n<0) printf("Score is error!\n"); else { switch(n/10) { case 0: ; case 1: ; case 2: ; case 3: ; case 4: ; case 5: printf("E\n");break; case 6: printf("D\n");break; case 7: printf("C\n");break; case 8: printf("B\n");break; case 9: printf("A\n");break; default:printf("Score is error!\n"); } } } return 0; }
接下来是hdu2007平方和立方和,代码如下:
#include<stdio.h> int main() { long int x,y; while(scanf("%ld %ld",&x,&y)!=EOF) { long i,t,m=0,n=0; if(x>y){ t=x;x=y;y=t;} for(i=x;i<=y;i++) { if(i%2==0) m+=i*i; else if(i%2==1) n+=i*i*i; } printf("%ld %ld\n",m,n); } return 0; }
做这两道题的时候,第一道我做过,就是用已经AC的那种方法,但是我感觉那样麻烦,所以试着用switch做,考虑到-9到-1和101到109会影响结果,所以我就单独列出。第二道虽说不是很难,但是我第一次没能AC ,因为我把!=EOF省去了,但结果是时间超出限制,所以编程就是要一丝不苟,虽说要想办法简化代码,但有些东西是真的不能随便简化,否则就会出现意想不到的后果。