个别练习的解题方法很多本答案不是唯一答案
练习6-1
- int main()//6-1(1)
- {
- int a, b, c, min;
-
- scanf("%d%d", &a, &b);
-
- min = a<b?a:b;
-
- printf("最小值 = %d", min);
-
- return 0;
- }
-
- 方法二
- int add(int x,int y)//6-1(2)
- {
- int min=0;
- if(x>y) min = y;
- if(y>x) min = x;
-
- printf("min=%d",min);
-
- return min;
- }
-
- int main()
- {
- int a=4;
- int b=6;
-
- add(a,b);
-
- return 0;
- }
练习6-2
- int add(int a,int b,int c)//6-2(1)
- {
- int min;
-
- if (a < b) {
- if (a < c) {
- min = a;
- } else {
- min = c;
- }
- } else {
- if (b < c) {
- min = b;
- } else {
- min = c;
- }
- }
-
- printf("最小的数是 %d\n", min);
-
- }
-
- int main()
- {
- int a, b, c;
-
- printf("请输入三个整数:\n");
- scanf("%d%d%d", &a, &b, &c);
- add(a,b,c);
-
- return 0;
- }
-
-
- 方法二
- int add(int x,int y,int z)//6-2(2)
- {
- int min = x; //假设x为最小数
- if (y<min) min = y;
- if (z<min) min = z;
- printf("最小数是:%d\n", min);
- }
-
- int main()
- {
- int x, y ,z;
- scanf("%d%d%d", &x, &y, &z);
- add(x, y ,z);
-
- return 0;
- }
练习6-3
- int cube(int x){//6-3
- return x*x*x;
- }
-
- int main(void)
- {
- int a;
-
- scanf("%d",&a);
- printf("%d的立方为:%d",a,cube(a));
-
- return 0;
- }
练习6-4
- int sqr(int x)//6-4(1)
- {
- 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;
- }
-
-
- 方法2
-
- int sqr(int x) {//6-4(2)
- return x * x ; //求一个数的平方
- }
-
-
- int main(void) {
- int x;
-
- printf("请输入一个数:");
- scanf("%d", &x);
- printf("它的四次幂是%d", sqr(sqr(x)));
-
- return 0;
- }
练习6-5
- int sumup(int n) {//6-5(1)
- int sum = 0;
- while (n-->0)
- {
- sum += n;
- }
- return sum;
- }
-
- int main()
- {
- int x;
-
- printf("请输入一个数:");
- scanf("%d", &x);
- printf("从1到%d之间所有整数的和是%d",x, sumup(x));
-
- return 0;
- }
-
-
- 方法2
-
- int sumup(int n)//6-5(2)
- {
- int i;
- int sum = 0;
-
- for (i = 1; i <= n; i++)
- sum += i;
- return sum;
- }
-
- int main(void)
- {
- int a;
- printf("请输入一个正整数:");
-
- do {
- scanf_s("%d", &a);
- if (a < 1)
- printf("请不要输入小于1的整数。");
- } while (a < 1);
-
- printf("从1到%d之间所有的整数的和为%d。\n", a, sumup(a));
-
- return 0;
- }
练习6-6
- void alert(int n) {//6-6(1)
- while (n-- > 0)
- {
- putchar('\a');
- }
- }
-
- int main()
- {
- int x;
- printf("请输入要发出响铃的次数:");
- scanf("%d", &x);
- alert (x);
-
- return 0;
- }
-
- 方法2
-
- void alert(int n)//6-6(2)
- {
- 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
- void hello(void)
- {
- puts("你好。");
- }
-
-
- int main(void)
- {
- hello();
- return 0;
- }
练习6-8
- 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;
- }
-
- 方法二
-
- #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
- void daoxu(int v[], int n)//不可以用const int v[]
- {
- 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;
- }
- }
- int main()
- {
- int i;
- int v[4] = {1,2,3,4};
- daoxu(v,4);
-
- for (i = 0; i < 4; i++)
- {
- printf("v[%d] = %d\n",i,v[i]);
- }
-
- return 0;
- }
练习6-10
- void intary_rcpy(int v1[], const int v2[], int n)
- {
- int i;
- for(i=0;i<n;i++)
- {
- v1[i]=v2[n-i-1];//减一才能获取v1[0]
- }
- }
- 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
- #define NUMBER 5
-
- int search_idx(const int v[], int idx[], int key, int n)
- {
- int i=0;
- int j=0;
- for(i=0;i<n;i++)
- {
- if(v[i] == key){
- j++;
- }
- idx[j] = v[i];
- }
- return j;
- }
-
- int main()
- {
- int arr1[NUMBER];
- int arr2[NUMBER + 1];
-
- int i;
- int key;
- printf("要找的:");
- scanf("%d",&key);
-
- for(i=0;i<NUMBER;i++)
- {
- printf("v[%d]=",i);
- scanf("%d",&arr1[i]);
- }
-
- int tmp = search_idx(arr1,arr2,key,NUMBER);
- printf("有%d个相同的元素",tmp);
-
- return 0;
- }
练习6-12
- 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列矩阵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
- 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
- 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;
- }