为什么我输出不了字符
#include<bits/stdc++.h>
using namespace std;
const int N=32767;
int n,m;
char lei[N][N];
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={1,-1,0,0,1,1,0,0};
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>lei[i][j];
cout<<lei[i][j];
}
}/*for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(lei[i][j]=='*'){
cout<<'*';
}
}cout<<endl;
}*/
return 0;
}
需要先输入n和m的值,然后再输入一行整数,接着才会将这行整数输出出来。
测试代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=32767;
int n,m;
char lei[N][N];
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={1,-1,0,0,1,1,0,0};
int main(){
cin>>n>>m; // 先输入n和m的值
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>lei[i][j]; // 接着输入一行整数 ,或者直接一行输入所有行列的整数,接着就会输出全部输入的整数
cout<<lei[i][j]<<" "; //然后才会显示这行整数
}
cout<<endl;
}/*for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(lei[i][j]=='*'){
cout<<'*';
}
}cout<<endl;
}*/
return 0;
}
【以下回答由 GPT 生成】
这段代码的问题在于没有正确的设置数组lei
的大小,导致数组越界。在C++中,数组是从0开始索引的,而不是从1开始。所以,for
循环应该从0开始,并且结束条件应该是小于n
和m
,而不是小于等于。同时,数组lei
的大小应该根据输入的n
和m
决定,而不是固定为32767
。另外,在使用cout
输出字符时,需要将字符类型转换为整型,否则输出的将是字符对应的ASCII码值。下面是修改后的代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 100;
int n,m;
char lei[N][N];
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={1,-1,0,0,1,1,0,0};
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>lei[i][j];
cout<<static_cast<int>(lei[i][j])<<" ";
}
cout<<endl;
}
/*for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(lei[i][j]=='*'){
cout<<'*';
}
}cout<<endl;
}*/
return 0;
}
请注意,为了更好地理解问题所在,修改后的代码将字符转换为整型输出,以显示字符对应的ASCII码值。如果您想输出字符本身,请将static_cast<int>(lei[i][j])
改为lei[i][j]
。
【相关推荐】