杭電oj 2000-2011
32448 ワード
2000 ASCIIコードソート
最初はgetchar()関数を追加しなかったのでエラーが発生しましたが、後で大物のwpを見て原因を知りました.ここでは大物の解釈を引用します.
初めてgetchar()関数を付けなかったので、結果が正しくなく、実行時、初めて3文字を入力して並べ替えが正しいのですが、後で入力すると出力が間違ってしまいます.他人の似たような問題の分析を見ることで、その理由が分かった.キーボードから入力した文字は、リターン記号を含むバッファに格納されます.「abcリターン」を入力すると、バッファには4文字「a」、「b」、「c」、「」が格納され、上記のプログラムにgetchar()がない場合、初めてバッファから3文字を抽出した後、1文字が残っている」と、次回3文字を入力すると、バッファに前回残ったリターン記号も加算され、処理に問題があります.getchar()はバッファから1つの文字を読み出し、バッファ内の文字を除去するだけであれば、付与式を使用する必要がなく、getchar()を直接使用します.はい、もちろん、m=getchar()などの付与式を使用してもよい.上記のプログラムでgetchar()を使用すると、3文字を入力するたびにリターン記号を吸収することができ、結果は正しいです.
2001 2点間の距離の計算
2002球体積の計算
2003絶対値を求める
2004絶対値を求める
2005年の何日目ですか.
2006奇数の積を求めます
2007平方和と立方和
これはまず2つの数を入力する大きさを判断しなければならない.そうしないと間違っている.
2008数値統計
2009数列の和を求めます
2010水仙の数
最後に出力するときは最後にスペースが許されないので、最初の数の出力は後ろの数の出力とは違います.
2011多項式求和
転載先:https://www.cnblogs.com/Ragd0ll/p/10395878.html
1 #include
2
3 int main(){
4 char a,b,c,t;
5 while(scanf("%c%c%c", &a, &b, &c)!=EOF){
6 getchar();#
7 if(a>b){
8 t = a;
9 a = b;
10 b = t;
11 }
12 if(a>c){
13 t = a;
14 a = c;
15 c = t;
16 }
17 if(b>c){
18 t = b;
19 b = c;
20 c = t;
21 }
22 printf("%c %c %c
", a,b,c);
23 }
24 }
最初はgetchar()関数を追加しなかったのでエラーが発生しましたが、後で大物のwpを見て原因を知りました.ここでは大物の解釈を引用します.
初めてgetchar()関数を付けなかったので、結果が正しくなく、実行時、初めて3文字を入力して並べ替えが正しいのですが、後で入力すると出力が間違ってしまいます.他人の似たような問題の分析を見ることで、その理由が分かった.キーボードから入力した文字は、リターン記号を含むバッファに格納されます.「abcリターン」を入力すると、バッファには4文字「a」、「b」、「c」、「」が格納され、上記のプログラムにgetchar()がない場合、初めてバッファから3文字を抽出した後、1文字が残っている」と、次回3文字を入力すると、バッファに前回残ったリターン記号も加算され、処理に問題があります.getchar()はバッファから1つの文字を読み出し、バッファ内の文字を除去するだけであれば、付与式を使用する必要がなく、getchar()を直接使用します.はい、もちろん、m=getchar()などの付与式を使用してもよい.上記のプログラムでgetchar()を使用すると、3文字を入力するたびにリターン記号を吸収することができ、結果は正しいです.
2001 2点間の距離の計算
1 #include
2 #include
3 int main(){
4 double x1,y1,x2,y2,d;
5 while(scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2)!=EOF){
6 d= sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
7 printf("%.2lf
", d);
8
9 }
10 }
2002球体積の計算
1 #include
2 #define PI 3.1415927
3
4 int main(){
5 double x, v;
6 while(scanf("%lf", &x)!=EOF){
7 v = 4*PI*x*x*x/3;
8 printf("%.3lf
", v);
9 }
10 }
2003絶対値を求める
1 #include
2
3 int main(){
4 double x,y;
5 while(scanf("%lf", &x)!=EOF){
6 y = x;
7 if(y<0){
8 y = -x;
9 }
10 printf("%.2lf
", y);
11 }
12 }
2004絶対値を求める
1 #include
2
3 int main(){
4 int x;
5 while(scanf("%d", &x)!=EOF){
6 if(x<0 || x>100){
7 printf("Score is error!
");
8 }
9 if(x>=0 && x<60){
10 printf("E
");
11 }
12 if(x>=60 && x<70){
13 printf("D
");
14 }
15 if(x>=70 && x<80){
16 printf("C
");
17 }
18 if(x>=80 && x<90){
19 printf("B
");
20 }
21 if(x>=90 && x<=100){
22 printf("A
");
23 }
24 }
25 }
2005年の何日目ですか.
1 #include
2 int main(){
3 int a,b,c,i,days;
4 int mon[12] = {31,0,31,30,31,30,31,31,30,31,30,31};
5 while(scanf("%d/%d/%d", &a,&b,&c)!=EOF){
6 if((a%4==0 && a%100 !=0) || (a%400 == 0)){
7 days = 0;
8 mon[1] = 29;
9 for(i=0; i1; i++){
10 days += mon[i];
11 }
12 days += c;
13 printf("%d
", days);
14 }else{
15 days = 0;
16 mon[1] = 28;
17 for(i=0; i1; i++){
18 days += mon[i];
19 }
20 days += c;
21 printf("%d
", days);
22 }
23 }
24
25 }
2006奇数の積を求めます
#include
int main(){
int n, i ,mul;
while((scanf("%d", &n))!=EOF){
mul = 1;
while(n--){
scanf("%d", &i);
if(i%2!=0){
mul = mul*i;
}
}
printf("%d
", mul);
}
}
2007平方和と立方和
これはまず2つの数を入力する大きさを判断しなければならない.そうしないと間違っている.
1 #include
2 int main(){
3 int n,m,squ,cub,i;
4 while((scanf("%d %d", &n,&m))!=EOF){
5 squ=0;
6 cub=0;
7 if(n<m){
8 for(i=n;i<=m;i++){
9 if(i%2==0){
10 squ += i*i;
11 }else{
12 cub += i*i*i;
13 }
14 }
15 printf("%d %d
",squ,cub);
16 }else{
17 for(i=m;i<=n;i++){
18 if(i%2==0){
19 squ += i*i;
20 }else{
21 cub += i*i*i;
22 }
23 }
24 printf("%d %d
",squ,cub);
25 }
26
27 }
28
29 }
2008数値統計
1 #include
2 int main(){
3 int n,x,y,z;
4 double i;
5 while((scanf("%d", &n))!=EOF){
6 if(n==0){
7 continue;
8 }else{
9 x=0;
10 y=0;
11 z=0;
12 while(n--){
13 scanf("%lf", &i);
14 if(i<0){
15 x += 1;
16 }else if(i==0){
17 y += 1;
18 }else if(i>0){
19 z += 1;
20 }
21 }
22
23
24 }
25 printf("%d %d %d
", x,y,z);
26 }
27 return 0;
28 }
2009数列の和を求めます
1 #include
2 #include
3 int main(){
4 int m;
5 double i,sum,n;
6 while(scanf("%lf %d", &n,&m)!=EOF){
7 sum = 0;
8 while(m--){
9 sum += n;
10 n = sqrt(n);
11
12 }
13 printf("%.2lf
", sum);
14 }
15 }
2010水仙の数
最後に出力するときは最後にスペースが許されないので、最初の数の出力は後ろの数の出力とは違います.
1 #include
2
3 int main(){
4 int m,n,a,b,c,i,flag;
5 while(scanf("%d %d",&m,&n)!=EOF){
6 flag = 0;
7 for(i=m;i<=n;i++){
8 a=i/100;
9 b=i%100/10;
10 c=i%10;
11 if(i==a*a*a+b*b*b+c*c*c){
12 flag += 1;
13 if(flag==1){
14 printf("%d",i);
15 }else{
16 printf(" %d",i);
17 }
18
19 }
20 }
21 if(flag==0){
22 printf("no");
23 }
24 printf("
");
25
26 }
27 }
2011多項式求和
1 #include
2
3 int main(){
4 int n,i;
5 double a,sum,j;
6 scanf("%d", &n);
7 while(n--){
8 sum = 0;
9 scanf("%lf",&a);
10 for(i=1;i<=a;i++){
11 if(i%2==0){
12 j = i;
13 sum -= 1/j;
14 }else{
15 j = i;
16 sum += 1/j;
17 }
18 }
19 printf("%.2lf
", sum);
20 }
21 }
転載先:https://www.cnblogs.com/Ragd0ll/p/10395878.html