
第4章 c语言习题课.ppt
14页第第4 4章章 习题课习题课1. 改进的冒泡排序改进的冒泡排序为了解决问题为了解决问题, 在程序中设置一个在程序中设置一个变量变量flag, 用它记录在每一轮比较用它记录在每一轮比较中是否进行了交换中是否进行了交换; 在每轮比较在每轮比较开始前开始前flag=0, 如果在此轮比较中如果在此轮比较中进行了交换进行了交换, 则则flag=1, 在一轮比在一轮比较较结束后结束后, 判断判断flag的值是否为的值是否为1, 如如果果值为值为1, 则继续进行排序则继续进行排序; 如果值如果值为为0, 说明在此轮比较中没有进行说明在此轮比较中没有进行交换交换(即已经完成排序了即已经完成排序了), 此时就此时就可以终止循环可以终止循环(即结束排序即结束排序)#include 求每个人的总分和该学习小组各门课的平均成绩姓名姓名高数高数英语英语政治政治总分总分Mary857888?John908091?Mike799284?Alex838680?Stone877595????用一个二维数组用一个二维数组来存放成绩来存放成绩 int s[5][4];用一个一维数组用一个一维数组来存放来存放各门课各门课的平均的平均成绩成绩float ave[3];每个人三门课的成绩是输入的每个人三门课的成绩是输入的总分和各门课的平均成绩是计算出来的总分和各门课的平均成绩是计算出来的#include 初始时,有序序列中只有第一个数,素值插入到有序序列的合适位置初始时,有序序列中只有第一个数,其余其余N-1个数组成无序序列,则个数组成无序序列,则N个数需进个数需进N-1次插入次插入寻找在有序序列寻找在有序序列中插入位置可以从有序序列的最后一个数往前找,在未找到插入点之前中插入位置可以从有序序列的最后一个数往前找,在未找到插入点之前可以同时向后移动元素,为插入元素准备空间可以同时向后移动元素,为插入元素准备空间原始数据:原始数据:int a[6]={8, 3, 1, 5, 9, 2}; 831592初始状态初始状态831592第第1轮,插入轮,插入33381592831第第2轮,插入轮,插入18138592第第3轮,插入轮,插入585第第4轮,插入轮,插入91358929第第5轮,插入轮,插入2135892 98532教材例教材例4.8 插入排序插入排序# include 给定一个字符串,对其进行简单加密处理 分别显示加密数据和解密数据分别显示加密数据和解密数据 加密规则:只对英文字母加密,其他字符不变加密规则:只对英文字母加密,其他字符不变 小写字母的小写字母的ASCII码码+2循环,大写字母的循环,大写字母的ASCII码码-2循环979899100…118119120121122abcd…vwxyzcdef…xyzababcdezyxwvu……ABCDEZYXWVU……65666768……87888990ABCD……WXYZYZAB……UVWX121-24=97122-24=9897+2=9965+24=8966+24=9067-2=65#include "stdio.h"#define N 20void main( ){ char c[N]; int i;; printf("请输入一个字符串:请输入一个字符串:"); gets(c); for(i=0;c[i]!=‘\0’;i++) //对字符串对字符串c进行加密操作进行加密操作 { if(c[i]>='a'&&c[i]<'y') c[i]=c[i]+2; else if(c[i]=='y'||c[i]=='z') c[i]=c[i]-24; else if(c[i]>'B'&&c[i]<='Z') c[i]=c[i]-2; else if(c[i]=='A'||c[i]=='B') c[i]=c[i]+24; } puts(c); //输出加密后的字符串输出加密后的字符串 ... 见下页见下页教材例教材例4.11参考程序参考程序/*对字符串对字符串c进行解密操作进行解密操作*/for(i=0; c[i]!='\0'; i++) { if(c[i]>'b'&&c[i]<='z') c[i]=c[i]-2; else if(c[i]=='a'||c[i]=='b') c[i]=c[i]+24; else if(c[i]>='A'&&c[i]<'Y') c[i]=c[i]+2; else if(c[i]=='Y'||c[i]=='Z') c[i]=c[i]-24; } puts(c); //输出解密后的字符串输出解密后的字符串}教材例教材例4.11参考程序参考程序教材例教材例4.12::有有3个字符串个字符串,,编程序找出其中最大者。 编程序找出其中最大者 分析:分析:3个字符串可考虑用二维字符数组来存放,现设一个二维的字符个字符串可考虑用二维字符数组来存放,现设一个二维的字符数组数组str,大小为,大小为3×20,即,即3行行20列用一个一维字符数组列用一个一维字符数组string来存放来存放那个最大的字符串,首先那个最大的字符串,首先str[0]和和str[1]比较,将其中大的字符串存放在比较,将其中大的字符串存放在string中,然后中,然后string与与str[2]比较,若比较,若str[2]大于大于string,则将,则将str[2]中的中的字符串存放到字符串存放到string中abcd\0abfgh\0xyz\0str[0]str[1]str[2]string a b f g h \0xyz\0#include
