接受一个数字并打印其备用数字,

时间:2014-11-20 12:23:01

标签: c

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

谢谢

4 个答案:

答案 0 :(得分:1)

为什么会使一个简单的问题复杂化?

如果您不介意其他方法,请查看以下代码。

#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;
}

示例i / o:

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

答案 1 :(得分:0)

您的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

可以有许多其他方法可以解决,但我只想告诉您如何正确实施思维过程中的方法。

答案 2 :(得分:0)

在你的代码问题是第一个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;
}

答案 3 :(得分:0)

            #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;
            }