以下のようなプログラムを書いたのですが、コンパイルして実行すると
「欠けている数字を入力してください」と表示された後に
「Segmentation fault(コアダンプ)」というエラーがでます
原因はなんなのでしょうか?
c
1#include<stdio.h> 2#include<time.h> 3#include<stdlib.h> 4 5#define MAX_STAGE 10 6#define swap(type,x,y) do{type t=x;x=y;y=t;}while(0) 7 8int main(void){ 9 10 int i,j,stage; 11 int dgt[9]={1,2,3,4,5,6,7,8,9}; 12 int a[8]; 13 double jikan; 14 clock_t start,end; 15 16 srand(time(NULL)); 17 18 printf("欠けている数字を入力してください\n"); 19 20 start=GetTickCount64(); 21 22 for(stage=0;stage<MAX_STAGE;stage++){ 23 int x=rand()%9; 24 int no; 25 26 i=j=0; 27 while(i<9){ 28 if(i!=x) 29 a[j++]=dgt[i]; 30 i++; 31 }//抜く数字の確定 32 33 for(i=7;i>0;i++){ 34 int j=rand()%(i+1); 35 if(i!=j) 36 swap(int,a[i],a[j]); 37 }//シャッフル 38 39 for(i=0;i<8;i++){ 40 printf("%d",a[i]); 41 } 42 43 printf(":"); 44 45 do{ 46 scanf("%d",&no); 47 }while(no!=dgt[x]); 48 } 49 50 end=GetTickCount64(); 51 52 jikan=(double)(end-start)/CLOCKS_PER_SEC; 53 54 printf("%.1f秒かかりました。\n",jikan); 55 56 if(jikan>25.0) 57 printf("鈍すぎます\n"); 58 else if(jikan>20.0) 59 printf("少し鈍いですね。\n"); 60 else if(jikan>17.0) 61 printf("まあまあですね\n"); 62 else 63 printf("素早いですね"); 64 65 return 0; 66} 67
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。