西北农林科技大学c语言上机作业,西北农林科技大学C语言上机实习4答案.doc

253b171540df25e1b84436cbe50dfc72.gif西北农林科技大学C语言上机实习4答案.doc

实习四答案1、 字符串连接/* r 4-1 两串字符连接 */由键盘任意输入两串字符,不用库函数strcat,连接将两串字符。输入 两串字符 输出 连接将两串字符 输入样例 abc def 输出样例 abcdef includestdio.h includestring.h void mainvoid unsigned int i,j; char soustr80,desstr80; printfplease enter soustr; getssoustr; /* 输入原串 */ printfplease enter desstr; getsdesstr; /* 输入目的串 */ i strlensoustr; /* 取目的串尾部位置 */ forj0; jstrlensoustr; j,i soustri desstrj; /* 将原串依次接入目的串尾部 */ putssoustr; 2、 简单加密程序/* r 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。 includestdio.h includestring.h void mainvoid unsigned int j; char soustr80,secstr80; printfplease enter soustr; getssoustr; /* 输入原串 */ forj0; jstrlensoustr; j ifsoustrjA soustrjZ secstrj soustrj-A226A; /*计算大写字母密文*/else ifsoustrja soustrjz secstrj soustrj-a226a; /*计算小写字母密文*/else secstrj soustrj; /* 其它字符不变 */ putssecstr; 3、 矩阵对角线元素求和/* r 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 主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。 includestdio.h includestring.h void mainvoid int i,j; int a55; int sum10,sum20; printfplease enter soustr; fori0; i5; i forj0; j5; j scanfd, /* 输入数组 */ fori0; i5; i sum1 sum1aii; /* 主对角线 */ sum2 sum2ai4-i; /* 辅对角线 */ printfd dn,sum1,sum2; 4、 数据顺序调整/* r 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所示位置的数与最后一个数交换,然后输出数组所有元素即可。 includestdio.hincludestring.hvoid mainvoid int i,a10,temp; int kmax0,kmin0; printfplease enter ; fori0; i10; i /* 输入数组 */ scanfd, fori0; i10; i ifaiakmax kmax i; /* 找最大数位置 */ else ifaiakmin kmin i; /* 找最小数位置 */ ifkmax 9 kmin 0 temp a0; a0 akmax; akmax temp; /* 与最前面的数交换 */ else temp a0; a0 akmax; akmax temp; /* 与最前面的数交换 */ temp a9; a9 akmin; akmin temp; /* 与最后面的数交换 */ fori0; i9; i printfd ,ai; /* 输出数组 */ printfdn,ai;5、 字符个数统计/* r 4-5 统计大写字母、小写字母、数字及其它字符的个数 */由键盘输入任意一串字符串,将其存入一个字符数组,统计其中的大写字母、小写字母、数字以及其他字符的个数。 输入 任意一串字符串 输出 大写字母、小写字母、数字以及其他字符的个数。 输入样例 abcdefg123456ABCDEFG 输出样例 7 7 6 includestdio.hincludestring.hvoid mainvoid unsigned int i; int cap0,low0,dig0,oth0; /* 定义并初始化 */ char str80; printfplease enter str; getsstr; /* 输入原串 */ fori0; istrlenstr; i ifstriA striZ cap; /* 统计大写字母 */ else ifstria striz low; /* 统计小写字母 */ else ifstri0 stri9 dig; /* 统计数字 */ else oth; /* 统计其它字符 */ printfd d d dn,cap,low,dig,oth;6、 学生成绩计算/* r 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 includestdio.hvoid mainvoid int i,j; float score1050.0f; float allsco10,avesco10; fori0; i10; i forj0; j5; j scanff, /* 输入学生的成绩 */ fori0; i10; i allscoi 0; /* 总成绩清零 */ forj0; j5; j allscoi allscoiscoreij; /* 累加总成绩 */ avescoi allscoi/5; /* 计算平均成绩 */ fori0; i10; i printff fn,allscoi,avescoi;/* 输出成绩 */7、 姓名排序/* r 4-7 姓名排序 */由键盘任意输入10个学生的姓名(以拼音形式),将它们按照ASC码的顺序从小到大排序。 输入 10个学生的姓名(以拼音形式) 输出 按照ASC码的顺序从小到大排序 输入样例 zhangziangzaangzbangzcangzdangzeangzfangzgangzhang 输出样例 zaangzbangzcangzdangzeangzfangzgangzhangzhangziangincludestdio.hincludestring.hvoid mainvoid int i,j,k; char name1080,temp80; printfplease enter ; fori0; i10; i getsnamei; /* 输入姓名数组 */ fori0; i9; i /* 排序 */ k i; forji1; j10; j ifstrcmpnamek,namej0 k j; ifki strcpytemp,namei; strcpynamei,namek; strcpynamek,temp; /* 交换 */ fori0; i10; i putsnamei; /* 输出姓名数组 */8、 输出杨辉三角形/* r 4-8 打印杨辉三角形 */编程实现n阶n10杨辉三角形的输出,n6时,杨辉三角形如下所示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,即ai0aii1;其余位置元素的值上一行本列元素值上一行前一列元素值,如第三行第二列2就是第二行第一列第二行第二列,计算公式为aijai-1j-1 ai-1j。 应先对第一列和对角线元素赋值,然后再为其它元素赋值。 includestdio.hvoid mainvoid int i,j; int a66; fori0; i6; i aii 1; /* 主对角线为1 */ ai0 1; /* 第1列为1 */ fori2; i6; i forj1; ji; j aij ai-1j-1ai-1j; /* 计算 */ fori0; i6; i forj0; ji; j printfd ,aij; /* 输出 */ printfn; /* 换行 */ 或者include stdio.hinclude stdlib.hinclude string.hint main int n,i,j; int a2020; printfplease one number; scanfd, fori0;in;i aii1; ai01; fori2;in;i forj1;ji;j aijai-1j-1ai-1j; fori0;in;i forj0;ji;j printfd ,aij; printfn; return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值