C语言 接受一个号码并打印其备用数字,

qltillow  于 2022-12-11  发布在  其他
关注(0)|答案(5)|浏览(136)
int Rearrange(int a)
{
    long int b,j,i=0,num=0,count=0,arr[100];
    while(a>0)
    {
        b=a%10;a=a/10;
        arr[i]=b;
        i++;
        count ++;
    }
    j=count;
    for(i=0;i<=count/2;i++)
    {
        t=arr[i]; 
        arr[i]=arr[count-i-1];
        arr[count-i-1]=t;
        count--;
    }
    for(i=0;i<j;i+=2)
    {
        num=num*10 + arr[i]%10;
    }
    return num;
}

我想在c rearrange中写一个函数,它打印给定数字的备用数字。
例如:

input:- 12345
output:- 135

谢谢你

xmq68pz9

xmq68pz91#

为什么要把一个简单的问题复杂化?
如果您不介意其他方法,请检查以下代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int input = 0;
    int len = 0;
    int i = 0;
    char sinput[64] = {0, };

    printf("Enter the number :");
    scanf("%d", &input);
    sprintf(sinput, "%d", input);
    len = strlen(sinput);

    printf("Output : ");
    for (i = 0; i < len; i+=2)
    {
        printf("%c\t", sinput[i]);
    }
    printf("\n");
    return 0;
}

样品输入/输出:

[sourav@braodsword temp]$ ./a.out 
Enter the number :123456
Output : 1  3   5   
[sourav@braodsword temp]$
xghobddn

xghobddn2#

您的for循环错误。请将其更改为:

for(i=0;i<=count/2;i++)
{
    int t=arr[i]; 
    arr[i]=arr[j]; /* Use j */
    arr[j]=t; /* Use j */
    /* count--;  Dont decrement */
    j--;
}
for(i=0;i<count;i+=2) /* Should be count */
{
    num=num*10 + arr[i]%10;
}

Demo
可以有很多替代的方法来解决,但我只想向你展示如何正确地实施思维过程中的方法。

3zwtqj6y

3zwtqj6y3#

在你的代码中,第一个for循环有问题。请检查下面的代码。

int Rearrange(int a)
{
    long int b = 0, j = 0, i = 0, num = 0, count = 0, arr[100];

    while (a > 0)
    {
        b = a % 10; a = a/10;
        arr[i] = b;
        i++;
        count++;
    }
    j = count;
    for (i = 0; i < count/2; i++) // Condition is problematic
    {
        long int t = arr[i]; 
        arr[i] = arr[count-i-1];
        arr[count - i - 1] = t;
        // count--; // this is problamatic.
    }
    for (i = 0; i < j; i += 2)
    {
        num = num * 10 + arr[i] % 10;
    }
    return num;
}
lb3vh1jj

lb3vh1jj4#

#include<stdio.h>
            int main()
            {
                int n,arr[40];
                scanf("%d",&n);
                printf("%d",n);
                int s=0,i=0;
                while(n!=0)
                {
                    arr[i]=n%10;
                    printf("%d",arr[i]);
                    n=n/10;
                    i++;
                }
                for(int j=i-1;j>=0;j-=2)
                {
                    s =s*10+arr[j];
                }
                printf("\n%d",s);
                return 0;
            }
8mmmxcuj

8mmmxcuj5#

int alternatedigits(int n)
{
    int a[10],i=0,count=0,sum=0;
    while(n!=0)
    {
        a[i]=n%10;
        i++;
        count++;
        n=n/10;
    }
    for(int i=count;i>=0;i++)
    {
        if(i%2==0)
        {
            sum=sum*10+a[i];
        }
    }
    return sum;
}

相关问题