#28066: 請問大家我這樣的寫法如何修改?


ic231542211 (willie)

學校 : 不指定學校
編號 : 44051
來源 : [123.194.107.200]
最後登入時間 :
2022-09-15 15:14:37
f418. Word Search Puzzle -- 板橋高中教學題 | From: [123.194.107.200] | 發表日期 : 2021-11-12 17:08

#include<stdio.h>

int main(){

    int h, w, r1, c1, r2, c2;

    char s[25][55];

    scanf("%d %d %d %d %d %d\n", &h, &w, &r1, &c1, &r2, &c2);

    //讀值入陣列

    for(int i = 0 ; i < h; i++){

        for(int j = 0; j < w; j++){

            scanf("%c", &s[i][j]);

        }

    }

    if(r1 == r2){//橫著印

        for(int i = c1-1; i < c2; i++){

            printf("%c", s[r1-1][i]);

        }

    }

    else if(c1 == c2){//直著印

        for(int i = r1-1; i < r2; i++){

            printf("%c", s[i][c1-1]);

        }

    }

    else{

        for(int i = 0; i <= r2 - r1; i++){

            printf("%c", s[r1+i][c1+i]);

        }

        printf("\n");

    }

}

我已經修改好幾次了,但始終過不了。

 
#28068: Re:請問大家我這樣的寫法如何修改?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
f418. Word Search Puzzle -- 板橋高中教學題 | From: [27.51.64.28] | 發表日期 : 2021-11-12 17:55

#include

int main(){

    int h, w, r1, c1, r2, c2;

    char s[25][55];

    scanf("%d %d %d %d %d %d\n", &h, &w, &r1, &c1, &r2, &c2);

    //讀值入陣列

    for(int i = 0 ; i < h; i++){

        for(int j = 0; j < w; j++){

            scanf("%c", &s[i][j]);

        }

    }

    if(r1 == r2){//橫著印

        for(int i = c1-1; i < c2; i++){

            printf("%c", s[r1-1][i]);

        }

    }

    else if(c1 == c2){//直著印

        for(int i = r1-1; i < r2; i++){

            printf("%c", s[i][c1-1]);

        }

    }

    else{

        for(int i = 0; i <= r2 - r1; i++){

            printf("%c", s[r1+i][c1+i]);

        }

        printf("\n");

    }

}

我已經修改好幾次了,但始終過不了。


還有可能是斜的

 
#28069: Re:請問大家我這樣的寫法如何修改?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
f418. Word Search Puzzle -- 板橋高中教學題 | From: [27.51.64.28] | 發表日期 : 2021-11-12 18:09

#include

int main(){

    int h, w, r1, c1, r2, c2;

    char s[25][55];

    scanf("%d %d %d %d %d %d\n", &h, &w, &r1, &c1, &r2, &c2);

    //讀值入陣列

    for(int i = 0 ; i < h; i++){

        for(int j = 0; j < w; j++){

            scanf("%c", &s[i][j]);

        }

    }

    if(r1 == r2){//橫著印

        for(int i = c1-1; i < c2; i++){

            printf("%c", s[r1-1][i]);

        }

    }

    else if(c1 == c2){//直著印

        for(int i = r1-1; i < r2; i++){

            printf("%c", s[i][c1-1]);

        }

    }

    else{

        for(int i = 0; i <= r2 - r1; i++){

            printf("%c", s[r1+i][c1+i]);

        }

        printf("\n");

    }

}

我已經修改好幾次了,但始終過不了。


還有可能是斜的


抱歉看錯了。

你的scanf有問題,你沒有考慮到scanf會把換行符號讀取進去

 
#28070: Re:請問大家我這樣的寫法如何修改?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
f418. Word Search Puzzle -- 板橋高中教學題 | From: [27.51.64.28] | 發表日期 : 2021-11-12 18:21


你的scanf有問題,你沒有考慮到scanf會把換行符號讀取進去

例如範例一你的s會長這樣:


 

另外你斜的差了一位,記得要減1

 
#28071: Re:請問大家我這樣的寫法如何修改?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
f418. Word Search Puzzle -- 板橋高中教學題 | From: [27.51.64.28] | 發表日期 : 2021-11-12 18:24

例如範例一你的s會長這樣:

圖片:
https://i.imgur.com/VudDA3p.png

 
#28076: Re:請問大家我這樣的寫法如何修改?


ic231542211 (willie)

學校 : 不指定學校
編號 : 44051
來源 : [123.194.107.200]
最後登入時間 :
2022-09-15 15:14:37
f418. Word Search Puzzle -- 板橋高中教學題 | From: [123.194.107.200] | 發表日期 : 2021-11-12 22:17

例如範例一你的s會長這樣:

圖片:
https://i.imgur.com/VudDA3p.png

謝謝你,我發現輸入的時候,%c前面要空一格,才不會讀到空白或換行字元停止

 
#28078: Re:請問大家我這樣的寫法如何修改?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
f418. Word Search Puzzle -- 板橋高中教學題 | From: [27.51.64.28] | 發表日期 : 2021-11-12 22:53

例如範例一你的s會長這樣:

圖片:
https://i.imgur.com/VudDA3p.png

謝謝你,我發現輸入的時候,%c前面要空一格,才不會讀到空白或換行字元停止

其實不用這麼麻煩,直接用%s比較簡單...

 
#28093: Re:請問大家我這樣的寫法如何修改?


ic231542211 (willie)

學校 : 不指定學校
編號 : 44051
來源 : [123.194.107.200]
最後登入時間 :
2022-09-15 15:14:37
f418. Word Search Puzzle -- 板橋高中教學題 | From: [123.194.107.200] | 發表日期 : 2021-11-13 15:13

例如範例一你的s會長這樣:

圖片:
https://i.imgur.com/VudDA3p.png

謝謝你,我發現輸入的時候,%c前面要空一格,才不會讀到空白或換行字元停止

其實不用這麼麻煩,直接用%s比較簡單...

我改寫成用%s輸出。

#include<stdio.h>

int main(){

    int h, w, r1, c1, r2, c2;

    char s[25][55];

    scanf("%d %d %d %d %d %d\n", &h, &w, &r1, &c1, &r2, &c2);

    //讀值入陣列

    for(int i = 0 ; i < h; i++){

            scanf("%s", &s[i][0]); //%s 作法             

    }

    if(r1 == r2){//橫著印

        for(int i = c1-1; i < c2; i++){

            printf("%c", s[r1-1][i]);

        }

    }

    else if(c1 == c2){//直著印

        for(int i = r1-1; i < r2; i++){

            printf("%c", s[i][c1-1]);

        }

    }

    else{//斜著印(左上至右下) 

        for(int i = 0; i <= r2 - r1; i++){

            printf("%c", s[r1+i-1][c1+i-1]);

        }

    }

}



 
ZeroJudge Forum