急求C语言编程题答案:将一个字符数组(不多于10个元素)中的元素按逆序重新存放(只能定义一个数组)。 5

例如:原来顺序为ABCDEFG,要求改为GFEDCBA重新存放... 例如:原来顺序为ABCDEFG,要求改为GFEDCBA重新存放 展开
 我来答
创作者hycexCKxpT
游戏玩家

2020-01-31 · 非著名电竞玩家
知道大有可为答主
回答量:1.4万
采纳率:30%
帮助的人:912万
展开全部
首先来分析下你的代码
第一处错误for(;i>j;i--,j--),在这里你的j是赋的初值是0,再--,这不是你想要的吧,细心点。
第二处错误,我们知道用字符数组接收字符串的时候,系统会在最后自动加上空字符'\0'以标志字符串结束,当采用你的程序交换时,没有考虑空字符,会连同空字符一起与前面的字符交换,你的i是从9开始减,而你定义的字符数组是str[10],所以交换后最后一个字符肯定是你输入的第一个字符,而不是一个空字符,当你用puts()输出字符串后,就会出现错误了。
解决:在头文件加上
#include<string.h>
//调用处理字符串的函数的需要
再给i赋初值改为
int
i=strlen(str)-1
//-1原因是数组从str[0]开始的,strlen()
//作用就不用我说了吧
再把for语句中j--改成j++就ok了
也可以用指针来做的,自己试试吧,不过也大同小异
创作者S3JyDOwPEy
2019-10-04 · TA获得超过3万个赞
知道大有可为答主
回答量:1.3万
采纳率:33%
帮助的人:826万
展开全部
直接复制运行
#include
<stdio.h>
#define
N
10
void
main()
{
int
i,j;
char
temp;
char
ch[N];
printf("请输入%d个数值:\n",N);
/*数组赋初值*/
for(i
=
0;i
<
N;
++i)
{
scanf("%d",&ch[i]);
}
printf("\n输入的数组是:\n");
/*输出原数组*/
for(i
=
0;i
<
N;
++i)
{
printf("%d
",ch[i]);
}
printf("\n");
for(i
=
0,j
=
N
-
1;i
<=
j;
++i,
--j)
/*逆转数组元素*/
{
temp=ch[i];
ch[i]=ch[j];
ch[j]=temp;
}
printf("\n逆转后的数组为:\n");
/*输出结果*/
for(j
=
0;j
<
N;
++j)
{
printf("%d
",ch[j]);
}
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者rixGeH14Qt
2019-01-02 · TA获得超过3万个赞
知道小有建树答主
回答量:1.4万
采纳率:31%
帮助的人:1172万
展开全部
利用中间变量temp来前后交换
void
convert(char*
s,int
n)//n为字符个数
{
for
(int
i=0;i<n/2;i++)//n为奇数则正中间的字符不动
{
char
temp=s[i];
s[i]=s[n-1-i];
s[n-1-i]=temp;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tracy8752
2007-05-14 · TA获得超过154个赞
知道答主
回答量:246
采纳率:0%
帮助的人:250万
展开全部
直接复制运行

#include <stdio.h>
#define N 10
void main()
{
int i,j;
char temp;
char ch[N];

printf("请输入%d个数值:\n",N); /*数组赋初值*/
for(i = 0;i < N; ++i)
{
scanf("%d",&ch[i]);
}

printf("\n输入的数组是:\n"); /*输出原数组*/
for(i = 0;i < N; ++i)
{
printf("%d ",ch[i]);
}
printf("\n");

for(i = 0,j = N - 1;i <= j; ++i, --j) /*逆转数组元素*/
{
temp=ch[i];
ch[i]=ch[j];
ch[j]=temp;
}

printf("\n逆转后的数组为:\n"); /*输出结果*/
for(j = 0;j < N; ++j)
{
printf("%d ",ch[j]);
}
printf("\n");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iint168178
2007-05-14 · TA获得超过735个赞
知道小有建树答主
回答量:654
采纳率:0%
帮助的人:941万
展开全部
int main(void)
{
int i,len;
char temp,array[10];
len=0;
i=0;
clrscr();
printf("Input char:\n"); /*输入一个字符串,字符个数小于10*/
scanf("%s",array);
while(array[i++]!='\0') /*判断字符个数*/
len++;
for(i=0;i<len/2;i++) /*逆序存放*/
{temp=array[i];array[i]=array[len-i-1];array[len-i-1]=temp;}
printf("Output converted:\n");
for(i=0;i<len;i++) /*逆序后数组输出*/
printf("%c",array[i]);
getch();
return 0;
}
程序运行结果:
Input char:
ABCDEF
Output converted:
FEDCBA
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式