C 反向打印整数数组
以相反顺序打印整数数组是一个相当简单的问题。尽管每次我尝试打印时,它都会显示垃圾值。下面是我的程序C 反向打印整数数组,c,arrays,C,Arrays,以相反顺序打印整数数组是一个相当简单的问题。尽管每次我尝试打印时,它都会显示垃圾值。下面是我的程序 #include <stdio.h> #include <conio.h> int main() { int temp = { '\0' }; int num[9]; int i; int j = 8; printf("Enter 8 numbers\n"); for (i = 0; i < 8; i++) {
#include <stdio.h>
#include <conio.h>
int main()
{
int temp = { '\0' };
int num[9];
int i;
int j = 8;
printf("Enter 8 numbers\n");
for (i = 0; i < 8; i++)
{
scanf_s("%d", &num[i], 1);
}
for (i = 0; i <= j; i++, j--)
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
printf("\nThe numbers in reverse are\n");
for (i = 0; i <=8; i++)
{
printf("%d\n", num[i]);
}
_getch();
return 0;
}
#包括
#包括
int main()
{
int temp={'\0'};
int-num[9];
int i;
int j=8;
printf(“输入8个数字\n”);
对于(i=0;i<8;i++)
{
scanf_s(“%d”,和num[i],1);
}
对于(i=0;i您在这里犯了两个错误:
- 对于8个数字,最高项的索引是7,而不是8。初始化时将
j
设置为7
,以解决此问题
- 从索引0开始迭代8个数字时,如果要反向打印数组中的整数,请使用运算符
,只需从最后一个索引开始,然后一直到顶部
第三个循环应该更像这样:
int j = 7; // an array of size 8 starts at the 0th and ends at the 7th index.
while(j >= 0)
{
printf("%d", num[j]);
j--;
}
你的程序中有几个逻辑上的不一致
您将数组定义为包含9个元素
int num[9];
但只需输入8个元素
for (i = 0; i < 8; i++)
{
scanf_s("%d", &num[i], 1);
}
如果要输入一系列数字
1 2 3 4 5 6 7 8 9
然后输出将如下所示
9 8 7 6 5 4 3 2 1
#include <stdio.h>
#include <conio.h>
#define N 9
int main( void )
{
int num[N];
int n;
int i;
printf( "Enter %d numbers\n", N );
n = 0;
while ( n < N && scanf( "%d", &num[n] ) == 1 ) n++;
for ( i = 0; i < n / 2; i++ )
{
int tmp = num[i];
num[i] = num[n - i - 1];
num[n - i - 1] = tmp;
}
printf( "\nThe numbers in reverse are\n" );
for ( i = 0; i < n; i++ ) printf( "%d ", num[i] );
printf( "\n" );
_getch();
return 0;
}
如果您想交换数组的元素,那么程序可以如下所示
9 8 7 6 5 4 3 2 1
#include <stdio.h>
#include <conio.h>
#define N 9
int main( void )
{
int num[N];
int n;
int i;
printf( "Enter %d numbers\n", N );
n = 0;
while ( n < N && scanf( "%d", &num[n] ) == 1 ) n++;
for ( i = 0; i < n / 2; i++ )
{
int tmp = num[i];
num[i] = num[n - i - 1];
num[n - i - 1] = tmp;
}
printf( "\nThe numbers in reverse are\n" );
for ( i = 0; i < n; i++ ) printf( "%d ", num[i] );
printf( "\n" );
_getch();
return 0;
}
您还可以保持
的循环不变,并更改索引
#define ARRAY_SIZE 8
// print in reverse order
for (i = 0; i < ARRAY_SIZE; i++)
{
printf("%d\n", num[ARRAY_SIZE - i - 1]);
}
#定义数组大小8
//按相反顺序打印
对于(i=0;i
我使用了一个#define
,以便在需要不同数组大小时更容易更改程序:只需在一个位置更改,而不是在当前需要的5个位置更改即可。以7开始j值。因为数组值以0开始-7@Dhananjay看我的答案。:)是的,这对我来说很有意义,使用#define更好
#define ARRAY_SIZE 8
// print in reverse order
for (i = 0; i < ARRAY_SIZE; i++)
{
printf("%d\n", num[ARRAY_SIZE - i - 1]);
}