1. 程式人生 > >PAT乙級踩過的坑

PAT乙級踩過的坑

1、判斷多個數字是否相等?

不能使用下面這樣的程式碼:

if(a==b==c==d){
……
}

編譯器看不懂這樣人類的表示方法,只能每兩個進行判斷:

if(a==b&&b==c&&c==d){
……
}

2、DEVc++ 中scanf和printf 的double型別與int不同

int i;
scanf("%d",&i);
printf("%d",i);

double i;
scanf("%lf",&i);
printf("%lf",i);

3、陣列定義之後必須初始化,否則會出現你想不到的數字。

int sum[100001]={0};

4、動態陣列如果不用malloc,根據使用者輸入確定陣列大小的話。需要注意:

int n,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
    scanf("%d",&a[i]);
}

如果有兩個都需要賦值,其中一個又被另一個使用,必須分開賦值。同時賦值會出現錯誤。下面就是錯誤的。

int n,i,j;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
    scanf("%d %d",&j,&a[j]);
}

應該先賦值給j,再賦值給a[j]。

int n,i,j;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
    scanf("%d",&j);
    scanf("%d",&a[j]);
}