首页 新闻 会员 周边 捐助

C语言中,一道算法题,不知道bug在哪

0
悬赏园豆:10 [已解决问题] 解决于 2019-10-22 20:46

题目要求:求s=a+aa+aaa+aaaa+……+aa…aa(n位)
其中,a的值由键盘输入,位数n也由键盘输入。

include<stdio.h>

int main(void)
{int a,n,b,sum=0,c=1,i;
scanf("%d\n",&a);
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{ if(i!=1)
{for(b=2;b<=i;b++)
c=c10;
a=a
c+a;
sum=sum+a;
}
else
{
a=a;
sum=sum+a;
}

      c=1;

}

printf("%d",sum);
return 0;

} 输入3,6,理论值是370368,但我这套程序输入两个值之后还不投入运算

Fate-Joker的主页 Fate-Joker | 初学一级 | 园豆:158
提问于:2019-10-20 16:07
< >
分享
最佳答案
1

scanf模板里不要用\n什么的, 模板里所有空白字符的作用都是, 吃光所有的空白字符, 包括空格, tab, 换行这些, 你没法要求scanf要读个什么指定字符, 输入不是scanf能决定的.
你得先确保你读到的输入是你预期的值, 用printf先输出读取到的值看对不对,再去看逻辑有没有错误.

收获园豆:10
jakio6 | 小虾三级 |园豆:1325 | 2019-10-20 21:17

可以看下这个, 这里读完了一个整数后, 还吃了很多个换行, 一直到我输入了一个非空的字符

✔︎ tmp cat test.c 
#include <stdio.h>

int main(int argc, char *argv[])
{
    int n;
    scanf("%d\n",&n);
    printf("n = %d\n", n);
    return 0;
}
✔︎ tmp tcc -run test.c
1234




a
n = 1234
✔︎ tmp 
jakio6 | 园豆:1325 (小虾三级) | 2019-10-20 21:21

@jakio6: 已经找到bug了,问题出在for循环嵌套上,问题已解决,另外那个scanf(“....”)不加反斜杠也很受用,谢谢!

Fate-Joker | 园豆:158 (初学一级) | 2019-10-22 20:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册