关于字符c语言中二维数组赋值的提问

欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 3655 人关注过本帖
标题:二维数组输入字符的问题,有人帮忙看看嘛,
等 级:新手上路
帖 子:33
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:15&&&
二维数组输入字符的问题,有人帮忙看看嘛,
自己定义行和列,不行吗,,为什么输出不了
#include&stdio.h&
&&void main()
{&&& char a[100][100],b[100];
&&& int i,j,t=0;
&&& printf(&输入&&m&&n\n&);
&&& scanf(&%d%d&,&m,&n);
&&& printf(&输入字符\n&);
&&& for (i=0;i&=m-1;i++)
&&&&&&&&for (j=0;j&=n-1;j++)
&&&&&&&&&&&&scanf(&%c&,&a[i][j]);
&&& printf(&输入的数组为\n&);
&&& for (i=0;i&=m;i++)
&&&&&&&&for (j=0;j&=n;j++)
&&&&&&&&{&&&
&&&&&&&&&&&&printf(&%c&,a[i][j]);
&&& printf(&\n&);
搜索更多相关主题的帖子:
等 级:青峰侠
帖 子:443
专家分:1966
你的输入会把空隔等所有字符都包含进去的.
要有判断语句, 是字母才保存到数组.程序代码:#include &ctype.h&&&&&&&&&&&&&&&&//&&增加这个头文件
for (i = <font color=#; i & i++)
&&&&&&&&for (j = <font color=#; j & ) {
&&&&&&&&&&&&c = getchar();
&&&&&&&&&&&&if (isalpha(c)){&&&&&&&&& // 如果读取的是字母才保存到数组, 其它字符都不操作.
&&&&&&&&&&&&&&& a[i][j] =
&&&&&&&&&&&&&&& j++;
&&&&&&&&&&&&}
还有, 你那个 b 数组太小了.a有10000个元素, b才能保存100个.
[ 本帖最后由 pangshch 于
16:54 编辑 ]
等 级:新手上路
帖 子:33
回复 2楼 pangshch
&&for (i=0;i&=m-1;i++)
&&&&&&&&for (j=0;j&=n-1;j++)
&&&&&&&&&&&&if(ch&'a'&&ch&'z'&&ch&'A'&&ch&'Z')
&&&&&&&&& scanf(&%c&,&a[i][j]);
只是字母,这样可以吗。
啊这个是不行的,还有其他的办法吗。
[ 本帖最后由 hxx4137 于
16:57 编辑 ]
等 级:新手上路
帖 子:33
回复 2楼 pangshch
,那个函数 我们没有学习, 可不可以加上一些判断语句来判断呢 像我上面那样 或者其他的差不多的语句
等 级:青峰侠
帖 子:443
专家分:1966
回复 3楼 hxx4137
for (i=0;i&=m-1;i++)
&&&&&&&&for (j=0;j&=n-1;)
&&&&&&&&&&&& scanf(&%c&,&ch);
&&&&&&&&&&&&if((ch&'a'&&ch&'z') || (ch&'A'&&ch&'Z')){
&&&&&&&&&&&&&&&&&a[i][j] =
&&&&&&&&&&&&&&&&&&j++;
你要先输入, 再判断, 再保存.
你的代码不合逻辑.
j++ 要放在保存字符之后,
没有保存, j的值就不变.
[ 本帖最后由 pangshch 于
17:02 编辑 ]
等 级:青峰侠
帖 子:443
专家分:1966
回复 4楼 hxx4137
那就用我给你改的那个也可以,
你的思路是对的, 只是逻辑判断上有点错误,
等 级:新手上路
帖 子:33
回复 5楼 pangshch
你好,我这个作业题目是要求,
&编写一个函数fun,功能是讲M行N列的二维数组按列的顺序依次放在一个字符串中,并输出到屏幕上。
&例如 w w w w
&&&&&&s s s s
&&&&&&h h h h
输出得wshwshwsh
&&思路还没有&&只能想到先得到数组 , 后面你能给我大体说一下吗.
等 级:青峰侠
帖 子:443
专家分:1966
&&得分:20&
回复 7楼 hxx4137
我看到你的贴子我就知道你和那谁 &可怜的C人& 是同学, 他比你先问了.
程序代码:程序代码:#include &stdio.h&
#define M 100&&& // 数组的最大行数
#define N 100&&& // 数组的最大列数
void fun(char *b, char a[][N], int m, int n)
&&& int i,
&&& for (j = <font color=#; j & ++j)
&&&&&&&&for (i = <font color=#; i & ++i)&&&&&&
&&&&&&&&&&&&*b++ = a[i][j];
int main()
&&& char a[M][N];&&&&&&&&&&&// 二维数组
&&& char b[M*N];&&&&&&&&&&&&// 一维数组
&&& int i,
&&& int m,
&&& printf(&请输入数组的行数: &);
&&& scanf(&%d&, &m);
&&& printf(&请输入数组的列数: &);
&&& scanf(&%d&, &n);
&&& // 输入字符
&&& printf(&请输入 %d个字符:\n&, m * n);
&&& for (i = <font color=#; i & i++)
&&&&&&&&for (j = <font color=#; j & ) {
&&&&&&&&&&&&c = getchar();
&&&&&&&&&&&&if ((c &= 'z'&&c&='a') || (c &= 'Z'&& c &= 'A')){&&&&&&&&& // 如果读取的是字母才保存到数组, 其它字符都不操作.
&&&&&&&&&&&&&&& a[i][j] =
&&&&&&&&&&&&&&& j++;
&&&&&&&&&&&&}
&&& printf(&输入的二维数组为:\n&);&&&&&& // 打印二维数组
&&& for (i = <font color=#; i & i++) {
&&&&&&&&for (j = <font color=#; j & j++)
&&&&&&&&&&&&putchar(a[i][j]);
&&&&&&&&putchar('\n');
&&& fun(b, a, m, n);&&&&&&&&&&&&&&&&&& // 数组转换
&&& printf(&转换为一维数组为:\n&);&&&&&// 打印一维数组
&&& for (i = <font color=#; i & m*n; i++)
&&&&&&&&putchar(b[i]);
&&& putchar('\n');
&&& return <font color=#;
[ 本帖最后由 pangshch 于
17:09 编辑 ]
等 级:新手上路
帖 子:33
回复 8楼 pangshch
谢谢你了,我们才上到指针的概念。
&&原来可以用指针返回数组值。
我细细研究下,十分感谢
等 级:新手上路
帖 子:33
回复 8楼 pangshch
// 输入字符
&&& printf(&请输入 %d个字符:\n&, m * n);
&&& for (i = 0; i & i++)
&&&&&&&&for (j = 0; j & ) {
&&&&&&&&&&&&c = getchar();
&&&&&&&&&&&&if ((c &= 'z'&&c&='a') || (c &= 'Z'&& c &= 'A')){&&&&&&&&& // 如果读取的是字母才保存到数组, 其它字符都不操作.
&&&&&&&&&&&&&&& a[i][j] =
&&&&&&&&&&&&&&& j++;
&&&&&&&&&&&&}
&&请问 这个j++放在这个位置是为什么呢,为什么放在for (j = 0; j & ) 运行之后会出错.
版权所有,并保留所有权利。
Powered by , Processed in 0.031395 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved在C代码中, 很容易在函数库中见到类似如下函数原型的声明:
void f(char** str_list);
于是, 有的程序员就写了如下的调用代码:
#define SIZE 100
char a[SIZE][SIZE];
这个时候可要小心了, 调用f函数的方式是错误的.
如果你是实现f函数的程序员, 你会认为参数str_list实际指向的是什么呢:
str_list是一个指针1, 指向另一个指针2, 指针2指向char类型的变量.
++a; 偏移SIZE*sizeof(char)个字节;
++a[0]; 偏移1个字节;
++str_ 偏移sizeof(char*)个字节; str_list[0]的值是一个指针, 该值是由a[0][0]~a[0][7]组成的(假设char*占8个字节).
++(*str_list); 偏移1个字节;
二维char数组与二维char指针
char**的内存结构可以看成有多个连续的char*类型的元素构成,而二维字符数组是由M*N个字符组成。
1. 以下函数将出现段错误:
#define M 2
使用char **ptr实现一个动态二维数组
使用char **ptr实现一个动态二维数组,方便使用:
class Matrix
protected:
int lines,
C语言中二维字符数组的定义和初始化
char二维数组按行输入
char二维数组按行输入#include
#define maxn 105
char pic[maxn][maxn];
int main()
for (int i = 0;i & 10;i+...
char * 与 char [] 区别,char *[] 与 char[][]区别。字符串指针的数组与二维char数组区别。字符串常量赋予指针与字符数组区别。&字符串&等价于其首元素&字&的地址
char * p = “abc”
与 char a[] = &abc&这两种形式相同吗?
第一种形式
p是一个指针变量。&abc&为一个字符串常量,代表其首字...
最近有个需求,要利用c++实现一个二维的字符串数组,网上查了下,竟然没找到
因为c++的string用起来感觉非常繁琐,所以还是决定利用char型指针来做这个功能
思路是二维数组里存的都是一维数组...
自己写的unsigned &em&char二维数组&/em&转8位bmp的函数。... 自己写的unsigned &em&char二维数组&/em&转8位bmp的函数。综合评分:3 收藏评论(3)举报 所需: 3积分/C币 开通VIP 立即...
有2个下标的数组成为二维数组
如果数组的元素又是数组,则称为二维数组。例如
int a[3][4] = {
{0, 1, 2, 3}
, {4, 5, 6, 7}
, {8, 9 ,10 ,11}
};可以将a看成一个数组,这个...
一维字符数组的定义形式如下:
二维字符数组定义的形式是:
[] []={};
字符串数组定义的形式是:
没有更多推荐了,二维字符数组赋值问题_百度知道
二维字符数组赋值问题
charname[4][8];name[a-1][8]=&Canada&;name[b-1][8]=&America&;name[c-1][8]=&Russia&;name[d-1][8]=&China&;errorC2106:&#039;=&#039;:leftoperandmustbel-value...
char name[4][8];
name[a-1][8]=&Canada &;
name[b-1][8]=&America&;
name[c-1][8]=&Russia &;
name[d-1][8]=&China
&;error C2106: &#39;=&#39; : left operand must be l-value
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自知道合伙人认证团队
采纳数:1936
获赞数:8324
擅长:暂未定制
二维数组name[n][m]相当于是将n个长为m的一维数组的地址存于一个长n的一维数组中。所以,上述赋值语句应该为:name[a-1]=&Canada&。还有,接受字符串首地址的数据类型应该为指针型。您的定义应该如下才行:char *name[4];这是最终修改结果:char *name[4];二维字符详细使用方法:
<span class="wgt-replyer-all-uname
" data-href="https://zhidao.baidu.com/usercenter?uid=26ba05e
<span class="wgt-replyer-all-card-name3 wgt-replyer-all-card-names" data-href="https://zhidao.baidu.com/usercenter?uid=26ba05e
采纳数:12
获赞数:167
你好,二维数组name[n][m]相当于是将n个长为m的一维数组的地址存于一个长n的一维数组中。所以,上述赋值语句应该为:name[a-1]=&Canada&;还有,接受字符串首地址的数据类型应该为指针型。您的定义应该如下才行:char *name[4];这是最终修改结果:char *name[4];
name[a-1]=&Canada &;
//在这条语句前,a值必须已确定,并且在【1,4】,下同
……检验方法:printf(&%s&,name[a-1]);最后,祝您解决问题,快乐生活!
本回答被提问者和网友采纳
获赞数:17
你的左操作数是一个字符,而你有操作数却是字符串 可以在定义是初始化 char name[4][8] = {{&Canada &},{&Canada &},{&Canada &},{&Canada &} };
想请教你们哈
想请教你们哈
采纳数:803
获赞数:837
a, b, c, d 没有赋值吧?
采纳数:12
获赞数:66
你好,二维数组name[n][m]相当于是将n个长为m的一维数组的地址存于一个长n的一维数组中。所以,上述赋值语句应该为:name[a-1]=&Canada&;还有,接受字符串首地址的数据类型应该为指针型。您的定义应该如下才行:char *name[4];这是最终修改结果:char *name[4];
name[a-1]=&Canada &;
//在这条语句前,a值必须已确定,并且在【1,4】,下同
1条折叠回答
其他2条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求助,二维数组混合输入数字和字符串问题【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:304,707贴子:
求助,二维数组混合输入数字和字符串问题收藏
如题,定义一个二维数组,输入过程中有数字有英语字符串,该怎样输入才能完成
int i,j;for(i=0;i&5;i++){cout&&&请分别输入第&&&i+1&&&位候选人编号、姓名、英语成绩、数学成绩、C++成绩:&&&for(j=0;j&5;j++){cin&&info[i][j];}}
以上是其中二维数组部分代码
来个高手呗
数组元素的数据类型必须是相同的。不可能同时出现整型和字符型
你可以自己写一个学生类,包括编号、成绩,然后定义一个学生数组
'8'-'0'=8,char型转换成unsigned要小于256,你的内存不是特别珍贵不要用。
c++博为峰IT开发培训,精英教育,大专及以上学历,先试学,满意再入学.上海博为峰IT班火热招生,4个月从菜鸟变高手![大专]及以上学历,在线申请!
登录百度帐号字符的二维数组如何初始化?_百度知道
字符的二维数组如何初始化?
字符的二维数组初始化赋值的基本格式是怎么样的?#include&stdio.h&intmain(){chars[4][20]={&chengdu&,&beijing&,&shanghai&,&chongqing&};printf(&%s&,s[]);}如上,我要输出这...
字符的二维数组初始化赋值的基本格式是怎么样的?#include &stdio.h&int main(){ char s[4][20]={&chengdu&,&beijing&,&shanghai&,&chongqing&}; printf(&%s&,s[]);}如上,我要输出这个数组怎么不对呢?只能输出chengdu?(VC调试)谢谢!希望得到大家的详细解答!
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
天选之人22
来自知道合伙人认证团队
天选之人22
采纳数:729
获赞数:1974
擅长:暂未定制
二维数组初始化的基本格式:(1)int a[3][4]={{2,6,3,9},{5,7,9,8},{1,6,4,2}};//a数组元素完全被初始化(2)int a[3][4]={2,6,3,9,5,7,9,8,1,6,4,2};//与(1)类似,全部被初始化(3)int a[][4]={{1,2,3,4},{5,6,7,8}};//初始化了全部数组元素,隐含了行数(4)int a[3][3]={{6},{1,8},{1,2,3}};//给出部分数值元素的值二维数组二维数组又称为矩阵,本质上是以数组作为数组元素的数组。基本介绍定义类型说明符 数组名[常量表达式][常量表达式]例如:float&a[3][4],b[5][10];定义a为3*4(3行4列)的数组,b为5*10(5行10列)的数组。注意,不能写成float a[3,4],b[5,10];概述二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n,按“行优先顺序”存储时则元素a[i][j]的地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((i &#8722; p) * n + (j &#8722; q)) * t按“列优先顺序”存储时,地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((j &#8722; q) * m + (i &#8722; p)) * t存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节二维数组又称为矩阵,行列数相等的矩阵称变方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵的所有非零元素都集中在主对角线上.
来自电脑网络类芝麻团
采纳数:772
获赞数:2200
参与团队:
char s[4][20]={&chengdu&,&beijing&,&shanghai&,&chongqing&};这一句就是初始终化了。你要输出这个数组就要循环才行,二维的下标最大是4.可以这个写:#include &stdio.h&int main(){char s[4][20]={&chengdu&,&beijing&,&shanghai&,&chongqing&}; for(i=0;i&4;i++)printf(&%s&#92;n&,s[i]);}
本回答被提问者采纳
采纳数:95
获赞数:171
#include&stdio.h&void main(){ char s[4][80]={&chengdu,beijing,shanghai,chongqing&}; printf(&%s&,s);}你输出的列长度不够 ,还有你不能用分号来分行,要加的话,你把四行就加一个花括号才可以
可以: char ch[5][25]={10;10;10;10;10;}; strcpy(ch[0],&I an a student!&); ch[0]+strlen(ch[0])=10; //10就是字符换车符,或直接赋值 ch[0]+strlen(ch[0])=&#39;&#92;n&#39;; 一样的。
~
其他1条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 二维数组m的成员是6个字符 的文章

 

随机推荐