⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 例10.7.txt

📁 C语言课件,清华大学出版的书的配套的.很好用,尽管下载.
💻 TXT
字号:
例10.7将数组a中n个整数按相反顺序存放,见图10.16示意。
解此题的算法为:将a[0]与a[n-1]对换,再将a[1]与a[n-2]对……,直到将图10.16a[(n-1)/2]与a[n-int((n-1)/2)-1]对换。
今用循环处理此问题,设两个“位置指示变量”i和j,i的初值为0,j的初值为n-1。将a[i]与a[j]交换,然后使i的值加1,j的值减1,再将a[i]与a[j]对换,直到i=(n-1)/2为止。
  程序如下:
void inv(int x[ ],int n)/*形参x是数组名*/
   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;}
   return;
   }
  main()
  {int i,a[10]={3,7,9,11,0,6,7,5,4,2};
   printf("The oriGinal array:\n");
   for(i=0;i<10;i++)
   printf("%D,",a[i]);
   printf("\n");
   inv(a,10);
    printf("The array haS Been inverteD:\n");
   for(i=0;i<10;i++)
    printf("%D,",a[i]);
   printf("\n");
   }
  运行情况如下:
The oriGinal array:
      3,7,9,11,0,6,7,5,4,2,
      The array haS Been inverteD:
      2,4,5,7,6,0,11,9,7,3,
主函数中数组名为a,赋以各元素初值。函数inv中的形参数组名为x。在inv函数中不必具体定义数组元素的个数,元素个数由实参传给形参n(今实参值为10)。这样做可以增加函数的灵活性。即不必要求函数inv中的形参数组x和main函数中的实参数组a长度相同。如果在main函数中有函数调用语句:inv(a,10),表示要求对a数组的前10个元素实行题目要求的颠倒排列。如果改为:inv(a,5),则表示要求将a数组的前5个元素实行颠倒排列,此时,函数inv只处理5个数组元素。函数inv中的m是i值的上限,当i≤m时,循环继续执行;当i>m时,则结束循环过程。
例如,若n=10,则m=4,最后一次a[i]与a[j]的交换是a[4]与a[5]交换。
  对这个程序可以作一些改动。将函数inv中的形参x改成指针变量。实参为数组名a,即数组a的首地址,将它传给形参指针变量x,这时x就指向a[0]。x+m是a[m]元素的地址。设i和j以及p都是指针变量,用它们指向有关元素。i的初值为x,j的初值为x+n-1,见图10.17。使*i与*j交换就是使a[i]与a[j]交换。



程序如下:
void inv(int*x,int n)/*形参x为指针变量*/
  {
   int

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -