200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 浙大版《C语言程序设计(第3版)》编程题代码参考(共71题)

浙大版《C语言程序设计(第3版)》编程题代码参考(共71题)

时间:2019-07-11 00:04:56

相关推荐

浙大版《C语言程序设计(第3版)》编程题代码参考(共71题)

前言:

作者没钱买浙大的读者验证码,所以用的vscode进行编译。每道题经过一定数据测试,但难免可能会出错。另外作者是三四天内刷完题并写完这篇文章的,所以没时间每道题写思路,有看不懂的地方请私信dd。

练习2-1 Programming in C is fun!

#include<stdio.h>int main() {printf("Programming in C is fun!\n");return 0;}

练习2-3 输出倒三角图案

#include<stdio.h>int main() {int i = 0;for (i = 0; i < 4; i++) {int j = 0;for (j = 0; j <= i; j++) {printf(" ");}int m = 0;for (m = 0; m < 4 - i; m++) {printf("* ");}printf("\n");}return 0;}

练习2-4 温度转换

#include<stdio.h>int main() {int F = 150;int C = 5 * (F - 32) / 9;printf("fahr = %d,celsius =%d ",F,C);return 0;}

练习2-6 计算物体自由下落的距离

#include<stdio.h>int main() {float h = (10 * 3 * 3) / 2.0;printf("%.2f", h);return 0;}

练习2-8 计算摄氏温度

#include<stdio.h>int main(){int f = 0;scanf("%d", &f);int c = 5 * (f - 32) / 9;printf("Celsius = %d", c);return 0;}

练习2-9 整数四则运算

#include<stdio.h>int main() {int num1 = 0;int num2 = 0;scanf("%d %d", &num1, &num2);printf("%d + %d = %d\n", num1, num2, num1 + num2);printf("%d - %d = %d\n", num1, num2, num1 - num2);printf("%d * %d = %d\n", num1, num2, num1 * num2);printf("%d / %d = %d\n", num1, num2, num1 / num2);return 0;}

练习2-10 计算分段函数[1]

#include<stdio.h>int main() {float x = 0.0f;scanf("%f", &x);if (x == 0) {printf("f(%.1f) = %.1f",(int)x,(int)x);}else {printf("f(%.1f)= %.1f", x, 1.0 / x);}return 0;}

练习2-11 计算分段函数[2]

#include<math.h>int main() {float x = 0.0f;scanf("%f", &x);if (x >= 0) {printf("f(%.2f) = %.2f", x,sqrt(x));}else {printf("f(%.2f) = %.2f", x, (((x + 1) * (x + 1)) + (2 * x) + (1 / x)));}return 0;}

练习2-12 输出华氏-摄氏温度转换表

int main() {int lower = 0;int upper = 0;scanf("%d %d", &lower, &upper);if ((lower <= upper) && upper <= 100) {printf("fahr celsius\n");int i = 0;for (i = lower; i <= upper; i += 2) {printf("%d %6.1f\n", i, (5 * (i - 32) / 9.0));}}else {printf("Invalid\n");}return 0;}

练习2-13 求N分之一序列前N项和

int main() {int n = 0;double sum = 0;scanf("%d", &n);int i = 0;for (i = 1; i <= n; i++) {sum += 1.0 / i;}printf("sum = %.6lf", sum);return 0;}

练习2-14 求奇数分之一序列前N项和

int main() {int n = 0;double sum = 0;scanf("%d", &n);int i = 0;for (i = 1; i <= 2 *n -1; i += 2) {sum += 1.0 / i;}printf("sum = %.6lf", sum);return 0;}

练习2-15 求简单交错序列前N项和

int main() {int n = 0;int flag = 1;//控制正负double sum = 0;scanf("%d", &n);int i = 0;for (i = 1; i <= 3 * n - 2; i += 3) {sum += (1.0 / i) * flag;flag = -flag;printf("sum =%.3lf\n",sum);}return 0;}

练习2-17 生成3的乘方表

#include<math.h>int main() {int n = 0;scanf("%d", &n);int i = 0;for (i = 0; i < n + 1; i++) {printf("pow(3,%d) = %d\n", i, (int)pow(3, i));}return 0;}

练习2-18 求组合数

double fact(int n) {int result = 1;int i = 0;for (i = 1; i <= n; i++){result *= i;}return result;}int main() {int m = 0;int n = 0;scanf("%d %d", &m, &n);printf("result = %d", (int)(fact(n) / (fact(m) * fact(n - m))));return 0;}

习题2-1 求整数均值

int main() {int n = 0;int count = 0;int sum = 0;while (scanf("%d", &n) != EOF) {count++;sum += n;if (count == 4) {printf("sum = %d;average = %.1lf",sum,sum / (double)count);}}return 0;}

习题2-2 阶梯电价

int main() {int n = 0;double price = 0.0;scanf("%d", &n);if ( n >= 0 && n <= 50) {price = 0.53 * n;printf("cost = %.2lf\n", price);}else if(n >= 50) {price = 0.53 * 50 + (n - 50) * (0.53 + 0.05);printf("cost = %.2lf\n", price);}else {printf("invalid\n");}return 0;}

习题2-3 求平方与倒数序列的部分和

int main() {int m = 0;int n = 0;double sum = 0.0;scanf("%d %d", &m, &n);if (m <= n && m != 0 && n != 0) {int i = 0;for (i = m; i <= n; i++) {sum += (i * i) + 1.0 / i;}printf("sum = %.6lf", sum);}return 0;}

习题2-4 求交错序列前N项和

#include<math.h>int main() {int n = 0;double sum = 0;scanf("%d", &n);int i = 0;int j = 0;for (i = 1,j = 1; i <= n; i++,j += 2) {sum += pow(-1, i + 1) * i / j ;}printf("%.3f", sum);return 0;}

习题2-5 求平方根序列前N项和

#include<math.h>int main() {int n = 0;double sum = 0.0;scanf("%d", &n);int i = 0;for (i = 1; i <= n; i++) {sum += sqrt(i);}printf("%.2lf", sum);return 0;}

习题2-6 求阶乘序列前N项和

int main() {int n = 0;int ret = 1;int sum = 0;scanf("%d", &n);int i = 0;for (i = 1; i <= n; i++) {ret *= i;sum += ret;}printf("%d", sum);return 0;}

练习3-2 计算符号函数的值

enum Sign{LESS_THAN = -1,EQULA,MORE_THAN};int main() {int n = 0;scanf("%d", &n);if (n > 0) {printf("sign(%d) = %d",n, MORE_THAN);}else if (n == 0) {printf("sign(%d) = %d", n, EQULA);}else {printf("sign(%d) = %d", n, LESS_THAN);}return 0;}

练习3-3 统计学生平均成绩与及格人数

int main() {int n = 0;int score = 0;double sum = 0.0;int count = 0;scanf("%d",&n);int i = 0;for (i = 0; i < n; i++) {scanf("%d", &score);if (score >= 60) {count++;}sum += score;}printf("average = %.1lf\ncount = %d\n", sum / n,count);return 0;}

练习3-4 统计字符

#include<ctype.h>int main() {char c = '0';int letter = 0;int blank = 0;int digit = 0;int other = 0;int count = 0;while (count != 10){count++;c = getchar();if (isalpha(c)){letter++;}else if (isspace(c)) {blank++;}else if (isdigit(c)){digit++;}else {other++;}}printf("letter = %d, blank = %d,digit = %d,other = %d\n", letter, blank, digit, other);return 0;}

练习3-5 输出闰年

int main() {int year = 0;int is_leap = 1;scanf("%d", &year);if (year < 2001 || year > 2100) {printf("invalid\n");return;}int i = 0;for (i = 2001; i <= year; i++) {if (i % 400 == 0 || (i % 100 != 0 && i % 4 == 0)) {printf("%d\n", i);is_leap = 0;}}if (is_leap) {printf("none\n");}return 0;}

练习3-7 成绩转换

int main() {int score = 0;scanf("%d", &score);if (score >= 90 && score <= 100) {printf("A\n");}else if (score >= 80) {printf("B\n");}else if (score >= 70) {printf("C\n");}else if (score >= 60) {printf("D\n");}else {printf("E\n");}return 0;}

练习3-8 查询水果价格

void menu(){printf("[1]apple\n");printf("[2]pear\n");printf("[3]orange\n");printf("[4]grape\n");printf("[0]exit\n");}int main() {int count = 0;int input = 0;menu();do { count++;scanf("%d", &input);switch (input){case 1:printf("price = %.2f\n", 3.0);break;case 2:printf("price = %.2f\n", 2.5);break;case 3:printf("price = %.2f\n", 4.1);break;case 4:printf("price = %.2f\n", 10.2);case 0:break;default:printf("price = 0.00");break;}} while (count != 5 && input);}

习题3-1 比较大小

int main() {int a = 0;int b = 0;int c = 0;int tmp = 0;scanf("%d %d %d", &a, &b, &c);if (a > b) {tmp = a;a = b;b = tmp;}if (a > c) {tmp = a;a = c;c = tmp;}if (b > c) {tmp = b;b = c;c = tmp;}printf("%d->%d->%d", a, b, c);return 0;}

习题3-2 高速公路超速处罚

int main() {double car_speed = 0;double limit = 0;double over_speed = 0;scanf("%d %d", &car_speed, &limit);over_speed = car_speed / limit;if (over_speed < 1.1) {printf("ok\n");}else if (over_speed >= 1.1 && over_speed < 1.5){printf("exceed %d%%.ticket200", (int)((over_speed - 1) * 100));}else {printf("exceed %d%%.license revoked", (int)((over_speed - 1) * 100));}return 0;}

习题3-3 出租车计价

int main() {double kilo = 0;int wait_time = 0;double money = 0;scanf("%lf %d", &kilo, &wait_time);if (kilo <= 3.0) {money += 10.0;}else if (kilo > 3.0 && kilo <= 10.0) {money += 10 + (kilo - 3) * 2;}else {money += 10 + (kilo - 10) * 3;money += ((kilo - 3 - (kilo - 10)) * 2);}if (wait_time > 5) {money += 2 * (wait_time / 5);}printf("%d",(int) (money + 0.5));return 0;}

习题3-4 统计学生成绩

int main() {int score = 0;int person_num = 0;int a = 0;int b = 0;int c = 0;int d = 0;int e = 0;scanf("%d", &person_num);getchar();int i = 0;for (i = 0; i < person_num; i++) {scanf("%d", &score);if (score >= 90) {a++;}else if (score >= 80) {b++;}else if (score >= 70) {c++;}else if (score >= 60) {d++;}else {e++;}}printf("%d %d %d %d %d", a, b, c, d, e);}

习题3-5 三角形判断

#include<math.h>int main() {int x1, y1, x2, y2, x3, y3 = 0;scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3);double a = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));double b = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));double c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));if (a + b > c && b + c > a && a + c > b) {printf("L = %.2lf,A = %.2lf\n", a + b + c, a * b / 2);}else {printf("impossible");}return 0;}

练习4-3 求给定精度的简单交错序列部分和

#include<stdio.h>#include<math.h>int main() {double eps = 0.0;double sum = 0.0;scanf("%lf", &eps);int i = 1;do {sum += pow(-1, i + 1) * 1.0 / ((3 * i) - 2);i++;} while (1.0 / (3 * i - 2) > eps);sum += pow(-1, i + 1) * 1.0 / ((3 * i) - 2);printf("sum = %.6lf", sum);return 0;}

练习4-6 猜数字游戏

#include<stdio.h>void menu() {printf("**********************************\n");printf("*************1.play***************\n");printf("*************2.exit***************\n");printf("**********************************\n");}void game() {int count = 0;int guess_count = 0;int guess_num = 0;int num = 0;printf("请输入随机数和猜的最大次数\n");scanf("%d %d", &num, &guess_count);while (1) {scanf("%d", &guess_num);if (count > guess_count) {printf("gameover!\n");return;}else {count++;if (guess_num < 0) {printf("gameover!\n");return;}if (guess_num < num) {printf("to small\n");}else if (guess_num > num){printf("to big\n");}else {;break;}}}if (count == 1) {printf("bingo\n");}else if (count <= 3) {printf("luck you\n");}else {printf("good guess\n");}}int main() {int input = 0;do {menu();printf("请选择->\n");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("exit\n");break;default:printf("选择错误,请重新输入\n");break;}} while (input);return 0;}

练习4-7 求e的近似值

#include<stdio.h>int cal(int n){int i = 0;int ret = 1;for (i = 1; i <= n; i++) {ret *= i;}return ret;}int main() {int n = 0;scanf("%d",&n);double sum = 1.0;int i = 0;for (i = 1; i < n + 1; i++) {sum += 1.0 / cal(i);}printf("%.8lf", sum);return 0;}

练习4-10 找出最小值

#include<stdio.h>int main() {int n = 0;int min = 0;int num = 0;scanf("%d", &n);scanf("%d", &num);min = num;int i = 0;for (i = 1; i < n; i++) {scanf("%d", &num);if ( num < min) {min = num;}}printf("min = %d", min);return 0;}

练习4-11 统计素数并求和

#include<math.h>#include<stdio.h>int main() {int m = 0;int n = 0;int count = 0;int sum = 0;scanf("%d %d", &m, &n);int i = 0;for (i = m; i <= n; i++) {int j = 0;for (j = 2; j <= sqrt(i); j++) {if (i % j == 0) {break;}}if (j > sqrt(i)) {count++;sum += i;}}printf("%d %d", count, sum);return 0;}

习题4-1 求奇数和

#include<stdio.h>int main() {int n = 0;int sum = 0;while (scanf("%d", &n)) {if (n <= 0) {break;}if (n % 2 != 0) {sum += n;}}printf("%d", sum);return 0;}

习题4-2 求幂级数展开的部分和

#include<math.h>#include<stdio.h>int cal(int n) {int i = 0;int ret = 1;for (i = 1; i <= n; i++) {ret *= i;}return ret;}int main() {double x = 0.0;scanf("%lf", &x);double sum = 1;int i = 1;while ((pow(x, i) / cal(i)) > 0.00001) {sum += pow(x,i)/ cal(i);i++;}sum += pow(x, i) / cal(i);printf("%.4lf", sum);return 0;}

习题4-3 求分数序列前N项和

#include<stdio.h>int main() {int n = 0;scanf("%d", &n);double i = 0;double j = 0;int k = 0;double sum = 0.0;for (i = 2, j = 1, k = 0; k < n; k++) {sum += i / j;double tmp = i;i = i + j;j = tmp;}printf("%.2lf", sum);return 0;}

习题4-4 特殊a串数列求和

#include<stdio.h>#include<math.h>int main() {int m = 0;int n = 0;int sum = 0;int tmp = 0;scanf("%d %d", &m, &n);int i = 0;for (i = 0; i < n; i++) {tmp =tmp + m * pow(10, i);sum += tmp ;}printf("%d", sum);return 0;}

习题4-5 换硬币

#include<stdio.h>int main() {int n = 0;scanf("%d", &n);int total = 0;int i = 0;for (i = 1; i <= n / 5; i++) {int j = 0;for (j = 1; j <= n / 2; j++) {int z = 0;for (z = 1; z <= n ; z++) {if ((i * 5 + j * 2 + z * 1) == n) {printf("fen5:%d,fen2:%d,fen1:%d,total = %d \n", i, j, z,i + j + z);total++;}}}}printf("count = %d",total);return 0;}

习题4-6 水仙花数

#include<stdio.h>#include<math.h>int main() {int n = 0;int tmp = 0;int sum = 0;scanf("%d", &n);int i = 0;for (i = (int)pow(10,n - 1); i < (int)pow(10,n); i++) {int tmp = i;while (tmp) {sum += (int)pow(tmp % 10,n);tmp = tmp / 10;}if (sum == i) {printf("%d\n", i);}sum = 0;}return 0;}

习题4-7 最大公约数和最小公倍数

#include<stdio.h>int main() {int m = 0;int n = 0;scanf("%d %d", &m, &n);int m1 = m;int n1 = n;while (m1 % n1) {int c = m1 %n1;m1 = n1;n1 = c;}printf("%d %d", n1, m * n / n1);return 0;}

习题4-8 高空坠球

#include<math.h>#include<stdio.h>int main() {int h = 0;int n = 0;scanf("%ld %ld", &h, &n);int i = 1;double bouns_dis = 0.0;double bouns_hight = 0.0;bouns_hight = h;if (n == 0) {printf("%.1lf %.1lf\n", 0.0, 0.0);}else {while (n) {bouns_hight = bouns_hight / 2;bouns_dis += bouns_hight + bouns_hight * 2;n--;}bouns_dis = bouns_dis - bouns_hight;printf("%.1lf %.1lf\n",bouns_dis,bouns_hight);}return 0;}

习题4-9 打印菱形图案

#include<stdio.h>int main() {int m = 0;scanf("%d", &m);int n = m / 2 + 1;int i = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < (n - 1) - i; j++) {printf(" ");}int z = 0;for (z = 0; z < (2 * i) + 1 ; z++) {printf("* ");}printf("\n");}for (i = 0; i < n - 1; i++){int j = 0;for (j = 0; j <= i; j++) {printf(" ");}int z = 0;for (z = 0; z < 2 *(n - 1) - (2 * i + 1); z++){printf("* ");}printf("\n");}return 0;}

习题4-10 猴子吃桃问题

#include<stdio.h>int main() {int n = 0;int peach = 1;scanf("%d", &n);while (n != 1) {peach = (peach + 1)* 2 ;n--;}printf("%d", peach);return 0;}

习题4-11 兔子繁衍问题

#include<stdio.h>int main() {int n = 0;int a = 1;int b = 0;int c = 0;int year = 0;scanf("%d", &n);while (b < n) {if (year == 1 || year == 2) {b = 1;}c = a + b;a = b;b = c;year++;}printf("%d", year);return 0;}

习题6-7 简单计算器

#include<stdio.h>int main() {char ch = '0';int num = 0;int ret = 0;int flag = 0;scanf("%d%c", &num,&ch);ret = num;while ( ch != '=' ) {scanf("%d", &num);switch (ch) {case '+':ret += num;break;case '-':ret -= num;break;case '*':ret *= num;break;case '/':if (ret != 0) {ret /= num;}else {printf("error\n");flag = 1;}break;case '=':break;default:printf("error\n");flag = 1;break;}if (flag) {break;}scanf("%c", &ch);}if (flag == 0) {printf("%d", ret);}return 0;}

习题6-8 统计一行文本的单词个数

#include<stdio.h>int main() {int count = 0;char ch = 0;ch = getchar();while (ch != '\n') {if (ch != ' ') {ch = getchar();if (ch == ' ' || ch == '\n') {count++;}continue;}else if (ch == ' ') {ch = getchar();}}printf("%d", count);return 0;}

练习7-2 求最大值及其下标

#include<stdio.h>int main() {int n = 0;int num = 0;int max_num = 0;int flag = 0;scanf("%d", &n);int i = 0;for (i = 0; i < n; i++) {scanf("%d", &num);if (i == 0) {max_num = num;}if (i > 0) {if (max_num < num) {max_num = num;flag = i;}}}printf("%d %d", max_num, flag);return 0;}

练习7-3 将数组中的数逆序存放

#include<stdio.h>int main() {int n = 0;int arr[10] = { 0 };scanf("%d", &n);int i = 0;for (i = 0; i < n; i++) {scanf("%d",&arr[i]);}int * left = arr;int * right = arr + n - 1;int tmp = 0;while (left < right) {tmp = *left;*left = *right;*right = tmp;left++;right--;}for (i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}

练习7-4 找出不是两个数组共有的元素

#include<stdio.h>int main() {int arr1[20] = { 0 };int arr2[20] = { 0 };int arr3[40] = { 0 };int n = 0;scanf("%d", &n);int tmp1 = n;int i = 0;while (i < tmp1) {scanf("%d", &arr1[i]);i++;}scanf("%d", &n);int tmp2 = n;i = 0;while (i < tmp2) {scanf("%d", &arr2[i]);i++;}int k = 0;i = 0;for (i = 0; i < tmp1; i++) {int j = 0;for (j = 0; j < tmp2; j++) {if (arr1[i] == arr2[j]) {break;}}if (j == tmp2) {arr3[k++] = arr1[i];}}i = 0;for (i = 0; i < tmp2; i++) {int j = 0;for (j = 0; j < tmp1; j++) {if (arr2[i] == arr1[j]) {break;}}if (j == tmp1) {arr3[k++] = arr2[i];}}int count = 0;for (i = 0; i < k; i++) {int j = 0;for (j = 0; j < i; j++) {if (arr3[i] == arr3[j]) {break;}}if (i == j) {printf("%d ", arr3[j]);}}return 0;}

练习7-7 矩阵运算

#include<stdio.h>int main() {int arr[10][10] = { 0 };int n = 0;int sum = 0;scanf("%d", &n);int i = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++){scanf("%d", &arr[i][j]);}}for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++) {if (i == n - 1 || j == n - 1 || i + j == n - 1) {;}else {sum += arr[i][j];}}}printf("%d", sum);return 0;}

练习7-8 方阵循环右移

//7 - 8 两种思路,1.先打印n-m ...列,再打印剩下的列,2.取模#include<stdio.h>int main() {int m = 0;int n = 0;int arr[6][6] = { 0 };scanf("%d %d", &m, &n);int i = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++) {scanf("%d", &arr[i][j]);}}if (m > n)m = m % n;//去掉重复移动步数else {for (i = 0; i < n; i++) {int j = 0;for (j = n - m; j < n; j++) {printf("%d ", arr[i][j]);}int z = 0;for (z = 0; z < n - m; z++) {printf("%d ", arr[i][z]);}printf("\n");}}return 0;}#include<stdio.h>int main() {int m = 0;int n = 0;int arr[6][6] = { 0 };scanf("%d %d", &m, &n);int i = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++) {scanf("%d", &arr[i][j]);}}if (m > n)m = m % n;//去掉重复移动步数else {int i = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++) {printf("%d ", arr[i][(j + n - m) % 3]);}printf("\n");}}return 0;}

练习7-9 计算天数

#include<stdio.h>int is_leapyear(int year) {if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {return 1;}return -1;}int main() {int year = 0;int month = 0;int day = 0;scanf("%d/%d/%d",&year,&month,&day);int count = 0;int i = 0;for (i = 1; i < month; i++) {if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {count += 31;}else if (i == 4 || i == 6 || i == 9 || i == 11) {count += 30;}else {if (is_leapyear(year) == 1) {count += 29;}else {count += 28;}}}printf("%d", count + day);return 0;}

练习7-10 查找指定字符

#include<stdio.h>#include<string.h>int main() {char c = '0';char str[81] = { '0' };scanf("%c", &c);scanf("%s", str);int len = strlen(str);int right = len - 1;int flag = 0;while (right >= 0) {if (c == str[right]) {flag = 1;break;}right--;}if (flag) {printf("%d", right);}elseprintf("not found!");return 0;}

练习7-11 字符串逆序

#include<stdio.h>#include<string.h>int main() {char str[80] = { '0' };int i = 0;while ((str[i] = getchar()) !='\n') {i++;}char * left = str;int len = strlen(str);char * right = str + len - 2;char tmp = '0';while (left < right) {tmp = *left;*left = *right;*right = tmp;left++;right--;}printf("%s", str);return 0;}

习题7-1 选择法排序

//1冒泡思路#include<stdio.h>int main() {int n = 0;int arr[10] = { 0 };scanf("%d", &n);int i = 0;while (i < n) {scanf("%d", &arr[i]);i++;}int tmp = 0;int flag = 0;for (i = 0; i < n - 1; i++) {int j = 0;for (j = 0; j < n - 1 -i; j++) {if (arr[j] < arr[j + 1]) {tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;flag = 1;}}if (flag == 0) {break;}}for (i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}//选择排序思路#include<stdio.h>int main() {int n = 0;int arr[10] = { 0 };scanf("%d", &n);int i = 0;while (i < n) {scanf("%d", &arr[i]);i++;}int max = 0;i = 0;for (i = 0; i < n; i++) {max = i;int j = 0;for (j = i + 1; j < n; j++) {if (arr[max] < arr[j]) {max = j;}}if (arr[i] != arr[max]) {arr[i] = arr[i] + arr[max];arr[max] = arr[i] - arr[max];arr[i] = arr[i] - arr[max];}}for (i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}

习题7-2 求一批整数中出现最多的个位数字

#include<stdio.h>int main() {int n = 0;int num = 0;int arr[10];scanf("%d", &n);int j = 0;for (j = 0; j < 10; j++) {arr[j] = 0;}int i = n;while (i) {scanf("%d", &num);while (num) {arr[num % 10]++;num /= 10;}i--;}int max = arr[0];for (i = 0; i < 10; i++) {if (max < arr[i]) {max = arr[i];}}printf("%d :", max);for (i = 0; i < 10; i++) {if (arr[i] == max) {printf("%d ", i);}}return 0;}

习题7-3 判断上三角矩阵

int main() {int t = 0;int n = 0;int arr[10][10] = { 0 };int len = sizeof(arr) / sizeof(arr[0]);scanf("%d", &t);int flag = 0;int i = 0;for (i = 0; i < t; i++) {scanf("%d", &n);int j = 0;for (j = 0; j < n; j++) {int m = 0;for (m = 0; m < n; m++) {scanf("%d", &arr[j][m]);}}for (j = 0; j < n; j++) {int m = 0;for (m = 0; m < n; m++) {if (m < j) {if (arr[j][m] != 0) {flag = 1;break;}}}}if (flag == 1) {printf("no");}else{printf("yes");}flag = 0;}return 0;}

习题7-4 求矩阵各行元素之和

#include<stdio.h>int main() {int m = 0;int n = 0;int arr[20][20] = { 0 };scanf("%d %d", &m, &n);int i = 0;for (i = 0; i < m; i++) {int j = 0;for (j = 0; j < n; j++) {scanf("%d", &arr[i][j]);}}int sum = 0;for (i = 0; i < m; i++) {int j = 0;for (j = 0; j < n; j++) {sum += arr[i][j];}printf("%d\n", sum);sum = 0;}return 0;}

习题7-5 找鞍点

#include<stdio.h>int main() {int n = 0;int arr[6][6] = { 0 };scanf("%d", &n);int i = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++) {scanf("%d", &arr[i][j]);}}int max = arr[0][0];int y = 0;int flag = 0;for (i = 0; i < n; i++) {int j = 0;for (j = 0; j < n; j++) {if (max <= arr[i][j]) {max = arr[i][j];y = j;}}int z = 0;for (z = 0; z < n; z++) {if (max > arr[z][y]) {flag = 0;break;}}if (z == n) {flag = 1;break;}max = arr[i++][0];}if (flag == 0) {printf("none\n");}else {printf("%d %d", i, y);}return 0;}

习题7-6 统计大写辅音字母

#include<stdio.h>int main() {char ch = '0';int count = 0;while ((ch = getchar()) != '\n') {if (ch > 'A' && ch <= 'Z' && ch != 'E' && ch != 'I' && ch != 'O' && ch != 'U'){count++;}}printf("%d", count);return 0;}

习题7-7 字符串替换

#include<stdio.h>int main() {char ch = '0';while ((ch = getchar()) != '\n') {if (ch >= 'A' && ch <= 'Z') {ch = 'Z' - (ch - 'A');}putchar(ch);}return 0;}

习题7-8 字符串转换成十进制整数

#include<stdio.h>#include<math.h>int main() {char arr[20] = { 0 };char num[20] = { 0 };scanf("%s", arr);char * s = arr; int i = 0;while (*s != '#') {if ((*s >= '0' && *s <= '9') || ((*s >= 'a') && (*s <= 'f')) || ((*s >= 'A') && (*s <= 'F'))) {num[i++] = *s;}s++;}num[i] = '\0';char * n = num;int count = 0;while (*n) {if (*n >= 'a' && *n <= 'z') {*n = *n - 32;}n++;count++;}n = num;long sum = 0;while (*n) {if (*n >= '1' && *n <= '9') {sum += (long)(*n - '0') * (long)pow(16, --count);}else if (*n >= 'A' && *n <= 'Z') {sum += (long)(*n - 55) * (long)pow(16, --count);}n++;}s = arr;int flag = 1;while (*s != num[0]) {if (*s == '-') {flag = -1;break;}s++;}printf("%ld", sum * flag);return 0;}

习题8-7 字符串排序

#include<stdio.h>#include<string.h>int main() {char str[5][81] = {0};int i = 0;while (i < 5) {scanf("%s", &str[i]);i++;}char tmp[81] = { 0 };for (i = 0; i < 4; i++) {int j = 0;for (j = 0; j < 5 - 1 - i; j++) {if ((strcmp(str[j], str[j + 1])) > 0) {strcpy(tmp, str[j]);strcpy(str[j], str[j + 1]);strcpy(str[j + 1], tmp);}}}printf("after sorted:\n");for (i = 0; i < 5; i++) {printf("%s\n", str[i]);}return 0;}

习题8-10 输出学生成绩

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>int main() {int n = 0;scanf("%d", &n);int * ptr = ((int *)malloc(sizeof(int) * n));if (ptr == NULL) {printf("ptr : %s", strerror(errno));return;}double sum = 0;double max = 0.0;double min = 100.0;int i = 0;for (i = 0; i < n; i++) {scanf("%d", ptr + i);if (*(ptr + i) > max) {max = *(ptr + i);}if (*(ptr + i) < min) {min = *(ptr + i);}sum += *(ptr + i);}printf("average = %2lf\n", sum / n);printf("max = %2lf\n", max);printf("min = %2lf\n", min);free(ptr);ptr = NULL;return 0;}

习题9-1 时间换算

#include<stdio.h>int main() {int h = 0;int m = 0;int s = 0;int input = 0;scanf("%d:%d:%d", &h, &m, &s);scanf("%d", &input);if (input / (60 * 60) != 0) {h += input / (60 * 60);input %= 60 * 60;}if (input / 60 != 0) {h += input / 60;input %= 60;}s = s + input;if (s >= 60) {m += s / 60;s %= 60;}if (m >= 60) {h += m / 60;m %= 60;}if (h >= 24) {h %= 24;}printf("%02d:%02d:%02d", h, m, s);return 0;}//2.#include<stdio.h>int main() {int h = 0;int m = 0;int s = 0;int input = 0;scanf("%d:%d:%d", &h, &m, &s);scanf("%d", &input);s += input;while (s >= 60) {s -= 60;m++;if (m >= 60) {m -= 60;h++;}if (h >= 24) {h -= 24;}}printf("%02d:%02d:%02d", h, m, s);return 0;}

习题9-3 平面向量加法

#include<stdio.h>struct XL {double x;double y;};int main() {struct XL v1 = { 0 };struct XL v2 = { 0 };scanf("%lf %lf %lf %lf", &v1.x, &v1.y, &v2.x, &v2.y);v1.x += v2.x;v1.y += v2.y;if (v1.x > -0.05 && v1.x <= 0.05){v1.x = 0.0;}if (v1.y > -0.05 && v1.y <= 0.05){v1.x = 0.0;}printf("(%.1lf,%.1lf)", v1.x, v1.y);return 0;}

习题9-4 查找书籍

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>struct BOOK {char bookname[20];double price;};int main() {int n = 0;scanf("%d", &n);struct BOOK * p = (struct BOOK * )malloc(n * sizeof(struct BOOK));if (p == NULL) {printf("p :%s", strerror(errno));return;}struct BOOK max = {0};struct BOOK min = { 0 };int i = 0;for (i = 0; i < n; i++) {scanf("%s %lf", p[i].bookname, &p[i].price);if (i == 0) {max = p[i];min = p[i];}if (i >= 1) {if (max.price < p[i].price) {max = p[i];}if (min.price > p[i].price) {min = p[i];}}}printf("%.2lf,%s\n", max.price, max.bookname);printf("%.2lf,%s\n", min.price, min.bookname);free(p);p = NULL;return 0;}

习题9-5 通讯录排序

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<math.h>typedef struct Person_info {char name[11];char birth[9];char tel[20];}info;int com(char * b1, char * b2) {long year1 = 0;long year2 = 0;int i = 0;for (i = 0; i < 8; i++) {//这里必须使用long类型,使用int会超出int范围year1 += ((long)(*b1 - '0')) * (long)pow(10, 8 - 1 - i);year2 += ((long)(*b2 - '0')) * (long)pow(10, 8 - 1 - i);}if (year1 > year2) {return 1;}return -1;}int main() {int n = 0;scanf("%d", &n);info * p = (info *)malloc(n * sizeof(info));if (p == NULL) {printf("p:%s", strerror(errno));}int i = 0;for (i = 0; i < n; i++) {scanf("%s %s %s", p[i].name, p[i].birth, p[i].tel);}info tmp = { 0 };for (i = 0; i < n - 1; i++) {int j = 0;for (j = 0; j < n - 1 - i; j++) { if (com(p[j].birth, p[j + 1].birth) < 0)tmp = p[j];p[j] = p[j + 1];p[j + 1] = tmp;}}for (i = 0; i < n; i++) {printf("%s %s %s\n", p[i].name, p[i].birth, p[i].tel);}free(p);p = NULL;return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。