我在编程方面是全新的,最近我发现这个网站帮助教育我的自我。 我正在尝试使用“C”来编写一个程序,该程序会在我的书中遇到三种不同类别的成绩提示,并且我认为它们是我最好的选择。 我目前的代码看起来像这样。如何使用while循环
int countA;
int gradeA;
int totalA;
int weightA;
float averageA;
int countE;
int gradeE;
int totalE;
int weightE;
float averageE;
int countQ;
int gradeQ;
int totalQ;
int weightQ;
float averageQ;
totalA = 0;
countA = 0;
totalE = 0;
countE = 0;
totalQ = 0;
countQ = 0;
printf("Enter Assignment Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeA);
while (gradeA != -1){
totalA = totalA + gradeA; /* add gradeA to totalA */
countA = countA + 1;
printf("Enter Assignment Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeA);
}
if (countA != 0) {
averageA = (float) totalA/countA;
printf("total is %.2f\n", averageA);
}
printf("Enter Exam Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeE);
while (gradeE != -1){
totalE = totalE + gradeE; /* add gradeE to totalE */
countE = countE + 1;
printf("Enter Exam Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeE);
}
if (countE != 0) {
averageE = (float) totalE/countE;
printf("total is %.2f\n", averageE);
}
printf("Enter Quiz Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeQ);
while (gradeQ != -1){
totalQ = totalQ + gradeQ; /* add gradeQ to totalQ */
countQ = countQ + 1;
printf("Enter Quiz Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeQ);
}
if (countQ != 0) {
averageQ = (float) totalQ/countQ;
printf("total is %.2f\n", averageQ);
}
我们什么,我想这点后,做的是两次重复这个过程,但是当我尝试运行exe文件我得到的第1部分运行,但其他两个部分根本就没有得到由于某种原因而提出的。这是否仅限于重复陈述的内容?或者我有一个错误在哪里。我试图弄清楚我做错了什么,但我只是看到它。
我不太确定如何正确发布这里,但这是我得到的输出的一个例子。
这里是我输出的一个例子,你可以看到它提示我输入第一个段,它是Assignment部分,但是输入-1结束循环后,它给出了平均值和结束值。
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>project1.exe
Enter Assignment Grade, -1 to end: 100
Enter Assignment Grade, -1 to end: 80
Enter Assignment Grade, -1 to end: 77
Enter Assignment Grade, -1 to end: 33
Enter Assignment Grade, -1 to end: 76
Enter Assignment Grade, -1 to end: 92
Enter Assignment Grade, -1 to end: -1
total is 76.33
我的身影,至少第一部分工作,但我得到我之后不提示接下来看看总然后请求对考试成绩。
请后输出。我怀疑你没有看到提示,因为你需要调用'fflush(stdout)'。很多终端都是行缓冲的,除非你写一个换行符(或显式刷新),否则默认情况下不会将输出刷新到屏幕。 – paddy 2013-02-13 22:19:47
在我的Mac(铿锵声)和Windows(vc2012)上运行良好。 – WhozCraig 2013-02-13 22:22:33
很难想象在读取输入前没有刷新输出的任何C I/O库。 – 2013-02-13 22:42:40