2016年9月20日至2016年11月12日,从学校图书馆借来的《明解c语言》看完了。

大三第一个学期,前8周,有c语言程序设计的课。课本是学校里的老师编写出版的,为了压缩空间,减少页面,书中的代码都挤成了一团,一点儿美感都没有。课后习题的参考代码输入电脑后,运行错误,仔细看一遍,是最基本的逻辑问题,最最不应该出现的错误。再加上授课老师的教法未得我心。

因此,这8周来,都是课上睡觉,课下《明解c语言》。书中的每一行代码都被我敲进过电脑,前8章的练习也依次做过。第9、10、11、12、13章,为赶时间,跟上学校课程的进度,便只敲了代码来回看了几遍,未做练习。

下下周c语言考试,基础知识已经过了一遍。而备考,则靠做课本上的习题吧。

以下,是我所做的《明解c语言》前8章的练习答案。答案不全,只是将个人觉得有点动脑儿的代码给存了下来。

练习2-1:

#include

int main()

{

int n1, n2;

puts("请输入两个整数:");

printf("整数A:"); scanf("%d", &n1);

printf("整数B:"); scanf("%d", &n2);

printf("A的值是B的值的%d%%\n", (n1*100)/n2);

}

练习2-5:

#include

int main()

{

int n1, n2;

puts("请输入两个整数:");

printf("整数A:"); scanf("%d", &n1);

printf("整数B:"); scanf("%d", &n2);

printf("A是B的%f%%。\n", (double) (n1*100) / n2);

return 0;

}

练习3-1:

#include

int main()

{

int a, b;

puts("请输入两个整数。");

printf("整数A:"); scanf("%d", &a);

printf("整数B:"); scanf("%d", &b);

if (a % b)

puts("B不是A的约数。");

else

puts("B是A的约数。");

return 0;

}

练习3-3:

#include

int main()

{

int n1;

printf("请输入一个整数:");

scanf("%d", &n1);

if (n1 >= 0)

printf("绝对值是%d。\n", n1);

else

printf("绝对值是%d。\n", -n1);

return 0;

}

练习3-8:

#include

int main()

{

int a, b, c, min;

puts("请输入3个整数。");

printf("整数A:"); scanf("%d", &a);

printf("整数B:"); scanf("%d", &b);

printf("整数C:"); scanf("%d", &c);

min = a;

min = b < min ? b : min;

min = c < min ? c : min;

printf("最小值是%d。\n", min);

return 0;

}

练习3-9:

#include

int main(void)

{

int a, b, c;

puts("请输入三个整数。");

printf("整数A:"); scanf("%d", &a);

printf("整数B:"); scanf("%d", &b);

printf("整数C:"); scanf("%d", &c);

if (a == b == c)

puts("三个值都相等。");

else if (a == b || a == c || b == c)

puts("有两个值相等。");

else

puts("三个值各不相同。");

return 0;

}

练习3-11:

#include

int main(void)

{

int no;

printf("请输入一个整数:");

scanf("%d", &no);

switch (no % 2) {

case 0 : puts("该整数是偶数。"); break;

default : puts("该整数是奇数。"); break;

}

return 0;

}

练习3-12:

#include

int main(void)

{

int month;

printf("请输入月份:");

scanf("%d", &month);

switch (month) {

case 3 : puts("是春天。"); break;

case 4 : puts("是春天。"); break;

case 5 : puts("是春天。"); break;

case 6 : puts("是夏天。"); break;

case 7 : puts("是夏天。"); break;

case 8 : puts("是夏天。"); break;

case 9 : puts("是秋天。"); break;

case 10 : puts("是秋天。"); break;

case 11 : puts("是秋天。"); break;

case 12 : puts("是冬天。"); break;

case 1 : puts("是冬天。"); break;

case 2 : puts("是冬天。"); break;

default : puts("输入的月份不存在!!\a"); break;

}

return 0;

}

练习4-1:

#include

int main()

{

int num1;

int num2;

do {

printf("请输入一个非负整数:");

scanf("%d", &num1);

if (num1 < 0)

puts("请不要输入负数。");

} while(num1 < 0);

num2 = num1;

printf("%d逆向显示的结果是", num2);

do {

printf("%d", num1 % 10);

num1 = num1 / 10;

} while(num1 > 0);

puts("。");

return 0;

}

练习4-2:

#include

int main()

{

int a;/* 输入的非负整数 */

int b;/* 用来显示输入的整数 */

int c;/* 位数 */

do {

printf("请输入一个非负整数:");

scanf("%d", &a);

if (a < 0)

puts("请不要输入负数。");

} while (a < 0);

b = a;

c = 0;

printf("%d的位数是", b);

do {

a = a / 10;

c = c + 1;

} while (a > 0);

printf("%d。 \n", c);

return 0;

}

练习4-3:

#include

int main()

{

int n1;

int n2;

int a;

int b;

int sum = 0;

puts("请输入两个整数。");

printf("整数1:"); scanf("%d", &n1);

printf("整数2:"); scanf("%d", &n2);

a = n1;

b = n2;

printf("大于等于%d", b);

printf("小于等于%d的所有整数的和是", a);

do {

sum = sum + n2;

n2 = n2 + 1;

} while (n2 <= n1);

printf("%d。 \n", sum);

return 0;

}

练习4-8:

#include

int main(void)

{

int i, no;

printf("请输入一个正整数:");

scanf("%d", &no);

i = 1;

while (i <= no){

printf("%d ", i++);

}

return 0;

}

练习4-9:

#include

int main(void)

{

int n1, n2;

printf("请输入一个整数:");

scanf("%d", &n1);

n2 = 2;

while (n2 < n1){

printf("%d ", n2);

n2 += 2;

}

putchar('\n');

return 0;

}

练习4-10:

#include

int main(void)

{

int n1, n2;

printf("请输入一个整数:");

scanf("%d", &n1);

n2 = 2;

while (n2 < n1){

printf("%d ", n2);

n2 *= 2;

}

putchar('\n');

return 0;

}

练习4-11:

#include

int main(void)

{

int no;

printf("请输入一个正整数:");

scanf("%d", &no);

while(no-- > 0){

putchar('*');

printf("\n");

}

return 0;

}

练习4-12:

# include

int main()

{

int no, sum = 0;

for (no = 1; no <= 5; no++){

sum += no;

}

printf("1到5的合计值是%d. \n", sum);

return (0);

}

练习4-13:

# include

int main()

{

int i; /*输入的整数小于10时的循环次数*/

int num; /*输入的整数*/

int l; /*输入的整数大于9时,整除10,所得到的「1234567890」的循环次数*/

int o; /*输入的整数大于9时,除余10,所得到的个位数的显示位数*/

int v;

int e;

printf("please input a integer: ");

scanf("%d", &num);

if (num <= 9)

{

for (i = 0; i < num; i++)

printf("%d", i + 1);

}

else {

l = num / 10;

o = num % 10;

for (v = 0; v < l; v++)

printf("1234567890");

for (e = 0; e < o; e++)

printf("%d", e + 1);

}

printf("\n");

return (0);

}

练习4-14:

#include

int main()

{

int start;

int end;

int interval;

printf("开始数值(cm): "); scanf("%d", &start);

printf("结束数值(cm): "); scanf("%d", &end);

printf("间隔数值(cm): "); scanf("%d", &interval);

for (start = start;start <= end; start += interval ) {

printf("%dcm %.2fkg \n", start, (double)(start - 80) * 0.7);

}

/*世卫计算方法 男性:(身高(cm)-80)*70%*/

return (0);

}

练习4-15:

#include

int main()

{

int i, j;

int a; /*横标题*/

int b; /*竖标题*/

printf(" |");

for (a = 1; a <= 9; a++) {

printf(" %d", a);

}

printf("\n");

printf("------------------------------\n");

for (i = 1; i <= 9; i++) {

printf("%d ", i);

printf("|");

for (j = 1; j <= 9; j++)

printf("%3d", i * j);

putchar('\n');

}

return (0);

}

练习4-17:

(1)

# include

int main()

{

int i, j, ln;

printf("三角形有几层: ");

scanf("%d", &ln);

for (i = ln; i > 0; i--) {

for (j = 1; j <= i; j++)

putchar('*');

putchar('\n');

}

return (0);

}

(2)

# include

int main()

{

int i, j, ln;

printf("三角形有几层:");

scanf("%d", &ln);

for (i = 0; i < ln; i++) {

for (j = 1; j <= i; j++)

putchar(' ');

for (j = 1; j <= ln - i; j++)

putchar('*');

putchar('\n');

}

return (0);

}

练习4-18:

# include

int main()

{

int n;

printf("让我们来描绘一个金字塔。\n");

printf("金字塔有几层:"); scanf("%d", &n);

int i, j, k;/*, n = 5;*/

char c1 = ' ';

char c2 = '*';

for (i = 0; i < n; i++) { /*最外层的循环语句还是控制三角形有几层呀。。。*/

for (j = 0; j < n - i; j++)

printf("%c", c1);

for (k = 0; k <= 2 * i; k++) /*根据左边的空格数来安排「*」的位置,输入「*」后直接换行了!!!*/

printf("%c", c2);

printf("\n");

}

return (0);

}

练习5-4:

#include

int main()

{

int i;

int va[5] = {15, 20, 30};

int vb[5];

for (i = 0; i < 5; i++) {

vb[0] = va[4];

vb[1] = va[3];

vb[2] = va[2];

vb[3] = va[1];

vb[4] = va[0];

}

puts(" va vb");

puts("------");

for (i = 0; i < 5; i++) {

printf("%3d%3d\n", va[i], vb[i]);

}

return 0;

}

练习5-5:

#include

int main()

{

int i;

int vx[8];

for (i = 0; i < 8; i++) {

printf("vx[%d]:", i);

scanf("%d", &vx[i]);

}

for (i = 0; i < 8; i++) {

int temp = vx[i];

vx[i] = vx[7 - i];

vx[7 - i] = temp;

}

for (i = 0; i < 8; i++) {

printf("vx[%d] = %d\n", i, vx[7 - i]);

}

return 0;

}

练习5-7:

#include

int main(void)

/*

当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。

矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。

乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

*/

{

int x[2][3], y[3][2], z[2][2], i, j, k;

puts("请输入x[2][3]的值:");

for (i = 0; i < 2; i++) {

for (j = 0; j < 3; j++) {

scanf("%d", &x[i][j]);

}

}

puts("请输入y[3][2]的值:");

for (i = 0; i < 3; i++) {

for (j = 0; j < 2; j++) {

scanf("%d", &y[i][j]);

}

}

// 将x*y的值存入z中

for (i = 0; i < 2; i++) {

for (j = 0; j < 2; j++) {

z[i][j] = 0;

for (k = 0; k < 3; k++)

z[i][j] += x[i][k] * y[k][j];

}

}

// 将矩阵z的值输出,注意换行

for (i = 0; i < 2; i++) {

for (j = 0; j < 2; j++)

printf("%d ", z[i][j]);

printf("\n");

}

return (0);

}

练习6-2:

#include

int min3(int x, int y, int z)

{

int min = x;

if (y < min) min = y;

if (z < min) min = z;

return (min);

}

int main(void)

{

int a, b, c;

puts("please input three integers.");

printf("integer 1:"); scanf("%d", &a);

printf("integer 2:"); scanf("%d", &b);

printf("integer 3:"); scanf("%d", &c);

printf("The minimal integer is %d. \n", min3(a, b, c));

return (0);

}

练习6-3:

#include

int cube(int x)

{

return (x * x * x);

}

int main(void)

{

int a;

printf("请输入一个整数:"); scanf("%d", &a);

printf("该整数的立方为:%d\n", cube(a));

return (0);

}

练习6-4:

#include

int sqr(int x)

{

return (x * x);

}

int pow4(int x)

{

return (sqr(x) * sqr(x));

}

int main(void)

{

int a;

printf("请输入一个整数。"); scanf("%d", &a);

printf("该数的四次幂为:%d\n", pow4(a));

return (0);

}

练习6-5:

#include

void alert(int no)

{

while (no-- > 0)

putchar('\a');

}

int main(void)

{

int i, a;

printf("请输入一个整数:"); scanf("%d", &a);

for (i = 1; i <= a; i++) {

alert(i);

}

return (0);

}

练习6-6:

#include

void hello(void)

{

printf("你好。\n");

}

int main(void)

{

hello(); /*若无输入语句,可直接通过写下函数名来调用函数。*/

return (0);

}

练习6-7:

#include

#define NUMBER 5

int min_of(const int vc[], int no)

{

int i;

int min = vc[0];

for (i = 1; i < no; i++)

if (vc[i] < min)

min = vc[i];

return (min);

}

int main(void)

{

int i;

int ary1[NUMBER];

printf("请输入%d个整数。 \n", NUMBER);

for (i = 0; i < NUMBER; i++){

printf("[%d]:", i + 1); scanf("%d", &ary1[i]);

}

printf("这些数中最小的一位是:%d\n", min_of(ary1, NUMBER));

return (0);

}

练习6-8:

#include

void rev_intary(int vc[], int no)

{

int i, temp;

for (i = 0; i < no / 2; i++) {

temp = vc[i];

vc[i] = vc[no - i - 1];

vc[no - i - 1] = temp;

}

}

int main(void)

{

int i;

const int n = 6;

int vc[n] = {2, 3, 5, 7, 11, 13};

rev_intary(vc, n);

for (i = 0; i < n; i++)

printf("vc[%d]:%d\n", i + 1, vc[i]);

return (0);

}

练习6-9:

#include

void intary_rcpy(int v1[], const int v2[], int no)

{

int i;

for (i = 0; i < no; i++) {

v1[i] = v2[no - 1 - i];

}

}

int main(void)

{

int i;

const int n = 6;

const int vb[] = {2, 3, 5, 7, 11, 13};

int va[n];

intary_rcpy(va, vb, n);

for (i = 0; i < n; i++)

printf("v1[%d]:%d\n", i, va[i]);

return (0);

}

练习6-10:

#include

void mul(const int ma[2][3], const int mb[3][2], int mc[2][2])

{

int i, j, k;

for (i = 0; i < 2; i++)

for (j = 0; j < 2; j++) {

for (k = 0; k < 3; k++)

mc[i][j] += ma[i][k] * mb[k][j];

}

}

int main(void)

{

int i, j;

const int ma[2][3] = {{1, 2, 3}, {4, 5, 6}};

const int mb[3][2] = {{1, 4}, {2, 5}, {3, 6}};

int mc[2][2] = {0};

mul(ma, mb, mc);

for (i = 0; i < 2; i++) {

for (j = 0; j < 2; j++)

printf("%d ", mc[i][j]);

putchar('\n');

}

return (0);

}

练习6-11:

(1)

#include

#define NUMBER 5

int max_of(int a[], int no) {

int i;

int max = a[0];

for (i = 1; i < no; i++)

if (a[i] > max)

max = a[i];

return (max);

}

int main(void)

{

int i;

int chi[NUMBER];

int mat[NUMBER];

int eng[NUMBER];

int max_c;

int max_m;

int max_e;

printf("请输入[%d]名学生的分数。\n", NUMBER);

for (i = 0; i < NUMBER; i++) {

printf("[%d]\n", i + 1);

printf("chinese: "); scanf("%d", &chi[i]);

printf(" math: "); scanf("%d", &mat[i]);

printf("english: "); scanf("%d", &eng[i]);

putchar('\n');

}

max_c = max_of(chi, NUMBER);

max_m = max_of(mat, NUMBER);

max_e = max_of(eng, NUMBER);

printf("The max score of chinese is: %d\n", max_c);

printf("The max score of math is: %d\n", max_m);

printf("The max score of english is: %d\n", max_e);

return (0);

}

(2)

#include

#define NUMBER 5

#define COURSE 3

int i, j;

void calculate(const float score[][3]);

int main()

{

float result[NUMBER][COURSE];

puts("请输入以下5名同学各三科成绩。");

for (i = 0; i < NUMBER; i++) {

printf("第[%d]名同学: ", i + 1);

for (j = 0; j < COURSE; j++)

scanf("%f", &result[i][j]);

}

calculate(result);

return (0);

}

void calculate(const float score[][COURSE])

{

float average[NUMBER] = {0};

float sum[NUMBER] = {0};

for (i = 0; i < NUMBER; i++) {

for (j = 0; j < COURSE; j++){

sum[i] += score[i][j];

}

average[i] = sum[i] / COURSE;

}

for (i = 0; i < NUMBER; i++) {

printf("第%d名学生的总成绩为:%.2f,平均分为:%.2f。\n", i + 1, sum[i], average[i]);

}

}

练习6-12:

#include

#define NUMBER 5

int ma[NUMBER]; /*static storage duration*/

int main(void)

{

int i;

//static int ma[NUMBER]; /*static storage duration*/

for (i = 0; i < NUMBER; i++)

printf("[%d]:%d \n", i + 1, ma[i]);

return (0);

}

练习8-1:

#include

#define diff(x, y) ((x) - (y))

int main(void)

{

int a, b;

puts("请输入两个整数:");

printf("integer 1:"); scanf("%d", &a);

printf("integer 2:"); scanf("%d", &b);

printf("两个整数之差为:%d。\n", diff(a, b));

return (0);

}

练习8-3:

#include

#define swap(int, x, y) (int = x)

int main(void)

{

int a, b;

int c = 0;

puts("请输入2个整数:");

printf("整数a:"); scanf("%d", &a);

printf("整数b:"); scanf("%d", &b);

swap(c, a, b);

a = b;

b = c;

printf("a = %d, b = %d \n", a, b);

return (0);

}

明解c语言实践篇翻译_《明解c语言》已看完,练习代码此奉上相关推荐

  1. 机械优化黄金分割法c语言编程,黄金分割法_机械优化设计_C语言程序.doc

    黄金分割法_机械优化设计_C语言程序黄金分割法_机械优化设计_C语言程序 黄金分割法的优化设计 实验报告 学院:机电工程 机制自动化11-03班 学号:541102010326 姓名:刘点点 1,黄金 ...

  2. r语言平均值显著性检验_最全的R语言统计检验方法_数据挖掘中R语言的运用

    最全的R语言统计检验方法_数据挖掘中R语言的运用 统计检验是将抽样结果和抽样分布相对照而作出判断的工作.主要分5个步骤:建立假设 求抽样分布 选择显著性水平和否定域 计算检验统计量 判定 假设检验(h ...

  3. 写英文论文时,数据集应如何翻译?Dataset 或者 Data set,看完你就知道!

    写英文论文时,数据集应如何翻译?Dataset 或者 Data set,看完你就知道! No.1:Dataset表示特定的数据集:Data set通常表示为任何数据集的数据集.在特定的上下文中,数据集 ...

  4. C语言 单链表通讯录基础版实现,保证看完都直呼easy

    C语言 单链表实现通讯录基础版,保证看完都大呼简单! --------------------------------- 首先在写通讯录之前,必须明确我们的需求: 因为是基础版,我在这里暂时只实现以下 ...

  5. python语言format用法_详解Python中的format格式化函数的使用方法

    format函数实现字符串格式化的功能 基本语法为: 通过 : 和 {} 来控制字符串的操作 一.对字符串进行操作 1. 不设置指定位置,按默认顺序插入 ①当参数个数等于{}个数的时候 str_1 = ...

  6. python语言基础实验_实验二Python语言基础函数包练习.doc

    实验二Python语言基础函数包练习 实验 Python语言基础函数包练习:1208 学号: 实验目的 1.Python语言包,如math.NumPySciPy和Matplotlib等函数包的使用实验 ...

  7. java语言设计论文_(C)论文(JAVA语言考试系统的设计与实现)

    3.2.3各类试题模块 1)选择题模块 http://www.paper51.com 初次进入选择题界面时,显示第一个题目的内容.可以用"上题"."下题" 按钮 ...

  8. Linux学习笔记017---文件解压命令的使用_压缩解压

    JAVA技术交流QQ群:170933152 找了两个,第一个好点,压缩 [root@sqb-v06 local]# tar -zcvf /usr/local/nginx-1.7.4_tar.gz /u ...

  9. java和c语言的区别_都说C语言不会过时,但你是否还需要掌握其他语言?

    01为什么C语言不会过时 评价任何一门编程语言,都是招人骂的.永远是这样.就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:"傻B!"这个在心 ...

  10. java脚本语言是什么_什么是脚本语言

    在维基百科上的通俗解释是,一般使用文本保存,不需要'编译'的语言的,直接由解释器的语言.脚本语言 也就是说脚本语言其实是为了方便的使用,运行简单的一门语言.就像js一样,在去掉BOM,DOM,还有No ...

最新文章

  1. 自动取款机如何使用无卡取款_如何设计700度高温下使用的自动夹具?
  2. 未来,App 就是一个人的全部
  3. PyTorch ResNet 测试
  4. PTA浙大版python程序设计题目集--第1章-3 输出“Python语言简单易学” (10 分)
  5. tensorboard可视化经常出现的两个问题
  6. Python学习笔记(三)数据类型--Number类型
  7. 763. 划分字母区间(JavaScript)
  8. fiddler如何显示IP地址栏?
  9. [Ext JS 4] 实战之多选下拉单 (带checkbox)
  10. 1085. Perfect Sequence (25)-PAT甲级真题
  11. 有时更贵的ADC是最划算的
  12. DoIP诊断概念入门
  13. jwplayer android m3u8,播放上jwplayer M3U8文件,而RTMP
  14. 文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
  15. 如何制作网页教程:如何制作网页最简单的方法
  16. 基于python分析微信好友的性别分布,区域分布,词云分析,头像拼接
  17. 信息系统项目管理师2018年上半年下午案例分析题及答案
  18. 火焰图分析Flink反压
  19. 《C++ 笔记》 Part5 C++ 资源大全中文版
  20. 双鱼板mind+环境下设置

热门文章

  1. html站点地图怎么做,网站地图(站点地图)详细介绍、以及如何制作详解
  2. sqlserver2012安装
  3. 网格交易法:数学+传统智慧战胜华尔街
  4. 机器学习——人工神经网络(NN)
  5. Chrome 插件PPAPI 开发(一)环境搭建
  6. 游戏开发中的那点英语
  7. c语言c9考试软件下载,二级c语言考试系统-无忧考吧二级c语言考试系统下载 v2018.09官方版--pc6下载站...
  8. php mysql手册下载chm_PHP7教程|PHP7中文手册下载chm版 - 欧普软件下载
  9. android gps 获取方位_Android GPS定位 获取经纬度
  10. unity3d补间动画DoTween