将数组a 中的整数按相反顺序存放
#include<stdio.h>void main()
{int a[]={4,1,5,9,6};
void inv (int a[],int n);
int i,n;
inv(a,5);
for(i=0;i<5;i++)
{
printf("%d\n",a);
}
}
void inv (int a[],int n)
{
int i,j=n,x;
for(i=0;i<j;i++)
{
for(;;j--)
{
x=a;a=a;a=x;
break;
}
}
}
这个算法哪里有问题啊?语法没问题,算法哪里不对,百思不得其解 你这写的。。这格式一团乱麻啊。。。
for(;;j--)
{
x=a;a=a;a=x;
break;
}
这一句,你确定j--会执行么,进去就直接break了 Croper 发表于 2019-3-14 17:37
你这写的。。这格式一团乱麻啊。。。
这一句,你确定j--会执行么,进去就直接break了
额 ,这个不是无限循环的表示吗 Croper 发表于 2019-3-14 17:37
你这写的。。这格式一团乱麻啊。。。
这一句,你确定j--会执行么,进去就直接break了
那应该怎么改啊
void inv (int a[],int n){
int i,j;
for (i=0,j=n-1;i<j;++i,--j){
int tmp=a;
a=a;
a=tmp;
}
}
本帖最后由 jackz007 于 2019-3-14 21:07 编辑
楼主可以参考一下采用函数递归实现的数组倒序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inv(int a[] , int n , int m)
{
int x ;
x = a ;
if(n > 1) inv(a , n - 1 , m + 1) ;
a = x ;
}
main(void)
{
int i , a[] = {4 , 1 , 5 , 9 , 6} ;
printf("before:\n") ;
for(i = 0 ; i < 5 ; i ++) printf("%d\n" , a) ;
printf("after:\n") ;
inv(a , 5 , 0) ;
for(i = 0 ; i < 5 ; i ++) printf("%d\n" , a) ;
}
页:
[1]