当前位置:网站首页>HNUMSC-C语言第一课
HNUMSC-C语言第一课
2022-08-09 01:51:00 【仿生程序员会梦见电子羊吗】
C语言第一讲
简介
- C语言是一种底层语言
- C语言是一种小型语言
- C语言是一种包容性语言
hello world
#include <stdio.h>
int main(void)
{
printf("Hello World!");
return 0;
}
#include <stdio.h>
头文件,包含C语言标准输入/输出库的相关信息
C语言规定每条语句都需要以分号结尾(当然,也有例外)
注释
文档说明
符号/标记注释的开始,符号/标记注释的结束
/* This is a comment */
注释几乎可以出现在程序的任何位置上。
注释也可以占用多行
#include <stdio.h>
/* Author:Bio Sheep
website:https://algernon98.github.io/
*/
int main(void)
{
printf("Hello World!");
return 0;
}
一般的注释放在代码部分之前,或者 同一行
int main(void)
{
printf("欲买桂花同载酒,终不似,少年游"); /*文本部分*/
return 0;
}
注意:大小写 “ ” "
句尾分号;
另一种注释:
int main(void)
{
printf("欲买桂花同载酒,终不似,少年游"); //文本部分
return 0;
}
这种注释会在行末自动终止
变量
每一种变量都必须有一种类型,用来说明变量所存储的数据的种类。
int型变量可以存储整数,但取值范围有一定限制;float型变量可以存储带小数位的数。
类型 | 举例 |
---|---|
int | 0、114、-255 |
float | 114.514、-0.11 |
声明
老爹的侄子是一名考古学家,这一天他带回了一个奇妙的小玩意儿,想让见多识广的老爹掌掌眼。但即使是老爹也需要时间研究,于是老爹想定制一个精美的小盒子装下这个看似不同寻常的宝物,你可以设计一个程序帮助老爹确定这个 盒子的体积吗?
首先,我们需要知道盒子的长宽高。
长、宽、高就是程序中的变量
在C语言中,使用变量前必须对其进行声明
声明变量,首先指定变量类型,然后说明变量名字,
比如我们需要引入两个变量,物体的高(整数)和重量(浮点数)
int height;
float weight;
赋值
从右往左赋值
//对于一个高为8,长为12,宽为10的物体,依此对三个变量赋值:
height =8;
length =12;
width = 10;
但是,在对一个变量进行赋值之前,需要确保在此之前已经声明过变量:
int height;
float length;
float width;
height =8;
length =12.14159;
width = 10;
让我们看看输出:
printf("%d",height);
printf("%f",length);
printf("%f",width);
812.14159010.000000
显然,这不是我们想要的结果
我们将代码进行一定调整:
int height;
float length;
float width;
height =8;
length =12.14159;
width = 10;
printf("height=%d\n",height);
printf("length=%f\n",length);
printf("width=%f",width);
输出:
height=8
length=12.141590
width=10.000000
可以看到,在不指定保留小数位数的情况下,浮点数默认六位小数
声明的时候,我们也可以一并赋值,这样可以对变量进行初始化
int height=8,length=12,width=10; //分别对高、长和宽初始化
int height,length,width=10;//声明三个变量,但仅对宽初始化
格式化输入输出
老爹最近很烦!上一个古董还没有研究完,这个不省心的侄子又给他带了好几个小玩意儿,要知道,带有魔力的盒子是很不好定制的,不同的古董也有不同的参数,你能否改进程序,可以根据老爹的要求来求出适合的盒子体积呢?
为了达到老爹的要求,这套程序需要允许用户自行录入尺寸。
获取用户输入的函数是scanf函数,而输出使用printf函数
二者都需要使用格式串来指定输入或输出数据的形式。
读入一个int型值:
scanf("%d".&i); //将输入值存入int型变量i中
同样的,float型值的读入:
scanf("%f".&j); //将输入值存入float型变量j中
改进的程序:
#include <stdio.h>
/* Author:Bio Sheep
website:https://algernon98.github.io/
*/
int main(void)
{
int height,length,width,volume;
printf("输入盒子的高:") ;
scanf("%d",&height);
printf("输入盒子的长:") ;
scanf("%d",&length);
printf("输入盒子的宽:") ;
scanf("%d",&width);
volume=height*length*width;
printf("盒子的体积是:%d",volume);
return 0;
}
输出:
输入盒子的高:1
输入盒子的长:2
输入盒子的宽:3
盒子的体积是:6
如果我们希望保留三位小数呢?
printf("盒子的体积是:%.3f",volume);
转换说明
我们可以用%.1f来显示小数点后带一位数字的float型值。
%m.pX形式
m是最小 字段宽度,p是精度,X是转换说明符
对于X:
- d表示十进制形式的整数
- e表示指数(科学计数法)形式的浮点数
- f是浮点数(没有指数)
%d
%5d
%-5d
%5.3d
%5.3f
%5.3e
转义序列
换行符 : \n
printf("欲买桂花同载酒,终不似,少年游");
printf("欲买桂花同载酒,\n终不似,\n少年游。");
输出:
欲买桂花同载酒,终不似,少年游欲买桂花同载酒,
终不似,
少年游。
修改:
printf("欲买桂花同载酒,终不似,少年游\n");
printf("欲买桂花同载酒,\n终不似,\n少年游。");
欲买桂花同载酒,终不似,少年游
欲买桂花同载酒,
终不似,
少年游。
转义序列 " ,表示字符"
printf("老爹说:\"还有一件事!\"");
表达式
算数运算符
**一元运算符 **
+ | - |
---|
二元运算符
加法类 | 乘法类 |
---|---|
+加法运算符 | *乘法运算符 |
-减法运算符 | /除法运算符 |
%求余运算符 |
10%3的值是1,10/3的值是3
复合赋值
i=i+2;
可以简写为:
i+=2;
其他同上
v-=e表示v加上e,然后将结果存储到v中
自增、自减
i=i+1;
j=j-1;
可以利用自增运算符(++)和自减运算符(–)缩短为:
i++;
j--;
思考:++i和i++有什么区别?
编程题,两位数逆序打印
选择语句
- 选择语句 if switch
- 重复语句 while do for 循环
- 跳转语句 break continue goto
逻辑表达式
关系运算符
在C语言中,诸如i<j这种比较运算会产生整数:
0(假)或1(真)
10<11的值为1(true)
11<10的值为0(false)
符号 | 含义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
判等运算符
符号 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
逻辑运算符
符号 | 含义 |
---|---|
! | 逻辑非 |
&& | 逻辑与 |
|| | 逻辑或 |
if 语句
if(表达式)语句
判定0<i<n是否成立:
if (0<i && i<n)
复合语句:
if(i>0){
i--;
j++;
}
else语句
if (i>j)
max=i;
else
max=j;
if嵌套
#include <stdio.h>
/* Author:Bio Sheep
website:https://algernon98.github.io/
*/
int main(void)
{
int i=5,j=4,max;
if(i>0){
if(i>j){
max=i;
}
else{
max=j;
}
}
else{
max=j;
}
printf("%d",max);
return 0;
}
级联式if语句
if (i>j)
printf("i is greater than j\n");
else if (i<j)
printf("i is less than j\n");
else
printf("i is equal to j\n")
switch语句
switch(grade){
case 3:
case 2:
case 1: printf("passing");
break;
case 0: printf("falling");
break;
}
break语句
break语句会使得程序“跳”出switch语句,继续执行switch后面的语句
边栏推荐
猜你喜欢
PMP有什么答题技巧?
远程控制项目遇到的bug
ffplay播放控制
Introduction to LVGL (based on v8.1-8.2)
全文翻译:EDPB关于VVA(虚拟语音助理)中处理个人数据的指南02/2021
typescript90-使用类型文件声明类型
如何仿造一个websocket请求?
The 7 taboos of time management summarized by the postgraduate students, how many have you won?
Loadrunner结合Fiddler实现脚本的录制
Bugs encountered in remote control projects
随机推荐
LeetCode每日两题02:轮转数组 (均1200道)
Go-8-Gin框架
Go-12-结构体
德语翻译器在线翻译中文
Edge 提供了标签分组功能
makefile file compilation
HCIP-R&S By Wakin自用笔记(2)OSPF之OSPF回顾、虚连接
Cmake 报错 Could not find a package configuration file provided by “OpenCV“
2022PMP项目管理认证考试报考指南(1)
String compression
在 ASP.NET Core 中上传文件
入门数据库Days6
《Go语言学习:基本变量与类型》
全文翻译:EDPB数据保护影响评估(DPIA:Data Protection Impact Assessment)指南
【物理应用】基于El-centro地震波作用下隔震与非隔震支座下的顶层位移、速度、加速度的对比情况附matlab代码
JDBC technology (3) - use Druid database connection pool test
数据恢复软件EasyRecovery支持恢复所有类型的文件
右键新建缺少word、excel选项问题处理
HCIP-R&S By Wakin自用笔记(3)OSPF之各类LSA及LSA更新规则
Using ngrok on Raspberry Pi (Extra 2)