C语言 之 PTA乙级错误集锦
生活随笔
收集整理的這篇文章主要介紹了
C语言 之 PTA乙级错误集锦
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1,很大很大的數輸入,并各位加和? PTA-1001
#include <stdio.h>
#include <math.h>
int main(){int sum=0,count=0,item,i=0,num,j;int Sum;char S=getchar();while(S!='\n'){sum+=S-'0';S=getchar();}printf("%d",sum);
return 0;
}輸入:1234567890987654321123456789
輸入:135
2,輸出不一致? PTA-1004
//輸入n個學生信息,輸出分數最高和最低的兩個人
#include <stdio.h>
struct student{char name[10];char count[10];int score;
};
int main(){int i,n;struct student stu;struct student max;struct student min;scanf("%d",&n);for(i=0;i<n;i++){scanf("%s %s %d",stu.name,stu.count,&stu.score);if(i==0){max=stu;min=stu;}if(max.score<stu.score){max=stu;}if(min.score>stu.score){min=stu;}}printf("%s %s\n",max.name,max.count);printf("%s %s",min.name,min.count);return 0;
}輸入:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95輸出:
Mike CS991301
Joe Math990112Y 多了一個 Y 溢出導致;改下數組大小即可解決#include <stdio.h>
struct student{char name[11]; 注意大小改為11char count[11];int score;
};
int main(){int i,n;struct student stu;struct student max;struct student min;scanf("%d",&n);for(i=0;i<n;i++){scanf("%s %s %d",stu.name,stu.count,&stu.score);if(i==0){max=stu;min=stu;}if(max.score<stu.score){max=stu;}if(min.score>stu.score){min=stu;}}printf("%s %s\n",max.name,max.count);printf("%s %s",min.name,min.count);return 0;
}
3,PTA-1005
%取余,int和int之間才可以
pow( )求次冪的函數結果是浮點型
#include <stdio.h>
#include <math.h>
int num=10;
num/pow(10,2) //報錯//想不報錯的話
int num=10;
int num_1;
num_1=pow(10,2);
num/num_1;
4,多次輸入字符串 PTA-1003
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){int n,i;int item;scanf("%d",&n);getchar();char* str[10];char Str[100];for(i=0;i<n;i++){gets(Str);str[i]=(char*)malloc(strlen(Str)*sizeof(char));strcpy(str[i],Str);}
return 0;
}
5, PTA-1009? 更新字符串
1-> Hello World Here I Come
2-> Hello World Here I
3-> Hello World Here
4-> Hello World
.......for(i=len;i>=0;i--){if(str[i]==' '){str[i]='\0'; //重點!!!}}
6,PTA 1010輸入多個未知數字
#include <stdio.h>
int main(){int num[1000];int i=0,j;char c; do{scanf("%d",&num[i++]);}while((c=getchar())!='\n');
return 0;
}
太廢了,這都不會寫了,得多練練了
7,PTA-1011 比較大小? A+B>C
#include <stdio.h>
struct num{double A;double B;double C;
};
int main(){int i,T;scanf("%d",&T);struct num number[T];for(i=0;i<T;i++){scanf("%lf %lf %lf",&number[i].A,&number[i].B,&number[i].C);}for(i=0;i<T;i++){if(number[i].A+number[i].B>number[i].C){printf("Case #%d: true\n",i+1);}else{printf("Case #%d: false\n",i+1);}}return 0;
}
這個代碼,剛開始的時候A,B,C定義的都是整型,然而答案都錯誤。改為浮點型才成功。浮點型更加準確應該是一方面
8,字符型多次輸入
int main(){int N;char x,y;int i;scanf("%d",&N);for(i=0;i<N;i++){getchar();scanf("%c %c",&x,&y);}
我就截取了一部分。剛開始我沒有加 getchar()這個語句,所以每次輸入的時候,再次輸出總是不對,或許以后使用字符型輸入時,遇到此問題可以試試getchar()
9,字符串輸入不用加 &
這個總是一直忘
#include <stdio.h>
int main(){char name[80];scanf("%s",name);return 0;
}
總結
以上是生活随笔為你收集整理的C语言 之 PTA乙级错误集锦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “夕吸秋石髓”下一句是什么
- 下一篇: 1017 A除以B