首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载 | ||
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试 MPA考试 | 中科院 |
||
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT 新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语 |
||
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证 华为认证 | Java认证 |
||
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格 报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师 人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平 驾驶员 | 网络编辑 |
||
卫生资格 | 执业医师 | 执业药师 | 执业护士 | ||
会计从业资格考试(会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师 注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师 |
||
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师 质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师 设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师 城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师 |
||
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏 |
二、字符串数组
上面讲的都是存放数值的,有一类数组,用来处理字符串的,我们叫字符串数组。其实字符串数组也是二维数组,只是它的特殊性,才单独拿出来说的。
main()
{
char s[10][10];
int i;
for(i=0;i<10;i++) scanf(%s,s[i]);
}
先看它的输入特性,前面在说输入语句的时候说过,遇到字符串输入,可以不加'&',现在只要记住这个特性就可以,以后说指针的时候再讲为什么。但是这儿为什么用s[i],可能很多人不太明白。我们定义的是二维数组,而输入的时候,却使用一维数组的形式。这是因为字符串在内存里地址可以用它的名字表示,就好象这种形式:
main()
{
char s[10];
scanf(%s,s);
}
定义的是一维数组,输入语句用变量形式表示一样。通过前面的'%s'形式可以看出,s[i]是一个数组,所以s就是二维数组了。
这里要注意一点,scanf()函数在输入字符串时候不能支持空格,看下面的例子:
main()
{
char s[3][10];
int i;
for(i=0;i<10;i++)
scanf(%s,s[i]);
for(i=0;i<3;i++)
printf(%s\n,s[i]);
}
我们输入:1111
2222 3333
4444
我们是想把1111赋值给s[0],2222 3333赋值给s[1],4444赋值给s[2]。可实际上编译器是这样做的,把1111赋值给s[0],把2222赋值给[1],把3333赋值给s[2]。
实际输出:1111
2222
3333
在输入字符串的时候,如果使用scanf(),就把空格当作下一个输入了。那么我们怎么解决这个问题呢?毕竟很多情况下,一行字符串肯定有空格出现的。我们使用新的函数gets()。这个函数是专门接受字符串输入的,它跳过了空格的影响。把上面的输入语言修改为gets(s[i])即可。
我们定义了char s[3][10],超过10个字符肯定不行,如果少于10个字符,电脑怎么处理呢?电脑是在每个字符串的后面自动补上'\0',作为字符串的结束标志。
我们经常在填写一些可选择的内容时经常发现,待选的字符串都是按字母排列好的,我们怎么用C语言实现这个功能?在C语言里,字符串的排序是按照字符的ASCII码来的,如果第一个字符一样,则比较第二个,依次类推。
main()
{
char s1[6]=addfgh,s2[5]=asdlg;
int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)
{
if(s1[i] {
printf(s1 exit(1);
}
else if(s1[i]>s2[i])
{
printf(s1>s2\n);
exit(1);
}
else ;
}
if(s1[i]=='\0' && s2[i]!='\0') printf(s1 else if(s2[i]=='\0' && s1[i]!='\0') printf(s1>s2\n);
else printf(s1==s2\n);
}
上面的例子就是比较两个字符串大小的,先比较第一个,如果相同,接着比较第二个,如果不相同,则分出大小。一直往后比较,直到其中某一个到'\0',你也可以先用strlen()函数找出最小的长度。
相关推荐:计算机等级考试二级C语言教程汇总北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |