1.标准数据类型

#include<stdio.h>
#include<stdint.h>//标准数据类型头文化//标准数据类型非库里面的,所有的平台都可以使用的
int main()
{typedef signed char        int8_t;typedef short              int16_t;typedef int                int32_t;typedef long long          int64_t;typedef unsigned char      uint8_t;typedef unsigned short     uint16_t;typedef unsigned int       uint32_t;typedef unsigned long long uint64_t;typedef signed char        int_least8_t;typedef short              int_least16_t;typedef int                int_least32_t;typedef long long          int_least64_t;typedef unsigned char      uint_least8_t;typedef unsigned short     uint_least16_t;typedef unsigned int       uint_least32_t;typedef unsigned long long uint_least64_t;return 0;
}

2.ASCLL字符码

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

备注:需要记住常见的ASCLL码 值

0 ~ 9   0X30 ~ 0X39
A ~ Z   0X41 ~ 0x5A
a ~ z   0x61 ~ 0x7A
空格:0X20
回车:0X0d
换行:0x0a

3.字符

3.1 字符和宽字符

char ch1 = 'a';       //一个字符占一个字节大小
short ch2 = 'b'; //一个字符占2个字节
printf("%C",&ch1) //char
printf("%C",&ch2) //short 大写的Cwchar_t ch1 = L'中';      //一个字符占两个字节大小
wprint(L"%c",ch1);        //加上L,小写c
print("%C",ch1);      //不加L,大写C

3.2 设置不同国家的语言的设置

#include<locale.h>         //  包含头文件
setlocale(LC_ALL, "zh-CN"); //  设置区域 实现宽字符的显示setlocale(LC_ALL, "zh-CN");//wchar_t wch1 = L'中'; //widthwchar_t wch1 = 0x4e2d; //width  0~65535printf("%C %hx\n", wch1, wch1);

4.表达式

4.1运算符

4.1.1一元运算符:

符号 “属性” 备注
- ~ - 求反和补数运算符
\* & 间接寻址运算符和 address-of 运算符
sizeof Size 运算符 计算数据类型字节数
+ 一元加运算符
++ 一元递增和减量运算符

代码示例:

#include<stdio.h>
#include<stdint.h>int main()
{//sizeofint a=10;printf("sizeof int =%d",sizeof(a));   //int数据是4字节//++ //前置++  int n1=1;int n2=1;n2=n1++;printf("n1 = %d, n2 = %d ",n1,n2);//n2=1,n1=2  前置++先赋值+1//后置++int n3=1;int n4=1;n3=n4++;printf("n4 = %d, n3 = %d ",n4,n3);//n2=2,n1=2  后置++ 先计算后+1return 0;
}

4.1.2二元运算符

C 提供了以下二进制运算符:

符号 “属性”
\* / % 乘法运算符
+ - 相加运算符
<< >> 移位运算符
<><>==< 关系运算符
& | ^ 位运算符
&& || 逻辑运算符
, 有序评估运算符

4.1.3逻辑运算符

逻辑运算符不执行常用算术转换。 相反,它们根据其等效性为 0 计算每个操作数。 逻辑运算的结果不是 0 就是 1。 结果的类型为 int

C 逻辑运算符如下所述:

运算符 描述
**&& ** 如果两个操作数具有非零值,则逻辑“与”运算符产生值 1。 如果其中一个操作数等于 0,则结果为 0。 如果逻辑“与”运算的第一个操作数等于 0,则不会计算第二个操作数。
|| 逻辑“或”运算符对其操作数执行“与或”运算。 如果两个操作数的值均为 0,则结果为 0。 如果其中一个操作数具有非零值,则结果为 1。 如果逻辑“或”运算的第一个操作数具有非零值,则不会计算第二个操作数。
== 判断两个是否相等,要和赋值= 区分开来,第一个操作数等于第二个操作数
!= 第一个操作数不等于第二个操作数
取反 真(非0)取反就是假(0),假(0)区分就是真(非0)

4.1.4 C 运算符的优先级和关联性

符号 1 操作类型 结合性
[ ] ( ) . -> ++``--(后缀) 表达式 从左到右
sizeof & * + - ~ ! ++``--(前缀) 一元 从右到左
typecasts 一元 从右到左
* / % 乘法 从左到右
+ - 加法 从左到右
<< >> 按位移动 从左到右
< > <= >= 关系 从左到右
== != 相等 从左到右
& 按位“与” 从左到右
^ 按位“异或” 从左到右
| 按位“与或” 从左到右
&& 逻辑“与” 从左到右
|| 逻辑“或” 从左到右
? : 条件表达式 从右到左
= *= /= %= += -= <<= >>= &= ^= |= 简单和复合赋值 2 从右到左
, 顺序计算 从左到右

1 运算符按优先级的降序顺序列出。 如果多个运算符出现在同一行或一个组中,则它们具有相同的优先级。

2 所有简单的和复合的赋值运算符都有相同的优先级。

5.分支

5.1 if语句

 //双支if语句if(括号内为判定的条件  )                                    {         花括号内为执行的代码}  else {       花括号内为执行的代码} //多支if语句if(括号内为判定的条件  )                                    {         花括号内为执行的代码}  else if {       花括号内为执行的代码} else{花括号内为执行的代码}

案例:

if ( i > 0 )y = x / i;
else
{x = i;y = f( x );
}

如果 y = x/i; 大于 0,则执行 i 语句。

如果 i 小于或等于 0,则将 i 赋给 x,并将 f( x ) 赋给 y

请注意,构成 if 子句的语句以分号结尾。

if语句多条件(案例如上)

5.2 do……while语句

执行过程如下所示:

  1. 执行语句体。
  2. 接着,计算 expression 。 如果 expression 为 false,则 do-while 语句将终止,控制权将传递到程序中的下一条语句。 如果 expression 为 true(非零),则将从第 1 步开始重复此过程。

当 、gotoreturn 语句在语句主体中执行时,do-while 语句也可以终止。

do
{y = f( x );x--;
} while ( x > 0 );

在此 do-while 语句中,无论 x 的初始值是什么, 和 x--; 这两个语句都会执行。 然后将计算 x > 0。 如果 x 大于 0,则会再次执行语句体并重新计算 x > 0。 只要 x 保持大于 0,语句主体就会重复执行。 当 变为 0 或负值时,do-while 语句的执行将终止。

将至少执行一次循环体。

5.3 while语句

执行过程如下所示:

  1. 计算 expression 。

  2. 如果 expression 最初为 false,则绝不执行 语句体,并且控制从 while 语句到程序中下一语句的传递。

    如果 expression 为 true(非零),则执行语句体,并且此过程从第 1 步开始重复。

当语句主体中的 breakgotoreturn 执行时,while 语句也可以终止。 使用 continue 语句可以在不退出 while 循环的情况下终止迭代。 continue 语句将控制权传递给 while 语句的下一个迭代。

while ( i >= 0 )
{string1[i] = string2[i];i--;
}

此示例将 string2 中的字符复制到 string1。 如果 i 大于或等于 0,则 string2[i] 将赋给 string1[i],并且 i 将递减。 当 i 达到 0 或小于 0 时,while 语句的执行将终止。

while 和 do …… while 的比较

1、do …… while 一定会执行一次在判断

2、while 先判断在执行

5.5 for语句

for (表达式1; 表达二2; 表达式3)
{循环代码
}

for 语句的执行将按以下方式继续:

  1. 将计算 init-expression(如果有)。 这将为循环指定初始化。 对表达式1的类型没有限制。
  2. 将计算 表达式二(如果有)。 此表达式必须具有算法或指针类型。 它在每次迭代前计算。 可能有三个结果:
    • 如果 表达式二 为 (非零),则执行语句,然后计算 表达式三(若有)。 在每次迭代之后,将计算表达式三。 对其类型没有限制。 副作用将按顺序执行。 该过程随后从计算 cond-expression 重新开始。
    • 如果省略了 表达式二,则 表达二 被视为 true,执行将完全按上一段中所述方式继续。 只有在执行了语句主体中的 breakreturn 语句时,或只有在执行了 goto(转到 for 语句主体外的带标签的语句)时,没有 cond-expression 参数的 for 语句才会终止。
    • 如果 cond-expression 为 (0),则 for 语句的执行终止,并将控制权传递给程序中的下一个语句。

//输入10个数,计算出最大的值  int nCount = 0;printf("input count:\n");scanf_s("%d", &nCount);int nMax = 0;printf("please input number:\n");scanf_s("%d", &nMax);for (int i = 0; i < nCount - 1; i++) {int nInput = 0;scanf_s("%d", &nInput);if (nInput > nMax) {nMax = nInput;}}printf("max is %d\n", nMax);

5.4面向过程编程思想

案例一:

/*
项目需求:
比较输入两个整数的大小面向过程编程思想:
1.定义两个变量1)定义整型变量1,初始化为02)定义整型变量2, 初始化位0
2.提示用户输入1)printf
3.接受用户输入两个数1)scanf,判断输入合法性
4.判断两数的大小1)如果第一个数大于第二个数a)显示第一个数大2)如果第一个数小于第二个数a)显示第二个数大3)如果第一个数等于第二个数a)显示两数相等
5.程序结束
*/int main() {int nNumber1 = 0;int nNumber2 = 0;printf("Please Input Numbers:\n");int nRet = scanf("%d %d", &nNumber1, &nNumber2);if (nRet != 2) {printf("Invalid Input\n");return 0;}if (nNumber1 > nNumber2)  {printf("nNumber1 Is Max\n");}else if (nNumber1 < nNumber2) {printf("nNumber2 Is Max\n");}else{printf("nNumber1 Equal nNumber2\n");}return 0;
}

案例二:

/*
项目需求:
2.比较输入10个整数的大小面向过程编程思想:
1.定义变量保存最大的数
2.提示用户输入1)如果次数大于10,结束程序2)printf
3.接受用户输入数1)scanf,判断输入合法性
4.判断如果输入的数大于保存的数据1)保存的数据 = 输入的数
5.重复第2步骤
6.程序结束*/int main() {int nCount = 0;printf("input count:\n");scanf_s("%d", &nCount);int nMax = 0;printf("please input number:\n");scanf_s("%d", &nMax);for (int i = 0; i < nCount - 1; i++) {int nInput = 0;scanf_s("%d", &nInput);if (nInput > nMax) {nMax = nInput;}}printf("max is %d\n", nMax);return 0;
}

案例三:

/*
面向过程  =》  分而治之 => 大事化小 小事化了1.定义变量n = 0,
2.保存用户输入的值到n
3.j = 0
4.判断j < n1).i = 02).判断i < n1)输出一个* 2)i = i + 13)重复2)3).输出换行
5.j = j + 1
6.重复3
7.0程序结束
*/unsigned n = 0;scanf_s("%d", &n);for(unsigned j = 0; j < n; j = j + 1) {for (unsigned i = 0; i < n; i = i + 1){printf("* ");}printf("\n");}

案例四:

  //闰年:四年一润,百年不润(year % 4 == 0 && year % 100 != 0)   四百年再润(year % 400 ==0)/*1.定义一个无符号unsigned short变量, 初始化为12.输入年份3.判断(year % 4 = 0 && year % 100 != 0)1)满足显示闰年2)不满足a)判断(year % 400 ==0)1.满足显示润年2.不满足显示不是润年*/unsigned short nYear = 1;scanf_s("%hd", &nYear);if ((nYear % 4 == 0 && nYear % 100 != 0) || (nYear % 400 == 0)){printf("Is Leap Year\n");}else {printf("Is Not Leap Year\n");}

案例五:

//15.输入某年某月某日,判断这一天是这一年的第几天?/*某月几天 + 日 = 第几天某月几天 3 = 1 + 2每个月有几天 1=31  2=润年29 非润年28 3 = 31 4 = 305 = 316 = 307 = 318 = 319 = 3010 = 3111 = 3012 = 312000 3 11.定义年月日变量2.输入年月日3.检查年月日4.计算前一个月的总天数days如果月为1 + 0如果月为2 + 314 = 1 + 2 + 35.days + 日6.显示days*/unsigned nDays = 0;for (int i = 1; i <= nMonth - 1; i++){if (i == 2)  //如果月份2月份{if ((nYear % 4 == 0 && nYear % 100 != 0) || (nYear % 400 == 0))nDays += 29; //闰年2月份29天elsenDays += 28; //闰年2月份28天}else if (i < 8) //如果月份大于1~7月份 奇数31天 偶数30天{if (i % 2 == 0){nDays += 30;}else {nDays += 31;}}else if (i >= 8) { //如果月份8~12月份 奇数30天 偶数31天if (i % 2 == 0){nDays += 31;}else{nDays += 30;}}}printf("%d", nDays + nDay);

案例六:

//30.编写程序将一个输入的十进制数转换成一个二进制数,并且显示/*int 32次char 8次  0000 00001.定义变量2.输入一个数到变量3.定义变量i = 04.i < sizeof type1).变量除2,显示余数2).变量 = 变量 / 23).i++3).重复31111 11101000 0000    1   0111 11100100 0000*/unsigned long long  n = 0;scanf_s("%lld", &n);unsigned i  = 0;unsigned long long nShift = 0x8000000000000000;while(i < sizeof(n) * 8){printf("%d", n / nShift);n = n % nShift;nShift = nShift / 2;i++;}

案例六:

//32.以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。/*1.0~300xxx2.每行5个数xxx3.能被7或17整除的偶数xxx4.求出其和xxx*/int nCount = 0;int nSum = 0;for (int i = 1; i <= 300; i++) {if (i % 2 == 0 && (i % 7 == 0 || i % 17 == 0)){printf("%-4d ", i);nCount++;nSum += i;if (nCount % 5 == 0) {printf(" sum:%d\n", nSum);nSum = 0;}}}printf(" sum:%d\n", nSum);return 0;
}

04 - 字符和循环分支相关推荐

  1. julia有 pytorch包吗_用 PyTorch 实现基于字符的循环神经网络 | Linux 中国

    导读:在过去的几周里,我花了很多时间用 PyTorch 实现了一个 char-rnn 的版本.我以前从未训练过神经网络,所以这可能是一个有趣的开始. 本文字数:7201,阅读时长大约: 9分钟 htt ...

  2. hot编码 字符one_用 PyTorch 实现基于字符的循环神经网络 | Linux 中国

    在过去的几周里,我花了很多时间用 PyTorch 实现了一个 char-rnn 的版本.我以前从未训练过神经网络,所以这可能是一个有趣的开始. 来源:https://linux.cn/article- ...

  3. [转】Ubuntu16.04 字符界面 ifconfig 命令无网络接口 ens33 的解决方法

    [转]Ubuntu16.04 字符界面 ifconfig 命令无网络接口 ens33 的解决方法 参考文章: (1)[转]Ubuntu16.04 字符界面 ifconfig 命令无网络接口 ens33 ...

  4. Python处理txt文件:多句分行+行首尾添加字符+for循环--Python新手自练系列

    Python处理txt文件:多句分行+行首尾添加字符+for循环--Python新手自练系列 总体操作提示: 操作流程图: 准备工作 第一步先对luo.txt进行操作 第二步对yes.txt进行操作 ...

  5. 测试-python筑基1-(变量/类型/输出与输入、循环/分支/运算符)

    python基础 python输入与输出 python的运行顺序: 1.print 输出也叫打印 2.输入input(表示输入)--关键字 组合使用 3.程序的开始与结束 --有始有终是程序的基础顺序 ...

  6. 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )

    文章目录 一.MATLAB 流程控制结构 二.for 循环 1.for 循环 2.嵌套 for 循环 三.while 循环 二.分支结构 1.if end 分支结构 2.if else end 分支结 ...

  7. javascript-流程控制-循环-分支-三元运算符

    for循环语句 for (var i=初始值;条件;i变化){要执行的代码 } while循环语句 分支判断 二路分支 if(条件){代码} 多路分支 python中 elif js中是 else i ...

  8. Java基础知识 变量 基本类型 类型转换 标识符 关键字 运算符 循环 分支结构 JVM

    标题JVM **java语言是跨平台的,之所以跨平台是因为在不同的系统中安装不同的JVM这是Java跨平台的前提** 2.JDK:开发工具包-开发必须安装 JRE:运行时环境 JVM:Java虚拟机, ...

  9. debug跳出循环_Java基础-第04章:循环结构「云图智联」

    免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/ 1. 什么是循环结构 1.1 为什么要学习循环结构 生活中,有很多"重复的去作某件事"的例子: ...

最新文章

  1. 什么是DDOS攻击?怎么防御?
  2. C# MainWindowHandle为0的解决方法
  3. Oralce Plsql 中文显示乱码问题无需修改注册表完美解决
  4. 星晨急便凶多吉少:马云陈显宝无意援手或破产
  5. 四 Spring的工厂类,xml的配置
  6. Java中Map的使用
  7. st官网下载stm32固件库方法
  8. 九度1377缓变序列
  9. 草珊瑚理解IFC(inline formatting context)
  10. 所有C#程序员必须知道的13件事
  11. mysql适配器_MySQL适配器之PyMySQL的详细介绍
  12. 聊一聊数学中的基本定理(四)——微积分基本定理
  13. 在线一键重装Win11系统步骤
  14. 各种DBCO偶联试剂成为点击化学反应的操控新策略
  15. 神经网络激活函数及其Katex公式代码模板合集
  16. webrtc 代码走读六
  17. 搜狗广告联盟不显示广告的原因
  18. 三天打鱼两天晒网问题Java解法
  19. Triloga 的任务 — Satta 系列来袭!
  20. 9、sysnchronized原理

热门文章

  1. 餐饮店选址要考虑竞品分布,用户画像等
  2. DFC Session Management Srinivas Jakkula
  3. Weisfeiler-Leman test与WL subtree kernel
  4. 对话姜老师,DBA的职场之路
  5. Android 简单实现三级列表
  6. 服务器系统通用串行总线控制器,win7系统usb设备不能用通用串行总线控制器无法启动的解决方法...
  7. 美团登录获取cookie
  8. 威尔特拉斯定理_数学大师启示录维尔斯特拉斯.pdf
  9. 《做自己人生的CEO》总结
  10. 08:Calling Extraterrestrial Intelligence AgainMOOC程序设计算法基础期末第八题