こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語【おみくじプログラム】

お正月前にならったばかりのC言語を用いて
おみくじプログラムを作りました。

最近それをまた改良して
強制的にくじを引かせるものにしようと考えました。


しかしどうしてもwhileのループから抜け出せないので
ここで質問させていただきます。


どうか間違っている部分を教えてください。




#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 7


int main(){
int k,y,n;

printf("ようこそ。\n");
printf("ここではおみくじを販売して折ります。\n");
printf("よろしければ運試しをしていって下さい。\n\n");
printf("おみくじを引きますか?\n");
printf("※引く場合はy,引かない場合はnを入力してください\n");
scanf("%s,&k");

if(k!=y){
while(k=y){
printf("そんなこと言わずに引いてみてくださいよ。\n\n");
printf("おみくじを引きますか?\n");
printf("※引く場合はy,引かない場合はnを入力してください\n");
scanf("%s,&k");
}
}


char *kuji[N] = {"大吉", "中吉", "小吉","末吉", "吉", "凶","大凶"};
srand((unsigned)time(NULL));
printf("おみくじ: %s\n\n\n", kuji[rand() % N]);
printf("結果はどうでしたか?\n");
printf("またのお越しをお待ちしております。\n");
return 0;
}

投稿日時 - 2013-01-11 20:55:21

QNo.7886943

すぐに回答ほしいです

質問者が選んだベストアンサー

>scanf("%s,&k");
>scanf("%s,&k");

あと、これではコンパイルが通らないですね。
scanf()の書き方を確認してください。
整数型の変数に値を入れる際の書式文字列が%sで
本当にいいかどうかの確認もお願いします。

>char *kuji[N] = {"大吉", "中吉", "小吉","末吉", "吉", "凶","大凶"};

C言語の場合、実行文の途中で変数を定義することはできないはずです。
main関数の先頭部に持っていきましょう。

さらに、

>int k,y,n;
>if(k!=y){

変数kにはscanfで値を入れたとして、変数yには何が入っているのでしょうか。
kと、何が入っているかわからないyとを比較することには、大いに疑問があります。
それから、変数nは定義しただけで使っている形跡がありませんね。
そういう変数はじゃまなだけですから、捨ててしまいましょう。

投稿日時 - 2013-01-11 21:29:20

お礼

回答ありがとうございます。

皆様のおかげでうまくできました。

投稿日時 - 2013-01-11 23:55:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

#include <stdio.h>
int main() {
char k;
scanf("%c", &k);
while (k != 'y') {
scanf("%c", &k);
}
return 0;
}

投稿日時 - 2013-01-11 21:17:21

お礼

なるほど、文字は%cなんですね。

回答ありがとうございます

投稿日時 - 2013-01-11 23:47:18

ANo.1

>while(k=y){

ここの等号が1個で本当にいいのかどうか、大いに疑問があります。

投稿日時 - 2013-01-11 20:59:58

お礼

回答ありがとうございます。

等号は==でしたよね。
ご指摘感謝いたします。

投稿日時 - 2013-01-11 23:36:33

あなたにオススメの質問