基础3.1:控制语句入门

编程入门 行业动态 更新时间:2024-10-07 05:30:09

基础3.1:控制<a href=https://www.elefans.com/category/jswz/34/1770772.html style=语句入门"/>

基础3.1:控制语句入门

文章目录

    • 1\. 条件判断语句
      • 1.1 `if-else`语句
      • 1.2 `if`语句
      • 1.3 `If-else if-else`语句
      • 1.4 `switch-case`语句
    • 2\. 循环语句
      • 2.1 `while`语句
      • 2.2 `do-while`语句
      • 2.3 `for`语句
      • 2.4 `break`语句和`continue`语句
    • 3\. 简化写法
      • 1\. 省略大括弧
      • 2\. 三元运算符`:?`
      • 3\.逗号运算符`,`
    • 4.综合
      • 案例4.1: 输入一个日期,计算出是这一天是星期几?
      • 案例4.2: 打印出当月的日历,例如:2019年3月日历
      • 案例4.3:身份证信息的打印
        • 1.原理
          • 1.1 构成
          • 1.2 地址码
          • 1.3 出生日期码
          • 1.4 顺序码
          • 1.5 校验码
          • 1.6 校验
        • 2\. 操作
      • 案例4.4:个税计算器
        • 1\. 业务
          • 1.1 月薪个人所得税
          • 1.2 年终奖个人所得税
        • 2 . 功能
          • 2.1 初级功能
          • 2.2 高级功能
        • 3. 分析

1. 条件判断语句

1.1 if-else语句

  • 语法
 if(条件){/* 如果表达式为真将执行的语句 */}else{/* 如果表达式为假将执行的语句 */}
  • 说明
  1. 大括号内的语句整体称为复合语句(compound statement)或者代码块/程序块(block)。
  2. 代码块与if之间使用空格或者Tab缩进,不影响编译和执行,只是为了提高代码可读性。
  • 练习1
    1. 比较两个数的大小
    2. 求一个数的相反数和绝对值
    3. 闰年判断
    4. 三角形构成判断

(完整代码见001——exe)

1.1可以采用if-else
完整代码见00101_CompareTwoNum.c

#include <stdio.h>main(){int n,m;printf("请输入一个数字:");scanf("%d",&n);printf("请再输入一个数字:");scanf("%d",&m);// if-else嵌套if(n==m){printf("两个数字相等");}else{if(n>m){printf("最大的数是%d\n",n);}else{printf("最大的数是%d\n",m);}}
}

1.2.可以采用if,else-if, else的比较
完整代码见00102_CompareTwoNum.c

#include <stdio.h>main(){int n,m;/*printf("请输入一个数字:");scanf("%d",&n);printf("请再输入一个数字:");scanf("%d",&m);*/printf("请输入两个数字(以空白符隔开):");scanf("%d%d",&n,&m);// if-else ifif(n==m){printf("两个数字相等");}else if(n>m){printf("最大的数是%d\n",n);}else{printf("最大的数是%d\n",m);}
}

2.(完整代码见00102——abs.c)

#include <stdio.h>main(){int n;printf("请输入一个数字:");scanf("%d",&n);if(n>0){// 求一个变量的相反数,只需要在变量前加负号printf("%d的相反数%d,绝对值%d\n",n,-n,n);}else{printf("%d的相反数%d,绝对值%d\n",n,-n,-n);}
}

3.完整代码见00103_leap.c

/** 功能:任意输入一个年份,判断其是否为闰年* 编辑日期:2019-1-29*/ #include <stdio.h> int main(void) { int year; printf("请输入年份:"); /* 循环获取用户输入 */scanf("%d",&year);/*闰年: (1)能被400整除 或者 能被4整除但不能被100整除*/ if (year%400==0 || (year%4==0 && year%100!=0)) { printf("%d年为闰年!\n", year); } else { printf("%d年为非闰年!\n", year); } return 0; } 

4.完整代码见00104_leap.c

#include <stdio.h>
#include <math.h>int main() {int a,b,c;printf("Please input the a,b,c:\n");scanf("%d%d%d",&a,&b,&c);if(a+b<=c||a+c<=b||b+c<=a)  //判断能否构成三角形(1)printf("不能构成三角形\n"); 
elseprintf("构成三角形\n"); return 0;
}

1.2 if语句

  • 语法
   if(条件){/* 如果表达式为真将执行的语句 */}
  • 练习2
    打印两位数的整数,如果数字只有各位数,前面补0。例如:1打印为01

    (完整代码见002——exe: 00201_getNum.c)

#include <stdio.h>int main(){int n;printf("请输入一个数字:");scanf("%d",&n);if(n<10){printf("0%d\n",n);}else{printf("%d\n",n);}
}

1.3 If-else if-else语句

  • 语法
if(条件1){/* 当条件1为真时执行 */} else if(条件2){/* 当条件2为真时执行 */} else if(条件3){/* 当条件3为真时执行 */}else{/* 当上面条件都不为真时执行 */}
  • 练习3
    1. 输入年份和月份,获取这个月的天数
    2. 输入某年某月某日,判断这一天是这一年的第几天?
    3. 输入字符,把它转成对应的摩尔斯电码

(完整代码见003_exe)
1.1 方案1:逐个列举
(完整代码见0030101_DateCount.c)

      #include <stdio.h>main(){printf("._");printf("请输入日期(yyyy):");int year,month,flags=0;scanf("%d%d",&year,&month);if (year%400==0 || (year%4==0 && year%100!=0)) { flags = 1; } int pre_mouth_days = 0;if(month == 1){pre_mouth_days = 31;}else if(month == 2){if(flags == 1){pre_mouth_days = 29;}else{pre_mouth_days = 28;}}else if(month == 3){pre_mouth_days = 31;}else if(month == 4){pre_mouth_days = 30;}else if(month == 5){pre_mouth_days = 31;}else if(month == 6){pre_mouth_days = 30;}else if(month == 7){pre_mouth_days = 31;}else if(month == 8){pre_mouth_days = 31;}else if(month == 9){pre_mouth_days = 30;}else if(month == 10){pre_mouth_days = 31;}else if(month == 11){pre_mouth_days = 30;}else if(month == 12){pre_mouth_days = 31;}printf("%d\n",pre_mouth_days);}

1.2 方案2:相同月份列举(推荐)
完整代码见0030102_DateCount.c

#include <stdio.h>main(){printf("请输入年份和月份:");int year,mouth;scanf("%d%d",&year,&mouth);if(mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12){printf("%d月有31天",mouth);}else if(mouth == 2){if(year%4==0 && year%100 !=0 ||year%400==0){printf("%d月有29天",mouth);}else{printf("%d月有28天",mouth);}}else if(mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11){printf("%d月有30天",mouth);}else{printf("%d是非法月份",mouth);}
}

2.注意:天数表示在上个月的基础上;(if-else)
(完整代码见00302_DataCount.c)

#include <stdio.h>main(){printf("._");printf("请输入日期(yyyymmdd):");int year,mouth,day;scanf("%d%d%d",&year,&mouth,&day);int sum_days;int pre_mouth_days;if(mouth == 1){pre_mouth_days = 0;}else if(mouth == 2){pre_mouth_days = 31;}else if(mouth == 3){pre_mouth_days = 31+28;}else if(mouth == 4){pre_mouth_days = 31+28+31;}else if(mouth == 5){pre_mouth_days = 31+28+31+30;}else if(mouth == 6){pre_mouth_days = 31+28+31+30+31;}else if(mouth == 7){pre_mouth_days = 31+28+31+30+31+30;}else if(mouth == 8){pre_mouth_days = 31+28+31+30+31+30+31;}else if(mouth == 9){pre_mouth_days = 31+28+31+30+31+30+31+31;}else if(mouth == 10){pre_mouth_days = 31+28+31+30+31+30+31+31;}else if(mouth == 11){pre_mouth_days = 31+28+31+30+31+30+31+31+30+31;}else if(mouth == 12){pre_mouth_days = 31+28+31+30+31+30+31+31+30+31+30;}sum_days = pre_mouth_days + day;if(year%4==0 && year%100 !=0 ||year%400==0){if(mouth > 2){++sum_days;}}printf("%d年%d月%d日是当年第%d天\n",year,mouth,day,sum_days);
}

1.4 switch-case语句

  • 语法
  switch(表达式){case 整型常量1:/* 表达式等于整型常量1执行的代码 */break; /* 可选的 */case 整型常量2:/* 表达式等于整型常量2执行的代码 */break; /* 可选的 *//* 您可以有任意数量的 case 语句 */default : /* 可选的 *//* 表达式不等于上面所有情况执行的代码 */}

注意1:. 如果没有break,则会从满足的条件一直执行到break;

switch(n){case 1:printf("1\n"); //如果没有break,则会从满足的条件一直执行到break;//break;case 2:printf("2\n");//break;case 3:printf("3\n");break;}

(完整代码见009_douhao_switch.c)

#include <stdio.h>main(){int n = (1+2,2*3,4-5,5/6);//逗号如果同级,从左到右;printf("n=%d\n",n); //0n = 1+2,2*3,

更多推荐

基础3.1:控制语句入门

本文发布于:2024-02-14 00:02:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761354.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语句   入门   基础

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!