注册 登录
编程论坛 C语言论坛

请问为什么我的代码输入单个数结果正确,利用for循环输入从a到b个运行不出来

Emmaer123 发布于 2019-11-16 16:21, 1427 次点击
题目:输入两个数a、b,要求变换从a到b内每个数字,输出变换结果,如:1234在a和b中间,变换成1  234        12  34         123  4
只有本站会员才能查看附件,请 登录


#include <stdio.h>
int j,i,n,n2,k,sum1=0,sum2=0,sum,mark1,mark2,a[100]={0},b[100]={0},c[100]={0};
int weishu(int n)
    {
        n2=n;
        for(int j=1;n2>0;j++)
        {
            n2/=10;
            sum=j;
         }
         for(int i=sum;i>=1;i--)        {    a[i]=n%10;n/=10; }
        return sum;
   }
int fenzu(int n)
    {
        
        weishu(n);
        for(int i=2;i<=weishu(n);i++)
        {
            
            int sum1=0,sum2=0;
            for(int j=1;j<i;j++)
            {
                sum1*=10;sum1+=a[j];mark1=j;
            }
            for(int t=1;t<=mark1;t++) b[t]=0;
            for(k=i;k<=weishu(n);k++)
            {
                sum2*=10;sum2+=a[k];mark2=k;
            }
            for(int q=1;q<=mark2;q++) c[q]=0;
            printf("%d  %d\n",sum1,sum2);  //if(sum1==sum2)   printf("%d\n",n);
        }
    }
int main()
{
    int a;
    scanf("%d",a);      //这个代码运行结果正确,但是如果把这两行代码换成    scanf("%d %d",a,b); for(int i=a;i<=b;i++)   fenzu(i); 就运行不出来,请教大神这是为什么呢?
    fenzu(a);          //这个代码运行结果正确
    return 0;
}


[此贴子已经被作者于2019-11-16 16:25编辑过]

2 回复
#2
纯蓝之刃2019-11-16 20:56
没看太明白你想要的输出什么东西,不过
scanf("%d",a);
应该为scanf("%d",&a);
程序代码:
for(int j=1;n2>0;j++)
    {
        n2/=10;
        sum=j;
    }

里面应该
程序代码:
for(int j=1;n2>0;j++)
    {
        n2/=10;        
    }
    sum=j;
在得到j的之后附一次值就可以了。
程序代码:
int fenzu(int n)
{
    int sum;
    sum=weishu(n);
    for(int i=2;i<=sum;i++)
    {
        ......
    }
}
fenzu函数前面应该这样,你那样是每次循环都需要计算weishu(n),没有必要。
#3
Emmaer1232019-11-17 21:13
回复 2楼 纯蓝之刃
谢谢大神花时间指正,多谢您指点迷津
1