与这相关的逻辑运算符和求素数的四种方法都在主页哦
if语句(三种形式)
1.无else语句部分
1)语法形式
if(表达式)
语句1
2)介绍
如果表达式为真(成立),则语句执行;如果表达式为假(不成立),则语句不执行。
注意:在c语言中,0表示真,非零表示假
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
if(n%2==1)
printf("%d是奇数",n);
return 0;
}
2.有else语句部分
1)语法形式
if(表达式)
语句1
else
语句2
2)代码介绍
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
if(n%2==1)
printf("%d是奇数",n);
else
printf("%d是偶数",n);
return 0;
}
注意:默认情况下,if后面只能跟一条语句,所以要跟多条语句,则需大括号{}
3.多分支
1)语法形式
if ( 表达式 1 )
语句 1 ;
else if ( 表达式 2 )
语句 2 ;
else
语句 3 ;
2)介绍
下面我们用判断一个年是不是闰年来举例子(只要满足一个条件,就为闰年)
(1)能被4整除且不能被100整除的年份为闰年。
(2)能被400整除的年份为闰年。
#include<stdio.h>
int main()
{
int year = 0;
scanf("%d", &year);
if (year % 4 == 0 && year % 100 != 0)
{
printf("闰年\n", year);
}
else if (year % 400 == 0)
{
printf("闰年\n", year);
}
else
{
printf("不是闰年\n", year);
}
return 0;
}
如果大家还是不太理解,可以看一下这个程序框图,我会把代码放在下面
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x<0)
y=-1;
else
{
if(x==0)
y=0;
else
y=1;
}
printf("y=%d\n",y);
return 0;
}
除此之外,我们还要注意配套的if else的配套使用
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x<0)
y=-1;
else
if(x==0)
y=0;
else
y=1;
printf("y=%d\n",y);
return 0;
}
如上代码未加大括号,我们应该注意书写格式要和匹配的对齐
我们还应该记住:else总是跟最接近的if匹配
switch语句
1.简单switch语句的程序
#include"stdio.h"
int main()
{
int n=0;
scanf("%d",&n);
switch(n%3)
{
case 0:
printf("余数是0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
如果case语句中没有break语句,将连续输出
例如
所以说,没有break就会把下面的都输出,直到遇见break,或最后一个case语句,但是要注意到的是,最后一个case子句(如果你的程序中是default就是default)中可不必用花括号括起来
2.switch语句的介绍
(1)switch语句括号内的应该为整形表达式(包括字符型)(因为字符型也归类到整形,因为字符的本质是ASCII,这个值是整数)
caseh后的值,必须为整形常亮表达式
(2) switch下面的花括号内师一个复合语句,这个复合语句包括若干语句,他是switch语句的语句体,语句体内包含多个以关键字case开头的语句行和最多一个以default开头的行。case后面跟一个常量(或常量表达式),如:case 'A',它们和default都是起标号(label,或称标签、标记)的作用,用来标志一个位置。执行switch语句时,先计算switch后面的"表达式"的值,然后将它与各case标号比较,如果与某一个 case标号中的常量相同,流程就转到此case标号后面的语句。如果没有与 switch 表达式相匹配的 case常量,流程转去执行 default 标号后面的语句。
警说明:
(3)可以没有default标号,此时如果没有与switch表达式相匹配的 case 常量,则不执行任何语句,流程转到switch语句的下一个语句
(4)各个 case 标号出现次序不影响执行结果。例如,可以先出现default标号,再出现"case 'D':…",然后是"case 'B':….
所以default子句不一定要放在最后,不过我们通常都是放在最后处理的
(5)每一个case常量必须互不相同;否则就会出现互相矛盾的现象(对 switch 表达式的同一个值,有两种或多种执行方案)。
(6)default语句是处理case语句不能解决的情况
例题
例题1:
如果输入a为6,程序运行的结果是()
如果输入a为9,程序运行的结果是()
#include"stdio.h"
int main()
{
int a;
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n");
case 2:printf("Tuesday\n");
case 3:printf("Wednesday\n");
case 4:printf("Thursday\n");
case 5:printf("Friday\n");
case 6:printf("Saturday\n");
case 7:printf("Sunday\n");
default:printf("error\n");
}
return 0;
}
答案在这里哟
例题2:
输入1-5,输出为工作日
输入6-7,输出为休息日
#include"stdio.h"
int main()
{
int a;
scanf("%d",&a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("工作日\n");break;
case 6:
case 7:printf("休息日\n");break;
default:printf("error\n");
}
return 0;
}
while语句
在讲while之前,先介绍一下while与if的区别吧
1.if语句与while语句的区别
上图的while循环的流程图,满足条件就执行语句,语句执行完再次执行表达式,不成立才会结束
while循环的特点是:只要循环条件表达式为真(即给定的条件成立),就执行循环体语句,
所以以上while循环的结果才会无止境,一直循环
2.例题
例题1求和
求1+2+3+···+100
我们来分析一下这道题
(1)这是一个累加运算,先后将100个数相加,需要重复进行100次运算,所以我们需要用到循环体
(2)再来看它有没有规律,发现每一次运算,都为后一个数是前一个数加1,因此不需要用scanf函数输入数据,只需要加完上一个数i之后,使i加1就可以得到下一个数。
#include<stdio.h>
int main()
{
int i = 1, sum = 0;
while(i<=100)
{
sum = sum + i;
i++;
}
printf("%d", sum);
return 0;
}
例题2 逆序输出
将1234逆序输出
1234%10=4 %是求余数的
1234/10=123 定义的整除,所以除完只取整数部分
123%10=3
123/10=12
12%10=2
12/10=1
任何数除以10余数都是他的个位数
#include<stdio.h>
int main()
{
int n = 0;
scanf_s("%d", &n);
while (n)
{
printf("%d", n % 10);
n = n / 10;
}
return 0;
}
for语句
1.语法形式
for(表达式1;表达式2;表达式3)
语句
语句就是循环体,多条语句需要加上大括号
2.介绍
表达式1:初始化表达式,只执行一次(可看下面的程序框图理解)。可以为0个,1个,多个变量
表达式2:判断表达式,决定是否继续执行
表达式3:调整,例如使变量增值,他是在循环体进行完才执行的
与下面形式的while循环等价
表达式1;
while 表达式2
{
语句;
表达式3;
}
注意:
1)表达式1可以省略,但应该在for语句前设立初值
2)表达式2可以省略,但是程序会无止境的走下去
for(i=1;;i++)
{
sum=sum+i;
}
相当于while
i=1
while(1)
{
sum=sum+i;
i++;
}
3)表达式3 也可以省略,但应该在语句中写出
4)三个表达式都可以省略,但是无使用价值了就,因为无初值,无判断,也不增值
do···while循环
1.语法形式
do
语句;
while(表达式);
不管三七二十一,上来就执行语句
所以语句至少执行一次
例如打印十个整数
2.例题
算出有几个数字
#include<stdio.h>
int main()
{
int n = 0;
int count = 0;
scanf_s("%d", &n);
do
{
count++;
n = n / 10;
} while (n);
printf("%d\n", count);
}
这个代码很适用与do···while,因为即使n=0,也是1位数
break与continue
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应用到循环中的。
1)break 的作用是用于永久的终止循环,只要 break被执,直接就会跳出循环,继续往后执行。
2)continue的作用是跳过本次循环中 continue 后边的代码,在for循环和while循环中有所差异的。
break举例
break语句提前终止循环
continue语句
无结果,光标会一直闪烁,因为continue下面的语句都执行不到,i不能加1,所以一直是5,都是5还打印不出来,死循环了。
那如果想打印1234678910呢,那就不能将i++放在后面了,所以应当改为
注意i的初值改为0
求素数练习题
//方法一:试除法
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for(i=101; i<=200; i++)
{
int j = 0;
for(j=2; j<i; j++)
{
if(i%j == 0)
{
break;
}
}
if(j==i)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
还有其他求素数的方法在我主页哟!
goto语句
goto next;
next:
goto会跳转到next处
标签:语句,case,int,while,循环,printf,表达式,分支 From: https://blog.csdn.net/2401_84024092/article/details/139375719