user-0 提问: C语言程序，希望大神帮忙看一下，写了之后就是运行不对（vc++2010）

回复:
user: user-1
content: 引用 楼主 qq_45108790的回复:面向小学1~2年级学生，随机选择两个整数和加减法形成算式要求学生解答。  功能要求：   （1）电脑随机出10道题，每题10分，程序结束时显示学生得分；   （2）确保算式没有超出1~2年级的水平，只允许进行50以内的加减法，不允许两数之和或之差超出0~50的范围，负数更是不允许的；   （3）每道题学生有三次机会输入答案，当学生输入错误答案时，提醒学生重新输入，如果三次机会结束则输出正确答案；   （4）对于每道题，学生第一次输入正确答案得10分，第二次输入正确答案得7分，第三次输入正确答案得5分，否则不得分；   （5）总成绩90以上显示“SMART” ,80-90显示“GOOD”，70-80显示“OK”,60-70显示“PASS”，60以下“TRY AGAIN"  程序如下 #include<stdlib.h> #include<stdio.h> #include<conio.h> int main() {   int num=0,err=0;/*答题数，错误数*/   while(1)   {     int a=0,b=0,c=0,d=0,i=0,result,score,sum=0;     char sf[2]={'+','-'};/*出题*/    while(1)    {      a=rand()%51;      b=rand()%51;      d=rand()%2;     if(c>=0&&c<=50) break;     }    printf("%d%c%d=",a,sf[d],b);/*答案*/    printf("请输入计算结果：\n");    while(1)    {      scanf("%d",&result);      i++;      if(result==c)      {        printf("恭喜回答正确！\n");        break;      }      else if(i<3)      {        printf("回答错误，请重新回答：\n");      }       if(i==1)       {         score[num]=10;        }       else if(i==2)       {         score[num]=7;        }       else       {         score[num]=5;       }       break;     else     {       err++;       break;      }    }    num++;    if(num==10)    break;   }  sum=sum+score[num];  printf("你的成绩：%d",sum);  if(sum>90)  {    printf("SMART\n");  }  else if(sum>=80)  {    printf("GOOD\n");   }  else if(sum>=70)  {    printf("OK\n");   }  else if(sum>=60)  {    printf("PASS\n");   }  else  {    printf("TRY AGAIN\n");   } return 0; } 你if  else用的还不熟练，程序中好多逻辑错误，以及好多变量都定义成局部变量，数组定义成整形变量。我稍微对你的程序做了一些修改，有看不明白的可以问我

user: user-1
content: 引用 楼主 qq_45108790的回复:面向小学1~2年级学生，随机选择两个整数和加减法形成算式要求学生解答。  功能要求：   （1）电脑随机出10道题，每题10分，程序结束时显示学生得分；   （2）确保算式没有超出1~2年级的水平，只允许进行50以内的加减法，不允许两数之和或之差超出0~50的范围，负数更是不允许的；   （3）每道题学生有三次机会输入答案，当学生输入错误答案时，提醒学生重新输入，如果三次机会结束则输出正确答案；   （4）对于每道题，学生第一次输入正确答案得10分，第二次输入正确答案得7分，第三次输入正确答案得5分，否则不得分；   （5）总成绩90以上显示“SMART” ,80-90显示“GOOD”，70-80显示“OK”,60-70显示“PASS”，60以下“TRY AGAIN"  程序如下 #include<stdlib.h> #include<stdio.h> #include<conio.h> int main() {   int num=0,err=0;/*答题数，错误数*/   while(1)   {     int a=0,b=0,c=0,d=0,i=0,result,score,sum=0;     char sf[2]={'+','-'};/*出题*/    while(1)    {      a=rand()%51;      b=rand()%51;      d=rand()%2;     if(c>=0&&c<=50) break;     }    printf("%d%c%d=",a,sf[d],b);/*答案*/    printf("请输入计算结果：\n");    while(1)    {      scanf("%d",&result);      i++;      if(result==c)      {        printf("恭喜回答正确！\n");        break;      }      else if(i<3)      {        printf("回答错误，请重新回答：\n");      }       if(i==1)       {         score[num]=10;        }       else if(i==2)       {         score[num]=7;        }       else       {         score[num]=5;       }       break;     else     {       err++;       break;      }    }    num++;    if(num==10)    break;   }  sum=sum+score[num];  printf("你的成绩：%d",sum);  if(sum>90)  {    printf("SMART\n");  }  else if(sum>=80)  {    printf("GOOD\n");   }  else if(sum>=70)  {    printf("OK\n");   }  else if(sum>=60)  {    printf("PASS\n");   }  else  {    printf("TRY AGAIN\n");   } return 0; } #define _CRT_SECURE_NO_WARNINGS #include<stdlib.h> #include<stdio.h> #include<conio.h> int main() { 	int num = 0;/*答题数*/ 	int  a = 0, b = 0, c = 0, d = 0, i = 0, result, sum = 0; 	int score[10] = { 0 }; 	while (1) 	{ 		char  sf[2] = { '+', '-' };/*出题*/ 		while (1) 		{ 			a = rand() % 51; 			b = rand() % 51; 			d = rand() % 2; 			if (d == 0)   //0代表加法 			{ 				c = a + b; 			} 			else   //不是0就说明是减法 			{ 				c = a - b; 			} 			if (c >= 0 && c <= 50)  break; 		} 				printf("%d%c%d=", a, sf[d], b);/*答案*/ 		printf("请输入计算结果：\n"); 		i = 0;   //把i清零  不然没计算一个新题i就会一直累加 		while (1) 		{  			scanf("%d", &result); 			i++; 			if (result == c) 			{ 				printf("恭喜回答正确！\n"); 				if (i == 1) 				{ 					score[num] = 10; 				} 				else  if (i == 2) 				{ 					score[num] = 7; 				} 				else 				{ 					score[num] = 5; 				} 				break;  			} 			else 			{ 				printf("回答错误，请重新回答：\n"); 				if (i == 3) 				{ 					printf("本题机会已经用完,开始下一题\n"); 					break; 				} 			}  		} 		sum += score[num]; 		num++; 		if (num == 10) 			break; 	} 	printf("你的成绩：%d", sum); 	if (sum>90) 	{ 		printf("SMART\n"); 	} 	else if (sum >= 80) 	{ 		printf("GOOD\n"); 	} 	else if (sum >= 70) 	{ 		printf("OK\n"); 	} 	else  if (sum >= 60) 	{ 		printf("PASS\n"); 	} 	else 	{ 		printf("TRY AGAIN\n"); 	} 	return 0; }

user: user-2
content: 用switch 不可以？