一个C语言问题!求教,看一下我这个程序有美问题!

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:02:27
题目是:求表达式a+aa+aaa+aaaa+……+a……a(n个a),其中a由键盘输入;
我变得程序是这样的,但是敲入一个数字a后,竟然程序没有反应。你们看看有什么问题啊!

#include<stdio.h>
main()
{
int i;
long int s,a,m,sum;
printf("Please input a:");
scanf("%ld,&a");
for(s=a,m=1,i=1,sum=0;i<=a;i++)
{
sum=sum+s;
s=m*10+s;
}
printf("%ld,sum");
}
针对你们的回答,语法问题时知道了,但是运行2楼的程序,发现问题还是会出现了,当a=2时,程序运行真确,但是a=3时问题就来了算出来的结果是399,但是真确的应该是369才对,a=4的时候也发生错误了!你们在看看阿!最好给我分析一下我里面的逻辑错误在哪里啊。

scanf("%ld,&a");
标准输入的语句是错的。
你的标准输出也是错的。

改下:关于逻辑错误,建议你对比我改的看下,不要自己把自己的逻辑弄乱,
建议多看些类似题目的优秀代码,会对你的条理编程很有帮助的。
#include<stdio.h>
main()
{
int i;
long int s,a,m,sum;
printf("Please input a:");
scanf("%ld",&a);
for(s=a,m=1,i=1,sum=0;i<=a;i++)
{
sum=sum+s;
m=m*10;
s+=m*a;
/*这里为何是m*10+s?
应该是:(以3为例)变成33、333、3333……的吧?
可以这样改:
*/
}
printf("\n%ld",sum);
getch();
}

很简单:
#include<stdio.h>
main()
{ int i,n;
long s=1,t=0,m=0;
printf("Please input n: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{t+=s;s*=10;/*定义所乘因数的变化:1,11,111,1111.....*/
m+=t*n;}/*累加*/
printf("\n\tm=%ld",m);
getch();
}

引号引过界了
scanf("%ld,&a")改为
scanf("%ld",