- 1、本文档共65页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 思 考 题 对上面的例 4.6 加一点要求: 假设用字符数组str[100],但允许在输入时多于100个字符,如 果输入的一行字符个数多于100个字符时,要求程序自动截取前 面的99个字符,其他功能不变。请对上面的程序进行改进! 提示:其他代码可以不改,只需要编写一段代码 来代替其中完成字符串输入的语句: gets(str); * 关于数组和字符串使用的注意事项 1. 在访问数组时,特别要注意不要越界! 3. 对字符数组初始化或赋值时,别忘记加结束标记 ’\0’! 4. 在访问字符串时,要判断字符串是否结束(’\0’)! 2. 在定义字符数组时,其大小应该是“存放字符数+1”! * * 该程序的运行结果为: * 例 4.4 例4.4 有一个班6个学生,己知每个学生有5门课的成绩,要求输出平均成绩最高的学生的成绩以及该学生的序号。 第一步求精: 1. 确定数据结构(s[6][6]): 用一个6×6的二维数组,每一行代表一个学生;前5列分别代表5门课的成绩,最后一列用来存放平均成绩。 2. 对数组s中每个学生的5门课程的成绩赋初始值; 3. 计算出每个学生的平均成绩; 4. 找出最高的平均成绩及对应学生的序号; 5. 输出最高的平均成绩及对应学生的序号。 * 第一步求精: 1. 确定数据结构(s[6][6]): 用一个6×6的二维数组,每一行代表一个学生;前5列分别代表5门课的成绩,最后一列用来存放平均成绩。 2. 对数组s中每个学生的5门课程的成绩赋初始值; 3. 计算出每个学生的平均成绩; 4. 找出最高的平均成绩及对应学生的序号; 5. 输出最高的平均成绩及对应学生的序号。 第二步求精: 1、 定义数组s[6][6],并对其初始化; 2、 对 i=0,1,2,3,4,5,计算:s[i][5]=(s[i][0]+s[i][1]+s[i][2]+s[i][3]+s[i][4])/5; 3. 1、确定数据结构:用max来存放当前发现的最高平均成绩,用max_i来存放对应的学生序号,max的初始值为0; 3.2、对 i=0,1, 2,3,4,5 ,重复计算: 如果 s[i][5] max 则,max=s[i][5],max_i=i; 4、输出 max 和 max_i 。 * 第二步求精: 1、 定义数组s[6][6],并对其初始化; 2、 对 i=0,1, 2,3,4,5,计算:s[i][5]=(s[i][0]+s[i][1]+s[i][2]+s[i][3]+s[i][4])/5; 3. 1、确定数据结构:用max来存放当前发现的最高平均成绩,用max_i来存放对应的学生序号,max的初始值为0; 3.2、对 i=0,1, 2,3,4,5 , 重复计算: 如果 s[i][5] max 则,max=s[i][5],max_i=i; 4、输出 max 和 max_i 。 得出问题求解的算法 (第三步求精) ? max=0;初始化数组 s i = 0 sum = 0 j = 0 sum = sum + s[i][j] i 6 j 5 s[i][5] = sum / 5 j = j +1 i = i +1 i = 0 i 6 s[i][5] max 假 真 max = s[i][5]; max_i = i i = i +1 输出 max 和 max_i * #include stdio.h void main () { int i, j, max_i; float sum, max=0; float s[6][6]={ {78,82,93,74,65}, {91,82,72,76,67}, {100,90,85,72,98}, {67,89,90,65,78}, {77,88,99,45,89}, {78,89,76,99,97} }; for (i=0; i6; i++) /* 计算每个学生的平均成绩 */ { sum=0; for (j=0; j5; j++) sum=sum+s[i][j]; s[i][5] = sum/5; } for (i=0; i6; i++) /* 找出最高的平均成绩及对应学生的序号 */ if (s[i][5]max) {
文档评论(0)