|

楼主 |
发表于 2020-8-23 10:13:58
|
显示全部楼层
本帖最后由 风过无痕1989 于 2020-8-23 10:15 编辑
我做这个题的目的就是想对数组作为函数的参数作一个总结,下面是我整个的程序:
- // 将数组a中的n个整数按相反顺序存放。
- // 用数组元素作函数的参数
- #if(1)
- #include <stdio.h>
- int main()
- {
- int reversal(int x,int n);
- int i,x,a[10] = {9,8,7,6,5,4,3,2,1,0};
- int extern b[10];
- printf("The original array:\n");
- for(i = 0;i < 10;i++)
- {
- printf("%d ",a[i]);
- }
- printf("\n");
- for (i = 0;i < 10;i++)
- {
- x = a[i];
- reversal(x,i); // 数组元素a[i]作为函数的实参
- }
- printf("The reversal array:\n");
- reversal(x,i);
- }
- int reversal(int x,int i)
- {
- int j,b[10] = {0};
- if (b[0] != 0)
- {
- b[9 - i] = x;
- }
- else
- {
- for (j = 0;j < 10;j++)
- {
- printf("%d ",b[j]);
- }
- printf("\n");
- }
- return 0;
- }
- #endif
- // 用数组名做函数的参数
- #if(0)
- #include <stdio.h>
- int main()
- {
- void reversal(int x[],int n);
- int i,a[10] = {9,8,7,6,5,4,3,2,1,0};
- printf("The original array:\n");
- for(i = 0;i < 10;i++)
- {
- printf("%d ",a[i]);
- }
- printf("\n");
- reversal(a,10); // 数组名 a 作为函数的实参
- printf("The reversal array:\n");
- for(i = 0;i < 10;i++)
- printf("%d ",a[i]);
- printf("\n");
- return 0;
- }
- void reversal(int x[],int n)
- {
- int temp,i,j,m = (n - 1) / 2; // 循环一次掉换两个数组元素,故循环次数需减半,不然掉换好的数组,又被掉回去了
- for(i = 0;i <= m;i++)
- {
- j = n - 1 - i;
- temp = x[i];
- x[i] = x[j];
- x[j] = temp;
- }
- }
- #endif
- // 主程序使用数组名,函数使用指针
- #if(0)
- #include <stdio.h>
- int main()
- {
- void reversal(int *x,int n);
- int i,a[10] = {9,8,7,6,5,4,3,2,1,0};
- printf("The original array:\n");
- for(i = 0;i < 10;i++)
- {
- printf("%d ",a[i]);
- }
- printf("\n");
- reversal(a,10);
- printf("The reversal array:\n");
- for(i = 0;i < 10;i++)
- {
- printf("%d ",a[i]);
- }
- printf("\n");
- return 0;
- }
- void reversal(int *x,int n)
- {
- int *p,temp,*i,*j,m = (n - 1) / 2;
- i = x;
- j = x + n - 1;
- p = x + m;
- for(;i <= p;i++,j--)
- {
- temp = *i;
- *i = *j;
- *j = temp;
- }
- }
- #endif
- // 主程序与函数均使用指针
- #if(0)
- #include <stdio.h>
- int main()
- {
- void reversal(int *x,int n);
- int i,a[10] = {9,8,7,6,5,4,3,2,1,0};
- int *p = a;
- printf("The original array:\n");
- for(i = 0;i < 10;i++)
- {
- printf("%d ",*p++);
- }
- printf("\n");
- p = a;
- reversal(p,10);
- printf("The reversal array:\n");
- for(p = a;p < a + 10;p++)
- printf("%d ",*p);
- printf("\n");
- return 0;
- }
- void reversal(int *x,int n)
- {
- int *p,temp,*i,*j,m = (n - 1) / 2;
- i = x;
- j = x + n - 1;
- p = x + m;
- for(;i <= p;i++,j--)
- {
- temp = *i;
- *i = *j;
- *j = temp;
- }
- }
- #endif
复制代码 |
|