C语言入门之结构化程序设计

  • 选择结构

  1.   判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件

  为假时要执行的语句(可选的)。

  C 语言把任何非零非空的值假定为 true或 null 假定为 false

if判断结构的一般形式

输入两个实数,按代数值由小到大的顺序输出这两个数。

if else语句

Ø例:输入一个数,小于60输出不及格,否则及格。

Ø解题思路:

  1. scanf函数接收鍵盘输入的数
  2. if else语句实现条件判断,分别输出不及格和及格两种情况。
#include <stdio.h> //包含标准输入输出头文件
int main() //主函数main,程序的入口函数
{ 
   int score;  //定义一个整型变量score
   scanf(“%d”,&score); //从键盘输入1个值
   if(score < 60)  // 条件判断
       printf(“不及格\n”);    // 语句1
   else
       printf(“及格\n”);    // 语句2
   return 0;  //函数返回值为0
}

if.. else if ..else..语句

Ø例:按照考试成绩等级输出百分制,A85分以上,B等为70~84分,C等为60~69分,

          D等为60分以下,成绩等级由键盘输入。

Ø解题思路:

  1. scanf函数接收鍵盘输入等级。
  2. if.. else if..else 语句实现条件判断, 输出等级对应的分数。
#include <stdio.h>
int main()
{    
   char grade;
   scanf("%c",&grade);
   if(grade == ‘A’)  // 条件判断
       printf(“85~100分\n”);    // 语句1
   else if(grade == ‘B’)
 		printf(“70~84分\n”);   // 语句2
   else if(grade == ‘C’)
		 printf(“60~69分\n”);   // 语句3
   else if(grade == ‘D’)
		printf(“60分以下\n”);     // 语句n
   else
 		printf(“输入的等级错误\n”);    //语句n+1
   return 0;
}

最常用的3if语句形式

1. if (表达式) 语句1    (没有else子句)

2. if (表达式) 语句1        

    else  语句2           (else子句)

3. if(表达式1)    语句1

    else if(表达式2) 语句2

    else if(表达式3) 语句3

                 

    else if(表达式m) 语句n

            else   语句n+1

switch语句

例: 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为7084分,C等为

6069分, D等为 60分以下 。成绩的等级由键盘输入。

Ø解题思路:

  1. 判断出这是一个多分支选择问题
  2. 根据百分制分数将学生成绩分为4个等级
  3. 如果用if语句至少要用3层嵌套的if,进行3次检查判断
  4. switch语句进行一次检查即可得到结果

三元运算符

例:输入两个数,输中两个数中最大的数

Ø解题思路:

  1. scanf函数接收鍵盘输入2个数
  2. if else语句判断最大最小值,这里用三元运算符取代if else
  3. 将得到最大值输出到屏幕
#include <stdio.h>
int main()
{   
   int a,b,max;  //定义3个整型变量
   scanf("%d %d",&a,&b);
   
    max = a > b ? a :b;  // 三元运算符取代if else语句
	printf(“a,b中最大的数是%d\n”,max);
   return 0;
}
  • 选择结构的嵌套

Ø解题思路:

  1. if语句检查x的值,根据x的值决定赋予y的值
  2. 由于y的可能值不是两个而是三个,因此不可能只用一个简单的(无内嵌if)if语句来实现
#include <stdio.h>
int main()
{   
   int x,y;  //定义2个整型变量
   scanf("%d",&x);
   if(x < 0)
		y = -1;
   else
         if(x == 0)
		   y = 0;
		else 
             y = 1;
	printf(“a,b中最大的数是%d\n”,max);
   return 0;
}
  • 循环结构程序设计

do---while语句实现循环

#include <stdio.h>
int main()
{ 
   int i=1,sum=0;   //赋初值
   do 
    {
       sum=sum+i;   
       i++;            // 条件值自增1
    }while(i<=100);   //do while语句的条件判断
    printf("sum=%d\n",sum);
    return 0;
}

for 语句实现循环

Øfor语句的执行过程

(1) 先求解表达式1

(2) 求解表达式2,若值为真,执行循环体,然后执行下面第(3)步。若为假,则结束循环,转到第(5)

(3) 求解表达式3

(4) 转回上面步骤(2)继续执行

          (5) 循环结束,执行for语句下面的一个语句

循环的嵌套

  1. 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套
  2. 内嵌的循环中还可以嵌套循环,这就是多层循环
  3. 3种循环(while循环、dowhile循环和for循环)可以互相嵌套

Ø例:输出九九乘法表

Ø解题思路:

  1. 用一个循环变量i19循环乘法口决的乘数
  2. 用另一个循环变量j1i循环乘法口决的被乘数
  3. 输出乘法口决
  4. 每次内层循环结束输出一个换行,方便阅读。
#include <stdio.h>  //包含标准输入输出头文件
int main(void)   //主函数,程序的入口
{
	for(int i=1;i<=9;i++)  //外层循环,从1到9循环口决的乘数
	{
		for(int j=1;j<=i;j++) //内层循环,从1到i循环被乘数
		{
			printf("%dX%d=%d\t",i,j,i*j);
		}
		printf(“\n”);  //每次内层循环结束,输出一个换行符
	}
	return 0;  //主函数的返回值为0
}

几种循环的比较

(1)一般情况下3种循环可以互相代替

(2) whiledo---while循环中,循环体包含使循环趋于结束的语句。

(3) whiledo---while循环时,循环变量初始化的操作应在whiledo---while语句之前完成。而for语句

     可以在表达式1中实现循环变量的初始化。

改变循环执行的状态

  1.  break语句提前终止循环
  2. continue语句提前结束本次循环

break语句提前终止循环

Øbreak语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句

:10000人捐款,每人捐款10~100元,超过10万元就停止捐款

Ø编程思路:

  1. 循环次数不确定,但最多循环10000
  2. 在循环体中累计捐款总数
  3. if语句检查是否达到10万元
  4. 如果达到就不再继续执行循环,终止累加
  5. 随机数用rand()函数产生,需要引入stdlib.h头文件
#include <stdio.h>   //标准输入输出库头文件
#include <stdlib.h>  // 标准库头文件
int main(void)    // 主函数
{	
    int  every,total = 0;   //定义两个整型变量
	for(int i=0; i<10000;i++)   //for循环语句
	{ 
        every = 10+rand()%91; //产生随机数
		total += every;    // 对每次捐款数进行累加
		if(total > 100000)	 //判断捐款数是否超过10万
			break;    //中断循环并退出循环语句
	}
	printf("总共捐款人数是%d人,总捐款数是%d\n",i,total);
	return 0;
}

continue语句提前结束本次循环

Ø有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环。这时可以用continue语句

要求输出1100之间的单数

Ø编程思路:

  • 1100之间的每一个整数进行检查
  • 如果能被2整除不输出否则输出
  • 无论是否输出此数,都要接着检查下一个数(直到100为止)
#include <stdio.h>  //标准输入输出头文件
int main()  //主函数,程序的入口
{
	for(int i=0;i<100;i++)  //循环语句
	{
		if(i % 2 == 0)     //判断是否是偶数
			continue;  //跳过本次循环,以下的语句被跳过
		printf(“%d,”,i);  // 输出单数
		if(i == 51)     //51个数输出一个换行
			printf("\n");  //输出一个换行
	}
	printf("\n");   //输出一个换行
	return 0;  //主函数的返回值为0
}

break语句和continue语句的区别

  • continue语句只结束本次循环,而不是终止整个循环的执行
  • break语句结束整个循环过程,不再判断执行循环的条件是否成立
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风雨依依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值