计协编程组C语言第一次培训(1.17)

2023-10-29 06:30

本文主要是介绍计协编程组C语言第一次培训(1.17),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

目录

初识C语言

一、字符类型

1、char字符类型

2、int字符类型

3、float单精度浮点型

4、double双精度浮点型

5、short短整型

6、long长整型

二、变量的初始化和赋值

1、赋值

2、初始化

2、变量的类型

练习:交换变量a,b

三、变量知识点补充

1、数据类型bool

2、常用的数据类型表示范围

3、浮点数的几个注意事项

4、强制类型转换

5、宏常量和const常量

练习2: 

四、运算表达式

五、判断

1、如果if

2、否则else

3、逻辑判断符优先级

练习3:




初识C语言

Hello world!

一、字符类型

1、char字符类型

a,b,c,@,#,$

2、int字符类型

1,2,3,4

3、float单精度浮点型

1.1,1.3

(1)浮点数的打印方式
ctrl + /:注释
1.直接打印(默认小数点后六位)

2.指定打印的位数   %.?f

 

4、double双精度浮点型

5、short短整型

表示值小的

6、long长整型

表示更大的值

 

m确定位宽,n显示输出小数

 

 

二、变量的初始化和赋值

1、赋值

在这里插入图片描述

不是每定义了一个变量都要给他赋初始值。
有些中间变量,只需要当成存储器就好了,不需要赋值。
C语言中,变量必须满足先定义,再使用。

int x,y;
scanf("%d",&x,&y);

注意“=”与“==”的差别!!!

如果写成if (x=0)那所有输出都是0

所以一定要注意!!== 才是真正的等于= 是从右向左

2、初始化
 

1、赋值的三种方式
(1)变量

int a=3,b=4,c;c=b;

(2)表达式赋值

int a=6,b=7,c;c=9+14;

(3)值

int a=6,b=7,c;c=9;

2、变量的类型

(1)局部变量
局部变量和全局变量重名时,局部变量的优先级高于全局变量

(2)全局变量

全局变量能在函数中直接被改变

全局变量必须定义在我们需要用它的函数体之前

 

  

#include <stdio.h>
int a=10 //全局变量
int main(){int b,c=10;b=a+c;//b局部变量

练习:交换变量a,b

#include <stdio.h>
int main()
{int a,b,c;a=10;b=4;printf("交换前a的值%d,b的值%d\n",a,b);c=a;a=b;b=c; printf("交换后a的值%d,b的值%d\n",a,b);return 0;
}

三、变量知识点补充

1、数据类型bool

C语言用0表示假,用非零(不一定是1)来表示真

2、常用的数据类型表示范围

int :10^9

long:10^9

long long:10^18

float:可以精确表示小数点后六位数字,但是六位过后就可能出现错误(举个例子)
double:可以精确到小数点后15位数字

 

 

 

 

3、浮点数的几个注意事项

1)比较两个浮点数

如果两个浮点数都是由常数直接赋值,这样比较不会出现错误(因为机器识别可能与人不同)

2)浮点数的精度问题

%f默认就是%.6f

3)浮点数的除法

两个数进行除运算
如果其中全是整数,除法相当于整除
只要其中有浮点数,结果就是准确的

#include <stdio.h>
int a=10;
int main(){int  a=5;float b=2;//换成2.0,结果就是2.500000float c=a/b;printf("%f",c);
}

4)自动类型转换

计算中,要求操作数必须有相同的大小和存储方式,

例如,由于各操作数大小不同,硬件不能将== char 型( 1 字节)数据与 int 型( 2 或 4 字节)==数据直接参与运算;

由于存储方式的不同(整型使用的是原,反,补,码进行存储,浮点型使用的是IEEE754标准进行存储),也不能将 int 型数据与 float 型数据直接参与运算。
(char和int),(整数:原反补)(小数:IEEE754标准),这些不能进行运算。

C语言,表达式中如果出现不同的类型进行运算,较低类型将向较高类型转换(较低类型就是所占字节数少的类型,反之。)

5)当操作数重没有double类型时

当 char、short 出现在表达式中参与运算时,一般将其自动转换为 int 类型。
(注意char要加‘ ’)

#include <stdio.h>
int a=10;
int main(){int a;short b=1;a='a'+b+10;printf("%d",a);
}

char 引入字符串

6)当操作数中含有浮点型数据(float 或 double)时

所有操作数都将转换为 double 型。(选择题)

7)如果赋值的时候,两侧的变量类型不一致

精度改变会将右边的类型转换为左边的类型,可能使右边的数据精度增加,也可能使精度降低

比如增大精度

double a;
a=5.0

 降低精度

int a;
a=1.123456

程序出错

右值超出了左值的类型范围,结果可能无意义

#include <stdio.h>
int a=10;
int main(){char  a='a';int b=1234567890;short c=b;printf("%d",c);}

4、强制类型转换

格式

(目标类型)表达式

	float a;a=1.235;printf("%d",(int)a);

//(int)a

5、宏常量和const常量

1)宏常量

#include <stdio.h>
#define PI 3.14159  //后面千万不可以加分号
#define R 5.3  //用大写表示
int main(){printf("S=%f\n",PI*R*R);printf("L=%f\n",2*PI*R);return 0;
}

格式为:#define 标识符 字符串

标识符一般全大写,字符串不分数据类型

                                     一定注意不要加分号在后面,会引起语法错误

2)const常量

可以显示出引入常量的数据类型

const double pi=3.14159;
const double r=5.3;

练习2: 

#include <stdio.h>
int main()
{int a=11;float x=2.8,y=5.7;int b,c,e,f,g,h;b=(int)(x+y);c=a%3;printf("%d\n",c);e=c*b;printf("%d\n",e);f=e%2;printf("%d\n",f);g=f/4;printf("%d\n",g);h=x+g;printf("%d\n",h);return 0;
}

我输出的答案是2,不知道答案对不对。

四、运算表达式

自增自减运算符:

a++;(a=a-1)                            a--;(a=a+1)

二元运算符:

a+=1;(a=a+1)                       a*=2;(a=a*2)其他的符号类比

逻辑运算符(二元运算符)
&&(逻辑与)、||(逻辑或)

C语言中, 0为假, 1为真

 

 

//判断是否是闰年(能被四整除,不能被一百整除,能被400整除) 
#include <stdio.h>
int main()
{int y;int n=0;n=scanf("%d",&y);if(n==1){if(y<=0){printf("不是闰年!\n");}else if(y%4==0 && y%100!=0 || y%400 == 0){printf("%d 是闰年!\n",y);}else{printf("不是闰年!\n");}}else{printf("不是闰年!\n");}return 0; 
}

 

五、判断

(详见第二篇博客)

1、如果if

if(判断条件){

条件成立:执行语句

}

判断条件非零就是成立,为零则不成立

2、否则else

3、逻辑判断符优先级

1)从左向右进行判断

2)==和!=优先级比其他符号低

练习3:

输入三个数a,b,c,比较输出其中的最大值

#include <stdio.h>
int main()
{int a,b,c;scanf("%d %d %d",&a,&b,&c);if(a>b){if(a<c){printf("%d",c);}else{printf("%d",a);}}else{if(b<c){printf("%d",c);}else{printf("%d",b);}}
return 0;
}

想不到更简单的办法了

思考题:数的倒置

输入一个数(12345678),输出这个数的倒置(87654321

#include <stdio.h>
int main()
{int n,i;scanf("%d",&n);int b=0;while(n>0){i=n%10;b=b*10+i;n=n/10;}printf("倒置后为:%d\n",b);return 0;
}

这道题还是要思考一下,怎么表示出来那个倒置的数吧,因为我也想到取余这个方法,但是就是一直卡在怎么才能让它完全表示出来,b=b*10+i就很巧妙

写程序就是要逻辑通,然后自己不停的试

这篇关于计协编程组C语言第一次培训(1.17)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298853

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

C语言 将“China”译成密码

将“China”译成密码,密码规律是:用原来的字母后面的第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。编译程序用付赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为“C”,“h”,“i”,“n”,“a”,经过运算,使c1,c2,c3,c4,c5分别变成“G”,“l”,“m”,“r”,“e”。分别用put

企业如何进行员工的网络安全意识培训?

企业网络安全意识培训的重要性         企业网络安全意识培训是提升员工网络安全素质的关键环节。随着网络技术的快速发展,企业面临的网络安全威胁日益增多,员工的网络安全意识和技能水平直接关系到企业的信息安全和业务连续性。因此,企业需要通过系统的网络安全意识培训,提高员工对网络安全的认识和防范能力,从而降低企业在面对潜在安全风险时的损失和影响。 企业网络安全意识培训的方法         企

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

【LinuxC语言】select轮询

文章目录 前言select函数详解selectfd_set类型一个小问题select函数使用步骤改进服务器代码select服务器示例代码 总结 前言 在Linux C语言编程中,我们经常需要处理多个I/O操作。然而,如果我们为每个I/O操作创建一个线程,那么当I/O操作数量增加时,线程管理将变得复杂且效率低下。这就是我们需要select轮询的地方。select是一种高效的I/