【C语言新手问题】这个程序为什么不对

--------------------------------
161
-------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
unsigned long a,n,s=0,i,x;
scanf("%lu %lu",&a,&n);
for(i=0,x=n;i<=n;i++,x--)
{
s+=pow(10,i)*a*x;
}
printf("%d",s);
}

这个程序我在电脑上没看出什么问题,但是交到考试系统就答案错误

应该是在输入某个符合条件的值的时候答案不对

第1个回答  2012-12-05
你的不对,你的算式和题里面要求的根本就不一样,你好好看看,尤其是你的s+=pow(10,i)*a*x;这句。我写了个,也验证了,你看看
#include <stdio.h>
int main()
{
int a,n,i;
unsigned long result=0,temp=0;
printf("Input a and n:");
scanf("%d %d",&a,&n);
for(i=0;i<n;i++)
{
temp=temp*10+a; //计算本次要加的数,2、22、222……
result+=temp;
}
printf("%lu",result);
return 0;
}追问

结果是对的就可以过的

第2个回答  2012-12-05
呵呵,我又来了:
#include<stdio.h>
int main(){
int i,a,n,s1=0,s2=0;
scanf("%d%d",&a,&n);
for(i=0;i<n;i++){
s1=s1*10+a;
s2=s2+s1;
}
printf("%d",s2);
return 0;
}
呵呵,简单吧。
考试系统是自动测试的,一些小错误就可能通不过,在提交的时候要注意空格、类型以及一些函数的使用尽量要规范。追问

你的确实通过了,但是你觉得我的答案的问题出在哪。。。

追答

你的方法算出来的结果是对的,但不符合题目里的2+22+222+……的要求。

追问

我们这个考试系统只要结果对了就行的。。。关键他说我结果不对 我觉得是某些特殊值答案错误

你找到没。。。我没找到- -

追答

要不你把a,n,s的类型改一下,再交一下看看。

追问

我就是int不对才改的....

追答

额,我用的就是int啊,我的意思是unsigned改一下,long可以留着。

本回答被提问者和网友采纳
第3个回答  2012-12-05
scanf("%lu %lu",&a,&n);不对吧,分两句来写试试追问

如果是这个错误它会提示编译错误

这个考试系统中这样写是可以的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网