| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:[求助] C语言高手来指点一下
取消只看楼主 加入收藏
jiehong
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-12-19
收藏
 问题点数:0 回复次数:1 
[求助] C语言高手来指点一下

我想练习一下结构体,便写出以下程序,结果与我想象中的大不相同,请指点一二

源程序:
#include <stdio.h>
#define SIZE 100

struct student {
char name;
int result;
};

void getStudent(struct student a[]);
void putStudent(struct student a[]);

int main()
{
struct student a[SIZE];
getStudent(a);
printf("\n");
printf("\n");
printf("\n");
printf("\n");
putStudent(a);
return 0;
}

void getStudent(struct student a[])
{
int i;
for(i=0; i<5; i++){
printf("%s","Enter Name: ");
scanf("%c",&a[i].name);
printf("\n");
printf("%s","Enter Result: ");
scanf("%d",&a[i].result);
}
}

void putStudent(struct student a[])
{
int i;
for(i=0; i<5; i++){
printf("Name: %c Result: %d\n",a[i].name,a[i].result);
}
}


期待结果:
Enter Name: a
Enter Result: 1
Enter Name: b
Enter Result: 2
Enter Name: c
Enter Result: 3
Enter Name: d
Enter Result: 4
Enter Name: e
Enter Result: 5

Name: a Result: 1
Name: b Result: 2
Name: c Result: 3
Name: d Result: 4
Name: e Result: 5

但实际的程序执行结果:
Enter Name: a
Enter Result: 1

Enter Name: ------------------------不能输入
Enter Result: 2
Enter Name: ------------------------不能输入
Enter Result: 3
Enter Name: ------------------------不能输入
Enter Result: 4
Enter Name: ------------------------不能输入
Enter Result: 5

Name: a Result: 1
Name:---------------------------------------------
Result: 2 --------------------这两行本应该在同一行的.
Name:
Result: 3
Name:
Result: 4
Name:
Result: 5


请问:为什么会有这样的结果,在"------------------------不能输入"的地方不是应该能输入的吗?在for循环里面为什么会有错呢?在"-----------------------------------" 与 "--------------------这两行本应该在同一行的"的地方为什么不在同一行,而分别显示在两行呢?

谢谢!

搜索更多相关主题的帖子: C语言 
2005-12-19 21:49
jiehong
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-12-19
收藏
得分:0 

可是我想知道为什么会在函数中scanf("%d",&a[i].result);scanf函数的问题,当输入一个数字时,'\n'也就是回车不知道为什么保留,我又做了以下实验:

#include <stdio.h>

int main()
{
char a,b,c,d,e;
int i,j,k,l,m;

printf("Name: ");
scanf("%c",&a);
printf("Result: ");
scanf("%d",&i);

printf("\n");

printf("Name: ");
scanf("%c",&b);
printf("Result: ");
scanf("%d",&j);

printf("\n");

printf("Name: ");
scanf("%c",&c);
printf("Result: ");
scanf("%d",&k);

printf("\n");


printf("Name: ");
scanf("%c",&c);
printf("Result: ");
scanf("%d",&l);

printf("\n");


}

这程序的执行结果跟以前一样,从第二个开始的Name不能输入,但是如果改成这样:
#include <stdio.h>

int main()
{
char a,b,c,d,e;
int i,j,k,l,m;

printf("Name: ");
scanf("%d",&a);
printf("Result: ");
scanf("%d",&i);

printf("\n");

printf("Name: ");
scanf("%d",&b);
printf("Result: ");
scanf("%d",&j);

printf("\n");

printf("Name: ");
scanf("%d",&c);
printf("Result: ");
scanf("%d",&k);

printf("\n");


printf("Name: ");
scanf("%d",&c);
printf("Result: ");
scanf("%d",&l);

printf("\n");
return 0;
}

也就是将scanf();函数中的"%C" 全改成%d,则不会出现以前的问题,就是正常的,难道说是 scanf("%c", )函数还有什么我不知道的规则?

2005-12-21 10:55
快速回复:[求助] C语言高手来指点一下
数据加载中...
 
   



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

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