第4章 C程序结构语句

2016-12-14 09:56:56来源:http://blog.csdn.net/Carb_5683/article/details/52985827作者:Carb_5683人点击


4.1 分支结构之简单语句



判断语句如何表达?

需用到C语言中的分支结构语句中的if条件语句

简单的if语句的基本结构


if(表达式)
{
执行语句
}

如果表达式的值是真的,则执行其后的语句,否则不执行该语句
#include 
int main()
{
int height = 185;
if (height >= 180)
{
printf("恭喜小明可以参加校篮球队: /n");
}
return 0;
}


4.2 分支结构之简单的if-else语句 简单的if-else语句的基本结构



if(表达式)
{
执行代码块1
}

else
{
执行代码块2
}

如果表达式是真的就执行代码块1,否则就执行代码块2
#include 
int main()
{
int result ;
if(result=100)
{
printf("%s/n","买玩具");
}
else
{
printf("%s/n","没有奖励");
}
#include 
int main()
{
int year =2014;
if(year%4==0&&year%100!=0)||year%400==0)
{
printf("%s/n","今年是闰年");
}
else
{
printf("%s/n","今年不是闰年");
}


4.3 分支结构之多重的if-else语句 在C语言中就要用到多重if-else的基本结构是什么?



if()
{
执行代码块;
}

else if()
{
执行代码块;
}

。。。。
else
{
执行代码块n;
}

依次判断表达式的值,当出现某个值为真时,则执行对应的代码块,否则则执行代码块n
#include 
int main()
{
int score = 95;
if (score > 90)
{
printf("%s/n","吃大餐");
}
else if (score = 100)
{
printf("%s/n","买玩具");
}
else
{
printf("%s/n","没有奖励");
}
}


4.4 分支结构之嵌套if-else语句



if (表达式)
{
if (表达式)
{
执行代码块;
}

else
{
执行代码块;
}

}
else
{
执行代码块;
}

任务获奖条件为年销售业绩100万以上,并且入职满两年的员工。小明进入公司1年,销售业绩为120万。

#include 
int main()
{
int sale = 120;
int year = 1;
if (sale > 100)
{
if (year >= 2)
{
printf("%s/n","恭喜你获得优秀员工");
}
else
{
printf("%s/n","非常遗憾,期望你再接再厉!");
}
}
else
{
printf("%s/n""非常遗憾,期望你再接再厉");
}
return 0;
}


4.6 循环结构之while循环


反复不停的执行某个动作称之为循环
C语言有三种循环结构

while循环结构


while (表达式)
{
执行代码块;
}
表达式表示循环条件,执行代码块为循环体。

while循环语句的语义是:计算表达式的值,当值为真时,执行循环体代码块。否则就结束循环


使用while语句应注意以下几点:

while语句中的表达式一般是关系表达式或者是逻辑表达式,当表达式的值为假时不执行循环体,反之,则一直执行。
一定要记得在循环体中改变循环变量的值,否则会出现死循环

循环体如果包含有一个以上的语句,则必须用{}括起来,组合复合语句


任务:用while循环实现100以内的所有整数之和


4.7 循环结构之do-while循环



C语言的do-while循环的基本结构


do
{
执行代码块;
} while (表达式);//英文的分号,易忘记

do-while循环语句的语义:先执行循环中的执行代码块,然后再判断while循环中的表达式是否为真,如果为真则继续循环,如果为假则终止循环



注意: 使用do-while 结构的语句时,while括号后必须有分号



任务:某公司2014年在职人数为200人,以每年20%增长速度不断扩大招工规模,请使用do-while循环计算从2014开始至哪一年招工规模能够突破1000人。


#include 
int main()
{
int number = 200;
int year = 2014;
do
{
year++;
number *= 1.2;
} while (number < 1000);
printf("到%d年招工规模突破1000人/n",year);
return 0;
}


4.8 循环结构之for循环(一)



for循环的基本结构


for (表达式1; 表达式2; 表达式3)
{
执行代码块;
}

执行过程:第一步:执行表达式1,对循环变量做初始化;第二布:判断表达式2,若其值为真,则执行for循环体中执行代码块,继续执行,若其值为假,则结束循环。第三步:执行表达式3第四步:执行for循环中执行代码块后执行第二步;第五步:循环结束,程序继续向下执行。


注意for循环中的分号一定要写


任务:体验一下for循环,实现一个10以内的数的小程序。


#include 
int main()
{
int num = 0;
int sum = 0;
for (num = 0; num <= 10; num++)
{
sum += num;
}
printf("10以内数的和为: %d",sum);
return 0;
}


4.9 循环结构之for循环(二)



使用for循环应注意的:

省略表达式1(循环变量赋初值),表示不对循环变量赋初始值
int i =1;
for( ;i<=10;i++)
{
printf("第%d遍书写:computer/n",i);
}
省略表达式2(循环条件)不做其他的处理,循环一直执行;
int i;
for(i=0; ;i++)
{
printf("第%d遍书写:computer/n",i);
}
省略表达式3(循环变量增量),不做其他处理,循环一直执行
int i;
for(i=0;i<=10; )
{
printf("第%d遍书写:computer/n",i);
}
表达式1可以设置为循环变量的初值的赋值表达式,也可以是其他的表达式。
int sum,num;
num=0;
for(sum=0;num<=10;num++)
{
sum+=num;
}
表达式1和表达式3可以是一个简单表达式也可以是多个表达式以逗号分割。
int sum,num;
for(sum=0,num=0;num<=3;num++,sum++)
{
sum +=num;
printf("num=%d,sum=%d/n",num,sum);
}
表达式2一般是关系表达式或者逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
int num,sum;
for(sum=0,num=0;num<=3&&sum<=5&&1;num++,sum++)
{
sum +=sum;
printf("num=%d,sum=%d/n",num,sum);
}
各表达式中的变量一定要在for循环之前定义
for(int sum=0,int num=0;num<=3&&sum<=5&&1;num++,sum++)
{
sum +=num;
printf("num=%d,sum=%d/n",num,sum);
}

任务:输出所有水仙花数字


#include 
int main()
{
int num = 0;
int sum = 0;
for (num = 0; num <= 10; num++)
{
sum += num;
}
printf("10以内数的和为: %d",sum);
return 0;
}


4.10 循环结构之三种循环比较



在知道循环次数的情况下更适合for循环在不知道循环次数的情况下适合使用while或者do-while循环。本质上,while、do-while、for循环之间是可以相互转化的



任务 使用循环计算1-2+3-4+5-6+….-100的值?



#include 
int main()
{
int sum = 0;
int i = 1;
int flag = -1;
while (i <= 100)
{
i++;
sum += i*flag;
flag *= -1;
}
printf("sum=%d/n",sum);
return 0;
}
#include 
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
do
{
i++;
sum += i*flag;
flag *= -1;
} while (i <= 100);
printf("sum=%d/n",sum);
return 0;
}
#include 
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
for (i = 1; i <= 100;i++)
{
sum += i*flag;
flag *= -1;
}
printf("sum=%d/n",sum);
return 0;
}


4.12 循环结构之多重循环



多重循环就是在循环结构的循环体中又出现循环结构


多重循环在执行的过程中,外层循环为父循环,内层循环为子循环,父循环一次,子循环再进入下一次,子循环继续执行。。。



注意: 一个父循环可以有很多个子循环



#include 
int main()
{
int i, j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= 5; j++)
{
printf("*");
}
printf("/n");
}
return 0;
}
*****
*****
*****
*****

#include 
int main()
{
for (int i = 1; i < 5; i++)
{
for (int j = 1; j < 5 - i; j++)
{
printf(" ");
}
for (int j = 0; j < 2 * i - 1; j++)
{
printf("*");
}
printf("/n");
}
}
     * 
***
*****
*******

#include 
int main()
{
int i, j, k;
for (i = 1; i < 5; i++)
{
//每行的空格数
for (j = i; j < 5 ; j++)
{
printf(" ");
}
//每行的数量
for (k=0; k < 2 * i
- 1; k++)
{
printf("*");
}
printf("/n");//每次循环换行
}
}


4.13 使用for循环打印9*9乘法表



请使用for循环,倒序打印9*9乘法表


#include 
int main()
{
int i, j;
for (i = 9; i > 0; i--)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d/t", i, j, i*j);
}
printf("/n");
}
}
#include 
int main()
{
int i, j;
for (i = 9; i > 0; i--)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d/t", i, j, i*j);
}
printf("/n");
}
}


4.14 结束语句之break语句



使用break语句时注意以下几点:1、在没有循环结构的情况下,break不能用在单独的if-else语句中。2、在多层嵌套中,一个break语句只跳出当前的循环。



需要中断不再继续训练



#include 
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
printf("运动%d次/n",i);
if (i == 5)
{
printf("哎呀!!坏了!肚子疼!");
printf("停止训练..../n");
break;
}
}
printf("今天的训练到此结束。");
return 0;
}

任务:



找出0~50之间的所有素数,所谓的素数就是在只能被1和他本身整除的数字。



#include 
int main()
{
int m, n;
for (m = 2; m <= 50; m++)
{
for (n = 2; n < m; n++)
{
if (m%n == 0)//什么条件下跳出当前循环
break;//退出当前循环
}
if (m == n)
printf("%d ",m);
}
}


4.15 结束语句之continue语句


continue的作用是结束本次循环开始执行下一次循环。
break语句和continue语句的区别是:break是跳出当前的循环,continue是结束本次循环开始下一次循环。

任务:计算1~20之间不能被3整除的数字之和


#include 
int main()
{
int m, n;
for (m = 2; m <= 50; m++)
{
for (n = 2; n < m; n++)
{
if (m%n == 0)//什么条件下跳出当前循环
break;//退出当前循环
}
if (m == n)
printf("%d ",m);
}
}
#include 
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
printf("运球%d次/n",i);
if (i == 5)
{
printf("去接个电话/n");
continue;
}
}
printf("今天的训练到此为止。/n");
return 0;
}


4.16 分支结构之switch语句


C语言提供了一种用于多分支选择的switch语句
小明对自己每周的学习和生活制定了计划方案,每天应该干什么都详细规划。

switch语句的基本结构:


switch (表达式)
{
case 常量表达式:
执行代码块;
break;
case 常量表达式:
执行代码块;
break;
case 常量表达式:
执行代码块;
break;
default:
执行代码块;
}
#include 
int main()
{
int day = 1;
switch (day)
{
case 1:
printf("%s/n","学英语");
break;
case 2:
printf("%s/n","学C语言");
break;
default:
printf("%s/n","好好休息");
break;
}
}

在使用switch语句时还应该注意以下几点:

1、在 case后的各常量表达式的值不能相同,否则会出现错误.
2、在case子句后面没有break;会一直往后执行一直遇到break,才会跳出switch语句。
3、switch后面的表达式语句只能是整型或者字符类型。
4、在case后,允许有多个语句,可以不用{}括起来
5、各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
6、default子句可以省略不写。

任务:小明参加期末考试,分数等级分为A-D,等级划分方式如下:90<=分数<=100 ,等级为A。80<=分数<90 ,等级为B。60<=分数<80 ,等级为C。分数<60 ,等级为D。小明期末考试分数为87分,



没有弄懂的程序



#include 
int main()
{
int score = 87; //考试分数为87分
switch (score)
{
/*想想以下代码为什么用这种方式;
这种方式的好处?*/

case 10:
case 9:
printf("等级A");
break;
case 8:
printf("等级B");
//这里是不是缺点什么?
case 7:
case 6:
printf("等级C");
//这里是不是缺点什么?
default:
printf("等级D");
break;
}
return 0;
}
#include 
int main()
{
int year, month, day,sum;
printf("2008年8月8日");
scanf("%d %d %d", &year, &month, &day);
switch (month)
{
case 1: sum = 0; break;
case 2: sum = 31; break;
case 3: sum = 59; break;
case 4: sum = 90; break;
case 5: sum = 120; break;
case 6: sum = 150; break;
case 7: sum = 181; break;
case 8: sum = 212; break;
case 9: sum = 243; break;
case 10: sum = 273; break;
case 11: sum = 304; break;
case 12: sum = 334; break;
}
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
sum = sum + 1;
}
else
{
sum = sum;
}
sum = sum + day;
printf("%d",sum);
}
#include 
int main()
{
int year = 2008;
int month = 8;
int day = 8;
scanf("%d %d %d", &year, &month, &day);
int sum ,flag;
switch (month)
{
case 1: sum = 0; break;
case 2: sum = 31; break;
case 3: sum = 59; break;
case 4: sum = 90; break;
case 5: sum = 120; break;
case 6: sum = 150; break;
case 7: sum = 181; break;
case 8: sum = 212; break;
case 9: sum = 243; break;
case 10: sum = 273; break;
case 11: sum = 304; break;
case 12: sum = 334; break;
default:
printf("一年当中只有12个月");
break;
}
//计算天数
sum += day;
//当该年是闰年的时候,将状态位设置为1否则设置为0
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
flag = 1;
else
flag = 0;
//当需计算的日期是闰年并且需计算的月份大于2月份时,计算的天数自动加1
if (flag == 1 && month > 2)
sum++;
printf("%d年%d月%d日是该年的第%d天,year,month,day,sum");
return 0;
}


臭名远扬的goto语句


goto语句是一种无条件的分支语句,
goto语句的格式:
goto 语句标记


程序实现从控制台输出1-10,使用goto语句,实现当输出完3之后跳出循环体。



#include 
int main()
{
int sum = 0;
int i;
for (i = 1; i <= 100; i++)
{
printf("%d/n",i);
if (i == 3)
goto LOOP;
}
LOOP:printf("结束for循环了...");
}

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台