嵌入式Linux C(四)——基本语句注意点(附题目)

一、if语句陷阱

if语句注意事项

  • 非零为真
  • if条件后面别加;
  • 判断相等时,将常量写在左边
  • 规范:if匹配else < 可读性差>
  • if条件中的运算符优先级(加上括号)
  • 零值比较
    整型 if(0 == num) if(0 != num)
    布尔型 if(flag) if(!flag)
    指针 if(NULL == *ptr) if(NULL !=*ptr)
    浮点型 if(x >=-EPSINON)&&(x <= EPSINON)
    EPSINON是允许的误差(即精度)

二、循环语句

  • 死循环 while(1)/for(;😉
  • whlie条件没有==;==
  • 循环体里不要直接修改循环变量==!!!==
  • 程序优化(嵌套),把长循环放在内层;逻辑判断放在外层
  • 编码规范:即使只有一条语句也加上{}

switch语句

  • 条件:整数或者字符 表达式
  • 格式:不管case下语句有多少条,都要加{}
  • default:每个switch语句必须加入default
  • 流程:只要匹配到case,如果case里没有break,会一直往下执行

break VS continue

continue(只在循环体):结束当前这次循环,进行下次循环
break:结束当前全部循环

goto语法

loop:
goto
goto使用注意事项

  • 尽可能的少用goto语句:goto语句会破坏代码结构;导致代码可读性差
  • 标签和goto语句之间切记不要出现变量的定义

goto的使用场景:异常处理
快速处理掉异常

程序训练

题目1~n,数字中,有多少个’9’

#include <stdio.h>

int main()
{
	int num,sum = 0,temp_i,i;
	scanf("%d",&num);
	for(i = 0; i <= num; i++)
	{
		temp_i = i;
		while(0 != temp_i)
		{
			if(9 == (temp_i % 10))
			{
				sum++;
			}
			temp_i = temp_i / 10;
		}
	}
	printf("sum = %d",sum);
	return 0;
} 

题目2
题目:有n个人围成一圈,顺序排号,从第一一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.(提示:用数组完成)
题目3
输入5个数(含负数、小数)将他们按小到大的顺序排列起来(提示:需要排数的数字通过参数传递进来)

posted @ 2022-01-13 18:54  周末不下雨  阅读(14)  评论(0编辑  收藏  举报