当前位置:首页 > 编程笔记 > 正文
已解决

《明解C语言》第三版 (入门篇) 第六章练习答案

来自网友在路上 187887提问 提问时间:2023-11-21 03:29:12阅读次数: 87

最佳答案 问答题库878位专家为你答疑解惑

个别练习的解题方法很多本答案不是唯一答案

练习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-3return 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;
} 方法2int 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;
}方法2int 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;
}方法2void 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  5int 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;
}

查看全文

99%的人还看了

相似问题

猜你感兴趣

版权申明

本文"《明解C语言》第三版 (入门篇) 第六章练习答案":http://eshow365.cn/6-40852-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!