- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4. 字符串与字符的区别 字符串以一对双引号(“”)表示,而字符以一对单引号(‘’)表示;如“A”和‘A’,“A”是字符串,‘A’是一个字符;“A”包含一个字符‘A’和一个字符‘\0’,占用2个字节,而‘A’只是一个字符,占用1个字节。 采用逐个字符赋值方式形成字符串时,如果没有指定数组的大小时,就必须在后面添加一个字符’\0’。如: char s[]={ ‘C’,‘h’,‘i’,‘n’ ,‘a’ ,‘\0’}; 如果写成: char s[]={ ‘C’,‘h’,‘i’,‘n’,‘a’}; 那么s就不是字符串了。因为后面没有字符串结束标志‘\0’。故不能认为s数组中存放的是字符串。这时如果把s当作字符串,编译系统会在字符数组后面的内存中找一个最近的‘\0’来作为该字符串结束的标志,这样会出现错误的结果。 下面这样定义语句是有问题的: char s[10]=“I am a student”; 因为字符串常量的长度超出了数组的大小,数组本身空间不够用,就会占用数组后面的存储单元,这样会破坏别的数据。 可用格式符“%c”输入或输出一个字符;如果要输出一个字符串数组就需要使用循环,对于输出字符串数组可用“%s”输入或输出。例如: char s[ ]=“Center China”; printf(“%s”,s); 此时一维字符数组s在内存中数据如图所示。 4.2.3 二维数组的应用举例 【例4-5】 一个学习小组有5个学生,每个学生有3门课的成绩。求全组分科的平均成绩和各科总平均成绩。 程序设计思想: 要满足上述程序的要求,可定义一个二维数组a[5][3],用来存放学生各门课的成绩。这个数组的每一行表示某个学生的各门课的成绩,每一列表示某门课的所有学生成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量avg为全组各科总平均成绩。 85 77 76 周七 90 87 85 赵六 70 63 59 王五 71 65 61 李四 92 75 80 张三 DBASE C Math 姓名 #include stdio.h void main ( ) { int i,j,s=0,avg,v[3]; int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}}; for(i=0;i3;i++) //列方向的循环 { for(j=0;j5;j++) s=s+a[j][i]; //行方向的循环,求分数总和 v[i]=s/5; //单科平均值 s=0; } avg=(v[0]+v[1]+v[2])/3; //求总平均值 printf(math:%d\nc language:%d\ndbase:%d\n,v[0],v[1],v[2]); printf(total:%d\n,avg); } 运行结果: math:72 c language:73 dbase:81 total:75 【例4-6】 将二维数组a中的行列转置后放入二维数组b中。 程序设计思想: 先定义两个数组,如a[2][3]和b[3][2],a、b数组的行列大小正好相反。b是a的转置。 使用2重循环,在内循环中将a数组的元素a[i][j]赋给b数组的元素b[j][i],达到转置的结果。 最后使用for循环输出转置后的数组b。 1 2 3 4 5 6 1 4 2 5 3 6 #include stdio.h void main() { int a[2][3] = {{1,2,3},{4,5,6}}; int i,j,b[3][2]; printf(Array a is:\n); for(i=0;i=1;i++) { for(j=0;j=2;j++) { printf(%5d,a[i][j]); b[j][i] = a[i][j]; } printf(\n); } printf(Array b is:\n); for(i=0;i=2;i++) { for(j=0;j=1;j++) printf(%5d,b[i][j]); printf(\n); } } 运行结果: Array a is: 1 2 3 4 5 6 Array b is: 4 5 6 【例4-7】 打印杨辉三角形(10行)。 程序设计思想: 杨辉三角形可用矩形(10×10)表示,第一列和对角
文档评论(0)