有几个错误:main的返回类型不应是void,main函数应声明为 int main(void),注:C++中可以省略括号中的void你前面将 b 声明为char数组,但是后面又将 b 重定义为int,这将会编译失败。你定义了一个二维数组x,是打算在其中存入多个字符串吗? 如果是的话,那你这样就不行。在定义数组时,如果不指定数组大小,编译器会根据初值来推断出大小,这个规则也适用于二维数组。 而你给x 的初值只有一个字符串("0"),所以实际上 x 是 char x[1][10],即只能容纳一个字符串。假设你打算存入5个字符串,应:char x[5][10];scanf中指定%s的话,就意味着它接受的输入就是字符串,你只需要再传入能足够容纳这些字符串的数组就可以了: scanf("%s", x[i]) // 存入x[i]位置的数组你的代码中:b是个int,你在scanf中试图把字符串存入一个int中,这会引起溢出。这样接受输入就可以了:char x[字符串个数][10] = {}; // x初值为空
for (int i = 0; i < 字符串个数; ++i)
scanf("%s", x[i]);