一只程序猫 发表于 2020-3-23 14:03:03

交换数

/*
2020年3月23日12:50:36
目的: 做题
题目: 输入10个数存放于数组num中,然后将num于num交换num与num交换.....输出交换后的值
问题分析:

用scanf函数 输入,并存放在数组中
再交换 :
int i,j=9,t=0;
for (i=0;i<10;i++)
{
        num=num;
        num=num;
        num=num;
        j--;
}
*/
#include <stdio.h>

int main (void)
{
        int num;//定义数组含十个元素
        int i,j=9,t=0;//控制循环
        printf("请输入十个数:");
       
        for (i=0;i<10;i++)
        {
                scanf("%d",&num);
        }
        for(i=0;i<10;i++)
        {
                num=num;
                num=num;
                num=num;
                --j;
        }
       
        printf("交换后的数:");
        for(i=0;i<10;i++)
        {
                printf("%d",num);
        }
        return 0;
}

        for(i=0;i<10;i++)
        {
                num=num;
                num=num;
                num=num;
                --j;
        }

应该是这里写错了。

输入10个数存放于数组num中,然后将num于num交换num与num交换.....输出交换后的值

sunrise085 发表于 2020-3-23 14:15:34

数组内数据交换需要用一个其他变量作为中间量,你不能直接在数组的连个数之间来回复制,这样原数据就被覆盖掉了。例如:num=12,num=44,你的程序执行完第一句num=num之后,num和num都编程44了,原来的12消失了。

还有一点,首尾交换,循环不需要0~9,你这样的话,num和num交换,到后面在进行num和num交换,会交换两遍,又换回来了。
#include <stdio.h>
int main (void)
{
      int num;//定义数组含十个元素
      int i,j=9,t=0;//控制循环
      printf("请输入十个数:");
      
      for (i=0;i<10;i++)
      {
                scanf("%d",&num);
      }
      for(i=0;i<10/2;i++)
      {
                t=num;
                num=num;
                num=t;
                --j;
      }
      
      printf("交换后的数:");
      for(i=0;i<10;i++)
      {
                printf("%d",num);
      }
      return 0;
}

一只程序猫 发表于 2020-3-23 14:24:14

sunrise085 发表于 2020-3-23 14:15
数组内数据交换需要用一个其他变量作为中间量,你不能直接在数组的连个数之间来回复制,这样原数据就被覆盖 ...

好的,我编译后:
请输入十个数:1 2 3 4 5 6 7 8 9 10
交换后的数:1987654326

是不是哪里出现了问题

sunrise085 发表于 2020-3-23 14:53:06

一只程序猫 发表于 2020-3-23 14:24
好的,我编译后:
请输入十个数:1 2 3 4 5 6 7 8 9 10
交换后的数:1987654326


啊哦,刚刚发现,你的程序定义数组的时候了。定义含有十个元素的数组,为什么是num?应该是num.
若是还有问题的话,你可以在第二个for循环中添加一句printf("%d%d\n",num,t);看看是不是交换成功了

一只程序猫 发表于 2020-3-23 15:15:11

sunrise085 发表于 2020-3-23 14:53
啊哦,刚刚发现,你的程序定义数组的时候了。定义含有十个元素的数组,为什么是num?应该是num.
...

它不能首尾互换吗?

sunrise085 发表于 2020-3-23 15:26:45

一只程序猫 发表于 2020-3-23 15:15
它不能首尾互换吗?

定义的是num,最大下标是8,索引num是找不到的。所以就出错了。

一只程序猫 发表于 2020-3-23 15:32:57

sunrise085 发表于 2020-3-23 15:26
定义的是num,最大下标是8,索引num是找不到的。所以就出错了。

懂了,我搞错了
页: [1]
查看完整版本: 交换数