CSDN-C语言学习笔记
简述
用于记录在CSDN的技能树中C语言学习内容。
技能树链接:https://edu.csdn.net/skill/c/c-8c3cdf9ae7b547adbd99c360246bf2b2?category=109&typeId=18441
CSDN学习C语言始于 2022年4月29日
于大学毕业期间 国家气象局 国家卫星气象中心
第一节 C语言发展史
标准C库
C标准函数库共有29个头文件
更多访问:https://www.wikiwand.com/zh-sg/C%E6%A8%99%E6%BA%96%E5%87%BD%E5%BC%8F%E5%BA%AB#/%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE
第二节 数据类型
第三节 C语言中的常量
// 常量标识策略1
const int a = 1;
// 常量标识策略2
#define PI 3.14159
// 常量标识策略3:枚举
enum Sex
{
//枚举常量 性别
MALE,
FEMALE,
SECRET
};
枚举常量例子:
enum colorname
{red,yellow,blue,white,black};
enum colorname color;
变量color是枚举类型enum colorname,它的值只能是red、yellow、blue、white例如
下面的赋值合法:
color=red;
color=white;
而下面的赋值不合法:
color=green;
color=orange;
第四节 两种赋值运算符
简单赋值运算符:
#include <stdio.h>
int main()
{
int i = 0;
int j = 1;
i = j;
printf("%d\n",i);
}
结果:i 的值被赋为 j 的值。
#include <stdio.h>
int main()
{
int i = 0;
float j = 72.99;
i = j;
printf("%d\n",i);
}
结果:i 的值为72,i 与 j 一个是整型一个是浮点型,赋值不改变 i 的数值类型,取 j 的整数部分,即72。
#include <stdio.h>
int main()
{
int i = 10;
float j = 72.99;
j = i;
printf("%f\n",j);
}
结果:j 的值为10.000000,赋值不改变 j 的数值类型,且 float 类型有4个字节,保留6位小数。
复合赋值运算符:
形如 i+=1 其等价于 i=i+1 以及 i++。
第五节 算数运算符
一览表
i++ 与 i–
#include <stdio.h>
int main(int argc, char** argv)
{
int num, count = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
while (num > 0)
{
num /= 10;
int a = ++count;
printf("%d\n",a);
}
printf("位数为:%d", count);
return 0;
}
结果:
将 ++count 换成 count++ :
#include <stdio.h>
int main(int argc, char** argv)
{
int num, count = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
while (num > 0)
{
num /= 10;
int a = count++; //++count换成了count++
printf("%d\n",a);
}
printf("位数为:%d", count);
return 0;
}
结果:
由此可见,i++ 是先使用再自增;++i 则是先自增再使用。
第六节 关系运算符
第七节 特殊的运算符,逗号
一条语句理论上是有返回值的,如果语句里面有多个逗号,则以最后一个逗号后面的表达式值为返回值!
#include <stdio.h>
int main()
{
3, 4, 5;//这是一条语句
//把上面这条语句的值赋值给变量a
int a = (3, 4, 5);
printf("a=%d\n", a);
}
输出结果:
a=5
#include <stdio.h>
int main()
{
int a=3, b=4, c=5;
int x=0;
int y=((x=a+b),(b+c));
printf("y=%d\n", y);
}
输出结果:
y=9
第八章 三目运算符
最简的三目运算符
表达式1?表达式2:表达式3;
- 三目运算符属于条件运算符,可与 if 判断函数类比。
- 其运算规则是:先计算表达式1中内容,如果表达式1中内容为真,则计算表达式2中内容并返回;若表达式1中内容为假,则计算表达式3中内容并返回。
- 最简单的三目运算符如:
#include<stdio.h>
int main(){
int a,b,c;
a=7;
b=6;
c=(a>b)?a:b;
return 0;
}
等价于 if 判断函数:
#include<stdio.h>
int main(){
int a,b,c;
a=7;
b=6;
if (a>b) c=a;
else c=b;
return 0;
}
提高三目运算符复杂度
思考如何运用三目运算符返回三个输入中的最大值。
测试题目见:https://edu.csdn.net/skill/practice/c-1d3d9e97b98b4151b87c4433d987af83/327?typeId=18462&language=c
方案1
#include <stdio.h>
int main()
{
int a, b, c, max;
printf("请输入3个整数:");
scanf("%d,%d,%d", &a, &b, &c);
max = a > b ? (a > c ? a : c) : (b > c ? b : c);
printf("3个整数中的最大的是:%d", max);
return 0;
}
提取出关键判断语句:
max = a > b ? (a > c ? a : c) : (b > c ? b : c);
含义解释:
难理解的三目运算符
还是思考如何运用三目运算符返回三个输入中的最大值。
方案2
#include <stdio.h>
int main()
{
int a, b, c, max;
printf("请输入3个整数:");
scanf("%d,%d,%d", &a, &b, &c);
max = (c > ((a > b) ? a : b)) ? c : ((a > b) ? a : b);
printf("3个整数中的最大的是:%d", max);
return 0;
}
提取出关键判断语句:
max = (c > ((a > b) ? a : b)) ? c : ((a > b) ? a : b);
含义解释:
第九节 运算符大总结
链接:https://edu.csdn.net/skill/c/c-eb5b902755f24674bce31bde2ce4f439?category=111