如何在C编程中从左到右反转整数数组?
#include <math.h>
#include <stdio.h>
int main() {
int k[4] = {1,2,3,4};
N=4;
for(k=1; k<=N; k=k+1);
printf("%d",flip(k));
}
实施例: k = [1,2,3,4]翻转应该给k = [4,3,2,1] k是一个数字数组
答案 0 :(得分:2)
将N
声明为int
(而不需要k
)。在循环中将余数打印10,每次递减N = N/ 10
,请尝试以下代码:
for(; N; N = N/10)
printf(" %d", N % 10);
循环运行直到N!= 0.
它不会反转数字,而只是反向打印。
答案 1 :(得分:2)
为什么不只是谷歌这么简单的问题......!
#include <stdio.h>
int main()
{
int n, reverse = 0;
printf("Enter a number to reverse\n");
scanf("%d",&n);
while (n != 0)
{
reverse = reverse * 10;
reverse = reverse + n % 10;
n = n / 10;
}
printf("Reverse of entered number is = %d\n", reverse);
return 0;
}
输出:
root@jeegar:~# gcc test.c
root@jeegar:~# ./a.out
Enter a number to reverse
1234
Reverse of entered number is = 4321
答案 2 :(得分:2)
你问的代码:
#include <stdio.h>
int main() {
int k = 0;
int n = 1234;
while (n != 0)
{
k *= 10;
k += n % 10;
n /= 10;
}
printf("%d", k);
return 0;
}
从这里可以很容易地将其更改为一个功能。请注意,对于“接近”int的最大值的数字,它将无法正常工作。
代码的意思:http://ideone.com/IIK0cc
答案 3 :(得分:2)
修改即可。刚刚看到你的修订版说明问题是要反转一个int
数组,而不只是一个数字。好吧,伙计。这更容易。由于这是C,你应该使用指针。其他任何东西都不是C.: - )
#include <stdio.h>
void reverse (int ary[], int size);
int main (void) {
int ary[] = { 1, 2, 3, 4 };
int size = sizeof (ary) / sizeof (ary[0]);
reverse (ary, size);
for (int i = 0; i < size; i++)
printf ("%d ", ary[i]);
printf ("\n");
return 0;
}
void reverse (int ary[], int size) {
int* startPtr;
int* endPtr;
int temp;
startPtr = ary;
endPtr = ary + size - 1;
while (endPtr > startPtr) {
temp = *startPtr;
*startPtr = *endPtr;
*endPtr = temp;
startPtr++;
endPtr--;
}
return;
}
输出:
4 3 2 1
答案 4 :(得分:1)
首先,你的问题是模糊和矛盾的。例如,k
是一个整数,正如您在问题中包含的代码所示,或者k
是一个整数数组,正如您对“向量”所说的那样?此外,您想要反转整数还是要反转数组?这是两个非常不同的问题。为了将来参考,如果你想得到一个好的答案,你应该提出一个好问题;并且显示你的一些工作也不会受到伤害。
无论如何,除了dia骂,这里是反转数组的代码。没有错误检查,所以如果你用错误的方式调用它...好吧,你是独自一人:
void flip(int *array, // the array to reverse
int count) // the number of elements in the array
{
int i = 0, tmp;
while(i != count / 2)
{
tmp = array[i];
array[i] = array[count - i - 1];
array[count - i - 1] = tmp;
i++;
}
}
有关如何使用此功能的示例,请查看this sample program I rigged up。
答案 5 :(得分:0)
试试这个:
int flip(int k) {
int new = 0;
while (k > 0) {
// Take the last digit and add it to the front of new
new = (new * 10) + k % 10;
// Divide by ten to drop the last digit of k
k = k / 10;
}
return new;
}
答案 6 :(得分:0)
在这种情况下,假设source
是您当前的数组,SIZE
是一个常量,其大小为source
,而destination
是您的目标数组,你可以用这个:
for (is = SIZE - 1, id = 0; is >= 0; is--, id++) {
destination[id] = source[is];
}
如果您要替换source
的内容......
如果您要替换source
而不是反向重复,请执行此操作,然后将destination
分配给source
:
for (counter = 0; counter < SIZE; counter++) {
destination[counter] = source[counter];
}