| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:一个关于二维数组的问题 概念有点乱
只看楼主 加入收藏
wzboyer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-9
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
一个关于二维数组的问题 概念有点乱
比如char a[10][20];
是不是 定义一10个二维数组啊,每个数组的长度是20个字符呢?
还是什么其它的啊  我二维数组没看懂啊 书上就写一页 。。。。。




刚开始是理解为 定义了200个变量。。。。。。  分别为a[0][0].....a[10][20]
可是老师上课举了下面这个列子后我有点混乱

题目 :输入十个字符串比较大小
程序:
#include "stdio.h"
#include "string.h"
void main(){
char b[20],a[10][20]; 就这句
int i,j;
printf("input:\n");
for(i=0;i<9;i++)
gets(a[i]);
for(i=0;i<9;i++){
for(j=i+1;j<9;j++){
if(strcmp(a[i],a[j])>0){
strcpy(b,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],b);
}
}
}

for(i=0;i<9;i++)
puts(a[i]);
}
那上面这道题的char a[10]20]这句话完全没必要用二维数组啊  改成定义一个一维数组char a[10]不就行了???
上课老师好像是说char a[10]20]这句话 的意思     定义10个变量  每个变量长度为20.。。。。。
有点晕
搜索更多相关主题的帖子: 概念 
2009-11-10 22:12
qlc00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分:2 
二维数组比如说char a[10][20],它相当于定义了十个字符串,而每个字符串的长度是20.a[i]表示的是第i行的字符串的全部!如果你改成定义一个一维数组char a[10]那么它只相当于一个字符串,而其他的九个就不能表示了!

Anything is possible!
2009-11-10 23:05
quietstar
Rank: 2
来 自:虚无缥缈处
等 级:论坛游民
帖 子:28
专家分:98
注 册:2009-4-13
收藏
得分:2 
楼上正解!

流光穆然去,美梦随佳人。薄雾似成雨,芳樽清茶冷。郁郁清风外,悠然不复生。
2009-11-10 23:25
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
收藏
得分:2 
这个表示10行20列
你这样想就可以了!
那么10*20就等于200
如果是整形的话那么他就可以输出来200个整形数字!
个数不满足200的话,用0补充!
你可以将这个字符型的改成整形的这样你理解起来应该会更方便点儿!

编程语言视频教程在线播放学习
2009-11-11 13:07
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:2 
回复 楼主 wzboyer
二维数组比如说char a[10][20],它相当于定义了十个字符串,而每个字符串的长度是20.a[i]表示的是第i行的字符串的全部!如果你改成定义一个一维数组char a[10]那么它只相当于一个字符串,而其他的九个就不能表示了! 是这样的,很对,比如说 你要处理10个学生的姓名,这10个姓名就应该用二维数组存放,若要按姓氏升序排列姓名,用一维岂不是很乱,且不直观?比如:
#include<stdio.h>
#include<string.h>
void main()
{
char name[10][20];
printf("请输入10个姓名:\n");
for(int i=0;i<10;i++)
scanf("%s",name[i]);
char temp[20];
for(i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
if(strcmp(name[i],name[j])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp);
}
}
printf("姓名按姓氏升序排列为:\n");
for(i=0;i<10;i++)
printf("%s",name[i]);
}







2009-11-11 14:05
小兰01
Rank: 2
等 级:论坛游民
帖 子:24
专家分:33
注 册:2009-9-9
收藏
得分:2 
二维数组就是线形代数中的矩阵.
2009-11-11 18:16
快速回复:一个关于二维数组的问题 概念有点乱
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017075 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved