0
点赞
收藏
分享

微信扫一扫

C语言-第四天!

​scanf​​函数用法

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

调用格式:  scanf("<格式化字符串>",<地址表>);

格式字符

说明

​%a​​/​​%A​

读入一个浮点值(c99有效)

%c

读入一个字符

%d

读入十进制整数

%i

读入十进制,八进制,十六进制整数

%o

读入八进制整数

%x/%X

读入十六进制整数

%s

读入一个字符串

%f/%F/%e/%E/%g/%G

读入一个浮点数

%p

读入一个指针

%u

读入一个无符号十进制整数

%n

至此已读入值的等价字符数

%[]

扫描字符集合

%%

读%符号

附加格式说明字符表

修饰符

说明

L/l 长度修饰符

输入"长"数据

h 长度修饰符

输入"短"数据

W 整型常数

指定输入数据所占宽度

*

空读一个数据 

​If​​​丶​​else​​语句

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int age;
printf("请输入你的年龄 :");
scanf("$d", &age);
if (age>=18)
printf("可以色色!\n");
else
printf("不可以色色!\n");
return 0;
}
//result
//请输入你的年龄 :1
//不可以色色!

​switch​​​丶​​case​​语句

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>


int main() {
int go = 5;
switch (go)
{
case 1:
printf("LOL!");
break;
case 2:
printf("王者荣耀!");
break;
case 3:
printf("刺激战场!");
break;
case 4:
printf("绝地求生!");
break;
case 5:
printf("使命召唤!");
default:
printf("sleep.zzz");
break;
}
return 0;
}

//result
//使命召唤!

C语言循环

​while​​循环

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

while(表达式)
{
语句块;
}
//先计算“表达式”的值,当值为非0时,执行“语句块”;
//执行完“语句块”,再次计算表达式的值,如果为非0,继续执行“语句块”一直循环到表达式结果为0则跳出循环。

int main()
{
int line = 0;
printf("加入复仇者\n");
while(line<=20000000)
{
printf("我要继续努力打怪兽:%d\n",line);
line++;
}
if(line>=20000000)
printf("超级英雄\n");
return 0;
}

//result
我要继续努力打怪兽:19999975
我要继续努力打怪兽:19999976
我要继续努力打怪兽:19999977
我要继续努力打怪兽:19999978
我要继续努力打怪兽:19999979
我要继续努力打怪兽:19999980
我要继续努力打怪兽:19999981
我要继续努力打怪兽:19999982
我要继续努力打怪兽:19999983
我要继续努力打怪兽:19999984
我要继续努力打怪兽:19999985
我要继续努力打怪兽:19999986
我要继续努力打怪兽:19999987
我要继续努力打怪兽:19999988
我要继续努力打怪兽:19999989
我要继续努力打怪兽:19999990
我要继续努力打怪兽:19999991
我要继续努力打怪兽:19999992
我要继续努力打怪兽:19999993
我要继续努力打怪兽:19999994
我要继续努力打怪兽:19999995
我要继续努力打怪兽:19999996
我要继续努力打怪兽:19999997
我要继续努力打怪兽:19999998
我要继续努力打怪兽:19999999
我要继续努力打怪兽:20000000
超级英雄

​do​​​ ​​while​​循环

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

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

//do while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;
//如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。

int main()
{
int i = 1;
do{
printf("%d\n",i);
i++;
}while(i<=100);
return 0;
}

//reslut
1-100

​for​​循环可以取代 while循环

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

for(表达式1;表达式2;表达式3)
{
语句块;
}

它的运行过程为:
1) 先执行“表达式1”,一般为初始条件(只在循环开始时运行一次),可以认为这是一个初始化语句。
2) 再执行“表达式2”,循环条件表达式,如果它的值为真(非0),则执行循环体,否则结束循环。
3) 执行完循环体后再执行“表达式3”,大多数情况下是带有自增自减的表达式,使循环条件不成立。
4) 重复执行步骤 2) 3),直到“表达式2”的值为假,就结束循环。
上面的步骤中,2) 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 3)

int main()

{
int i, j, k, t, m, a, b, c = 0;

int x, y, z, n;

printf("请按下面格式输年-月-日\n");

printf("请输入现在年月日:\n");

scanf("%d-%d-%d", &i, &j, &k);

printf("请输入出生年月日:\n");

scanf("%d-%d-%d", &x, &y, &z);

n = i - x + 1;

printf("你的年龄是:%d\n", n);

switch (j)

{
case 1:m = k; break;

case 2:m = 31 + k; break;

case 3:m = 59 + k; break;

case 4:m = 90 + k; break;

case 5:m = 120 + k; break;

case 6:m = 151 + k; break;

case 7:m = 181 + k; break;

case 8:m = 212 + k; break;

case 9:m = 243 + k; break;

case 10:m = 273 + k; break;

case 11:m = 304 + k; break;

case 12:m = 334 + k; break;

}

switch (y)

{
case 1:a = z; break;

case 2:a = 31 + z; break;

case 3:a = 59 + z; break;

case 4:a = 90 + z; break;

case 5:a = 120 + z; break;

case 6:a = 151 + z; break;

case 7:a = 181 + z; break;

case 8:a = 212 + z; break;

case 9:a = 243 + z; break;

case 10:a = 273 + z; break;

case 11:a = 304 + z; break;

case 12:a = 334 + z; break;

}

for (b = x; b <= i; b++)

{
if (b % 400 == 0)//(b%4==0&&b%100!=0)

c = c + 1;

if (y < 2)

c = c - 1;

if (j < 2)

c = c + 1;

}

t = (i - x) * 365 + m - a + c; printf("出生到现在的天数:%d", t); return 0;

}

//relust
//请按下面格式输年-月-日
//请输入现在年月日:
//2022-12-16
//请输入出生年月日:
//2000-8-15
//你的年龄是:23
//出生到现在的天数:8154

for中的三个表达式都是可以省略的

Ⅰ、如果在前面已经定义了初始条件,则可以在for中省略表达式①,但是这里可能会出现一个问题,条件不会被初始化,例如在函数主体里定义i=10,而for需要的是i=0,此时如果在for中不进行初始化则i会直接从10运行导致bug。

Ⅱ、省略表达式2,省略这一步相当于啥呢?相当于解决不了问题就解决提出问题的人,自我感觉良好导致死循环

Ⅲ、省略表达式3,for就跟while一样了。

Ⅳ、全都省略,相当于while(1),表示无限循环。

跳出循环——中断

​break​关键字用于 while​for​​​ 循环​​​时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
for(int i=0;i<100;i++)
{
if(i==10)
{
break;
}
printf("%d\n",i);
}
return 0;
}
//break的中断能力比较弱,只能打破一次中断,也就是说当多个循环嵌套时break只能中断最近的一个break,而且break只能写在循环里。

​continue​​​语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。​​continue​​​语句只用在 ​​while​​​、​​for​​​ 循环中,常与​​ if​​​ 条件语句一起使用,判断条件是否成立。当​​continue​​​在​​while​​​和​​for​​​中时,运行到​​continue​​不会直接跳出循环,而是跳到判断条件处进行判断,条件满足时则继续循环。 ​

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
char c = 0;
while(c != '\n')
{
//回车键结束循环
c = getchar();
if(c=='4' || c=='5')
{
//按下的是数字4 或 5
continue;//跳过当前循环,进入下次循环
}
putchar(c);
}
return 0;
}

breakcontinue的对比:break 直接中断这一层循环,循环语句不再有执行的机会;continue 则是只结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

循环嵌套

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

在C语言中,if-else、while、do-while、for 都可以相互嵌套。
所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,
或者 for 里面有 while,while 里面有 if-else等等等等。

//99惩罚表
int main()
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d * %d = %-4d", i, j, i * j);
}
printf("\n");

}
return 0;

}


//relust
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81















举报

相关推荐

0 条评论