西北农林科技大学C语言上机实习4答案.doc_第1页
西北农林科技大学C语言上机实习4答案.doc_第2页
西北农林科技大学C语言上机实习4答案.doc_第3页
西北农林科技大学C语言上机实习4答案.doc_第4页
西北农林科技大学C语言上机实习4答案.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实习四答案1、 字符串连接/* exer 4-1 两串字符连接 */由键盘任意输入两串字符,不用库函数strcat,连接将两串字符。输入: 两串字符 输出: 连接将两串字符 输入样例: abc def 输出样例: abcdef #include #include void main(void) unsigned int i,j; char soustr80,desstr80; /printf(please enter soustr:); gets(soustr); /* 输入原串 */ /printf(please enter desstr:); gets(desstr); /* 输入目的串 */ i = strlen(soustr); /* 取目的串尾部位置 */ for(j=0; j=strlen(soustr); j+,i+) soustri = desstrj; /* 将原串依次接入目的串尾部 */ puts(soustr); 2、 简单加密程序/* exer 4-2 字符加密 */由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。 输入: 一串字符 输出: 加密后的字符串 输入样例: abl2CDxyz 输出样例: cdl2EFzab 提示: 1. 可用gets()和puts()输入输出字符串。2. 利用ASCII码运算进行加密。3. 循环右移的含义是:将a-z,AZ各看成一个环进行移动,即y右移2个字母后为a,z右移2个字母后为b;Y右移2个字母后为A,Z右移2个字母后为B。 #include #include void main(void) unsigned int j; char soustr80,secstr80; /printf(please enter soustr:); gets(soustr); /* 输入原串 */ for(j=0; j=A & soustrj=a & soustrj=z ) secstrj = (soustrj-a+2)%26+a; /*计算小写字母密文*/else secstrj = soustrj; /* 其它字符不变 */ puts(secstr); 3、 矩阵对角线元素求和/* exer 4-3 主和辅对角线上元素之和 */输入一个55的数组,分别求其主对角线和辅对角线上元素之和。 输入: 55的数组 输出: 主对角线和辅对角线上元素之和 输入样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 输出样例: 65 65 主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。 #include #include void main(void) int i,j; int a55; int sum1=0,sum2=0; /printf(please enter soustr:); for(i=0; i5; i+) for(j=0; j5; j+) scanf(%d,&aij); /* 输入数组 */ for(i=0; i5; i+) sum1 = sum1+aii; /* 主对角线 */ sum2 = sum2+ai4-i; /* 辅对角线 */ printf(%d %dn,sum1,sum2); 4、 数据顺序调整/* exer 4-4 将最大数调到最前面,最小数调到最后面 */由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。 输入: 任意10个数 输出: 数据调整后的10个数。输入样例: 0 1 2 3 4 5 6 7 8 9 输出样例: 9 1 2 3 4 5 6 7 8 0 提示: 定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置; 在循环开始前,将第一个元素作为参考,将其值分别存入d1、x1,将其下标分别存入d2、x2; 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2;否则将其与x1比较,若比x1小,将其存入x1,并将其下标存入x2; 结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。 #include#includevoid main(void) int i,a10,temp; int kmax=0,kmin=0; /printf(please enter :); for(i=0; i10; i+) /* 输入数组 */ scanf(%d,&ai); for(i=0; iakmax) kmax = i; /* 找最大数位置 */ else if(aiakmin) kmin = i; /* 找最小数位置 */ if(kmax = 9 & kmin = 0) temp = a0; a0 = akmax; akmax = temp; /* 与最前面的数交换 */ else temp = a0; a0 = akmax; akmax = temp; /* 与最前面的数交换 */ temp = a9; a9 = akmin; akmin = temp; /* 与最后面的数交换 */ for(i=0; i9; i+) printf(%d ,ai); /* 输出数组 */ printf(%dn,ai);5、 字符个数统计/* exer 4-5 统计大写字母、小写字母、数字及其它字符的个数 */由键盘输入任意一串字符串,将其存入一个字符数组,统计其中的大写字母、小写字母、数字以及其他字符的个数。 输入: 任意一串字符串 输出: 大写字母、小写字母、数字以及其他字符的个数。 输入样例: abcdefg123456ABCDEFG 输出样例: 7 7 6 #include#includevoid main(void) unsigned int i; int cap=0,low=0,dig=0,oth=0; /* 定义并初始化 */ char str80; /printf(please enter str:); gets(str); /* 输入原串 */ for(i=0; i=A & stri=a & stri=0 & stri=9) dig+; /* 统计数字 */ else oth+; /* 统计其它字符 */ printf(%d %d %d %dn,cap,low,dig,oth);6、 学生成绩计算/* exer 4-6 求每一个学生的总成绩和平均成绩 */已知10个学生的5门课程的成绩,将其存入一个二维数组,求每一个学生的总成绩和每一个学生的平均成绩。 输入: 10个学生的5门课程的成绩 输出: 每一个学生的总成绩和每一个学生的平均成绩 输入样例: 90.5 80 70 89 84.691.5 81 71 88 84.792.5 82 72 87 84.893.5 83 73 86 84.994.5 84 74 85 84.095.5 85 75 84 84.196.5 86 76 83 84.297.5 87 77 82 84.398.5 88 78 81 84.499.5 89 79 80 84.5 输出样例: 414.100006 82.820000416.200012 83.240005418.299988 83.659996420.399994 84.080002421.500000 84.300003423.600006 84.720001425.700012 85.139999427.799988 85.559998429.899994 85.979996432.000000 86.400002 #includevoid main(void) int i,j; float score105=0.0f; float allsco10,avesco10; for(i=0; i10; i+) for(j=0; j5; j+) scanf(%f,&scoreij); /* 输入学生的成绩 */ for(i=0; i10; i+) allscoi = 0; /* 总成绩清零 */ for(j=0; j5; j+) allscoi = allscoi+scoreij; /* 累加总成绩 */ avescoi = allscoi/5; /* 计算平均成绩 */ for(i=0; i10; i+) printf(%f %fn,allscoi,avescoi);/* 输出成绩 */7、 姓名排序/* exer 4-7 姓名排序 */由键盘任意输入10个学生的姓名(以拼音形式),将它们按照ASC码的顺序从小到大排序。 输入: 10个学生的姓名(以拼音形式) 输出: 按照ASC码的顺序从小到大排序 输入样例: zhangziangzaangzbangzcangzdangzeangzfangzgangzhang 输出样例: zaangzbangzcangzdangzeangzfangzgangzhangzhangziang#include#includevoid main(void) int i,j,k; char name1080,temp80; /printf(please enter :); for(i=0; i10; i+) gets(namei); /* 输入姓名数组 */ for(i=0; i9; i+) /* 排序 */ k = i; for(j=i+1; j0) k = j; if(k!=i) strcpy(temp,namei); strcpy(namei,namek); strcpy(namek,temp); /* 交换 */ for(i=0; i10; i+) puts(namei); /* 输出姓名数组 */8、 输出杨辉三角形/* exer 4-8 打印杨辉三角形 */编程实现n阶(n10)杨辉三角形的输出,n=6时,杨辉三角形如下所示:11 1 1 2 11 3 3 11 4 6 4 11 5 10 10 5 1 输入: 杨辉三角形的阶数n。 输出: n阶杨辉三角形。 输入样例: 6输出样例: 11 1 1 2 11 3 3 11 4 6 4 11 5 10 10 5 1 提示: 杨辉三角形的特点:第一列和对角线上的元素值均为1,即ai0=aii=1;其余位置元素的值=上一行本列元素值+上一行前一列元素值,如第三行第二列2就是第二行第一列+第二行第二列,计算公式为aij=ai-1j-1+ ai-1j。 应先对第一列和对角线元素赋值,然后再为其它元素赋值。 #includevoid main(void) int i,j; int a66; for(i=0; i6; i+) aii = 1; /* 主对角线为1 */ ai0 = 1; /* 第1列为1 */ for(i=2; i6; i+) for(j=1; ji; j+) aij = ai-1j-1+ai-1j; /* 计算 */ for(i=0; i6; i+) for(j=0; j=i; j+) printf(%d ,aij); /* 输出 */ printf(n); /* 换行 */ 或者#inclu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论