3 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
少了個(gè)頭文件和取地址符,還有函數(shù)初始化位置不對(duì),下面是正確的程序,最后說一句,在c語(yǔ)言中盡量不要使用goto語(yǔ)句,因?yàn)檫@個(gè)語(yǔ)句會(huì)限制人們的思想的
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i,n[4];
for( i = 0; i < 20;i++ )
{
srand( time(NULL) );
n[0]=rand()%10;
n[1]=rand()%10;
n[2]=n[1]+n[0];
loop:
printf("%d+%d=",n[0],n[1]);
scanf("%d",&n[3]);
if(n[3]==n[2])
{
printf( "right!\n" );
}
else
{
printf( " error!\n重新輸入" );
goto loop;
}
}
}

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
goto語(yǔ)句是C語(yǔ)言中的跳轉(zhuǎn)命令。使用方法:
1 | goto label; |
label為本函數(shù)中聲明的一個(gè)標(biāo)號(hào),執(zhí)行g(shù)oto后,跳轉(zhuǎn)到該標(biāo)號(hào)指定行處繼續(xù)執(zhí)行。
一般來說,很多書都不推薦使用goto,不過很多書都給了一些很牽強(qiáng)的理由。在某些情況下需要使用goto,比如跳出多重循環(huán)。
但是goto不能濫用,主要缺點(diǎn)有這幾個(gè):①影響程序可讀性 ②影響程序執(zhí)行效率。分支語(yǔ)句會(huì)對(duì)指令預(yù)取造成很大的影響,而且跳轉(zhuǎn)的位置有時(shí)分支預(yù)測(cè)單元可能預(yù)測(cè)不到。常用的跳轉(zhuǎn)語(yǔ)句如if、for等,對(duì)這點(diǎn)影響都很小,但是goto不同,一個(gè)較長(zhǎng)的跳轉(zhuǎn)可能給指令預(yù)取單元帶來很大的麻煩。
所以說,不要濫用goto,除非你確定它不會(huì)給你造成麻煩。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
可以看一下這個(gè):
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int fun(int a,int b,int c)
{
int d;
printf( " error!\n請(qǐng)重新回答:" );
printf("%d+%d=",a,b);
scanf("%d",&d);
if(d==c)
return 0;
else
return 1;
}
main()
{
int i,n[4];
for( i = 0; i < 20; i++ )
{
srand( time(NULL) );
n[0]=rand()%10;
n[1]=rand()%10;
n[2]=n[1]+n[0];
printf("%d+%d=",n[0],n[1]);
scanf("%d",&n[3]);
if(n[3]==n[2])
{
printf( "right!\n" );
}
else
{
while(fun(n[0],n[1],n[2]));
printf( "right!\n" );
}
}
}
- 3 回答
- 0 關(guān)注
- 267 瀏覽
添加回答
舉報(bào)