笔记
视频笔记
- 程序代码执行的顺序 流程控制的分类
- 顺序
- 选择
- 控制
int main(void)
{
int i,j;
printf("请输入i,j的值:(中间以空格隔开);
scanf("%d%d",&i,&j);
printf("i=%d,j=%d\n",i,j);
return 0;
}
- 流程控制学完了,其他语言就不需要学流程控制了
- 可以把任意复杂的问题解决掉
- 和其他语言思想一样 if简单的用法
int main(void)
{
if(1>3)
printf("AAA");
printf("BBB");
return 0;
}
-
- if默认只能控制语句1的,无法控制语句2的执行与不执行,如果想控制多个语句的执行与不执行,需要用大括号括起来 ifelse的用法
- 后缀不能错
int main(void)
{
int i,j;
scanf("%d%d",&i,&j);
if(i>j)
printf("%d",i);
if(j>i)
printf("%d",j);
return 0;
}
int main(void)
{
int i,j;
scanf("%d%d",&i,&j);
if(i>j)
printf("%d",i);
if(j>i)
printf("%d",j);
return 0;
}
- 非零即真 求分数的等级
int main(void)
{
float score;
printf("输出你的考试成绩:");
scanf("%f",&score);
if(score>100)
printf("你这是做梦!\n");
else if(score>=90)
printf("优秀!\n");
else if(score>=80)
printf("良好!\n");
else if(score>=60)
printf("及格\n");
else printf("不及格\n")
return 0;
}
int main(void)
{
int i=3;
int j=5,t;
t=i;
i=j;
j=t;
printf("i=%d,j=%d",i,j);
return 0;
}
int main(void)
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
- }
if(b<c)
{
t=b;
b=c;
c=t;
}
printf("%d%d%d",a,b,c);
return 0;
}
- 判断一个数为素数
- 判断一个数为回文数
- 编程实现一个十进制数字的二进制形式
- 求一个数字的每位奇数的数字取出来组合出来形成一个新数字
- 求一个数字的倒数形式
看懂程序的三步
- 流程
- 每个语句的功能
- 试数
- 尝试自己去编程解决它,大部分人自己都无法解决如果解决不了,就看答案
- 关键把答案看懂,需要话很多时间,也是我们学习的重点
- 看懂后尝试自己去修改程序,并且知道修改后程序不同结果的不同含义,调试错误
- 如果程序无法理解,就背会它 空语句的问题
- if后面加分号,执行空语句,if,else就会出现错误
- 即使表达式1,2都正确,也只会执行表达式1
-
- if没有包括的范围,程序不会输出结果,但逻辑上有漏洞
- else后面不能加表达式,或者在加个if才对
- 一个分号一个语句
- else后面加表达式加分号,这样写语法上没有错误,但逻辑上有错误 循环的定义
- 某些代码的循环执行 为什么需要循环
int main(void)
{
int i;
int sum=0;
for(i=1;i<=4;++i)
{
sum=sum+i;
printf("sum=%d\n",sum);
}
return 0;
}
- 优秀的程序员不应该体现i++和++i的区别 for循环的基本用法
int main(void)
{
int i;
int sum=0;
for(i=3;i<=10;++i)
{
if(i%3==0)
sum=sum+i;
printf("sum=%d\n",sum);
}
return 0;
}
int main(void)
{
int i;
float sum=0;
for(i=1;i<=100;++i)
{
sum=sum+(float)(1/i);
}
printf("sum=%f\n",sum);
return 0;
}
- 浮点数存的都是近似值
- 如果X减去一个很小的数的绝对值小于一个很小的数,就可以判断X的值近似为零
- 循环中更新的变量不能定义为一个浮点型,因为浮点型不能够准确存储
int main(void)
{
int i;
int sum=0;
int cnt=0;
float avg;
for(i=1;i<=101;++i)
{
if(i%2==1)
{sum+=i;
++cnt;
}
}
avg =1.0*sum/cnt;
printf("sum=%d\n",sum);
printf("cnt=%d\n",cnt);
printf("avg=%d\n",avg);
return 0;
}
- 几进制就是逢几进几
- 十进制的3981和十六进制的F8D本质上都是同一个数 自增自减
int main()
{
int i,j ,k,m;
i=j=3;
k=++i;
m=j++;
printf("i=%d,j=%d,k=%d,m=%d",i,j,k,m);
return 0;
}
- A?B:C for循环嵌套
int main()
{
int i,j ,k,m;
for(i=1;i<=4;i++)
for(m=1;m<4;m++)
printf("哈哈\n");
printf("嘿嘿\n");
return 0;
}
int main()
{
int i,j ,k,m;
for(i=1;i<=4;i++)
printf("1111\n");
for(m=1;m<4;m++)
{
printf("333\n");
printf("222\n");
}
return 0;
}
- while和for循环可以相互转换,但for循环的逻辑性更强,更不容易出错
int main()
{
int val,m;
int sum=0;
printf("请输入你需要判断的数字:");
scanf("%d",&val);
while(m)
{
sum=sum*10+m/10;
m/10;
}
if(sum==val)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
int main()
{
int n,m;
int f1=1,f2=2;
printf("请输入你需要判断的数字:");
scanf("%d",&n);
if(1==n)
{
f3=1
}
else if(2==n)
{
f3=2;
}
else
{
for(i=3;i<=n;++i)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
}
printf("%d",f3);
return 0;
}
dowhile循环一定会至少执行一次 [较长的一段代码](Ubuntu Pastebin) break的用法
- break用于循环是种植循环
- break用于switch是为了终止
- break不能直接用于if,除非if属于循环内部的一个语句
#include<math.h>
int main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0:
a++;
break;
case 1:
b++;
break;
}
break;
case 2:
a++;
b++;
break;
}
return 0;
}
- 用于跳过本次循环留下的语句,转去判断是否需要执行下次循环
书本笔记
第五章
- C语言标准数学库提供pow()函数用于指数运算
- 用于存储值得数据存储区域统称为数据对象
- 单独使用递增运算符,使用那种形式都没关系
- 只有圆括号括起来的才比递增和递减运算级别高
- 大多数语句都是由表达式构成的
- 每个表达是都有一个值
- 语句是C程序的基本构建块
- 语句可以改变值或调用值
- 副作用是对数据对象或文件的修改
第六章
- 伪代码是一种简单的句子表示程序思路的方法,它与计算机语言的形式相对应
- while循环是使用入口条件的有条件循环
- while循环经常以来测试表达式作比较,这样的表达式被称为关系表达式
- 在C语言中一直用int类型的变量表示真假值
- 关系与算符比赋值运算符的优先级高
- 当循环涉及初始化和更新变量是用for循环比较合适
- 数组可以作为存储多个相关项的便利方式
- 函数将计算表达式的值,并返回该值
第七章
- C提供条件表达式作为表达if else语句的一种便捷方式,该表达时使用?:条件运算符
- continue和break语句以根据循环体中的测试结果来忽略一部分循环内容,甚至结束内容
作业
- 第七题输出结果为:sos:4 4.00
第十三题
x-=1;
m=n%k;
p=(q/b)-a;
x=(a+b)/(c*d);
第三题
int main()
{
int a,b,c;
printf("请输入天数:");
scanf("%d",&a);
b=a/7;
c=a%7;
printf("%d周%d天",b,c);
return 0;
}
第八题
int main()
{
int a, b;
printf("This program computes moduli.\n");
printf("Enter an integer to serve as the second operand: ");
scanf("%d", &b);
printf("Now enter the first operand: ");
scanf("%d", &a);
while (a > 0)
{
printf("%d %% %d is %d\n",a, b,a % b);
printf("Enter next number for first operand (<= 0 to quit): ");
scanf("%d", &a);
}
return 0;
}
- 第五题和第12题不会做,看答案看懂了,然后又对着答案敲了一遍
int main(void)
{
int number = 150;
int friends=5,week=0;
while (friends < number)
{
printf("%d,%d\n", week, friends);
week++;
friends-= week;
friends*= 2;
}
return 0;
}
第二题
- number>=90&&number<100
- ch!=q||k
- number>=1&&number<=9&&nu7mber!=5
- number<1||number>9
第十题
int main(void)
{
char ch;
while((ch=getchar())!='#')
{
if(ch!='\n')
;//执行空语句
printf("Step 1\n");
if(ch!='c')
;//执行空语句
else if(ch=='b')
break;
else if(ch=='h')
printf("Step 3\n");
printf("Step 2\n");
}
printf("Done\n");
return 0;
}