c - 我的输出的第一个元素是错误的,我想编写一个将数组作为输入并将其反转的 C 函数
问题描述
我想编写一个将数组作为输入并将其反转但输出的第一个元素错误的 C 函数,因此我想了解对此问题输出的分析。例如,如果我输入[34 3 2 1 12 ]
输出是[32766 12 1 2 3 ]
#include <stdio.h>
void reverse_array(int arr[],int n);
#define size 5
int main()
{
int i=0;
int arr[size];
//scan array from user
printf("please enter elements of array:\n");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
//call fun
printf("the reverse array is :");
reverse_array(arr,size);
}
//define function
void reverse_array(int arr[], int n)
{
int i=n;
for(i<=n;i>0;i--)
{
printf("%d\t",arr[i]);
}
}
解决方案
这个循环
for(i<=n;i>0;i--)
{
printf("%d\t",arr[i]);
}
是不正确的。第一个打印的元素超出了数组的范围,因此调用了未定义的行为,在你的情况下它是 prints 32766
,在我的情况下它是 prints 0
。
尝试:
while(i-- > 0)
{
printf("%d\t", arr[i]);
}
请注意,您只是反向打印它,如果这是您需要的,那很好,如果您需要保存它,您需要做更多的工作。
推荐阅读
- python - 我必须将包含 1010 个文件夹的文件夹与 XML、JSON、文本文件的混合文件转换为 .CSV
- angular - 使用 Angular 12 和 Firebase v9 的 Firebase 云消息传递
- ssl - tls 握手在 websockets 中多久发生一次?
- laravel-8 - 如何从我的 laravel 8 项目中删除 Jetstream?
- android - 撰写:填充父项且所有子项具有相同宽度的列
- python - 广义关联勒让德多项式
- php - Wordpress 网站损坏,编辑器无法正常工作或根本无法正常工作
- php - PHP preg_replace() 说明
- css - 如何更改 Woocommerce 中价格的 Z-index?
- ios - ios chrome 出现错误 getUserMedia 未在此浏览器中实现?