我尝试将第一个数字存储在一个数组中,然后将该数字的每个数字与第二个数字相乘,并将该数据单独存储在临时变量中。
#include<stdio.h>
int main()
{
int i=0,j=0,b,temp,a,count=0,arr[1000];
scanf("%d",&a);
scanf("%d",&b);
while(a!=0)
{
arr[++i]=a%10;
a=a/10;
count++;
}
temp=0;
for(j=0;j<count;j++)
{
temp=arr[j]*b+temp;
arr[j]=temp%10;
temp=temp/10;
}
while(temp>0)
{
arr[++j]=temp%10;
count++;
temp=temp/10;
}
for(i=count;i>0;i++)
printf("%d",arr[i]);
return 0;
}
答案 0 :(得分:2)
通过使用表达式arr[++i]
,您首先递增i
,然后然后设置数组的值。因此,arr[0]
的值未定义。
答案 1 :(得分:1)
有很多问题:
arr[++i]=a%10;
表示如果i为0且a为11,则在索引1处存储1而不是0.因此,您应该使用arr[i++]=a%10;
post increment operator。for(i=count;i>0;i++)
表示你首先将count表示为4,检查i大于0并继续递增(并且每个循环都满足条件)导致无限循环。您应该将i值减小为for(i=count-1;i>=0;i--)
并迭代直到数组索引为0. 答案 2 :(得分:0)
改变你的上一次循环。
这
for(i=count;i>0;i++)
printf("%d",arr[i]);
到
for(i=count-1;i>=0;i--)
printf("%d",arr[i]);
放
循环中i=count-1
,因为在while(temp>0){}
的最后一次迭代中,您将值设置为count(lengthOfArray + 1),并且在最后一次for循环中忽略它。并且还放置i>=0
因为您没有打印第0个位置值。还有i--
。