77范文网 - 专业文章范例文档资料分享平台

西北农林科技大学C语言上机实习4答案

来源:网络收集 时间:2018-12-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实习四答案

1、 字符串连接

/* exer 4-1 两串字符连接 */由键盘任意输入两串字符,不用库函数strcat,连接将两串字符。

输入: 两串字符 输出: 连接将两串字符 输入样例: abc def 输出样例: abcdef

#include #include void main(void) { unsigned int i,j; char soustr[80],desstr[80]; //printf(\ gets(soustr); /* 输入原串 */ //printf(\ gets(desstr); /* 输入目的串 */ i = strlen(soustr); /* 取目的串尾部位置 */ for(j=0; j<=strlen(soustr); j++,i++) { soustr[i] = desstr[j]; /* 将原串依次接入目的串尾部 */ }

puts(soustr); }

2、 简单加密程序

/* exer 4-2 字符加密 */

由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。 输入: 一串字符 输出: 加密后的字符串 输入样例: abl2CDxyz 输出样例: cdl2EFzab

提示: 1. 可用gets()和puts()输入输出字符串。

2. 利用ASCII码运算进行加密。

3. 循环右移的含义是:将a-z,A-Z各看成一个环进行移动,即y右移2个字母后为a,z右移2个

字母后为b;Y右移2个字母后为A,Z右移2个字母后为B。

#include #include void main(void) { unsigned int j; char soustr[80],secstr[80]; //printf(\ gets(soustr); /* 输入原串 */

for(j=0; j<=strlen(soustr); j++) { if(soustr[j]>='A' && soustr[j]<='Z' ) secstr[j] = (soustr[j]-'A'+2)&+'A'; /*计算大写字母密文*/ else if(soustr[j]>='a' && soustr[j]<='z' ) secstr[j] = (soustr[j]-'a'+2)&+'a'; /*计算小写字母密文*/ else secstr[j] = soustr[j]; /* 其它字符不变 */ }

puts(secstr); }

3、 矩阵对角线元素求和

/* exer 4-3 主和辅对角线上元素之和 */

输入一个5×5的数组,分别求其主对角线和辅对角线上元素之和。 输入: 5×5的数组 输出: 主对角线和辅对角线上元素之和

输入样例: 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 a[5][5]; int sum1=0,sum2=0;

//printf(\ for(i=0; i<5; i++) for(j=0; j<5; j++) scanf(\ /* 输入数组 */ for(i=0; i<5; i++) { sum1 = sum1+a[i][i]; /* 主对角线 */ sum2 = sum2+a[i][4-i]; /* 辅对角线 */ } printf(\ }

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 #include void main(void) {

int i,a[10],temp;

int kmax=0,kmin=0; //printf(\

for(i=0; i<10; i++) scanf(\

for(i=0; i<10; i++) {

if(a[i]>a[kmax])

kmax = i; else if(a[i]

kmin = i; }

if(kmax == 9 && kmin == 0) {

temp = a[0]; a[0] = a[kmax];

a[kmax] = temp; } else {

temp = a[0]; a[0] = a[kmax];

a[kmax] = temp; temp = a[9]; a[9] = a[kmin];

a[kmin] = temp; }

for(i=0; i<9; i++)

printf(\ printf(\

/* 输入数组 */ /* 找最大数位置 */ /* 找最小数位置 */ /* 与最前面的数交换 */ /* 与最前面的数交换 */ /* 与最后面的数交换 */ /* 输出数组 */

}

5、 字符个数统计

/* exer 4-5 统计大写字母、小写字母、数字及其它字符的个数 */

由键盘输入任意一串字符串,将其存入一个字符数组,统计其中的大写字母、小写字母、数字以及其他字符的个数。 输入: 任意一串字符串 输出: 大写字母、小写字母、数字以及其他字符的个数。

输入样例: abcdefg123456ABCDEFG 输出样例: 7 7 6 #include #include void main(void) {

unsigned int i;

int cap=0,low=0,dig=0,oth=0; /* 定义并初始化 */ char str[80];

//printf(\

gets(str); /* 输入原串 */ for(i=0; i

if(str[i]>='A' && str[i]<='Z')

cap++; /* 统计大写字母 */ else if(str[i]>='a' && str[i]<='z')

low++; /* 统计小写字母 */ else if(str[i]>='0' && str[i]<='9')

dig++; /* 统计数字 */ else

oth++; /* 统计其它字符 */ }

printf(\ }

6、 学生成绩计算

/* exer 4-6 求每一个学生的总成绩和平均成绩 */

已知10个学生的5门课程的成绩,将其存入一个二维数组,求每一个学生的总成绩和每一个学生的平均成绩。 输入: 10个学生的5门课程的成绩 输出: 每一个学生的总成绩和每一个学生的平均成绩

输入样例: 90.5 80 70 89 84.6 91.5 81 71 88 84.7 92.5 82 72 87 84.8 93.5 83 73 86 84.9 94.5 84 74 85 84.0 95.5 85 75 84 84.1 96.5 86 76 83 84.2 97.5 87 77 82 84.3 98.5 88 78 81 84.4 99.5 89 79 80 84.5

输出样例: 414.100006 82.820000

416.200012 83.240005 418.299988 83.659996 420.399994 84.080002 421.500000 84.300003 423.600006 84.720001 425.700012 85.139999 427.799988 85.559998 429.899994 85.979996 432.000000 86.400002

#include void main(void) {

int i,j;

float score[10][5]={0.0f}; float allsco[10],avesco[10]; for(i=0; i<10; i++) for(j=0; j<5; j++)

scanf(\ /* 输入学生的成绩 */

for(i=0; i<10; i++) {

allsco[i] = 0; /* 总成绩清零 */ for(j=0; j<5; j++) {

allsco[i] = allsco[i]+score[i][j]; /* 累加总成绩 */ }

avesco[i] = allsco[i]/5; /* 计算平均成绩 */ }

for(i=0; i<10; i++)

printf(\输出成绩 */ }

7、 姓名排序

/* exer 4-7 姓名排序 */

由键盘任意输入10个学生的姓名(以拼音形式),将它们按照ASCⅡ码的顺序从小到大排序。10个学生的姓名(以拼音形式) 输出: 按照ASCⅡ码的顺序从小到大排序

输入样例:

输入:

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库西北农林科技大学C语言上机实习4答案在线全文阅读。

西北农林科技大学C语言上机实习4答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/392561.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: