c语言对其每列的最小值,第4章 c语言习题课.ppt

《第4章 c语言习题课.ppt》由会员分享,可在线阅读,更多相关《第4章 c语言习题课.ppt(14页珍藏版)》请在人人文库网上搜索。

1、第4章 习题课,1. 改进的冒泡排序,为了解决问题, 在程序中设置一个 变量flag, 用它记录在每一轮比较 中是否进行了交换; 在每轮比较 开始前flag=0, 如果在此轮比较中 进行了交换, 则flag=1, 在一轮比较 结束后, 判断flag的值是否为1, 如 果值为1, 则继续进行排序; 如果值 为0, 说明在此轮比较中没有进行 交换(即已经完成排序了), 此时就 可以终止循环(即结束排序),#include #define N 6 void main( ) int aN , i , j , t , flag=1; for ( i=0; iaj+1 ) t=aj; aj=aj+1; a。

2、j+1=t; flag=1; for ( i=0 ; iN ; i+) printf( “%3d”, ai ); ,例: 一个学习小组有5个人, 每个人有三门课的考试成绩, 求每个人的总分和该学习小组各门课的平均成绩。,用一个二维数组来存放成绩 int s54;,用一个一维数组来存放各门课的平均成绩 float ave3;,每个人三门课的成绩是输入的 总分和各门课的平均成绩是计算出来的,#include void main( ) int i, j, s54, sum; float ave3; for(i=0; i5; i+) for(j=0; j3; j+) scanf(%d, ,输入成绩,计。

3、算总分,对每一门课(即每一列)进行处理: 先将每列的5个成绩累加求和; 再将总和除5, 得到每门课的平均分,输出结果,#include #define N 5 void main( ) int aN, bN, i, temp; for(i=0; iN; i+) scanf(%d, ,习题三 2. 交换数组a,b中对应的元素,习题三 8. 在字符串s1的最大字符后边插入字符串s2,#include #include void main( ) char s181, s240; int i, j, len1, len2, max; printf(输入字符串1:); gets(s1); printf(。

4、输入字符串2:); gets(s2); max=0; len1=strlen(s1); len2=strlen(s2); for(i=1; s1i!=0; i+) /该循环是确定插入位置 if(s1is1max) max=i; for( i=len1; i=max; i-) /将下标i之后的字符后移len2个字节 s1i+len2=s1i; j=max+1; /j指向最大字符的下一个字节处 for( i=0; ilen2; i+, j+) /将s2的字符复制到s1中 s1j=s2i; puts(s1); ,教材例4.8 插入排序,基本思想:将序列分为有序序列和无序序列,依次从无序序列中取出元素。

5、值插入到有序序列的合适位置。初始时,有序序列中只有第一个数,其余N-1个数组成无序序列,则N个数需进N-1次插入。寻找在有序序列中插入位置可以从有序序列的最后一个数往前找,在未找到插入点之前可以同时向后移动元素,为插入元素准备空间。,原始数据:int a6=8, 3, 1, 5, 9, 2;,初始状态,第1轮,插入3,3,8,3,1,第2轮,插入1,8,第3轮,插入5,8,5,第4轮,插入9,9,第5轮,插入2,9,8,5,3,2,教材例4.8 插入排序,# include #define N 20 void main() int aN, i, j, t; printf(Please inpu。

6、t %d numbers:, N); for(i=0; i=0 ,教材例4.9 求矩阵鞍点,求解思路: 从第0行开始进行如下操作:在该行中找最大值,然后标记出 它所在的列号,再判断该列中它是否是最小的,如果是则输出, 并结束;如果不是则到下一行中去寻找鞍点,教材例4.9 求矩阵鞍点,#include #define N 10 void main( ) int aNN, m, n, i, j, sign; printf(input m and n(m,najsign) /判断aisign是否是该列中的最小值 break; /如果不是最小值,终止for循环 if(j=m) printf(鞍点:%d。

7、n, aisign); ,教材例4.11:给定一个字符串,对其进行简单加密处理。 分别显示加密数据和解密数据。,加密规则:只对英文字母加密,其他字符不变。 小写字母的ASCII码+2循环,大写字母的ASCII码-2循环。,121-24=97 122-24=98,97+2=99,65+24=89 66+24=90,67-2=65,#include stdio.h #define N 20 void main( ) char cN; int i; printf(请输入一个字符串:); gets(c); for(i=0;ci!=0;i+) /对字符串c进行加密操作 if(ci=a /输出加密后的字符。

8、串 . 见下页,教材例4.11参考程序,/*对字符串c进行解密操作*/ for(i=0; ci!=0; i+) if(cib /输出解密后的字符串 ,教材例4.11参考程序,教材例4.12:有3个字符串,编程序找出其中最大者。,分析:3个字符串可考虑用二维字符数组来存放,现设一个二维的字符 数组str,大小为320,即3行20列。用一个一维字符数组string来存放 那个最大的字符串,首先str0和str1比较,将其中大的字符串存放在 string中,然后string与str2比较,若str2大于string,则将str2中的 字符串存放到string中。,str0 str1 str2,string,a b f g h 0,#include #include void main( ) char str320, string20; printf(“输入3个字符串:n”); for( int i=0; i0) strcpy(string, str0); else strcpy(string, str1); if (strcmp(str2, string)0) strcpy(string, str2); printf(“nthe largest string is:n%sn”, string); ,教材例4.12参考程序,stri表示第i行字符的首地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值