English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

#include
#include
#include
#include
int main(void)
{
char cl[20],na[20]; /*宣告陣列*/
int sum[20],num[20];
int p,i,j,a,x,y,n,ant,ans; /*宣告變數*/
char t,k;
do{
sum[j]=0;
i=0;
srand((unsigned)time(NULL));
/*輸入使用者相關資訊存入陣列*/
printf("請輸入班級:");
scanf("%c",cl[j]);
printf("請輸入座號:");
scanf("%d",num[j]);
printf("請輸入姓名:");
scanf("%c",na[j]);
i==i+1;
/*亂數出題片段*/
a=rand()%3; /*控制加減乘除*/
x=rand()%100; /*設定範圍是1到100*/
y=rand()%100;
switch(a){
case 0:
printf("第%d題\n",i);
printf("%d+%d=?",x,y);
ant=x+y; /*此為真正答案*/
scanf("%d",ans); /*使用者做答*/
/*答對加五分,答錯倒扣十分*/
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
case 1:
printf("第%d題\n",i);
printf("%d-%d=?",x,y);
ant=x-y;
scanf("%d",ans);
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
case 2:
printf("%d*%d=?",x,y);
ant=x*y;
scanf("%d",ans);
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
case 3:
printf("第%d題\n",i);
printf("%d/%d=?",x,y);
ant=x/y;
scanf("%d",ans);
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
}
/*即時印出考試完成績*/
printf("您的成績是:%d",sum[j]);
if (sum[j]<60){
printf("你不及格!\n",sum[j]);
}
else {
printf("你及格了!\n",sum[j]);
}
j==j+1;
printf("繼續換下個人測驗嗎?y/n");
scanf("%c",k);
if (x==y){
p==1;
}
else if (x==n){
p==0;
}
else {
printf("輸入錯誤!請輸入y或n!");
}
}while(i<=20 || p=0)
/*迴圈結束,詢問是否列出所有人成績*/
printf("是否印出全部測驗成績y/n");
scanf("%c",t);
if (t==y){
printf("\n班級\n座號\n姓名\n成績");
for (x=0;x<20;x++){
printf("%c\t%d\t%c\t%d\n",cl[x],num[x],na[x],sum[x]);
}
}
else if (t==n){
printf("程式結束!謝謝您的使用!");
}
else {
printf("輸入錯誤!請輸入y或n!");
}

}


幫忙一下對不起><

2005-06-11 12:05:45 · 1 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

1 個解答

我這幾天會幫你看一看…

2005-06-13 09:33:49 補充:
#include //←這一行不需要
#include //←這一行不需要
#include
#include
int main(void)
{
char cl[20],na[20]; /*宣告陣列*/
int sum[20],num[20];
int p,i,j,a,x,y,n,ant,ans; //變數j沒給初值就丟到陣列裡當索引值,會出問題…
char t,k;
do{
sum[j]=0;
i=0;
srand((unsigned)time(NULL));
/*輸入使用者相關資訊存入陣列*/
printf("請輸入班級:");
scanf("%c",cl[j]); //這一行有錯,要改成scanf("%c",&cl[j]);,你少了一個「&」
printf("請輸入座號:");
scanf("%d",num[j]); //這一行有錯,少「&」
printf("請輸入姓名:");
scanf("%c",na[j]); //這一行有錯,少「&」,而且我建議你把na陣列宣告char*na[]為指標陣列去存字串比較好
i==i+1; //這一行有錯,要改成i=i+1或是i++
/*亂數出題片段*/
a=rand()%3; /*控制加減乘除*/
x=rand()%100; /*設定範圍是1到100*/
y=rand()%100;
switch(a){
case 0:
printf("第%d題\n",i);
printf("%d+%d=?",x,y);
ant=x+y; /*此為真正答案*/
scanf("%d",ans); //這一行有錯,少「&」
/*答對加五分,答錯倒扣十分*/
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
case 1:
printf("第%d題\n",i);
printf("%d-%d=?",x,y);
ant=x-y;
scanf("%d",ans); //這一行有錯,少「&」
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
case 2:
printf("%d*%d=?",x,y);
ant=x*y;
scanf("%d",ans); //這一行有錯,少「&」
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
case 3:
printf("第%d題\n",i);
printf("%d/%d=?",x,y);
ant=x/y;
scanf("%d",ans); //這一行有錯,少「&」
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
break;
}
/*即時印出考試完成績*/
printf("您的成績是:%d",sum[j]);
if (sum[j]<60){
printf("你不及格!\n",sum[j]);
}
else {
printf("你及格了!\n",sum[j]);
}
j==j+1; //這一行有錯,要改成j=j+1或是j++
printf("繼續換下個人測驗嗎?y/n"); //這一行有錯,跳行你打錯,是「\n」
scanf("%c",k); //這一行有錯,少「&」
if (x==y){ //這一行你有什麼用意嗎?
p==1;
}
else if (x==n){ //這一行你有什麼用意嗎?
p==0;
}
else {
printf("輸入錯誤!請輸入y或n!");
}
}while(i<=20 || p=0) //這一行有錯,do-while結束要加上「;」
/*迴圈結束,詢問是否列出所有人成績*/
printf("是否印出全部測驗成績y/n");
scanf("%c",t); //這一行有錯,少「&」
if (t==y){
printf("\n班級\n座號\n姓名\n成績");
for (x=0;x<20;x++){
printf("%c\t%d\t%c\t%d\n",cl[x],num[x],na[x],sum[x]);
}
}
else if (t==n){
printf("程式結束!謝謝您的使用!");
}
else {
printf("輸入錯誤!請輸入y或n!");
}

}

return 0;//這裡你少打了要回傳給mian的數值。

//以上為我指出你原來程式有錯的地方,而且你把上面的錯誤都修之後,
//程式跑出來的結果還是怪怪的…








//以下為修改後的程式碼
#include
#include
#define N 2 //總題數

int main(void)
{
char cl[20],na[20]; /*宣告陣列*/
int sum[20],num[20];
int p,i,j,a,x,y,n,ant,ans; /*宣告變數*/
char t,k;

j=0;
do{
sum[j]=0;
i=0;
srand((unsigned)time(NULL));
/*輸入使用者相關資訊存入陣列*/

printf("請輸入班級:");
scanf("%c",&cl[j]);
printf("請輸入座號:");
scanf("%d",&num[j]);
printf("請輸入姓名:");
scanf("%s",na);

do
{
/*亂數出題片段*/
a=rand()%3; /*控制加減乘除*/
x=rand()%100; /*設定範圍是1到100*/
y=rand()%100;

++i;
switch(a){
case 0:
printf("第%d題\n",i);
printf("%d+%d=?",x,y);
ant=x+y; /*此為真正答案*/
break;
case 1:
printf("第%d題\n",i);
printf("%d-%d=?",x,y);
ant=x-y;
break;
case 2:
printf("第%d題\n",i);
printf("%d*%d=?",x,y);
ant=x*y;
break;
case 3:
printf("第%d題\n",i);
printf("%d//%d=?",x,y);
ant=x/y;
break;
}
scanf("%d",&ans);
if (ant==ans){
sum[j]+=5;
}
else {
sum[j]-=10;
}
}while(i
/*即時印出考試完成績*/
printf("您的成績是:%d",sum[j]);
if (sum[j]<60){
printf("你不及格!\n",sum[j]);
}
else {
printf("你及格了!\n",sum[j]);
}
j++;

printf("繼續換下個人測驗嗎? y/n");
scanf("%c",&k);

}while(j<20 && k=='y');
/*迴圈結束,詢問是否列出所有人成績*/

printf("是否印出全部測驗成績y/n :");
scanf("%c",&t);

if (t==y){
printf("\n班級\n座號\n姓名\n成績");
for (x=0;x<20;x++){
printf("%c\t%d\t%c\t%d\n",cl[x],num[x],na[x],sum[x]);
}
}
else if (t==n){
printf("程式結束!謝謝您的使用!");
}
else {
printf("輸入錯誤!請輸入y或n!");
}
return 0;
}





我幫你把一些錯誤找出來了,但是你的邏輯不是很對,所以程式跑出來的結果不是你想要的,你可能要重新思考一下,程式已經可以執行了。

2005-06-13 05:33:49 · answer #1 · answered by Anonymous · 0 0

fedest.com, questions and answers