练习6-1
#include <stdio.h> int min2(int a, int b) { int min; min = (a < b) ? a : b; return min; } int main(void) { int a, b; printf("a="); scanf("%d",&a); printf("b="); scanf("%d", &b); printf("a和b中较小值为%d\n",min2(a,b)); return 0; }
练习6-2
#include <stdio.h> int min3(int a, int b, int c) { int min; min = a; if (b < a) min = b; if (c < a) min = c; return min; } int main(void) { int a, b, c; printf("a="); scanf("%d",&a); printf("b="); scanf("%d", &b); printf("c="); scanf("%d", &c); printf("a,b,c中最小值为%d\n",min3(a,b,c)); return 0; }
练习6-3
#include <stdio.h> int cube(int x) { return x*x*x; } int main(void) { int x; printf("x="); scanf("%d",&x); printf("x的立方为%d\n", cube(x)); return 0; }
练习6-4
#include <stdio.h> int sqr(int x) { return x * x; } int pow4(int x) { return sqr(x)*sqr(x); } int main(void) { int x; printf("整数x:"); scanf("%d", &x); printf("x的四次幂是%d。\n", pow4(x)); return 0; }
练习6-5
#include <stdio.h> int sumup(int n) { int i; int sum = 0; for (i = 1; i <= n; i++) { sum += i; } return sum; } int main(void) { int n; printf("整数n:"); scanf("%d", &n); printf("1到%d之间所有整数的和是%d。\n",n,sumup(n)); return 0; }
练习6-6
#include <stdio.h> void alert(int n) { int i; for (i = 0; i < n; i++) { printf("\a"); } return; } int main(void) { int n; printf("整数n:"); scanf("%d", &n); printf("连续发出%d次响铃。\n",n); alert(n); return 0; }
练习6-7
#include <stdio.h> void hello(void) { puts("你好。"); return; } int main(void) { hello(); return 0; }
练习6-8
#include <stdio.h> int min_of(const int v[], int n) { int min; int i; min = v[0]; for (i = 1; i < n; i++) { if (v[i] < min) min = v[i]; } return min; } int main(void) { int min; int v[4] = {19,63,34,76}; min = min_of(v,4); printf("min = %d\n",min); return 0; }
练习6-9
#include <stdio.h> #define NUM 4 void rev_intary(int v[], int n) { int tmp; int i; for (i = 0; i < n/2; i++) { tmp = v[i]; v[i] = v[n - 1 - i]; v[n - 1 - i] = tmp; } return; } int main(void) { int i; int v[NUM] = {19,63,34,76}; rev_intary(v,NUM); for (i = 0; i < NUM; i++) { printf("v[%d] = %d\n",i,v[i]); } return 0; }
练习6-10
#include <stdio.h> #define NUM 4 void intary_rcpy(int v1[],const int v2[],int n) { int i; for (i = 0; i < n; i++) { v1[n - 1 - i] = v2[i]; } return; } int main(void) { int i; int v2[NUM] = {19,63,34,76}; int v1[NUM]; intary_rcpy(v1,v2,NUM); for (i = 0; i < NUM; i++) { printf("v1[%d] = %d\n",i,v1[i]); } return 0; }
练习6-11
#include <stdio.h> int search_idx(const int v[],int idx[],int key,int n) { int i; int j = 0; int idx_num; for (i = 0; i < n; i++) { if (v[i] == key) { idx[j] = i; j++; } } return j; } int main(void) { int i; int num; int v[] = {1,7,5,7,2,4,7}; int key = 7; int idx[7] = {0}; num = search_idx(v,idx,key,7); printf("和key相等的元素的个数为%d。\n",num); for (i = 0; i < 7; i++) { printf("idx[%d] = %d\n",i,idx[i]); } return 0; }
练习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; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { c[i][j] = b[i][0]*a[0][j] + b[i][1] * a[1][j] + b[i][2] * a[2][j] + b[i][3] * a[3][j]; } } return; } int main(void) { int i, j; int a[4][3] = { {1,2,3} ,{4,5,6} ,{7,8,9} ,{10,11,12} }; int b[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }; int c[3][3] = { 0 }; mat_mul(a,b,c); printf("a = \n"); for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { printf("%4d",a[i][j]); } printf("\n"); } printf("b = \n"); for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%4d", b[i][j]); } printf("\n"); } printf("c = b * a = \n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%4d",c[i][j]); } printf("\n"); } return 0; }
练习6-13
#include <stdio.h> void mat_add(const int a[4][3], const int b[4][3], int c[4][3]) { int i, j; for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { c[i][j] = a[i][j] + b[i][j]; } } } 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]); } printf("\n"); } putchar('\n'); } int main(void) { int tensu[2][4][3] = { { { 91, 63, 78 },{ 67, 72, 46 },{ 89, 34, 53 },{ 32, 54, 34 } } , { { 97, 67, 82 },{ 73, 43, 46 },{ 97, 56, 21 },{ 85, 46, 35 } } }; int sum[4][3]; /* 总分 */ mat_add(tensu[0], tensu[1], sum); /* 求两次考试中成绩的总和 */ puts("第一次考试的分数"); mat_print(tensu[0]); /* 显示第一次考试的分数 */ puts("第二次考试的分数"); mat_print(tensu[1]); /* 显示第二次考试的分数 */ puts("总分"); mat_print(sum); /* 显示总分 */ return 0; }
练习6-14
#include <stdio.h> int main(void) { int i; static double a[5]; for (i = 0; i < 5; i++) { printf("a[%d] = %.1f\n",i,a[i]); } return 0; }
练习6-15
#include <stdio.h> static int n; void put_count(void) { return n++; } int main(void) { put_count(); printf("put_count:第%d次\n",n); put_count(); printf("put_count:第%d次\n", n); put_count(); printf("put_count:第%d次\n", n); return 0; }