当前位置: 首页 > news >正文

嵌入式Linux C语言程序设计五

程序结构和控制语句

5.1C语言程序结构

  1. 顺序结构
  2. 分支结构
  3. 循环结构

5.2 C语言控制语句

5.2.1条件判断语句

  1. if 语句的形式

(1) if(表达式)语句2

#include<stdio.h>
int main()
{int a = 1,b = 20;if(a){printf("a true\n");}if(b){  printf("b true\n");    }if(a == b){print("a b equal\n");}
}

(2)if(表达式) 语句1 else 语句2

if(x>y)
{y = x;printf("x is bigger\n");
}
else
{  printf("x is not bigger\n");
}

(3) if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3

else if(表达式m) 语句m
else(语句n)

#include<stdio.h>
int main()
{float score;printf("input score:");scanf("%f",&score);if(score < 0|| score>100){printf("socre is invalid\n");return 0;}if(score>=90){printf("A\n");}else if(score >=80){printf("B\n");}else if(score >=70){printf("C\n");}else if(score >=60){printf("D\n");}else{printf("E\n");    }return 0;
}
  1. if语句的嵌套使用
#include <stdio.h>
int main()
{int i = 2000,n=0;while(i<2501){if(i%4!=0){i++;continue;}if(i%100!=0 && i%4==0){n++;i++;continue;}if(i%100 == 0 && i%400 == 0){n++;}i++;}printf("total:%d\n",n);return 0;
}
#include<stdio.h>
int main()
{int i = 2000,n=0;while(i<2501){if(i%4!=0){printf("%d is not a leap year\n",i);}else{  if(i%100!=0){printf("%d is a leap year\n",i);n++;}else {if(i%400 == 0){n++;}}      }i++;}printf("total:%d\n",n);return 0;
}
#include<stdio.h>
int main()
{int i = 2000,n=0;while(i<2501){if(i%4 == 0 &&(i%100!=0)||i%400 == 0)  {n++;}i++;}printf("total:%d\n",n);
}
  1. switch 语句
switch(表达式)
case 常量表达式1: 语句序列1;
case 常量表达式2: 语句序列2;
.....
case 常量表达式n:语句n;
default: 语句n+1;

switch 关键字后面的表达式必须是整型值或字符型值。
switch 语句比较特殊,这里的case标签并没有把语句列表划分为几个部分,它只是确定语句执行的入口点。
如果没有跳转指令的话会一直执行到switch语句的最后。

#include <stdio.h>
int main()
{float score;int grade;printf("input score:");scanf("%f",&score);if(score < 0 || score >100){printf("score is invalid\n");return 0;}grade = score/10;switch(grade){case 9:printf("A\n");case 8:printf("B\n");case 7:printf("C\n");case 6:printf("D\n");default:printf("E\n");}return 0;
}
#include<stdio.h>
int main()
{float score;int grade;printf("input score:");scanf("%f",&score);if(score < 0||score >100){printf("score is invalid\n");return 0;}grade = score/10;switch(grade){case 9:printf("A\n");break;case 8:printf("B\n");break;case 7:printf("C\n");break;case 6:printf("D\n");break;default:printf("E\n");break;}return 0;
}

5.2.2 循环语句

  1. while 和 do-while语句
while(表达式)
{循环体语句
}
do
{循环体语句
}witch(表达式);
#include <stdio.h>
int main()
{int sum = 0;int i = 0;while(i<=100){sum+=1;i++;}printf("the sum of 100 is %d\n",sum);return 0;
}
#include <stdio.h>
int main()
{int sum = 0;int i = 0;do{sum+ = i;i++;}while(i<=100);printf("the sum of 100 is %d\n",sum);return 0;
}
  1. for循环语句
for(表达式1;表达式2;表达式3)
语句
#include<stdio.h>
int main()
{int i,sum = 0;for(i = 1;i<=100;i++)  {sum +=i;}printf("The sum of 100 is %d\n",sum);return 0;
}
  • for语句中的表达式1可以省略,但在for循环之前应给循环变量赋值
int i = 1,sum = 0;
for(;i<=100;i++)
{sum = sum+i;
}
  • 表达式2也可以省略,循环将陷入死循。
int i ,sum = 0;
for(i = 1;;i++)
{sum = sum + i;
}
  • 表达式3也可以省略,但应在循环体中增加循环变量改变语句
int i ;
for(i = 1;i<100;)
{sum = sum +i;i++;
}
  • 表达式1和表达式3也允许同时省略
int i = 1,sum = 0;
for(;i<=100;){sum = sum+i;i++;
}
  • 三个表达式都可以省略,但";"不能省略
for(;;)
{sum = sum+1;i++;
}
  • 循环体可以是空语句。
  • for语句也可与for ,while, do-while语句相互嵌套,构成多重循环。
#include <stdio.h>int main()
{char let = 'F';int i,j;for(i = 0;i<let-'A';i++)  {for(j = 0;j<i;j++){printf("_");}for(j = 0;j<=i;j++)  {printf("%c",let-j);}printf("\n");}return 0;
}
  1. goto 语句构成循环
    标号与goto必须在同一函数内
#include<stdio.h>
int main()
{int i = 1,sum = 0;loop:if(i<=100){sum +=i;i++;goto loop;}printf("The sum of 100 is %d\n",sum);
}

5.2.3转向语句

  1. break语句
    注意brek语句只能跳出一层循环.
for( r =1 ;r <=10;r++)
{area = pi*r*r;if(area >100){break; }printf("%f\n",area)
}
  1. continue 语句
    continue 只能用在循环体中
#include<stdio.h>
int main()
{int n;for(n=1;n<=100;n++){if(n%7!=0)  {continue;}printf("%d",n);}
}
  1. goto语句
    goto 条件转移,跳出循环体
#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define N 300int main()
{char clean[N];int n;while(1){printf("*******************************************\n");printf("*1:register 2:login 3:quit*\n");printf("********************************************\n");printf("please choose:");if(scanf("%d",&n)==0){fgets(clean,N,stdin);printf("\n");continue;}switch(n){case 1://....break;case 2:if(do_login(sockfd,&buf)==0){continue;}    else{goto next;}case 3:exit(0);}}next:while(1){printf("****************************************************************\n");printf("*1:query   2:history   3 quit*\n");printf("*****************************************************************\n");printf("please choose:"); if(canf("%d",&n)==0){fgets(clean,N,stdin);printf("\n");continue;}  switch(n){//......}}exit(0);
}

上面的代码改用循环

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define N 300int main(int argc,char *argv[])
{char clean[N];int n;while(1){printf("*********************************************\n");printf("*1:register 2:login 3:quit*\n");printf("**********************************************\n");printf("please choose:");if(scanf("%d,&n")==0){fgets(clean,N,stdin);printf("\n");continue;}switch(n){case 1://...break;case 2:if(do_login(sockfd,&buf)){while(1){printf("***************************************************\n");printf("*1: query 2:history 3:quit *\n");printf("****************************************************\n");printf("please choose:");if(scanf("%d",&n)==0){fgets(clean,N,stdin);printf("\n");continue;}switch(n){//...}}}elsecontinue;case 3:exit(0);}}exit(0);
}
http://www.dtcms.com/a/572856.html

相关文章:

  • 笔记:现代操作系统:原理与实现(8)
  • HashiCorp Vault 镜像拉取与 Docker 部署全指南
  • Oracle数据库常用视图:dba_datapump_jobs
  • WordPress wpForo Forum插件漏洞CVE-2025-11740复现
  • JAVA115回顾:Leecode 两数之和、无重复字符的最长字串、翻转二叉树、 最长公共前缀
  • 机器学习 大数据情境下blending-示例
  • 企业网站制作模板深圳坪山最新消息
  • Java进阶之多线程
  • idea2025版本设置springboot加载热部署
  • 合肥电子商务开发网站建设手机html5网站开发
  • 高速摄像机、科学相机赋能燃烧与多相流研究
  • 扣子大数据节点说明
  • Opencv图像畸变校正---个人学习笔记(待完善版)
  • Java设计模式精讲---02抽象工厂模式
  • 【ChatGPT系列】ChatGPT Atlas:未来浏览器的智慧体验
  • AWS实现S3配置私钥以及上传
  • C++ opencv拟合直线
  • TDengine IDMP 1.0.5.0 及近期更新总览:模型计算、可视化、异常检测全面升级
  • Melotopia For HarmonyOS 的 HAP 签名安装包在 DevEco Studio 中安装的详细步骤
  • 网页遇到ddos网络攻击,应该如何应对
  • LlamaFactory微调效果与vllm部署效果不一致
  • 国外营销网站求一个旅游网站的代码
  • Opencv(八) :ROI 切割
  • 计算机网络自顶向下方法34——网络层 排队论 缓存大小调节 分组调度 网络中立性
  • 网站怎么做适配南通网站建设培训
  • 本地缓存与分布式缓存:深入解析与多级缓存架构实践
  • 【C语言实战(73)】深入C语言网络编程:UDP与TCP的实战对决
  • 健身房预约系统SSM+Mybatis(五、预约展示)
  • 记录对某985证书站挖掘
  • 解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题