char s[N][N];
for(int i = 0 ; i < n ; i ++)
for(int j = 0 ;j < n ; j ++)
cin >> s[i][j];
for(int i = 0 ; i < n ; i ++)
{
for(int j = 0 ;j < n ; j ++)
cout << s[i][j];
cout << endl;
}
注意这代码在读入时是不会读入空格的
还有就是这只能存3*3个字符,也即是前九个字符,多余的输入就不会被输出;还有在打印图像中注意输出换行;
cin,getline,cin.getline具体使用博客,后面俩个可以读入空格
C语言二维字符数组的输入,字符串的输出以\0为结尾
二维字符的读入2
getchar,清除缓存
把所有的内容都输入完成并且按下了Enter键后,我们的输入才被送进去了输入缓冲区
eg:
#include <iostream>
using namespace std;
#include <algorithm>
#include <string.h>
int n;
struct book{
double price;
char name[32];
}b[10];
bool cmp(book a,book b)
{
return a.price < b.price;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
getchar();
cin.getline(b[i].name,32);
cin>>b[i].price;
}
sort(b,b+n,cmp);
for(int i=0;i<n;i++)
printf("%s %.1f\n",b[i].name,b[i].price);
return 0;
}
char name[20];
cin.getline(name, 20);
cout << name << endl;
这个只能输出一串;怎么输出两串?
string name[20];
#include<iostream>
#include<cstring>
using namespace std;
/*
$ 9
@ @@@@@
@@@ @@@
@ @ @
@@@ @@@
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
@ @ @ @
@ @@@@@
*/
int main(){
int n,flag = 0;
char s;
string a[110];
scanf("%c %d",&s,&n);
getchar();//必须有
for(int i=0;i<n;i++){
getline(cin,a[i]);//每次输入一行
}
for(int i=0;i<n;i++){//将字符改变成所需要的字符
for(int j=0;j<n;j++){
if(a[i][j] != ' '){
a[i][j] = s;
}else {//必须有空格
a[i][j] = ' ';
}
}
}
for(int i=0;i<n;i++){//判断是否相同
for(int j=0;j<n;j++){
if(a[i][j] != a[n-i-1][n-j-1]){
flag = 1;
}
}
}
if(flag == 0){
printf("bu yong dao le\n");
}
for(int i=n-1;i>=0;i--){//倒着输出
for(int j=n-1;j>=0;j--){
printf("%c",a[i][j]);
}
printf("\n");
}
return 0;
}