C语言问题,但输出时按照实际个数输出。例如:输入“Ab%7HPm5#sD” ,输出结果为:“AHmD

输入一串字符存放到数组a中(长度可以为20个),将其下标为偶数,数组元素为字母的存放到另一个数组b中,最后反序输出数组b的内容。b数组的长度可以定义为20个,但输出时按照实际个数输出。例如:输入“Ab%7HPm5#sD” ,输出结果为:“AHmD

一个实现,供参考:


#include  <stdio.h>

int main(void){
    
    char a[21]={'\0'};  // 初始化字符数组a,让里面没有其他字符 
//    printf("请输入一个字符串,长度20以内:"); 
    gets(a);
    
    char b[10]={'\0'};   // 初始化字符数组b,让里面没有其他字符 
    int i=0;  //访问数组a下标变量 
    int num=0;  //访问数组b 下标变量 
    while(i<21){  //循环遍历数组a,直到访问完数组a所有偶数下标元素你 
        
        //如果偶数下标位元素是字母,则把这个字母存入数组b 
        if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')){
            b[num] =a[i];
            num++;  //指向数组b下一个元素 
        }
        
        i+=2; //下标i从0开始,每次+2,即可访问数组a的偶数下标元素 
    }
    
    //如题例子,按这个打印数组b 
    for(i=0;i<num;i++){
        printf("%c",b[i]);
    }
    
    //如果按字面理解,反序打印数组b,用这个打印数组b 
//    for(i=num-1;i>=0;i--){
//        printf("%c",b[i]);
//    }
    
    
    return 0;
} 

img