练习6-1
/* 求两个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min2(int a, int b) { int min = a; if (b < min) min = b; return min; } int main(void) { int a, b, c; puts("请输入两个整数。"); printf("整数a:"); scanf("%d", &a); printf("整数b:"); scanf("%d", &b); printf("最小值是%d。\n", min2(a, b)); return 0; }
练习6-2
/* 求三个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min3(int a, int b, int c) { int min = a; if (b < min) min = b; if (c < min) min = c; return min; } int main(void) { int a, b, c; puts("请输入三个整数。"); printf("整数a:"); scanf("%d", &a); printf("整数b:"); scanf("%d", &b); printf("整数c:"); scanf("%d", &c); printf("最小值是%d。\n", min3(a, b, c)); return 0; }
练习6-3
#include <stdio.h> int cub(int x) { return x * x * x; //求一个数的立方 } int main(void) { int x; printf("请输入一个数:"); scanf("%d", &x); printf("它的立方是%d",cub(x)); return 0; }
练习6-4
#include <stdio.h> int sqr(int x) { return x * x ; //求一个数的平方 } int main(void) { int x; printf("请输入一个数:"); scanf("%d", &x); printf("它的四次幂是%d", sqr(sqr(x))); return 0; }
练习6-5
#include <stdio.h> int sumup(int n) { int sum = 0; while (n-->0) { sum += n; } return sum; } int main(void) { int x; printf("请输入一个数:"); scanf("%d", &x); printf("从1到%d之间所有整数的和是%d",x, sumup(x)); return 0; }
练习6-6
#include <stdio.h> void alert(int n) { while (n-- > 0) { putchar('\a'); } } int main() { int x; printf("请输入要发出响铃的次数:"); scanf("%d", &x); alert (x); }
练习6-7
#include <stdio.h> void hello(void) { puts("你好。"); } int main() { hello(); }
练习6-8
/* 计算英语最低分 */ #include <stdio.h> #define NUMBER 5 /* 学生人数 */ /*--- 返回元素个数为n的数组v中的最小值 ---*/ int min_of(const int v[], int n) { int i; int min = v[0]; for (i = 1; i < n; i++) if (v[i] < min) min = v[i]; return min; } int main(void) { int i; int eng[NUMBER]; int min_e; printf("请输入%d名学生的分数。\n", NUMBER); for (i = 0; i < NUMBER; i++) { printf("[%d]英语:", i + 1); scanf("%d", &eng[i]); } min_e = min_of(eng, NUMBER); /* 英语的最低分 */ printf("英语的最低分=%d\n", min_e); return 0; }
练习6-9
/* 对数组的全部元素进行倒序排列 */ #include <stdio.h> #define number 7 void rev_intary(int v[], int n) { int i; for (i = 0; i < n/ 2 - 1; i++) { /* 对数组元素进行倒序排列 */ int temp = v[i]; v[i] = v[n - 1 - i]; v[n- 1 - i] = temp; } } int main() { int i; int x[number]; for (i = 0; i < number; i++) { /* 输入元素的值 */ printf("x[%d] : ", i); scanf("%d", &x[i]); } rev_intary(x, number); puts("倒序排列了。"); for (i = 0; i < number; i++) /* 显示元素的值 */ printf("x[%d] = %d\n", i, x[i]); return 0; }
练习6-10
/* 对数组的全部元素进行倒序排列 */ #include <stdio.h> #define number 7 void intary_rcpy(int v1[], const int v2[], int n) { int i; for (i = 0; i < n; i++) { v1[i] = v2[n - i - 1]; } } int main() { int i; int x[number]; int y[number]; for (i = 0; i < number; i++) { /* 输入元素的值 */ printf("x[%d] : ", i); scanf("%d", &x[i]); } intary_rcpy(y, x, number); puts("倒序排列了。"); for (i = 0; i < number; i++) /* 显示元素的值 */ printf("y[%d] = %d\n", i, y[i]); return 0; }
练习6-11
#include <stdio.h> #define number 5 int search_idx(const int v[], int idx[], int key, int n) { int i; int x = 0; for (i = 0; i < n; i++) { if (v[i] == key) x++; idx[x] = v[i]; } return x; } int main() { int v[number]; int y[number + 1]; int i; int key; printf("要查找的值是:"); scanf("%d", &key); for (i = 0; i < number; i++) { printf("v[%d]=", i); scanf("%d", &v[i]); } int x = search_idx(v, y, key, number); printf("有%d个相同的元素", x); }
练习6-12
#include<stdio.h> void mat_mul(const int a[4][3], const int b[3][4], int c[3][3]) { int i, j, k; for (i = 0; i < 3; i++) { //计算矩阵c的值 for (j = 0; j < 3; j++) { c[i][j] = 0; for (k = 0; k < 3; k++) { c[i][j] += a[i][k] * b[k][j]; } } } } int main() { int a[4][3]; int b[3][4]; int i, j, k, x, y, c[3][3]; printf("输入4*3 个数 以空格隔开:\n"); for (i = 0; i < 4; i++) for (k = 0; k < 3; k++) scanf("%d", &a[i][k]); printf("输入3*4 个数 以空格隔开:\n"); for (i = 0; i < 3; i++) for (k = 0; k < 4; k++) scanf("%d", &b[i][k]); mat_mul(a, b, c); for (x = 0; x < 3; x++) { for (y = 0; y < 3; y++) printf("%d\t", c[x][y]); printf("\n"); } return 0; }
练习6-13
/* 求4名学生在两次考试中3课程的总分并显示(函数版) */ #include <stdio.h> /*--- 将4行3列矩阵a和b的和存储在c中 ---*/ void mat_add(const int a[4][3], const int b[4][3], int c[2][4][3]) { int x, y, z; for (x = 0; x < 2; x++) for (y = 0; y < 4; y++) for (z = 0; z < 3; z++) { c[x][y][z] = a[y][z] + b[y][z]; } } /*--- 显示4行3列矩阵m ---*/ void mat_print(const int m[4][3]) { int i, j; for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) printf("%4d", m[i][j]); putchar('\n'); } } int main(void) { int tensu1[4][3] = { {91, 63, 78}, {67, 72, 46}, {89, 34, 53}, {32, 54, 34} }; int tensu2[4][3] = { {97, 67, 82}, {73, 43, 46}, {97, 56, 21}, {85, 46, 35} }; int sum[2][4][3]; /* 总分 */ mat_add(tensu1, tensu2, sum); /* 求两次考试中成绩的总和 */ puts("第一次考试的分数"); mat_print(tensu1); /* 显示第一次考试的分数 */ puts("第二次考试的分数"); mat_print(tensu2); /* 显示第二次考试的分数 */ puts("总分"); mat_print(sum); /* 显示总分 */ return 0; }
练习6-14
#include <stdio.h> #define number 4 int main() { int i; static double x[number]; for (i = 0; i < number; i++) { printf("v[%d]=%.1f", i, x[i]); putchar('\n'); } }
练习6-15
#include <stdio.h> void put_count() { static i = 1; printf("put-count:第%d次", i++); putchar('\n'); } int main() { int i; for (i = 0; i < 5; i++) { put_count(); } }