| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 575 人关注过本帖
标题:【求助】关于getchar()的位置
只看楼主 加入收藏
我是来注册的
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-11
收藏
 问题点数:0 回复次数:7 
【求助】关于getchar()的位置
初学C语言,弱弱地问个很二的问题,为什么我的getchar()必须放在函数前面(见程序一)而放在后面就出问题(见程序二)?

程序一:
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
void main()
{
    char c;
    int i,n;
    float t,*a,x,p;
    printf("*******  多项式求值程序  *******\n\n");
    printf("请选择计算方法(要大写哦):\nA.课本公式(5)  B.秦九韶算法\n");
    c=getchar();
    printf("\n请输入待计算多项式的次数n以及x的值:");
    scanf("%d %f",&n,&x);
    a=(float *)malloc(sizeof(float)*n);
    printf("\n\n请输入待计算的多项式的每项系数a0,a1,...,an:\n");
    for(i=0;i<=n;i++)
        scanf("%f",&a[i]);
    if(c==65)
        {
            t=1;p=a[0];
            for(i=1;i<=n;i++)
                {
                    t=x*t;
                    p=p+a[i]*t;
                }
        }
    else
        {
            p=a[n];
            for(i=1;i<=n;i++)
            p=x*p+a[n-i];
        }
    printf("\np(%f)=%f\n\n",x,p);
    free(a);
    system("pause");
}

程序二:
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
void main()
{
    char c;
    int i,n;
    float t,*a,x,p;
    printf("*******  多项式求值程序  *******\n\n");
    printf("请输入待计算多项式的次数n以及x的值:");
    scanf("%d %f",&n,&x);
    a=(float *)malloc(sizeof(float)*n);
    printf("\n\n请输入待计算的多项式的每项系数a0,a1,...,an:\n");
    for(i=0;i<=n;i++)
        scanf("%f",&a[i]);
    printf("\n\n请选择计算方法(要大写哦):\nA.课本公式(5)  B.秦九韶算法\n");
    c=getchar();
    if(c==65)
        {
            t=1;p=a[0];
            for(i=1;i<=n;i++)
                {
                    t=x*t;
                    p=p+a[i]*t;
                }
        }
    else
        {
            p=a[n];
            for(i=1;i<=n;i++)
            p=x*p+a[n-i];
        }
    printf("\np(%f)=%f\n\n",x,p);
    free(a);
    system("pause");
}
搜索更多相关主题的帖子: void include 计算方法 多项式 
2012-03-11 17:35
kingofhevil
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2012-3-7
收藏
得分:0 
偶也不懂,不过帮你顶起
2012-03-11 22:04
wjjbob
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-12
收藏
得分:0 
在你的程序二中,getchar()读取的是遗留在stdin中的换行符
2012-03-12 13:30
sanjianfei
Rank: 2
等 级:论坛游民
帖 子:48
专家分:53
注 册:2012-2-21
收藏
得分:0 
虽然没仔细看代码,但是应该是getchar()吸收了回车符。
2012-03-12 15:48
我是来注册的
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-11
收藏
得分:0 
回复 3楼 wjjbob
感谢你的回复哈,大概懂了,好像是这么回事。那一般怎么处理啊?
2012-03-12 17:08
我是来注册的
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-11
收藏
得分:0 
回复 4楼 sanjianfei
也感谢你的回复哈,那一般怎么处理啊?
2012-03-12 17:08
我是来注册的
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-11
收藏
得分:0 
回复 2楼 kingofhevil
我搞清楚了,自己来结贴啦。
可以在scanf之后或者getchar之前加一行rewind(stdin)。
2012-03-13 00:02
wjjbob
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-12
收藏
得分:0 
回复 7楼 我是来注册的
rewind()和fflush()在linux下都不可用
2012-03-13 17:35
快速回复:【求助】关于getchar()的位置
数据加载中...
 
   



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

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