回答受付が終了しました

問題を表示し、正解するまで繰り返すプログラムをC言語で作成して下さい。 以下の条件を満たすようにしてください。 ・回答者側はキーボードで文字列を入力する。(scanfを使う)

C言語関連 | プログラミング133閲覧xmlns="http://www.w3.org/2000/svg">100

回答(2件)

0

#include<stdio.h> int main(void) { int t[100],n,i,j,k,f; char ans[]="annoying dilemma",x[100],y[100]; n=0; while(1){ printf("trial=%d\n%s\n",++n,ans); scanf("%s %s",x,y); for(i=0;x[i]!='\0';i++){ if(ans[i]==x[i])t[i]=1; else t[i]=0; } if(ans[i]==' ')t[i]=1; else t[i]=0; for(++i,j=0;y[j]!='\0';j++){ if(ans[i+j]==y[j])t[i+j]=1; else t[i+j]=0; } f=0; for(k=0;k<i+j;k++){ if(t[k]==1)printf("〇"); else{ printf("×"); f=1; }} printf("\n"); if(f==0){ printf("正解です...\n"); break; } else printf("不正解です...\n"); } return 0; } 空白を含む文字列を、1つの文字列として変数に代入するにはscanfが使えないだけで、複数の変数に代入するように、すれば良いだけで、、、 動作確認は不十分であると認識しています。何か問題があれば自力で修正してください。補足をやり取りして、完成させようとは思っていない。

0

(asd********さん) >・回答者側はキーボードで文字列を入力する。(scanfを使う) scanfでは空白を含む文字列を入力することは出来ないので実現不可です 以下の例ではgets()で入力しています 例: #include <stdio.h> int main(void) { char ans[100] = "annoying dilemma"; char ink[100]; int t=1,i,f; do { for(i=0;i<100;i++) ink[i]='$'; printf("trial=%d\n%s\n", t,ans); gets(ink); i=0; f=0; do{ if(ans[i]==ink[i]){ putchar('O'); }else{ putchar('X'); f++; } i++; }while(ans[i-1]!='\0'); if(f==0){ puts("\n正解です!"); }else{ puts("\n不正解です..."); } t++; } while(f != 0); return 0; }