交换数
/*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交换.....输出交换后的值 数组内数据交换需要用一个其他变量作为中间量,你不能直接在数组的连个数之间来回复制,这样原数据就被覆盖掉了。例如: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;
} sunrise085 发表于 2020-3-23 14:15
数组内数据交换需要用一个其他变量作为中间量,你不能直接在数组的连个数之间来回复制,这样原数据就被覆盖 ...
好的,我编译后:
请输入十个数:1 2 3 4 5 6 7 8 9 10
交换后的数:1987654326
是不是哪里出现了问题 一只程序猫 发表于 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);看看是不是交换成功了 sunrise085 发表于 2020-3-23 14:53
啊哦,刚刚发现,你的程序定义数组的时候了。定义含有十个元素的数组,为什么是num?应该是num.
...
它不能首尾互换吗?
一只程序猫 发表于 2020-3-23 15:15
它不能首尾互换吗?
定义的是num,最大下标是8,索引num是找不到的。所以就出错了。 sunrise085 发表于 2020-3-23 15:26
定义的是num,最大下标是8,索引num是找不到的。所以就出错了。
懂了,我搞错了
页:
[1]