| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1935 人关注过本帖
标题:有关getchar函数的问题!!!
只看楼主 加入收藏
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
 问题点数:0 回复次数:8 
有关getchar函数的问题!!!
学生成绩管理
#include<stdio.h>
#include<stdlib.h>
#define A "%d %s %d %d  %d-----%f\n"
#define B st[i].num,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2],st[i].avr
 #define N 50 /*学生人数*/
struct student
{
  int num;
  char name[15];
  int score[3];
  double avr;
}st[N],k;
/*函数声明*/
void Insertandinput (struct student st[]);
void  Output(struct student st[]);
void Sort(struct student st[]);
void  Desert(struct student st[]);
/*全局变量*/
int j,m,a,sum;
int i=0,n=0,x=0;/*n为计数器*/
/*主函数*/
 void main()
{

   loop:    printf("\n");
        printf("Please input the data:\n");
        printf("***1--------Insertandinput***\n");
        printf("***2----------Output***\n");
        printf("***3----------Sort***\n");
           printf("***4------------Desert***\n");
        printf("***0------------exit***\n");
        scanf("%d",&m);
  switch(m)
     {

       case 1:Insertandinput(st);  break;
       case 2:Output(st); break;
       case 3:Sort(st);break;
       case 4:Desert(st); break;
    default: exit(0);
     }

     goto loop;


}
 void Insertandinput(struct student st[])/*输入与插入函数的合并*/
{

  printf("Input the data :\n");
       while(getchar()!='E')
       {
     scanf("%d %s %d %d %d",&st[i].num,st[i].name,
      &st[i].score[0],&st[i].score[1],&st[i].score[2]);
       getchar();/*此处若不加 getchar();while循环将视输入E后的回车为一次输入得到下次学生的信息为0,
若加则必须在每次学生信息输完后打回车,不打回车getchar();就会吃掉下次学生的一部分学号。我想既不打回车(打空格行),
下次学生的信息也不为0,该怎么做?*/
      i++;n++;

      }
}
数天前我发过一个求救帖,主要是让大家帮我做一个有关学生成绩管理的程序,经过这么多天的“折磨”,我终于自己编成了(除了上面的问题外),感谢各位对我的帮助,希望大家能帮我看看怎么改?
谢谢了!
搜索更多相关主题的帖子: 函数 getchar student void struct 
2008-03-04 14:59
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
没看程序,不过你说的应该是如下问题:
前面接收了输入,输入流中可能会有残留数据
清空输入流的方法:
while ( (c = getchar()) != '\n' && c != EOF );
2008-03-04 15:11
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
谢谢!我试了一下,while函数里输入的学号已经不吃了,不过printf函数在输入数字后要打回车,打回车后就不能进入while循环了,这个又怎么解决呢?谢谢!

多C多智慧,将C进行到底.........
2008-03-04 15:42
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
同样处理
2008-03-04 15:58
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
fflush(stdin)

清空输入流

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-03-04 16:20
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
fflush(stdin)
应该加在哪儿呢?我加在printf后,它把我输入的第一个学生的学号吃掉了两位.请求帮助!!!

多C多智慧,将C进行到底.........
2008-03-06 13:56
kuteng881023
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-3
收藏
得分:0 
void Insertandinput (struct student st[]);
void  Output(struct student st[]);
void Sort(struct student st[]);
void  Desert(struct student st[]);
我是个新手请你 讲解一下这些是你定义的函数还是库函数
2008-03-06 19:15
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
回复 7# 的帖子
这些是函数声明,分别为输入函数,输出函数,排序函数,删除函数,函数形参变量是结构体里的成员,前面已经定义了结构体数组.

多C多智慧,将C进行到底.........
2008-03-06 19:34
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
回复 5# 的帖子
对了,除了fflush(stdin)的用法外,调用这个函数需要啥头文件吗?

多C多智慧,将C进行到底.........
2008-03-06 19:37
快速回复:有关getchar函数的问题!!!
数据加载中...
 
   



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

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