C代码;带输入的嵌套do while循环
前几天我得到了一些很棒的帮助,解决了一个C代码问题,希望这一个能产生类似的响应。第一个任务是编写一个代码来接受未知数量的名称。第二种方法是允许为每个名称输入未知数量的值(等级),并对每组值取平均值,然后用名称打印。有一本书是我读过并找到了一些灵感的,但它仍然不是正确的 我没有接触过这段代码的任何特定部分,但我试图通过嵌套的Do…while循环保持它的简单性。我尝试过几种不同的方法,但都不能优雅地表达分配给未知人数的人的未知数量的值 我希望用户会被提示输入一个名称,然后只要该值没有被清空,就会立即提示用户输入以表格形式列出的成绩值。当grade的值变为null时,循环退出,求和总数的平均值。名称和平均值一起打印,直到名称值为null,然后子项退出。非常感谢来自社区的任何意见C代码;带输入的嵌套do while循环,c,for-loop,do-while,C,For Loop,Do While,前几天我得到了一些很棒的帮助,解决了一个C代码问题,希望这一个能产生类似的响应。第一个任务是编写一个代码来接受未知数量的名称。第二种方法是允许为每个名称输入未知数量的值(等级),并对每组值取平均值,然后用名称打印。有一本书是我读过并找到了一些灵感的,但它仍然不是正确的 我没有接触过这段代码的任何特定部分,但我试图通过嵌套的Do…while循环保持它的简单性。我尝试过几种不同的方法,但都不能优雅地表达分配给未知人数的人的未知数量的值 我希望用户会被提示输入一个名称,然后只要该值没有被清空,就会立即
#include <stdio.h>
#include <math.h>
int main(){
char b, stu_name;
float grade, sum, avg;
int i,counter;
do{
printf("Enter a student's name? \n");
scanf("%s", &stu_name);
do{
printf("How many grades are to be entered for this student? \n");
scanf("%d", &i);
for (counter = 0; counter < i; counter++) {
printf("Enter %s's grade, hit enter and enter another \n");
scanf("%f", &grade);
sum = sum + grade;
} while (grade != '\0');
avg = sum/i;
printf("GPA for %s is %f\n", stu_name,avg);
printf("Press any key to enter another student");
scanf("%c",b);
}while (b != '\0');
return(0);}
#包括
#包括
int main(){
字符b,stu_名称;
浮动等级、总和、平均值;
int i,计数器;
做{
printf(“输入学生姓名?\n”);
scanf(“%s”和stu_名称);
做{
printf(“该学生需要输入多少个年级?\n”);
scanf(“%d”、&i);
用于(计数器=0;计数器
正如Helio Santos指出的那样,for循环中缺少了结束括号
您还存在各种语法类型问题:
- 对于“输入等级”提示,您只需要%c而不是%s 将stu_名称定义为字符而不是字符[]
- 内部Do/While循环的末端应检查i,而不是等级
- 该检查还应针对scanf在您的设置中可能返回的值进行;%d将强制尝试获取数值
#include <stdio.h>
#include <math.h>
int main(){
char b;
char stu_name[75];
float grade, sum, avg;
int i,counter;
do{
printf("Enter a student's name? \n");
scanf("%s", stu_name);
b = '\0'
i = 0;
sum = 0;
printf("How many grades are to be entered for this student? \n");
scanf("%d", &i);
for (counter = 0; counter < i; counter++) {
printf("Enter %s's grade, hit enter and input another \n",stu_name);
scanf("%f", &grade);
sum = sum + grade;}
avg = sum/i;
printf("GPA for %s is %f\n", stu_name,avg);
stu_name[0]= '\0';
printf("Type q or Q to quit or enter to input another student \n");
scanf(" %c", &b);
} while (b != 'q' && b!='Q');
return(0);}
#包括
#包括
int main(){
字符b;
char stu_name[75];
浮动等级、总和、平均值;
int i,计数器;
做{
printf(“输入学生姓名?\n”);
scanf(“%s”,stu_名称);
b='\0'
i=0;
总和=0;
printf(“该学生需要输入多少个年级?\n”);
scanf(“%d”、&i);
用于(计数器=0;计数器
“它仍然没有正确编译”?听起来好像你做错了。从一个小而简单、工作完美的东西开始,然后一次增加一点复杂度。如果你的一个小改动破坏了编译,你就会知道应该去哪里查找。仍然有几个错误。1)在第一个扫描中删除&
。每当你扫描%s
,您不需要&
.2)在最后一次扫描中的
之前添加和,因为%c
需要一个字符*
,而不是字符
.3)您忘了给第三个字符
因为%s
需要一个以NUL结尾的字符*
来打印。4)删除第二个do…while
循环。这没有任何意义。5)在最后一次printf
中,告诉用户输入q
停止。6)在最后一次scanf
的%c
之前添加一个空格。7)将while(b!='\0');
更改为while(b!='q');
或while(b!='q'));
如果b
是大写的“Q”或小写的“Q”,则要退出-