目录
前言
少年深知成长不是童话,梦想最是凄美
征途上是万千沟壑,峭壁累累可为了梦里的彼岸,
依旧艰险不畏孤帆,残剑,大雪纷飞,也未让理想枯萎波澜千程,
偶尔难分东西,不辨南北
心中的月亮也始终明媚
跨过千山万水,捧起风华绝代的玫瑰
少年肆无忌惮,只为理想破碎
少年无畏,青春鼎沸
既然选择了,就坚持下去,人生没有标准答案,你也不知道自己选择的是否正确,能做的就是把你
选择的做好,尽你所能做到最好,让它尽可能正确。
这是我写的第一篇学习笔记,初学c语音,笔记如果有错误各位大佬提醒下,这些是我的一些笔记
希望可以对你们有帮助
流程控制
1-什么是流程控制
程序代码执行的顺序
2-流程控制的分类
一.顺序执行
定义:代码从上往下按照顺序执行
二.选择执行
定义:某些代码可能执行,也可能不执行,有选择的执行某些代码
if语句
格式(最基本的)
//格式 if(表达式)
语句
//功能 如果表达式为真,执行语句
如果表达式为假,语句不执行
举例
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
if (3 > 2)
printf("AAAA\n");
return 0;
}
/*
if(3)也会输出
if(0)不会输出
if(0==0)会输出,因为0==0为真返回值为1
0为假非0为真
*/
if的范围问题
格式(无{ }的情况)
if(表达式) //解释:if语句默认只能控制A语句执行与否
语句A // if无法控制语句B 的执行与否
语句B // 可以说语句B一定会执行
举例
#include<stdio.h>
int main()
{
if (1 > 2)
printf("AAAA\n");
printf("BBBB\n");
return 0;
}
/*
输出结果:
___________________________
BBBB
____________________________
总结:if默认只能控制一个语句的执行与否
1>2为假AAAA不输出,下一个语句不受if控制,不管if条件为真为假怎样都会输出
*/
格式(有{ }的情况)
if(表达式) //此时if可以控制语句A和语句B
{ //由此可见:if默认只控制一个语句的执行与否
语句A; // 如果想控制多个语句的执行与否,就必须把这些语句用{}括起来
语句B;
}
举例
#include<stdio.h>
int main()
{
if (1 > 2)//整个if为一个语句
{
printf("AAAA\m");
printf("BBBB\n");
}
printf("CCCC\n");
return 0;
}
//结果:CCCC
if.....else的用法
1-if控制一个语句else也只控制一个语句
2-if...else...其中两个语句必会执行一个
3-if....else整体为一个语句
4-if...else以下printf必会执行,
不受其控制与if对齐成为新语句
格式
//格式:if(表达式)
A;
else
B;
举例
//输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印是偶数。
#include<stdio.h>
int main()
{
int i = 0;
scanf("%d", &i);
if (i % 2 == 1)
{
printf("这是一个奇数\n");
}
else
{
printf("这是一个偶数\n");
}
return 0;
}
if....else if...else的用法
格式
//格式:if(1) /*
A; 如1成立,执行A,如1不成立,2成立,执行B
else if(2) 如12同时成立执行A
B; 执行D的前提是123都b
else if(3)
c;
else
D; */
举例
//分数等级
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
double score = 0;
printf("请输入你的分数:");
scanf("%lf", &score);
if (score > 100)
{
printf("这是做梦!\n");
}
else if (score >= 90 && score <= 100)
{
printf("优秀\n");
}
else if (score >= 80 && score < 90)
{
printf("良好\n");
}
else if (score >= 60 && score < 80)
{
printf("中等\n");
}
else if (score >= 0 && score < 60)
{
printf("不及格\n");
}
else
{
printf("输入分数过低,不要如此自卑!\n");
}
return 0;
}
/*
总结:不能写成90<=score<=100
因为score为何值 90<=score返回的值只能为0或1
永远<=100,无法判断score的等级
*/
if经典例子
例一 .互换两个数字
#include<stdio.h>
//互换两个数字
int main()
{
int i = 3;
int j = 5;
int t;//创建临时变量
//i = j;
// j=5赋给i ,i=5
//j = i; 10和11行无法完成交换
//i=5,赋给j,j=5
//正确方法
t = i;
i = j;
j = t;
printf("i=%d,j=%d\n", i, j);
return 0;
}
例二.对任意三个数进行排序
//对任意三个数进行排序
int main()
{
int a, b, c;
int t;
printf("请输入三个整数(之间以空格分开)\n");
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\n", a, b, c);
return 0;
}
switch语句
格式
格式
switch(表达式)
{
case 1 :
case 2 :
default :
}
例子
//对任意三个数进行排序
int main()
{
int val;;
printf("请输入您要进入的楼层:");
scanf("%d", &val);
switch (val)
{
case 1:
printf("一层开\n");
break;
case 2:
printf("二层开\n");
break;
default :
printf("没有盖这一楼层\n");
break;
}
return 0;
}
break和continue
break
1-break不能直接用于if,除非if属于循环内部的语句
例子:
for(i=0;i<3;i++)
{
if(3>2)
braek;//break虽然是if内部的语句,但break终止的是for循环
printf("哈哈\n");//永远不会输出
}
2-在多层switch嵌套中,break只能终止距离他最近的switch
例子:
int x = 1, y = 0,a = 0,b = 0;
switch(x)//第一个switch
{
case 1:
switch(y)第二个switch
{
case 0:
a++;
break;//终止第二个switch
case1:b++;
break;
}
b=100;
break;终止第一个switch
case 2:
a++;
b++;
break;
}
printf("%d %d\n",a,b);
结果:1 100
continue
用于跳过本次循环余下的语句,转去判断是否需要执行下一次循环
例一:
for(1;2;3)
{
A;
B;
continue;//如果执行该语句则执行完AB就到语句3,CD不会被执行
C;
D;
}
例二:
while(表达式)
{
A;
B;
continue;//如果执行该语句则执行完AB就执行表达式,CD不会被执行
C;
D;
}
例三:
do
{
if(表达式)
{
A;
continue;//if成立跳到 while表达式
}
}while(表达式);
三.循环执行
定义:某些代码会被重复执行
for循环
格式
for(1;2;3)
语句A;//4
//执行顺序:1>2>4>3>2>4>3......
//1只执行一次,3是循环的终点
for循环最简单的用法
求1-100之间所有的奇数和
#include<stdio.h>
int main()
{
int i;
int sum=0;
for (i = 0; i < 100; i += 2)
{
sum += 1;
}
printf("sum=%d\n", sum);
return 0;
}
for循环嵌套
格式
for(1;2;3)
for(4;5;6)
语句A;//7
语句B;//8
1-该格式共两个语句,1-3行为第一句,第四行为第二句,因为for循环只控制一条语句
2-执行顺序:可以理解为1>2成立执行4,5成立执行7,然后到6,再判断5,5成立,执行
7,再到6,5不成立执行3,再判断2,2成立执行4,再判断5,5成立,执行7,再到6,再
判断5,5不成立执行3,再判断2,2不成立,循环结束,到8
for循环举例
计算1+1/2+/3+....+1/100的和
#include<stdio.h>
int main()
{
int i = 0;
float sum = 0;
for (i = 1; i <= 100; i++)
{
sum += 1.0/ i;
}
printf("sum=%f\n",sum);
return 0;
}
while循环
格式
while(表达式)
语句;//默认只控制一个语句
与for循环进行比较
求1+2+···+100(用for实现)
#include<stdio.h>
int main( )
{
int sum=0;
int i=0 ;
for(i=1j i<=100;i++)
{
Sum+=i;
}
printf(" sum=%d\n",sum);
returno 0;
}
用while
#include<stdio.h>
int main()
{
int i = 0;
int sum = 0;
while (i < 101)
{
sum += 1;
i++;
}
printf(" sum=%d\n",sum);
return 0;
}
for和while可以互相转换
但for的逻辑性更强,更不容易出错,推荐使用for
举例
从键盘输入一个数字,如果该数字是回文数.则返回 Yes.否则返回No.
回文数:正着写倒着写都一样.
比如:121 12321都是回文数
#include<stdio.h>.
int main()
{
int val = 0;
int m = 0;
int sum = 0;
printf("请输入你需要判断的数:");
scanf("%d", &val);
m = val;
while (m)
{
sum = sum * 10 + m % 10;
m /= 10;
}
if (sum == val)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
do....while循环(非重点)
格式
do
{
}while(表达式);
举例
判断水仙花数
#include <stdio.h>
int main (void)
{
int i = 100;
int a,b,c;
do
{ // 拆解百位十位各位
a = i/100; //百位
b = i/10%10; //十位
c = i%10; //各位
if(a*a*a+b*b*b+c*c*c == i)
{
printf("水仙花数:%d\n",i);
}
i++;
}
while (i<=999);
return 0;
}
感谢观看,希望能对你有所帮助!!!