风行回首 发表于 2017-8-13 17:34:13

c语言 等差数列或等比数列求第n项的值

#include<stdio.h>
void main()
{
        int i , n, c;
        double a1,b1,d,q;
        c = 1;
        printf("等差数列第n项请按1,等比数列第n项请按2 \n");
        scanf("%d",&i);
        if (i == 1)
        {
                printf("请输入等差数列的首相a1、公差d和项数n \n");
                scanf("%fl,%fl,%d",&a1,&d,&n);
                while (c <= n)
                {
            a1 = a1 + d;
                          c = c++;
                }
                printf("a1 = %fl",a1);
        }
        if(i == 2)
        {
                printf("请输入等比数列的首相b1、公比q和项数n \n");
                scanf("%fl,%fl,%d",&b1,&q,&n);
                while( c <= n)
                {
                        b1 = b1*q;
                        c = c++;
                }
                printf("b1 = %fl\n" , b1);
        }
        printf("按回车键退出\n");
}





这个哪有毛病吗???为啥输出的值都是 -92559604377396321000000000000000000000000000000000000000000000.000000l

ba21 发表于 2017-8-13 19:00:30

风行回首 发表于 2017-8-13 19:41:59

ba21 发表于 2017-8-13 19:00


改了 但是主要原因貌似不是这个

风行回首 发表于 2017-8-13 19:42:31

ba21 发表于 2017-8-13 19:00


我把逗号去掉了才正常

ba21 发表于 2017-8-13 19:55:03

本帖最后由 ba21 于 2017-8-13 19:57 编辑

风行回首 发表于 2017-8-13 19:42
我把逗号去掉了才正常

scanf 中有, 号,你输入的时候必须也得输 ,号。%fl 能正常就有鬼了, %f    加 l字符;scanf, print中意义都不一样。
就scanf("%fl,%fl,%d", &a1, &d, &n)cmd输入:1.5l,3.14l,5(这里的l 和 , 都只是个占位符)
就printf("b1= %fl\n", 3.14)cmd输入: b1= 3.14l


ez2dancer0 发表于 2017-8-14 15:29:18

一个是%fl的问题 一个是没有初始化两个问题结合起来导致的输出不对
建议你可以注掉一部分,只执行其中一段,慢慢调试
页: [1]
查看完整版本: c语言 等差数列或等比数列求第n项的值