循环结构
1.if循环的三种格式
(1).if语句
若表达式为真则执行下面的语句,否则不执行;
main(){
int a,b,max;
printf("\n input two numbers: ");
scanf("%d%d", &a,&b);
max=a;
if(max<b) { max=b; }
printf("max=%d", max);
}
(2).if-else语句
if(表达式) 语句一; else 语句二;
若表达式的值为真则执行语句一,否则执行语句二。
int a,b;
printf("\n input two numbers: ");
scanf("%d%d", &a,&b);
if(a>b){
printf("max=%d\n",a); //语句一
}else{
printf("max=%d\n",b); //语句二
}
(3).if-else-if语句
if(表达式1)
语句1;
else if()
语句2;
else if()
语句3;
…
else if(表达式m)
语句m;
else
语句n;
当某个值为真时则执行对应的语句然后跳到整个if语句之外继续执行;
#include <stdio.h>
#include <stdlib.h>
int main(){
char c;
printf("input a character ");
c=getchar();
if(c<32)
printf("This is a control character\n");
else if(c>='0' && c<='9')
printf("This is a digit\n");
else if(c>='A' && c<='Z')
printf("This is a capital letter\n");
else if(c>='a' && c<='z')
printf("This is a samll letter\n");
else
printf("This is a other character\n");
}
}
}
首先比较一下‘\0’和‘0’的区别。有一个共同点就是它们都是字符,在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节。请翻开你的ASCII字符集表吧,一般在你的C语言教材的附录上,没有的话网上查查哦。请看第一个ASCII码,对是0,对应的字符是(Null),其实就是‘\0’,即空字符。判断一个字符串是否结束的标志就是看是否遇到‘\0’,如果遇到‘\0’,则表示字符串结束。而字符‘0’对应的ASCII码是48,48对应的十六进制数就是0x30,通常我们在编程的时候,用字符转化为数字的时候经常要用到,比如要将‘8’转换为数字8,在语句中这样写就可以了,“
8+‘0’”。这里的8就是数字。字符‘0’和数字0的区别:前者是字符常量,后者是整形常量,它们的含义和在计算机中的存储方式截然不同。但是字符常量可以像整数一样在程序中参与相关运算。例如:‘9’-3;。哈哈,是不是柳暗花明又一村啊。
接下来我们比较一下“0”和‘0’的区别。首先“0”是字符串常量,字符串常量是由一对双引号括起的字符序列。例如:“CHINA”,“I LOVE YOU”,“123”等都是合法的字符串常量。‘0’是字符常量,字符串常量和字符常量是不同的量。1:字符常量由单引号括起来;字符串常量由双引号括起来。2:字符常量只能是单个字符;字符串常量则可以含一个或多个字符。这里先介绍表达上的主要区别,在运用中还有存储空间的不同以及赋值方式的不同等等。这里只是抛砖引玉,具体可参考c语言相关书籍。今特此总结,希望对你有用,谢谢!(此段为引用)
(4).条件运算和条件表达式
运算符:?
表达式1?表达式2:表达式3;
若表达式1为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为条件表达式的值。
如:
if(a>b) max=a;
else max=b;
可转化为:
max=a>b?a:b;
2.switch语句
switch(表达式) {
case 常量表达式1: 语句1;
case 常量表达式2: 语句2; …
case 常量表达式3: 语句3;
default : 语句n+1;
}
执行此语句时先计算得到表达式的值,然后逐个与case表达式后面的常量表达式进行比较,若表达式的值与常量表达式的值相等时则执行此表达式,若都不匹配则去执行default后面的语句。
main(){
int a;
printf("please input number:");
scanf("%d", &a);
switch(a >= 0){
case a=1: printf("Today is Monday");
case a=2: printf("Today is Tuesday");
case a=3: printf("Today is Wednesday");
case a=4: printf("Today is Thursday");
case a=5: printf("Today is Friday");
case a=6: printf("Today is Saturday");
case a=7: printf("Today is Sunday");
default: printf("This number is not rigth!");
}
return 0;
}
在使用switch语句时还应注意以下几点:
1.在case后的各常量表达式的值不能相同,否则会出现错误。
2.在case后,允许有多个语句,可以不用{}括起来。
3.各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
4.default子句可以省略不用。
5.注意用break跳出switch循环。
3.while循环
(1).while循环
while 语法结构:
while(表达式)
循环语句;
while语句执行的时候,只要满足表达式条件,循环就会一直进行下去,直到条件不满足,跳出循环。
int main(){
int i = 1;
while(i <= 10){
if (i == 6){
continue;
}
printf("%d\n",i);
i = i + 1;
}
(2).do…while循环
do{
循环语句;
}while(循环条件)
do…while语句先执行后判断,循环体至少执行一次。
int main(){
int a = 0;
printf("请输入相应的值:");
scanf("%d", &a);
do{
a=a+1;
}while(a<=11);
printf("%d", a);
return 0;
}
4.for循环
for(语句一,语句二,语句三){循环体;}
第一个控制表达式在循环开始时执行,且只执行一次。
·第二个控制表达式必须是一个逻辑表达式,且在每次循环迭代开始重复前计算。
·第三个控制表达式,在每一次循环迭代结束时执行。
int main(){
int a = 0;
for(a = 1 ; a<=10 ; a++)
{
printf("%d", a);
}
}
5.break与continue语句
(1).break语句
break是用来跳出循环的,其实在循环中只要遇到break,就停止后面的所有循环,直接终止循环.所有,while语句中的break是用于永久终止循环的。
int main(){
int a = 1;
while(a <= 10){
if (a == 6){
break;
}
printf("%d\n",i);
i = i + 1;
}
}
(2).continue语句
continue后边的代码不会再执行,而是直接跳转到while语句的判断部分.进行下一次循环的入口判断。
int main(){
int a = 1;
while(a <= 10){
if (a == 6){
continue;
}
printf("%d\n",a);
a = a + 1;
}
}