如何把一组数反转?用c语言定义一个数组,这组数据从键盘中获取。
答案:3 悬赏:60 手机版
解决时间 2021-02-23 20:19
- 提问者网友:山高云阔
- 2021-02-23 02:06
如何把一组数反转?用c语言定义一个数组,这组数据从键盘中获取。
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-02-23 02:45
1 输入数组。
2 遍历数组前半部分,将每个元素,与后半部分对称位置交换值。
3 输出结果。
代码:
int main()
{
int a[10];
int i;
for(i = 0; i < 10; i ++)
scanf("%d",a+i);
for(i = 0; i < 5; i ++)
{
int t = a[i];
a[i] = a[9-i];
a[9-i] = t;
}
for(i = 0; i < 10; i ++)
printf("%d ",a[i]);
}
2 遍历数组前半部分,将每个元素,与后半部分对称位置交换值。
3 输出结果。
代码:
int main()
{
int a[10];
int i;
for(i = 0; i < 10; i ++)
scanf("%d",a+i);
for(i = 0; i < 5; i ++)
{
int t = a[i];
a[i] = a[9-i];
a[9-i] = t;
}
for(i = 0; i < 10; i ++)
printf("%d ",a[i]);
}
全部回答
- 1楼网友:不如潦草
- 2021-02-23 03:55
for循环,从最大一直做自减运算不就好了。追问但是在屏幕上只打印了一个数追答
#include "stdio.h"
int main()
{
float a[10]={0};
int i;
printf("请输入10个数: ");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
printf("反转后输出: ");
for(i=9;i>=0;i--)
printf("%0.0f ",a[i]);
printf(" ");
}
追问
为什么只输出了一个数?追答楼主 你把数组定义成浮点型的,printf输出那里也是弄成浮点型的 用 %0.0f 这个格式;问题就解决了,但是为什么是这样,我也说不清楚,前段时间我做个矩阵的LU分解时发现的。我这样做就行得通了,作业也交了,但是原因真不知道。
#include "stdio.h"
int main()
{
float a[10]={0};
int i;
printf("请输入10个数: ");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
printf("反转后输出: ");
for(i=9;i>=0;i--)
printf("%0.0f ",a[i]);
printf(" ");
}
追问
为什么只输出了一个数?追答楼主 你把数组定义成浮点型的,printf输出那里也是弄成浮点型的 用 %0.0f 这个格式;问题就解决了,但是为什么是这样,我也说不清楚,前段时间我做个矩阵的LU分解时发现的。我这样做就行得通了,作业也交了,但是原因真不知道。
- 2楼网友:低血压的长颈鹿
- 2021-02-23 03:15
#include "stdio.h"
int main()
{
int a[10]={0};
int i,tmp;
printf("请输入10个数: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
//第一个数跟最后一个数交换,第二个与倒数第二个交换,
//直到数组中间的元素,那么。数组元素肯定就全反转了
for(i=0;i<10/2;i++)
{
tmp=a[i];
a[i]=a[9-i];
a[9-i]=tmp;
}
printf("反转后输出: ");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf(" ");
}
原来存的是1到10
反转后存的是10到1
目的达到。追问还有其他办法么?追答这是最有效的方法,还有个方法就是
再用一个数组,倒序存原来的数组的值,再存回来。这样的话,时间就浪费了。追问可以把控制输出的循环变量递减呀
这个我不知道为什么只打印了一个数?
int main()
{
int a[10]={0};
int i,tmp;
printf("请输入10个数: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
//第一个数跟最后一个数交换,第二个与倒数第二个交换,
//直到数组中间的元素,那么。数组元素肯定就全反转了
for(i=0;i<10/2;i++)
{
tmp=a[i];
a[i]=a[9-i];
a[9-i]=tmp;
}
printf("反转后输出: ");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf(" ");
}
原来存的是1到10
反转后存的是10到1
目的达到。追问还有其他办法么?追答这是最有效的方法,还有个方法就是
再用一个数组,倒序存原来的数组的值,再存回来。这样的话,时间就浪费了。追问可以把控制输出的循环变量递减呀
这个我不知道为什么只打印了一个数?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯