求 一道c语言题目
求高手指点 一道c语言题目
#include <stdio.h>
void fun(int a, int b)
{ int t;
t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2) fun(c[i],c[i+1]);
for(i=0;i<10;i++) printf("%d,",c[i]);
printf("\n");
}
答案是:1,2,3,4,5,6,7,8,9,0, 为什么不是2,1,4,3,6,5,8,7,0,9 求解惑?
------解决方案--------------------
#include <stdio.h>
void fun(int a, int b)
{ int t;
t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2) fun(c[i],c[i+1]);
for(i=0;i<10;i++) printf("%d,",c[i]);
printf("\n");
}
答案是:1,2,3,4,5,6,7,8,9,0, 为什么不是2,1,4,3,6,5,8,7,0,9 求解惑?
------解决方案--------------------
- C/C++ code
#include <stdio.h> void fun(int a, int b)//副本传值 { int t; t=a; a=b; b=t; } void fun1( int *a, int *b )//指针传值 { int t; t = *a; *a = *b; *b = t; } void fun2( int &a, int &b )//引用传值 { int t; t = a; a = b; b = t; } int main() { int c[10]={1,2,3,4,5,6,7,8,9,0},i; for(i=0;i<10;i+=2) fun(c[i],c[i+1]); for(i=0;i<10;i++) printf("%d,",c[i]); printf("\n"); int c1[10]={1,2,3,4,5,6,7,8,9,0}; for(i=0;i<10;i+=2) fun1(&c1[i],&c1[i+1]); for(i=0;i<10;i++) printf("%d,",c1[i]); printf("\n"); int c2[10]={1,2,3,4,5,6,7,8,9,0}; for(i=0;i<10;i+=2) fun2(c2[i],c2[i+1]); for(i=0;i<10;i++) printf("%d,",c2[i]); printf("\n"); return 0; }