小白学习笔记-1

分支语句和循环语句
C语言是一门结构化的程序设计语言

  1. 顺序结构
  2. 选择结构
  3. 循环结构

分支语句

·if
·switch

循环语句

·while
·for
·do while

goto语句

什么是语句
C语言中,由一个分号;隔开的就是一条语句

printf(“hello”);

; - 空语句

分支语句 对应选择结构

if语句

语法结构:
if(表达式)
语句;
如果表达式为真,为非0,则执行语句,否则什么都不执行
if(表达式)
语句1;
else
语句2;

这里如果表达式为真,则执行语句1,否则执行语句2.

//多分支的情况
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;

这里如果表达式1为真,执行语句1,否则看表达式2,表达式2为真的话执行语句2,如果前几个表达式都为假,则执行语句3.

int age = 10;
if(age<18)
printf(“未成年\n”);
else if(age>18 && age<28) //这里不能写(18<=age<28),这样的话就先判断18<=age,为真的话就变成了1<28,为假的话就是0<28
printf(“青年\n”);
else //else不一定要有
printf(“成年\n”);

如果if下面有多条语句,要用代码块({})

悬空else

这里的else和if(b == 2)对应

输出1-100中的奇数

1.#include <stdio.h>

int main() {
int i = 0;
for(i=1;i<=100;i++)
{
if(i%2 == 1)
{
printf("%d\n",i);
}
}

return 0;

}

2.#include <stdio.h>

int main() {
int i = 0;
while(i<=100)
{
if(i%2 == 1)
printf(“%d ”,i);
i++;
}
return 0;
}

3.int main() {
int i = 0;
while(i<=100)
{
printf(“%d ”,i);
i+=2;
}
return 0;
}

**

switch语句

**
switch(整型表达式)一定要是整型
{
语句项;
}

语句项是一些case语句;
格式:

case 整型常量表达式:
语句;

int main()
{
int day = 0;
scanf(“%d”,&day);
switch(day)
{
case 1:
printf(“星期 1\n”);
break;
case 2:
printf(“星期 2\n”);
break;
case 3:
printf(“星期 3\n”);
break;
case 4:
printf(“星期 4\n”);
break;
case 5:
printf(“星期 5\n”);
break;
case 6:
printf(“星期 6\n”);
break;
case 7:
printf(“星期 7\n”);
break;
default:
printf(“输入错误\n”);
break;
}
}

int main()
{
int day = 0;
scanf(“%d”,&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf(“工作日\n”);
break;
case 6:
case 7:
printf(“休息日\n”);
break;
default:
printf(“输入错误\n”);
break;
}
}

循环语句

· while
· for
· do while

while 语法结构
while(表达式)
{
语句;
}

int i = 1;
while(i<=10)
{
if(i == 5)
continue; //跳过本次循环剩下的代码,回到循环的判断部分,判断要不要进行
printf(“%d ”,i); 下一次循环
i++;
}

此时输出 1 2 3 4

如果改成

while(i<=10)
{
i++;
if(i == 5)
continue;
printf(“%d ”,i);
}

此时输出2 3 4 6 7 8 9 10 11

int main()
{
int ch = getchar(); 接收键盘按下的字符

putchar(ch);               输出字符,和printf一样,更简便一些
printf(“%c\n”,ch);
return 0;

}

int main()
{
int ch = 0;
while((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}

此时输入EOF,循环不会终止,他是一个字符一个字符的读取打印
要输入 ctrl + z
EOF – end of file -> -1

int main()
{
int ret = 0;
char password[20] = {0};
printf(“请输入密码:”);
scanf("%s",password);

printf("请确认(Y/N):");
ret = getchar();
if(ret == 'Y')
{
	printf("确认成功\n");
 } 
 else
 {
 	printf("确认失败\n");
 }
return 0;

}

这里运行直接跳过了输入Y/N,

scanf和getchar是输入函数,他们读取数据时,去输入缓冲区找数据。
还什么都没输入时,scanf读不到数据,光标就一直闪,等待,
scanf输入123后,按了回车告诉scanf执行,
但是回车相当于\n留在了输入缓冲区,被getchar读取,\n的ASCII码为10,不等于Y,所以直接输出确认失败。
在scanf后面加一个getchar();下面的getchar就可以正常读取Y/N了。

此时又出现问题,scanf只会读取空格前面的字符,只读取了123456,
然后第一个getchar读取了空格,第二个getc读取了A。

此时用一个while循环,
while((ch=getchar()) != ‘\n’)
{
; //空语句,意思就是不要循环内做什么事,只要一直判断循环,将’\n’前面多余的字符读取到ch里就可以了。
}

for循环

for(表达式1;表达式2;表达式3)
循环语句;
//初始化 判断 调整
for( i = 1;i <= 10; i++ )
{
printf
}

不可在for循环体内修改循环变量,防止for循环失去控制。
建议for循环的变量取值采用 前闭后开 的写法
(i=0;i<10;i++)
10可以表示十次循环,十个变量等,具体看情况,不是一定开区间

for( ; ; )
{
printf(“hehe\n”);
}

死循环

随便省略会出现这样的问题

for里面i和j省略了,只打印了十个hehe,外面的i从0进入循环,然后j从0~9,到10的时候跳出循环,重新进去i的循环,i变为1,再进入j,但是j现在是10,直接跳出。

do while

do
{
循环语句;
}
while(表达式);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值