1~9までの数字で1つだけ数字が欠けて表示されるように問題を作成しました。
今回行いたいことは、
①1~9以外の数字を入力した場合はもう一度入力して下さいと表示したいです。
②数字以外の入力があった場合は1~9の数字を入力して下さいと表示したいです。
例:a,abc,あ などの入力
うまく出来ずに困っています。
サンプルと解説を頂ければ幸いです。
C
1/* ラックナンバーサーチ・トレーニング(その1)*/ 2 3#include <time.h> 4#include <stdio.h> 5#include <stdlib.h> 6 7#define MAX_STAGE 10 /* 挑戦回数 */ 8 9int main(void) 10{ 11 int i, j, stage; 12 int dgt[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; 13 int a[8]; 14 double jikan; /* 時間 */ 15 clock_t start, end; /* 開始時刻・終了時刻 */ 16 17 srand(time(NULL)); /* 乱数の種を設定 */ 18 19 printf("欠けている数字を入力してください。\n"); 20 21 start = clock(); 22 for (stage = 0; stage < MAX_STAGE; stage++) { 23 int x = rand() % 9; /* 0~8の乱数を生成 */ 24 int no; /* 読み込んだ値 */ 25 26 i = j = 0; 27 while (i < 9) { /* dgt[x]を飛ばしてコピー */ 28 if (i != x) 29 a[j++] = dgt[i]; 30 i++; 31 } 32 33 for (i = 0; i < 8; i++) /* 全要素を表示 */ 34 printf("%d ", a[i]); 35 printf(":"); 36 37 do 38 { 39 scanf("%d", &no); 40 scanf("%*[^\n]"); 41 } 42 while (no != dgt[x]); 43 { 44 printf("正解です\n"); 45 } 46 } 47 end = clock(); 48 49 jikan = (double)(end - start) / CLOCKS_PER_SEC; 50 51 printf("%.1f秒かかりました。\n", jikan); 52 53 if (jikan > 25.0) 54 printf("鈍すぎます。\n"); 55 else if (jikan > 20.0) 56 printf("少し鈍いですね。\n"); 57 else if (jikan > 17.0) 58 printf("まあまあですね。\n"); 59 else 60 printf("素早いですね。\n"); 61 62 return 0; 63} 64
07 や 4k もダメにするんですか?