《明解c语言》读书笔记

1-3 输入和显示

  • puts函数只接受 一个 实参,并且在结尾自动换行

2-1运算

  • 求商运算符  :除法运算符" / ",如果是两个整数相除结果为整数如果需要保留小数时 必须将其中一个除数转换为浮点数。5/3=1 3/5=0 6.0/4=1.5   (List01)
  • 求余运算符 int%int
  • 用printf函数打印%时,要避免使用转换功能,必须写成%%,printf(“5%%3=%d\n”,5%3);当使用不具备转换说明功能的puts函数时,写一个%即可。

练习:显示读取整数的最后一位数字(对10求余)

百分比问题(list02)

  • 操作数类型不同时,会进行向上转型(int——>double),然后再运算。
  • 还是百分比问题,代码改动,因为输入的用户习惯是整数而不是实数,所以将输入整数向上转型后再进行求商运算

 1 #include<stdio.h>
 2 int main()
 3 {
 4     float num1,num2;
 5     puts("请输入第一个数:");
 6     scanf("%d",&num1);
 7     puts("请输入第一个数:");
 8     scanf("%d",&num2);
 9     printf("num1是num2的%f%%",double(num1)/num2*100);
10     getch();//持续显示dos窗口
11     return 0;
12 }

  • 条件运算符,是一个三目运算符。n1?n2:n3
  • switch语句:如果case语句后面没有break,则会顺序执行下来。

4-1  do语句

  • 逆向显示数值(规定是正数)
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int num;
 5     do
 6     {
 7         puts("请输入一个正数:");
 8         scanf("%d",&num);
 9         if(num<0)
10             puts("请重新输入一个正数!");
11     }while(num<0);
12
13     puts("逆序的正数变为:");
14
15     do
16     {
17         printf("%d",num%10);
18         num=num/10;
19     }while(num!=0);
20
21     getch();
22
23     return 0;
24 }
  • 4-13:输入整数后,循环显示1234567890,显示的位数和输入的整数值相同。例如输入12,显示:123456789012
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,j,num;
 5     j=1;
 6     printf("enter a number:");
 7     scanf("%d",&num);
 8     for(i=1;i<=num;i++)
 9     {
10         printf("%d",j);
11         j++;
12         if(j==10)
13             j=0;
14     }
15     getch();
16     return 0;
17 }

4-15 输入九九乘法表增加横轴标题

 1 #include<stdio.h>
 2 void main()
 3 {
 4     int i,j;
 5     printf("    | ");
 6     for(i=1;i<=9;i++)
 7     {
 8         printf("%3d ",i);
 9     }
10     putchar(‘\n‘);
11     for (i=0;i<=50;i++)
12     {
13         printf("-");
14     }
15     putchar(‘\n‘);
16     for(i=1;i<=9;i++)
17
18     {
19         printf(" %d  |",i);
20         for(j=1;j<=9;j++)
21         {
22
23             printf(" %3d",i*j);
24         }
25         putchar(‘\n‘);
26     }
27     getch();
28 }

5-1数组

  • 数组的声明和初始化

1)声明数组的时候,元素个数必须是常量

int n=5;int a[n];(FALSE)


2)初始化如不指定元素个数,数组会根据初始化值的个数自动进行设定

int vc[]={1,2,3,5,7};

3)初始化初始值数量不足时,会自动用0对剩余的元素进行初始化

4)不能通过赋值进行初始化

int vc[3];

vc={1,2,3};

练习:以10分为单位显示出学生的成绩分布图

结果:

代码:

 1 #include<stdio.h>
 2 #define NUMBER 80  //人数上限
 3 void main()
 4 {
 5     int i,j;
 6     int num;  //实际人数
 7     int fenshu[NUMBER];//学生分数
 8     int fenbu[11]={0};//分数分布
 9
10     printf("请输入学生人数:");
11     do
12     {
13         scanf("%d",&num);
14         if(num<1||num>NUMBER)
15             printf("\a人数范围[1到%d]:",NUMBER);
16     }while(num<1||num>NUMBER);
17
18     puts("请输入学生分数:");
19
20     for(i=0;i<num;i++)
21     {
22         printf("%2d号:",i+1);
23         do
24         {
25             scanf("%d",&fenshu[i]);
26             if(fenshu[i]<0||fenshu[i]>100)
27                 printf("\a分数范围[0到100]:");
28         }while(fenshu[i]<0||fenshu[i]>100);
29         fenbu[fenshu[i]/10]++;
30     }
31
32     puts("\n ---分布图---");
33     printf("   100:");
34     for(j=0;j<fenbu[10];j++)
35         putchar(‘*‘);
36     putchar(‘\n‘);
37
38     for(i=9;i>=0;i--)
39     {
40         printf("%3d-%3d:",i*10,i*10+9);
41         for(j=0;j<fenbu[i];j++)
42             putchar(‘*‘);
43         putchar(‘\n‘);
44     }
45     getch();
46 }

这里面有些关于if while循环输入和分布统计的格式需要注意

练习:写一段程序,求出矩阵x和y的值

我第一次写的程序可谓“人神共愤”,要数清楚原矩阵和结果矩阵的维数才能进行for循环,贴出来反省一下

 1 #include<stdio.h>
 2 void main()
 3 {
 4
 5         int x[2][3]={{1,2,3},{4,5,6}};
 6         int y[3][2]={{1,5},{5,3},{8,1}};
 7         int mc[2][1]={0};
 8         int i,j;
 9         //计算
10         for(i=0;i<2;i++)
11         {
12             for(j=0;j<3;j++)
13             {
14
15                 mc[i][1]+=x[i][j]*y[j][i];
16
17             }
18         }
19         //输出
20         for(i=0;i<2;i++)
21         {
22
23
24                 printf("%3d",mc[i][1]);
25                 putchar(‘\n‘);
26         }
27
28
29     getchar();
30 }

后来看到网上的模板,用函数调用写的层次分明,原帖:http://blog.sina.com.cn/s/blog_8e392fc20101br1e.html

结果:

代码:

 1 #include<stdio.h>
 2 #define SIZE 20 //预定义要进行转置的矩阵最大大小为 20*20
 3 //为了函数参数传递的方便,将行和列的具体大小定义为全局变量
 4 int a_column;
 5 int a_row ;
 6 int b_row;
 7 int b_column;
 8 int c[SIZE][SIZE]={0};
 9 //矩阵的输入函数
10 void inputMatrix(int a[][SIZE] , int n, int m){ //二维数组参数下标必须要确定
11  int i,j;
12  for(i = 0;i < n;i++){
13   for(j = 0;j < m;j++){
14    scanf("%d",&a[i][j]);
15   }
16  }
17 }
18 //矩阵的输出函数
19 void outputMatrix(int c[][SIZE] , int n, int m){
20  int i,j;
21  for(i = 0;i < n;i++){
22   for(j = 0;j < m;j++){
23    printf("%d ",c[i][j]);
24   }
25   printf("\n"); //每次打印完一行后进行换行
26  }
27 }
28 //矩阵的乘法算
29 void matrixMultiplication(int a[][SIZE], int b[][SIZE]){
30  int i,j,k;
31  for(i = 0;i < a_row;i++){
32   for(j = 0; j < b_column ; j++){
33    for(k = 0; k < a_column;k++){
34     c[i][j] = c[i][j]+ a[i][k] * b[k][j];
35    }
36   }
37  }
38 }
39 int main()
40 {
41  //定义数组并初始化
42  int a[SIZE][SIZE]={0};
43  int b[SIZE][SIZE]={0};//定义数组,注意要初始化
44  //矩阵行,列数的确定
45  printf("请输入第一个矩阵的行数 : ");
46  scanf("%d",&a_row);
47  printf("\n请输入第一个矩阵的列数 :");
48  scanf("%d",&a_column);
49  //函数调用及主功能实现
50  printf("请输入矩阵A ( %d X %d 形式)\n" ,  a_row,a_column);
51  inputMatrix(a , a_row, a_column);
52  b_row=a_column;
53  printf("注意:根据数学原理,您将输入的第二个矩阵的行数为 %d \n",b_row);
54  printf("请输入矩阵B的列数 : ");
55  scanf("%d",&b_column);
56  printf("请输入矩阵B ( %d X %d 形式) : \n" , b_row , b_column);
57  inputMatrix(b, b_row , b_column);
58  //调用相乘函数
59  matrixMultiplication(a,b);
60  printf("A与B相乘后的矩阵C是 :\n");
61  outputMatrix(c, a_row , b_column);
62  getchar();
63  return 0;
64 }5-15 求解质数
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int no,i;
 5     printf("请输入一个数字:");
 6     scanf("%d",&no);
 7     for(i=2;i<no;i++)
 8     {
 9           if(no%i==0)
10         {
11             printf("不是质数");
12             break;
13         }
14
15     }
16      if(no==i)
17             printf("是质数");
18     getch();
19     return 0;
20 }

一开始printf输成prinf,结果链接出问题。vs2010既不显示关键词也不告诉我哪儿错了,害我找半天。

然后就是最后的if(no==i)如果写在for循环里面永远都跳不出来。因为i==no时候就跳出了for循环了,还怎么执行这个if啊。。。

时间: 2024-10-27 08:27:13

《明解c语言》读书笔记的相关文章

码农的产品思维培养第一节(人人都是产品经理读书笔记)

在前段时间,密集的推出Android学习记录之后,我觉得接下来的Android开发进入了一个精进演变的过程,革命性的东西略缺.每日更新特别新的东西也违背认知规律.所以以后关于Android方面的知识,碰到什么,然后记录什么. 而今天,在前一篇日志里面,我描述了我为什么要去理解"产品经理",从这一节开始,我要实施我的计划.所以,和Android记录一样,我要记录这个过程.对自己是一个回归总结吸收的过程,同时也希望能够帮助到更多的朋友,如果你也心存学习进取之心,如果你也如我一般疑惑未解心不

人人都是产品经理读书笔记(四)

补充:

《启示录:打造用户喜爱的产品》—— 读书笔记

这是一本非常不错的书,即使你可能只是一名开发工程师,也会有意想不到的收获! 如果你是一名产品经理,那就更不能错过了!不要留下遗憾! 这真的是一本很好的书,读每一遍都会有不同的收获,绝对让你震撼!我是会再读一遍或者N多遍的, 而能把这些内容转应用到实际中的人才是真正的高手,细细体会,在工作中好像已经有人在用了!惊讶!得抓紧时间了! 通过这本书,你将会知道一个合格的产品经理应该做什么,怎么做 本书主要讲解三个方面:人员.流程.产品 人员:产品从开始到完成过程中所有的参与者 流程:产品在开发过程中的所

产品经理学习笔记(二)------产品经理的工作职责(下)

二.产品经理的工作职责(下) 4.产品宣讲 ---宣讲对象:客服.市场.销售.运营.其他(开发进度到50%) ---宣讲目的:内部培训.获得认可 ---宣讲方式:内部推荐会(预测.演示.试用).注意控制(氛围.引导) ---宣讲目标:获得认可.帮助其他团队更好理解产品.协助其他团队更好开展工作 5.市场推广 ---对产品资料进行内容把关:网站.移动应用.印刷品等 ---主要针对:市场.公关.运营.销售 6.产品推出后的管理与迭代 ---运营数据的整理分析 ---深入一线体验产品 ---关注用户需

产品经理--读书静心的日子

入行教育,做教育产品工作,需要不断的进步. 一.了解产品开发.项目管理经验. 二.教育基础理论及相关知识. 小学阶段 (2016.2017不断的翻阅,有新的体会) 中学阶段(2018主攻方向)

谷歌和亚马逊如何做产品(读书笔记)

《产品经理》读书笔记

自从鼠标手犯病后,就刻意减少使用电脑的时间并且加强运动,目前已经完全康复,但是还是需要注意.因此更新博客的频率大大降低,但是也有时间多看看书,学习学习了! 最近看了<yes,产品经理>上下册,作者 汤圆 老马,文笔诙谐,把管理知识融入工作日常内容,浅显易懂,对于非管理专业的门外汉,还是不错的读物! 下面是摘抄的部分主要内容,个人认为比较有用的就记录下来. ------------------------------------------------ 制定产品价格策略的6步: 确定企业目标 冲

产品经理的那些事第一章读书笔记

1.一个产品经理的信仰:好产品能改变世界. 2.为什么要做产品经理:因为热爱,改变世界的方法有很多,技术可以改变世界,好的产品也可以,当然还有其他,但我热爱产品,一件事只有热爱了,才能持续不断的去做好,所以我选择了产品经理这条路. 3.产品是什么:产品是用来解决某个问题的东西. 4.产品经理为何而设:想要更了解产品与它面临的竞争情况,最终目的是要满足顾客的需求. 5.产品经理概念的进化: 分析: 1)行业形态不同:成熟行业vs.新兴行业 ①传统行业 概况:经过几十年乃至上百年的摸爬滚打,市场已经

【读书笔记】产品经理要做的事

文章链接:http://www.chanpin100.com/archives/44223 作为一个产品经理,不能只画图:产品经理更像是一个纽带,连接着各个环节,保持项目的正常运行. 在开始要做一个产品的时候,不能上来就画图,也不能告诉你需求就开始画图.应该先对需求进行筛选和挖掘:把伪需求去掉,挖掘出潜在需求. 1.分析产品的步骤:目标人群.使用场景.业务核心. 2.在团队中担任掌舵人,有目的的引导团队:激发团队灵感可以使用商业画布:客户分布.价值主张.渠道通路.客户关系.收入来源.核心资源.关

【读书笔记】神一样的产品经理(一)

 第一篇 产品经理 1.产品经理诞生的背景和价值 *很多入门级书里都会提到这一部分,本书讲了保洁诞生的第一个产品经理的故事. 2.很牛的产品经理(例子是乔布斯.郭靖) 1)几个重要特性:*影响力 *核心需求把控力 *创新力 *痴情力 2)产品经理的职责: *明确产品的目标用户群及其特征*获取.评估和管理用户需求*完成产品需求文档.产品原型和流程图*精通用户体验.交互设计和信息架构技能*项目管理.需求变更管理和需求验收*产品运营数据的分析和总结*提供运营.市场和销售等支撑 3)产品经理常犯的错误