为什么char类型不能运行啊


#includeusing namespace std; int a,b,c; char a[27]={"q","w","a","h","e","l","o"}; int main(){ while(a < 0){ scanf("%d",&b[a]); a++; } while(c <10){ printf("%c",a[b[c]]); c++; } return 0; }


该回答引用GPTᴼᴾᴱᴺᴬᴵ
在您的程序中,有两个变量都使用了标识符"a"。一个是int类型的变量a,另一个是char类型的字符数组a。这样会导致编译器无法区分它们,进而报错。

此外,char类型是表示单个字符的数据类型,而您在声明字符数组时,将每个元素都赋值为一个字符串。应该使用单引号来表示单个字符,而不是双引号来表示字符串。例如:

char a[7]={'q','w','a','h','e','l','o'};


另外,在while循环中,a是一个指针,而不是一个整数。因此,将a与0进行比较是不正确的。如果您希望循环从0开始,应该使用一个整数变量来计数,例如:

int i = 0;
while(i < 7){
    scanf("%d",&b[i]);
    i++;
}


最后,当您使用a[b[c]]时,您将b[c]作为索引,访问a数组中的元素。然而,在您的程序中,b数组的元素是int类型,而a数组的元素是char类型。因此,您应该将b[c]转换为char类型,如下所示:

printf("%c",a[static_cast<char>(b[c])]);


修复上述问题后,您的程序应该是这样的:

#include <bits/stdc++.h> 
using namespace std; 

int b[7];
char a[7] = {'q','w','a','h','e','l','o'}; 

int main(){ 
    int i = 0;
    while(i < 7){
        scanf("%d",&b[i]);
        i++;
    } 

    int c = 0;
    while(c < 7){
        printf("%c",a[static_cast<char>(b[c])]);
        c++;
    } 

    return 0; 
}


请注意,我还修复了程序中的其他小错误。

char类型的数组参数名与前面定义的整形参数名a重名了!改个其他的名称!

代码写到一行了,也没有错误的提示信息,因此不好判断。