定义一个数组char str[12]={'a','b','c','d','e','f'};将数组中的元素逆序保存到数组s并逆序输出?

如题所述

#include <stdio.h>

int main()

{ char str[12]={'a','b','c','d','e','f'},s[12]={0};

  int i,j;

  for(i=0; str[i]; i++);

  for(j=0;i>0;)s[--i]=str[j++];

  puts(s);

  return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-06-04
你这边的问题不是很清楚,因为定义一个数组,仅对部分元素进行初始化赋值的话,没有进行初始化赋值的元素会自动赋值为0,所以不知道你问题中逆序输出的话包不包括ASCLL码中0对应的空字符
我这边两种都写了
当#if 1 时,逆序输出的话包括ASCLL码中0对应的空字符
当#if 0 时,逆序输出的话忽略ASCLL码中0对应的空字符
#include <stdio.h>

#define NUM 12

char str[NUM] = { 'a','b','c','d','e','f' };

#if 1 // 0 或 1
int main(void)
{
char s[NUM];
int i;

for (i = 0; i < NUM; i++)
{
s[i] = str[NUM - 1 - i];
}

for (i = 0; i < NUM; i++)
{
printf("%c\t", s[i]);
}

printf("\n");

return 0;
}

#else
int main(void)
{
char s[NUM] = {0};
int i = 0,j;

for (j = NUM; j > 0; j--)
{
if (str[j - 1]) //忽略0
{
s[i] = str[j - 1];
i++;
}
}

for (i = 0; i < NUM; i++)
{
if(s[i]) //忽略0
printf("%c\t", s[i]);
}

printf("\n");

return 0;
}

#endif