1、夏学期 C 程序设计上机练习参考答案 1 夏 1 周 270011 简化的插入排序 270012 求平均值 570013 将数组中的数逆序存放 670014 求最大值及其下标 770015 交换最小值和最大值 870016 选择法排序 970017 在数组中查找指定的元素 1070021 求矩阵各行元素之和 1170022 矩阵运算 1270023 九九乘法表 13夏 2 周 1470024 判断上三角矩阵 1470025 算算看,这是第几天? 1570026 找鞍点(选作) .1670031 将字符串逆序存放 1770032 查找字符 1870033 统计大写辅音字母 1970034 字符串
2、替换 2070035 将十六进制字符串转换为十进制整数 2170036 将十进制字符串转换为十进制整数 2270052 统计字符出现次数 23夏 3 周 2410008 求 1100 中能被 6 整除的所有整数的和 .2420014 计算三门课程的平均成绩 2520016 计算 x 的平方 2520021 计算分段函数的值 2520022 计算摄氏温度 2670051 找最大值并交换 2780011 循环移动 2880012 在数组中查找指定元素 2980013 使用函数的选择法排序 3080014 报数 32夏 4 周 3510012 函数程序设计 3510024 计算最长的字符串长度 36
3、10025 字符串的连接 3740017 求 2/13/25/38/5. .3880021 找最大的字符串 3980022 找最长字符串 4080023 使用函数删除字符串中的字符 4180024 使用函数实现字符串复制 4280025 判断回文字符串 4380026 分类统计字符个数 44夏学期 C 程序设计上机练习参考答案 2 夏 5 周 4510014 计算函数 P(n,x) 4510016 十进制转换二进制 4610017 递归函数程序设计求 Fabonacci 数列 4810019 改错题 error10_1.cpp 4910022 编程题 5010026 指定位置输出字符串 501
4、0027 藏尾诗 5110028 改错题 error11_2.cpp 5240065 分解质因数 5340067 打印图案 54夏 6 周 5630062 输出 21 世纪所有闰年 5690001 调试示例 error09_1.cpp 5690002 时间换算 5790003 计算平均成绩 5890004 计算两个复数之积 5990005 查找书籍 6090006 通讯录排序 6190007 算算看,这是第几天? 6290008 使用函数实现时间换算 6390009 找出总分最高的学生 64其它练习 6520027 计算旅途时间。 .6520028 数字加密 .66教材习题 34 (上机练习
5、30009,统计学生成绩) .6630061 出租车计费 67教材习题 4-12(p77) 68教材习题 4-14(p77) 6950051 数字金字塔(此题与 40067 打印图案的思路相似) .69夏 1 周70011 简化的插入排序输入一个正整数 repeat (0int main(void) int i, n, x;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri = 0; i-)if (x int main(void)int i, j, n, x;int repeat, ri;int a10;scanf(“%d“, for(ri =
6、1; ri an)j=ai;ai=an;an=j;for(i = 0; i int main(void) int i, j, n, x;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri = an-1) an = x; /* 特殊情况:若 x 比所有的元素都要大 */夏学期 C 程序设计上机练习参考答案 5 else for(i = 0; i ai) continue; /* 将 x 插入到合适的位置 */j = n - 1; /* 从当前要插入的位置往后移位 */while(j = i) aj+1 = aj;j-; ai = x; /* 将 x
7、 查到当前的位置 */break;for(i = 0; i int main(void)int i, n, sum;int repeat, ri;int a10;double average;scanf(“%d“, for(ri = 1; ri int main(void)int i, n, temp;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri int main(void)int i, index, n;int ri, repeat;int a10;scanf(“%d“, for(ri = 1; ri int main(void)int
8、i, index, n, t;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri aindex)index=i;t=aindex; /* 最大值与最后一个数交换 */aindex=an-1;an-1=t;printf(“After swap: “);for(i = 0; i int main(void)int i, index, k, n, temp;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri aindex)index=i;temp=aindex;aindex=ak;ak=temp;prin
9、tf(“After sorted: “);for(i = 0; i int main(void)int flag, i, n, x;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri int main(void)int i, j, m, n, sum;int a66;scanf(“%d%d“,for(i = 0; i arowcol)col=j; flag=1; for(i=0;iaicol) flag=0; break; /* 只要当前行的最大值不是当前列的最小,放弃*/ if(flag) break; /* 找到就可以跳出循环了 */if(f
10、lag != 0)printf(“a%d%d = %dn“, row, col,arowcol);elseprintf(“NOn“);70031 将字符串逆序存放输入一个以回车结束的字符串(少于 80 个字符),将它的内容逆序输出。如“ABCD“ 的逆序为“DCBA“。输入输出示例:括号内为说明输入:Welcome to you!输出:!uoy ot emocleW思路:若输入: 0 1 2 3 4 5 要输出 5 4 3 2 1 0即第 k 个字符的位置变换成:n-k-1。由于两个位置上的值是互换的,所以只要对其中的一半数据操作就可以了。#include int main(void) int
11、 i, j, temp; char str80; i = 0; 夏学期 C 程序设计上机练习参考答案 18 while(stri = getchar( ) != n) i+; stri = 0; /* 使用0 的必要性*/for (j=0;j=A) switch(stri) case A:case E: case I: case O: case U: break;default: count+;break; i+; printf(“count = %dn“, count); 70034 字符串替换输入一个正整数 repeat (0=Aint i, s;int repeat, ri;scanf(
12、“%d“, getchar();for(ri = 1; ri =0for(i=1;iint main(void)int math, eng, comp, average; math = 87;eng = 72;comp = 93; /* 若自己增加输入语句,程序就通不过 */average=(math+eng+comp)/3;printf(“math = %d, eng = %d, comp = %d, average = %dn“, math, eng, comp, average); 20016 计算 x 的平方假设 x 的值为 3,计算 x 的平方 y,并分别以“y = x * x“和“
13、x * x = y“的形式输出 x 和 y 的值。输入输出示例:9 = 3 * 33 * 3 = 9#include int main(void)int y; int x=3;y=x*x;printf(“%d = %d * %dn“,y,x,x);printf(“%d * %d = %d“,x,x,y);20021 计算分段函数的值输入一个正整数 repeat (0int main(void)int repeat, ri;double x, y; scanf(“%d“, for(ri = 1; ri int main(void)int celsius, fahr; scanf(“%d“,cel
14、sius=5*(fahr-32)/9;夏学期 C 程序设计上机练习参考答案 27 printf(“celsius = %dn“, celsius); 70051 找最大值并交换输入一个正整数 repeat (0int main( )int i, index, n, temp;int repeat, ri;int a10;scanf(“%d“, for(ri = 1; ri void mov(int *x, int n, int m);int main(void)int i, m, n;int a80;scanf(“%d%d“, for(i = 0; i 0;j-)aj=aj-1;a0=y;mo
15、ve 方法参考 2:void mov(int *x,int n,int m)int i,j,t;for(i=0;i0;j-) t=xj;xj=xj-1;xj-1=t;80012 在数组中查找指定元素输入一个正整数 repeat (0int main(void)夏学期 C 程序设计上机练习参考答案 30 int i, index, n, res, x;int repeat, ri;int a10;int search(int list, int n, int x);scanf(“%d“, for(ri = 1; ri = repeat; ri+)scanf(“%d“, for(i = 0; i
16、n; i+)scanf(“%d“, scanf(“%d“, int search(int *list,int n,int x);res=search(a,n,x);if(res != -1)printf(“index = %dn“, res);elseprintf(“Not foundn“);int search(int *list,int n,int x)int i,t;for(i=0;in;i+)if(listi=x)t=i;break;elset=-1;return t;80013 使用函数的选择法排序输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入一个正整数 n (1n=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n 的类型是 int,函数的类型是 void。输入输出示例:括号内为说明