问题描述
- C 复制数组的一点小问题 复制后输出结果和源数组不一样
-
#include <stdio.h>int i=5;void input_array ( int array[] ){ int a; for ( a=0; a<i; a++ ){ scanf ( ""%i"" &array[a] ); }}void output_array ( int array[] ){ int a; for ( a=0; a<i; a++ ){ printf ( ""%i%s"" array[a]t"" ); }}void copy_array ( int source[] int output[] ){ int a; for ( a=0; a<i; a++ ){ output[i]=source[i]; }}int main(){ int array[i]; int copy_form_array [i]; printf (""%s%i%s""Pleast enter some numbers ( "" i integers limited ): n""); input_array ( array ); output_array ( array ); printf ( ""%s""n"" ); copy_array ( array copy_form_array ); output_array ( copy_form_array ); printf (""%s""n""); return 0;}
在做一个复制数组的练习的时候写了这些代码
编译时没有提示
运行结果如下$ ./20141210_am_copy_array Pleast enter some numbers ( 5 integers limited ): 1 2 3 4 51 2 3 4 5 1594599648 32767 1617756790 32767 1594599680
为什么数组复制后跟源数组不一样??
初学者表示百思不得其解额 :(
解决方案
void copy_array ( int source[] int output[] ){ int a; for ( a=0; a<i; a++ ){ output[i]=source[i]; }}
代换output[i]=source[i]; output[a]=source[a];
解决方案二:
晕这里你怎么写了i
for ( a=0; a<i; a++ ){
output[a]=source[a];
}
解决方案三:
scanf ( ""%d"" &array[a] );
解决方案四:
首先我必须说你写的代码太乱,你也太粗心啦!
看看我给你的代码!
#include <stdio.h>static int i=5;void input_array(int array[]){ int a; for(a=0;a<i;++a){ scanf(""%d""&array[a]); } return ;}void output_array(int array[]){ int a; for(a=0;a<i;++a){ printf(""%dt""array[a]); } printf(""n---end--output---n""); return ;}void copy_array(int source[]int output[]){ int a; for(a=0;a<i;++a){ output[a]=source[a]; }}int main(void){ int array[i]; int copy_from_array[i]; printf(""Please enter %d numbern""i); input_array(array); output_array(array); puts(""----After copy----""); copy_array(arraycopy_from_array); output_array(copy_from_array); return 0;}
希望对你有帮助!
时间: 2024-09-27 16:37:10