zoukankan      html  css  js  c++  java
  • C03 程序逻辑

    程序逻辑

    • 运算符
    • 顺序结构
    • 选择结构
    • 循环结构

      

    运算符

    赋值运算符:=

    比较运算符:>、<、==、 >=、<=、!=

    逻辑运算符:&&、||、!

    顺序结构

    在C语言中,赋值语句、字符数据的输入输出语句、格式输入输出语句这几种语句在执行的时候,程序不会发生流程控制的转移。

    赋值语句

    赋值符号:=,在C语言中是运算符,运算顺序是从右到左。

    例如:赋值表达式  a=b+c+d;

    字符输入输出语句

    putchar()输出单个字符。例如putchar(‘a’)。

    getchar()从终端输入一个字符。例如:char c; c=getchar();

    示例代码:

    格式输入输出语句

    printf(格式控制,输出列表)

    scanf(格式控制,地址列表)

    常用的格式控制字符:d,c,s,f。

    上机练习

    需求:要求从键盘输入一个大写字母,改用小写字符输出?

    备注:大写字母+32=小写字母。使用getchar()和printf()函数完成。

    选择结构

    单分支选择结构

    流程图如图所示:

    表达式:

      if(表达式)  语句

    示例:

     

    该单分支选择结构在解决该问题时有何缺陷?

    双分支选择结构

    流程图:

     

    表达式:

    if(表达式) 语句1

    else 语句2

    示例:

    上机练习

    需求描述:张三C语言成绩大于98分,而且软件工程成绩大于80分,奖励Pad;或者C语言成绩等于100分,软件工程成绩大于70分,也可以奖励Pad。

    提示:复杂条件下的if选择结构

      

    多分支选择结构

    流程图如图:

    表达式:

    if(表达式1) 语句1

    else if(表达式2) 语句2

    else if(表达式3) 语句3

    else if(表达式n-1) 语句n-1

    else 语句n

    上机练习

    需求描述:成绩的转换,控制台输入一成绩,要求输出:

    90~100分输出A

    80~90分输出B

    70~80分输出C

    60~70分输出D

    50~60分输出E

    switch选择结构

    流程图:同多分支选择结构

    表达式:

    switch(表达式){

    case 常量表达式1:语句1 ; break ;

    case 常量表达式2:语句2; break ;

    case 常量表达式3:语句3; break ;

    … …

    case 常量表达式n:语句n; break ;

    default:语句n+1; ; break ;

    }

    示例:根据成绩等级,输出对应分数范围

     

    上机练习

    练习1:修改示例,使之正确输出。

    练习2:每周一三五吃食堂,二四六吃法国大餐。

    练习3:学生信息管理系统菜单的制作,使用switch选择结构。

    循环结构

    循环结构用来处理重复的操作。

    循环结构特点:包括循环操作、循环条件,以及循环结构。

     

     

    while循环结构

    流程图:

    特点:先判断,再循环

    语法格式:

    while ( 循环条件 ) {

    循环操作

    }

    示例:

    输入年龄,如果错误,重新进行输入。如果正确,则提示输入正确,退出程序。

     

    上机练习

    练习:修改学生信息管理系统菜单,使之可以实现菜单的循环操作,选择退出将退出学生信息管理系统。

    提示:使用while循环三步骤

    1、确定循环条件和循环操作

    2、套用while循环格式写出代码

    3、确定循环结束条件

      

    程序调试

    如果程序出错,我们可以进入调试模式:

     

    调试步骤(Dev-Cpp):

     

    1. 设置断点
    2. 单步运行
    3. 观察变量(添加查看,输入变量名)

    调试步骤(vc6.0):

    1. 选择代码行,alt+f9或者通过编辑菜单进入断点设置.
    2. 单步运行:使用F5或则Go图片单步运行。

     

       3.观察变量(添加查看,输入变量名) 

    调试示例

     

    do…while循环结构

    流程图:

    特点:先执行循环操作,在判断循环条件

    语法格式:

    do {

           循环操作

    } while ( 循环条件 );

    示例:

    问题:老师需要检查张三上机考试是否合格,如果不合格,则继续考试。否则提示考试通过。

     

    上机练习

    练习:使用do……while循环结构修改学生信息管理系统菜单。

    for循环结构

    语法格式和执行顺序:

     

    示例:循环输入某同学S1结业考试的5门课成绩,并计算平均分。

     

    参考代码:

    	char name[20];//姓名
    	int sum=0;//总成绩
    	int avg;//平均分
    	int m=5;//一共5门功课
    
    	printf("请输入姓名:");
    	scanf("%s",name);//name为数组,不需要使用取地址符号&
    
    	for(int i=1;i<=m;i++){
    		int score;
    		printf("请输入第%d门课程成绩:",i);
    		scanf("%d",&score);
    		printf("score:%d
    ",score);
    		sum+=score;//累加成绩
    		printf("sum:%d
    ",sum);
    	}	
    	avg=sum/m;//计算平均成绩
    	printf("%s同学的平均成绩为:%d
    ",name,avg);
    

      

    循环的嵌套

    示例:输出乘法口诀表

     

    参考代码:

    	for(int i=1;i<10;i++){//控制行
    		
    		for(int j=1;j<=i;j++){//控制列
    			printf("%dx%d=%d ",j,i,j*i);
    		}
    		printf("
    ");//换行
    	}
    

      

    一维数组

    数组是一个固定大小的相同类型元素的顺序集合。数组一般用来存储一系列相同类型的数据。

    数组是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。

    数组中的特定元素可以通过索引访问。

    所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。

    数组的定义

    定义一个10个整数的一维数组:

    int nums[10]={11,14,-8,6,22,99,107,4,3,2,};

    或者

    int nums[]={11,14,-8,6,22,99,107,4,3,2,};

    问题:如何输出数组中的所有元素?

    参考代码:

    #include <stdio.h>
    
     
    
    int main()
    
    {
    
           int nums[10]={11,14,-8,6,22,99,107,4,3,2,};
    
           for(int i=0;i<10;i++){
    
               printf("%d ",nums[i]);
    
           }
    
           printf("
    ");
    
           return 0;
    
    }
    

      

      

    上机练习

    二重循环练习

    需求:定义一个10个数字的数组,实现冒泡法排序。

    提示:冒泡法排序说明

    参考代码:

    #include <stdio.h>
    
     
    
    int main()
    
    {
    
           int nums[10]={11,14,-8,6,22,99,107,4,3,2,};
    
           printf("排序前的数组:");
    
           for(int i=0;i<10;i++){
    
                  printf("%d ",nums[i]);
    
           }
    
           //冒泡排序
    
           for(int j=0;j<10-1;j++){
    
                  for(int k=0;k<10-1-j;k++){
    
                         int temp=0;
    
                         if(nums[k]>nums[k+1]){
    
                                temp=nums[k];
    
                                nums[k]=nums[k+1];
    
                                nums[k+1]=temp;
    
                         }
    
                  }         
    
           }
    
           printf("
    排序后的数组:");
    
           for(int m=0;m<10;m++){
    
                  printf("%d ",nums[m]);
    
           }
    
           printf("
    
    ");
    
           return 0;
    
    }
    

      

    运行结果: 

    控制台密码掩码形式输入

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) {
    	printf("请输入密码:");
    	char pass[20];
    	int i;
        for(i=0;i<20;i++){
           pass[i]=getch();
           if(pass[i]=='
    ')
    	   	break;
           putch('*');
        }    
        printf("
    密码是:%s",pass);
    	return 0;
    }
    

      

  • 相关阅读:
    老男孩Python28期班学习笔记day1
    Apache Torque
    管理和维护RHCS集群
    Email邮件服务的搭建(postfix on rhel7.2)
    DS4700控制器重启原因分析
    读懂系统路由表
    一条看不懂的多路径
    基于Vmware-ESXi5.1实验RHCS虚拟Fence设备(一)
    RedHat 6.7 Enterprise x64环境下使用RHCS部署Oracle 11g R2双机HA
    rhcs相关实战教程
  • 原文地址:https://www.cnblogs.com/rask/p/10171427.html
Copyright © 2011-2022 走看看