标题:【求助】关于getchar()的位置
取消只看楼主
我是来注册的
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-11
 问题点数:0 回复次数:3 
【求助】关于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
我是来注册的
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-362844-1-1.html




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

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