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
谢谢
答案 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;
}
可以有许多其他方法可以解决,但我只想告诉您如何正确实施思维过程中的方法。
答案 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;
}