#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");
}
}
我已經修改好幾次了,但始終過不了。
#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");
}
}
我已經修改好幾次了,但始終過不了。
還有可能是斜的
#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會把換行符號讀取進去
你的scanf有問題,你沒有考慮到scanf會把換行符號讀取進去
例如範例一你的s會長這樣:
另外你斜的差了一位,記得要減1
例如範例一你的s會長這樣:
圖片:
例如範例一你的s會長這樣:
圖片:
謝謝你,我發現輸入的時候,%c前面要空一格,才不會讀到空白或換行字元停止
例如範例一你的s會長這樣:
圖片:
謝謝你,我發現輸入的時候,%c前面要空一格,才不會讀到空白或換行字元停止
其實不用這麼麻煩,直接用%s比較簡單...
例如範例一你的s會長這樣:
圖片:
謝謝你,我發現輸入的時候,%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]);
}
}
}