注册 登录
编程论坛 C语言论坛

小白上路有没有大佬告诉我到底怎么才能让我的循环下次初始化一脸懵逼

a963907818 发布于 2019-11-14 23:38, 1088 次点击
#include <stdio.h>
int main()
  {
      int i=0,a,c=0,b;
          char c1 = 'y';



    while(c1=='y'){

        printf("请输入班级人数:",a);
        scanf("%d",&a);



   while(i<a)
   {
       i++;
       printf("请输入%d的成绩:",i);
        scanf("%d",&b);
        c = c+b;


   }
     b=c/a;
    printf("该班级平均成绩为%d:\n",b);


    printf("是否输入另一个班级的成绩(y/n)?:",c1);
                 getchar();
                c1= getchar();
       }
 }
2 回复
#2
rjsp2019-11-15 09:14
你只要按照C语言标准建议的那样 --- 不将需要的变量一股脑定义到函数头部,而是只定义在需要的块内 --- 就不存在你说的问题。你的问题本质是"有问题要解决,没有问题创造问题也要解决".

程序代码:
#include <stdio.h>

int main( void )
{
    for( char answer='y'; answer=='y'; )
    {
        printf( "请输入班级人数:" );
        unsigned num;
        if( scanf("%u",&num)!=1 || num==0 )
            goto LABEL_ERROR_INPUT;

        unsigned sum = 0;
        for( unsigned i=0; i!=num; ++i )
        {
            printf( "请输入%u的成绩:", i+1 );
            unsigned score;
            if( scanf("%u",&score) != 1 )
                goto LABEL_ERROR_INPUT;
            sum += score;
        }
        printf( "该班级平均成绩为:%.2f\n", sum*1.0/num );

        printf( "是否输入另一个班级的成绩(y/n)?:" );
        if( scanf(" %c",&answer) != 1 )
            goto LABEL_ERROR_INPUT;
    }

    return 0;
LABEL_ERROR_INPUT:
    puts( "输入错误,程序终止" );
    return 1;
}

#3
a9639078182019-11-15 11:50
回复 2楼 rjsp
感谢只是没明白scanf后边加 goto LABEL_ERROR_INPUT;是什么意思
还有最后一句 printf( "是否输入另一个班级的成绩(y/n)?:" );
        if( scanf(" %c",&answer) != 1 ) 为什么要写成不等于1,可以改成==y吗?
1