【发布时间】:2015-01-08 16:08:13
【问题描述】:
我已经为 codechef (A4) 上的问题编写了这段代码......当我给出输入时: 2 4 2
这个程序在没有进一步输入的情况下意外停止....有人能指出代码中的错误吗?
#include <stdio.h>
#include<math.h>
void number(long int a,int b)
{
int c;
c=b;
int first[c],last[c],e=1,i;
long int d;
d=pow(a,a);
for(i=(c-1);i>=0;i--)
{
last[i]=fmod(d,pow(10,e));
e++;
}
e=1;
while(d>pow(10,(b-1)))
d/=10;
for(i=(c-1);i>=0;i--)
{
first[i]=fmod(d,pow(10,e));
e++;
}
for(i=0;i<c;i++)
printf("%d",first[i]);
printf(" ");
for(i=0;i<c;i++)
printf("%d",last[i]);
printf("\n");
}
int main()
{ int T;
scanf("%d",&T);
while(T--)
{ long int a;
int b;
scanf("%ld %d",a,b);
number(a,b);
}
return 0;
}
【问题讨论】:
-
您需要帮助我们帮助您。我们不知道您要解决什么问题 - 您能否给我们更多信息。所有程序员都需要学习如何在他们的程序中找到错误。到目前为止,您为追查故障做了什么(除了要求我们为您做这件事)?我可以在程序中看到几个初学者的错误,但我无法修复它们,因为我不知道您要达到什么目标。
-
这一行:'scanf("%ld %d",a,b);'有一些问题。 1) 始终检查 scanf() 的返回值,以确保输入/转换操作成功 2) 参数必须是 'address of' 所以该行应该是:'scanf("%ld %d",&a,&b) ;' 3) 最好始终以' '(空格)开头的 scanf 系列函数的格式字符串以消耗任何剩余的空白(如换行符)
-
在从用户那里得到输入之前总是提示,这样用户就会知道他们应该输入什么。每个 scanf() 之前的 printf() 都可以完成这项工作。
-
为了便于阅读,请不要将语句放在同一行的“{”之后或“}”之前
-
在 C 中,缩进对代码的执行方式、可读性和可维护性没有影响,用大括号“{”和“}”包装所有代码块
标签: c unexpectendoffile