前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式day4(2022.1.10)

嵌入式day4(2022.1.10)

作者头像
天天Lotay
发布2022-12-02 14:30:14
2970
发布2022-12-02 14:30:14
举报
文章被收录于专栏:嵌入式音视频

在 C 语言知识体系中,

数据类型 --- 》 点

运算符 --- 》 线

逻辑结构 --- 》 面

函数 --- 》 体

1. 控制流 - 分支结构

1. if-else 分支: 两路分支一般形式:

代码语言:javascript
复制
if( 逻辑表达式 ) { 
// 如果表达式为逻辑真, 则执行分支体 1 
}
 else {
 // 如果表达式为逻辑假, 则执行分支体 2 
}

2 } 多路分支一般形式:

备注:

1. 两路或者多路分支中, else 可省略, 主要看使用场景。

2. 当多路分支中, 某一个为逻辑真, 执行分支体后直接结束分支。

3. 多路分支没有规定分支总数。

4. if-else 分支结构中, 如果分支体只有 1 条语句, 范围括号 {} 可省略。

5. 尽量减少分支、 循环的嵌套, 尽量小于 5 层, 否则导致程序逻辑可读性变差。

2. 入口选择分支: switch-case

备注: 1. 进入某个入口后, 按照顺序向下执行。 如果需要提前结束 swich-case , 可使用 break

练习

.1.从小到大输入 3 个数字(三角形的三边长) a. 判断是否能组成三角形? ( 两短边之和, 大于第三边。) (如果成立继续执行 b , 如果不成立提前结束程序。) b. 判断该三角形属于直角?钝角?锐角?

代码语言:javascript
复制
#include <stdio.h>

int main()
{
	int a, b, c;

	scanf("%d %d %d", &a, &b, &c);

/*	// 2层if嵌套
	if(a+b > c)
	{
		// 正常的三角形,开始执行b
		if(a*a + b*b == c*c)
			printf("直角三角形\n");
		else if(a*a + b*b < c*c)
			printf("钝角三角形\n");
		else if(a*a + b*b > c*c)
			printf("锐角三角形\n");
	}
	else	// 不是三角形
		printf("不是三角形\n");
*/
	// 1层if
	if(a+b <= c)
	{
		printf("不是三角形\n");
		return -1;	// 返回数值无所谓(一般错误使用负数)
	}

	// 正常的三角形,开始执行b
	if(a*a + b*b == c*c)
		printf("直角三角形\n");
	else if(a*a + b*b < c*c)
		printf("钝角三角形\n");
	else if(a*a + b*b > c*c)
		printf("锐角三角形\n");

	return 0;
}

2.下列代码会打印哪个数字?

代码语言:javascript
复制
int a=-1;
	if(++a)
		printf("1\n");
	else if(a++)
		printf("2\n");
	else if(a++)
		printf("3\n");
	else if(a++)
		printf("4\n");
	else if(a++)
		printf("5\n");
	else
		printf("6\n");

	printf("a: %d\n", a);

while

代码语言:javascript
复制
#include <stdio.h>

int main()
{
/*
	if(逻辑表达式)
	{
		//逻辑真,则执行分支体
		// 执行完毕后,结束。
	}

	while(逻辑表达式)
	{
		//逻辑真,则执行循环体。
		// 执行完毕后,再次判断
	}
*/
	int var1 = 1;
	while(var1<=10)
	{
		printf("var1: %d\n", var1);
		var1++;
	}
	// 可简化为:
	int var1 = 1;
	while(var1<=10)
		printf("var1: %d\n", var1++);


	return 0;
}

作业:

1、编写一个程序,要求用相应的控制流语句往屏幕打印 26 个小写字母。

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    for (int i = 97; i <=122; i++)
    {
        char a=i;
        printf("%c\t",a);
    }
    printf("\n");
   return 0;
}

2、编写一个程序,用户输入某个大写字母,产生一个金字塔图案。例如用户输入字母 E,则产生如下图案:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    printf("请输入一个大写字母\n");
    char a;
    scanf("%c",&a);while (getchar()!='\n');
    
    int asciiCode=(int)a-64;
    printf("现在有%d数\n",asciiCode);
    int lineNum;
    for (int i = 0; i <asciiCode; i++)
    {
        for (int z = 2*asciiCode-1-i; z>=  0; z--)printf(" ");
        for (int j = 0; j <i+1; j++)
        {
            printf("%c",(char)65+j);
             if(j==i){
                for (;j>0;j--)
                {
                    printf("%c",(char)65+j-1);
                }
                j=i;
            }
        }
        printf("\n");
    }

   return 0;
}

3、编写一个程序,该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。

代码语言:javascript
复制
#include <stdio.h>
int main(int argc, char **argv)
{
	char ch;
	int space = 0;//空格数
	int line = 0; //换行数
	int otherchars = 0; //其他字符数
	
	printf("请输入文本:(输入'#'结束)\n");
	while(1)
	{
		scanf("%c", &ch);
		
		if(ch == '#') //遇到'#'就结束循环
		{
			break;
		}
		if(ch == ' ') //遇到空格,space+1
		{	
			space++;
		}
		else if(ch == '\n') //遇到换行,line+1
		{
			line++;
		}

		else
		{
			otherchars++;
		}
	}
	
	printf("空格数:%d\n", space);
	printf("换行数:%d\n", line);
	printf("其他字符数:%d\n", otherchars);

	return 0;
}

4、编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。

代码语言:javascript
复制
#include<stdio.h>
void sushu(int a) {
//素数(质数)计算方法
		int  i,j;
		for (i = 1; i <= a; i++) {
			for (j = 2; j < i; j++) {
				if (i % j == 0) {
                //    printf(i+"不是素数\n");
					break;
				}
			}
			if (i == j) {
                printf("%d\t",i);
			}
		}
}
int main()
{
    int a;
    printf("输入一个整数\n");
    scanf("%d",&a);
    // unsigned char b;
    sushu(a);
   return 0;
}

5、输入一个华氏温度,要求输出摄氏温度。要求结果保留 2 位小数。

转换公式为:c = 5(F-32)/9

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    float a;
    printf("输入一个华氏温度");
    scanf("%f",&a);
    float c=5*  (a-32)/9;
    //1 华氏度(华氏温度)=-17.222222222 摄氏度
   // printf("%.2f华氏度=%.2f℃\n",a,a*17.222);
   printf("%.2f华氏度=%.2f℃\n",a,c);
   return 0;
}

6.打印如下图案:

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	int i, j, k;
	for (i = 0; i < 4; i++)				//先输出前四行
	{
		for (j = 0; j < 3 - i; j++)		//随行数增加而减少每行空格的输出
		{
			printf(" ");
		}
		for (k = 0; k <= 2 * i; k++)		//随行数增加而增加每行*的输出
		{
			printf("*");
		}
		printf("\n");
	}
	for (i = 0; i < 3; i++)				//输出后三行
	{
		for (j = 0; j < i+1; j++)		//随行数增加而增加空格的输出
		{
			printf(" ");
		}
		for (k = 0; k <= 4-2*i; k++)	//随行数的增加而减少*的输出
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

7、将一个十进制数转换为十六进制数。比如输入 10,输出 0xA

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int a;
    printf("输入一个10进制数:\n");
    scanf("%d",&a);
    printf("转为16进制数是:0x%x\n",a);
   return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档