为什么我定义的反向函数不能正常执行?
Why doesn't the reverse function I defined execute properly?
为什么 renverser
函数(反向)没有完成工作,为什么程序在初始化 table 后立即退出?
#include <stdio.h>
#include <stdlib.h>
void renverser(int t[])
{ int j,i,n;
for(i=0,j=n-1;i<j;i++,j--)
{
int a=t[i];
t[i]=t[j];
t[i]=a;
}
for (i=0;i<n;i++)
{
printf("%d",t[i]);
}
}
int main()
{ int i,n;
float t[100];
printf("donner le taille du tableau a renverser \n :");
scanf("%d",&n);
for (i=0;i<n;i++)
{ printf("donner l'element %d: \n",i);
scanf("%d",&t[i]);
}
renverser(t);
return 0;
}
该函数没有意义,因为传递的数组的大小未知。
此外,该函数具有未定义的行为,因为使用了未初始化的变量 n
。
并且函数参数的类型是 int *
而传递的参数表达式的类型是 float *
.
你的意思好像是下面的数组声明
int t[100];
并且该函数应该只做一件事:反转数组。
你应该在 main 中输出的结果数组。
函数可以通过以下方式声明和定义
void renverser( int t[], size_t n )
{
for ( size_t i = 0; i < n / 2; i++ )
{
int tmp = t[i];
t[i] = t[n - i - 1];
t[n - i - 1] = tmp;
}
}
函数可以像
那样调用
renverser( t, n );
为什么 renverser
函数(反向)没有完成工作,为什么程序在初始化 table 后立即退出?
#include <stdio.h>
#include <stdlib.h>
void renverser(int t[])
{ int j,i,n;
for(i=0,j=n-1;i<j;i++,j--)
{
int a=t[i];
t[i]=t[j];
t[i]=a;
}
for (i=0;i<n;i++)
{
printf("%d",t[i]);
}
}
int main()
{ int i,n;
float t[100];
printf("donner le taille du tableau a renverser \n :");
scanf("%d",&n);
for (i=0;i<n;i++)
{ printf("donner l'element %d: \n",i);
scanf("%d",&t[i]);
}
renverser(t);
return 0;
}
该函数没有意义,因为传递的数组的大小未知。
此外,该函数具有未定义的行为,因为使用了未初始化的变量 n
。
并且函数参数的类型是 int *
而传递的参数表达式的类型是 float *
.
你的意思好像是下面的数组声明
int t[100];
并且该函数应该只做一件事:反转数组。
你应该在 main 中输出的结果数组。
函数可以通过以下方式声明和定义
void renverser( int t[], size_t n )
{
for ( size_t i = 0; i < n / 2; i++ )
{
int tmp = t[i];
t[i] = t[n - i - 1];
t[n - i - 1] = tmp;
}
}
函数可以像
那样调用renverser( t, n );