鱼C论坛

 找回密码
 立即注册
查看: 2604|回复: 4

c语言输入问题

[复制链接]
发表于 2012-4-13 09:34:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
源码如下:
#include<stdio.h>
#include<string.h>
struct person
{
  char name[20];
  int cout;

}per[3]={"li",0,"xi",0,"ji",0};
void main()
{
    int i,j;
  char mingzi[20];
for(i=0;i<3;i++)//控制循环次数
  {
    printf("输入名字:\n");
     scanf("%s\n",mingzi);
     fflush(stdin);
     for(j=0;j<3;j++)//比较大小
     {
       if(strcmp(mingzi,per[j].name)==0)
        per[j].cout++;


    }
  }
  printf("\n");

  for(i=0;i<3;i++)
      printf("%5s:%d\n",per[i].name,per[i].cout);
}
执行结果如下:
输入名字:
li
li
输入名字:
xi
xi
输入名字:
xi
xi

   li:1
   xi:2
   ji:0
Press any key to continue
为什么要输入两次呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-13 10:44:58 | 显示全部楼层
scanf("%s\n",mingzi);
应该改成 scanf("%s",mingzi);  不应该加入‘\n’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-13 14:24:35 | 显示全部楼层
scanf输入不能加换行符\n的输入的时候enter直接换行就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-13 22:22:17 | 显示全部楼层
多谢多谢!粗心啊!没发现啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-13 23:00:04 | 显示全部楼层
你为什么还要加一个关于j的循环?这样的结果不是错误的吗?
我认为主函数部分应该是这样吧.
代码:
int main(void)
{
    int i;
        char mingzi[20];
        for (i = 0; i < 3; i++)//控制循环次数
        {
                printf("输入名字:\n");
                scanf("%s", mingzi);
                fflush(stdin);

                if (strcmp (mingzi, per[i].name) == 0)
                        per[i].cout++;
        }
        printf("\n");
       
        for (i = 0; i < 3; i ++)
                printf("%5s:%d\n", per[i].name, per[i].cout);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 16:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表