第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