| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1432 人关注过本帖
标题:求高手程序纠正,外加goto具体用法,如何实现本程序中多次分批输入
只看楼主 加入收藏
千i丶羽o
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2010-12-13
结帖率:60%
收藏
 问题点数:0 回复次数:5 
求高手程序纠正,外加goto具体用法,如何实现本程序中多次分批输入
问题描述:
从键盘输入一个班学生(人数不定)一门课的五分制成绩,要求每输入一个五分制成绩,就显示其所在的分数段,同时打印每种成绩的人数。

要求:可连续做多次分批输入。
编写目的:程序纠正,外加goto具体用法,如何实现多次分批输入

问题代码如下:


#include<stdio.h>

void main()
{
    int aCount=0,bCount=0,cCount=0,dCount=0,eCount=0;
    char grade,x;

    printf("please input you score ended by #:\n");

    grade=getchar();

    loop:while(grade!='#')
    {
        switch(grade)
        {

        case 'a':
        case 'A':
            printf("A\n90--100\n");
            aCount++;
            break;

        case 'b':
        case 'B':
            printf("B\n80--89\n");
            bCount++;
            break;

        case 'c':
        case 'C':
            printf("C\n70--79\n");
            cCount++;
            break;

        case 'd':
        case 'D':
            printf("D\n60--69\n");
            dCount++;
            break;

        case 'e':
        case 'E':
            printf("E\n<60\n");
            eCount++;
            break;

        default:

            printf("error,enter again!\n");
        }
        grade=getchar();
    }
    //printf("Do you want to continue( Y/N or y/n )?\n");
    printf("A:%d B:%d C:%d D:%d E:%d F:%d\n",aCount,bCount,cCount,dCount,eCount);
    printf("Do you want to continue( y/n )?\n");
    scanf("%c",x);
    if('y'=='x')

    {
    grade=getchar();
    goto loop;
    }
    else
    goto end;
}

搜索更多相关主题的帖子: 学生 
2010-12-23 11:31
aufish
Rank: 2
等 级:论坛游民
威 望:1
帖 子:59
专家分:94
注 册:2010-4-22
收藏
得分:0 
#include<stdio.h>

void main()
{
    int aCount=0,bCount=0,cCount=0,dCount=0,eCount=0;
    char grade,x;
loop:
    printf("please input you score ended by #:\n");

    grade=getchar();
    getchar();//接收上面输入时的回车,否则下次输入时会自动给grade赋值为回车(没有这句则第次都有一次错误输入的输出)

    while(grade!='#')
    {
        switch(grade)
        {

        case 'a':
        case 'A':
            printf("A\n90--100\n");
            aCount++;
            break;

        case 'b':
        case 'B':
            printf("B\n80--89\n");
            bCount++;
            break;

        case 'c':
        case 'C':
            printf("C\n70--79\n");
            cCount++;
            break;

        case 'd':
        case 'D':
            printf("D\n60--69\n");
            dCount++;
            break;

        case 'e':
        case 'E':
            printf("E\n<60\n");
            eCount++;
            break;

        default:
            printf("error enter again!\n");break;
            
        }
       goto loop;//直接跳回上面
    }
    //printf("Do you want to continue( Y/N or y/n )?\n");
    printf("A:%d B:%d C:%d D:%d E:%d F:%d\n",aCount,bCount,cCount,dCount,eCount);
    printf("Do you want to continue( y/n )?\n");
    getchar();//接收上面输入时的回车
    scanf("%c",&x);
    if(x=='y')
    {
        goto loop;
    }//else  就不用拉
}   
2010-12-23 12:19
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
收藏
得分:0 
其实我们是不提倡使用 GO TO 的  因为GOTO  有害  使用起来对系统影响很大,建议不要用

Discuz!  
好好学习  天天向上
2010-12-23 12:28
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
你的程序有错误。
1. goto end; 这名话是什么意思,end 的在哪里????
2.if('y'=='x') //这里判断字符相等有错
   {
    grade=getchar();
    goto loop;
    } //这里键盘的字母可能有大小写,你的不完善,还有输入成绩的时候最好要有提示。
 还有好多的问题,不好一一说清楚。我帮楼主你改一下,你自己好好想想吧。
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int aCount=0,bCount=0,cCount=0,dCount=0,eCount=0;
    char grade;
    char x;

loop: printf("please input you score,and enden by '#':");
      scanf("%c",&grade);
      while(grade!="#")      
       {
        switch(grade)
        {

            case 'a':
            case 'A':
            printf("A\n90--100\n");
            aCount++;
            break;

            case 'b':
            case 'B':
            printf("B\n80--89\n");
            bCount++;
            break;

            case 'c':
            case 'C':
            printf("C\n70--79\n");
            cCount++;
            break;

            case 'd':
            case 'D':
            printf("D\n60--69\n");
            dCount++;
            break;

            case 'e':
            case 'E':
            printf("E\n<60\n");
            eCount++;
            break;

            default:
            printf("error,enter again!\n");
            }  
          printf("please input you score:");
          scanf("%c",&grade);
     }
    printf("A:%d B:%d C:%d D:%d E:%d F:%d\n",aCount,bCount,cCount,dCount,eCount);
    printf("Do you want to continue( Y/N)?");
    scanf("%c",x);
    if(x=="Y"||x=="y")
     goto loop;
    else
    exit(0);
    system("pause");
}

[ 本帖最后由 qq1023569223 于 2010-12-23 17:19 编辑 ]

   唯实惟新 至诚致志
2010-12-23 12:38
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
回复 2楼 aufish
会接收回车吗?应该不会吧。大家说说吧。

   唯实惟新 至诚致志
2010-12-23 12:49
千i丶羽o
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2010-12-13
收藏
得分:0 
楼上的几位位高手能不能看看给出改进后的程序还能不能再改进改进,屏幕输出的时候有缺失!
2010-12-23 13:52
快速回复:求高手程序纠正,外加goto具体用法,如何实现本程序中多次分批输入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040047 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved