|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /*
- 2020年3月23日12:50:36
- 目的: 做题
- 题目: 输入10个数存放于数组num中,然后将num[0]于num[9]交换num[1]与num[8]交换.....输出交换后的值
- 问题分析:
- 用scanf函数 输入,并存放在数组中
- 再交换 :
- int i,j=9,t=0;
- for (i=0;i<10;i++)
- {
- num[t]=num[j];
- num[i]=num[t];
- num[j]=num[i];
- j--;
- }
- */
- #include <stdio.h>
- int main (void)
- {
- int num[9];//定义数组含十个元素
- int i,j=9,t=0;//控制循环
- printf("请输入十个数:");
-
- for (i=0;i<10;i++)
- {
- scanf("%d",&num[i]);
- }
- for(i=0;i<10;i++)
- {
- num[t]=num[j];
- num[j]=num[i];
- num[i]=num[t];
- --j;
- }
-
- printf("交换后的数:");
- for(i=0;i<10;i++)
- {
- printf("%d ",num[i]);
- }
- return 0;
- }
复制代码
for(i=0;i<10;i++)
{
num[t]=num[j];
num[j]=num[i];
num[i]=num[t];
--j;
}
应该是这里写错了。
输入10个数存放于数组num中,然后将num[0]于num[9]交换num[1]与num[8]交换.....输出交换后的值
数组内数据交换需要用一个其他变量作为中间量,你不能直接在数组的连个数之间来回复制,这样原数据就被覆盖掉了。例如:num[0]=12,num[9]=44,你的程序执行完第一句num[t]=num[j]之后,num[0]和num[9]都编程44了,原来的12消失了。
还有一点,首尾交换,循环不需要0~9,你这样的话,num[0]和num[9]交换,到后面在进行num[9]和num[0]交换,会交换两遍,又换回来了。
- #include <stdio.h>
- int main (void)
- {
- int num[9];//定义数组含十个元素
- int i,j=9,t=0;//控制循环
- printf("请输入十个数:");
-
- for (i=0;i<10;i++)
- {
- scanf("%d",&num[i]);
- }
- for(i=0;i<10/2;i++)
- {
- t=num[j];
- num[j]=num[i];
- num[i]=t;
- --j;
- }
-
- printf("交换后的数:");
- for(i=0;i<10;i++)
- {
- printf("%d ",num[i]);
- }
- return 0;
- }
复制代码
|
|