无法预知的数字叫随机数,rand标准函数可以用来获得随机数,为了使用这个标准函数需要包含stdlib.h头文件

srand标准函数用来设置随机数种子,这个函数把一个整数作为种子使用不同的种子可以得到不同的随机数,为了使用这个标准函数也需要包含stdlib.h头文件

time标准函数可以用来获得现在的时间,这个函数用一个整数表示得到的时间在一秒钟之内这个代表时间的整数不会改变,为了使用这个函数需要包含time.h头文件

任何程序里srand标准函数应该只使用一次

/*
* 猜数游戏练习
* */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int guess = 0, num = 0;
srand(time(0));
guess = rand() % 100;
for (;;) {
printf("请猜一个数字:");
scanf("%d", &num);
if (num > guess) {
printf("猜大了\n");
}
else if (num < guess) {
printf("猜小了\n");
}
else {
printf("猜对了\n");
break;
}
}
return 0;
}

分支和循环都是流程控制语句,它们都可以让程序中的语句不再从上到下顺序执行

goto语句也是流程控制语句,它可以把任何一条语句指定成下一条语句,一般不要使用goto语句

如果一个问题的解决步骤是以多组数字的变化过程为基础的就可以采用多重循环的结构解决(循环里包含另外的循环),外部的循环对应变化慢的数字,内部的循环对应变化快的数字

/*
* 多重循环演示
* */
#include <stdio.h>
int main() {
int num = 0, num1 = 0;
for (num = 1;num <= 5;num++) {
for (num1 = 5;num1 >= num;num1--) {
printf("%d", num1);
}
printf("\n");
}
return 0;
}

while关键字也可以用来编写循环,不容易使用for关键字实现的循环就可以考虑采用while关键字编写,while循环格式如下
while (逻辑表达式) {
  反复执行的语句
}
这个格式表示反复执行大括号里面的语句,直到逻辑表达式为假

while循环会交替执行逻辑表达式的判断和大括号里面的语句,while循环首先进行逻辑表达式的计算,如果逻辑表达式结果为假就立刻结束循环,while循环有可能不执行大括号里面的语句

/*
* while循环演示
* */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int guess = 0, num = 0;
srand(time(0));
guess = rand() % 100;
while (num != guess) {
printf("请猜一个数字:");
scanf("%d", &num);
if (num > guess) {
printf("猜大了\n");
}
else if (num < guess) {
printf("猜小了\n");
}
else {
printf("猜对了\n");
}
}
return 0;
}

while循环的逻辑表达式如果永远为真就成为了死循环

while循环里也可以使用break;和continue;语句

do...while也可以用来实现循环
do...while循环的格式如下
do {
  反复执行的语句
} while (逻辑表达式);
do...while的小括号后面必须用分号结束,do...while循环也是交替执行逻辑表达式的计算和大括号里面的语句,do...while循环首先执行大括号里面的语句,do...while循环至少会执行一次大括号里面的语句

/*
* while循环演示
* */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int guess = 0, num = 0;
srand(time(0));
do {
printf("请猜一个数字:");
scanf("%d", &num);
if (num > guess) {
printf("猜大了\n");
}
else if (num < guess) {
printf("猜小了\n");
}
else {
printf("猜对了\n");
}
} while (num != guess);
return 0;
}

scanf函数不是直接从键盘得到数字而是从输入,缓冲区里获得数字然后记录到存储区里,用户在键盘上输入的数字需要首先进入输入缓冲区,然后程序才可能获得这个数字,程序必须首先把先进入输入缓冲区的数字拿走然后才可能获得后进入输入缓冲区的数字,如果用户输入的格式和程序里要求的格式不同就无法获得需要的数字

/*
* 输入缓冲区演示
* */
#include <stdio.h>
int main() {
int num = 0, num1 = 0;
printf("请输入一个数字:");
scanf("%d", &num);
scanf("%*[^\n]");
scanf("%*c");
printf("num是%d\n", num);
printf("请输入一个数字:");
scanf("%d", &num1);
printf("num1是%d\n", num1);
return 0;
}

可以使用如下两条语句把输入缓冲区里不能处理的内容都丢掉
scanf("%*[^\n]");
scanf("%*c");

printf函数把数字放到输出缓冲区里,计算机在合适的时候把输出缓冲区里的内容显示在屏幕上,在以下四种情况下计算机才会把输出缓冲区里的内容显示在屏幕上
  1.如果输出缓冲区里包含'\n'换行字符就把这个字符前面的所有字符显示在屏幕上
  2.程序结束后它放在输出缓冲区里的内容会显示在屏幕上
  3.当输出缓冲区被充满的时候它里面的所有内容会显示在屏幕上
  4.在程序里使用fflush(stdout)语句强制把输出缓冲区里的内容显示在屏幕上

/*
* 输出缓冲区演示
* */
#include <stdio.h>
int main() {
int num = 0;
printf("1");
scanf("%d", &num);
while (1) {
}
return 0;
}

数组可以用来表示内存里一组连续的同类型存储区,这些存储区叫做数组的元素.数组也需要先声明然后才能使用声明数组的时候除了要提供类型名称,数组名称以外还需要提供一个整数用来表示数组里的存储区个数,数组里包含的存储区个数不可以改变,通常不会把数组作为整体使用,一般一次只使用其中的某个存储区,数组里每个存储区有一个唯一的编号,这个编号叫做数组的下标,第一个存储区的下标是0,向后依次递增,有效下标范围从0开始到存储区个数减一为止,超过这个范围的整数不能作为下标使用数组名称和下标一起就可以用来表示数组里的存储区

可以使用for循环依次处理数组里的每个存储区循环变量依次代表所有有效下标

/*
* 数组练习
* */
#include <stdio.h>
int main() {
int arr[5] = {0}, num = 0, sum = 0;
for (num = 0;num <= 4;num++) {
printf("请输入一个数字:");
scanf("%d", &arr[num]);
}
for (num = 4;num >= 0;num--) {
printf("%d ", arr[num]);
}
printf("\n");
for (num = 0;num <= 4;num++) {
sum += arr[num];
}
printf("求和结果是%d\n", sum);
return 0;
}

数组应该进行初始化放在一对大括号中间,相邻数字之间用逗号分开,如果初始化数据个数多于数组里存储区个数就忽略多余的初始化数据,如果初始化数据个数少于数组里的存储区个数就把后面的存储区初始化成0,如果初始化数据个数和存储区个数一样多就可以省略数组声明里的存储区个数

标准C语言(5)的更多相关文章

  1. 关于标准C语言的预定义宏【转】

    标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来. __LINE__  当 ...

  2. 【部分原创】标准C语言的优先级、结合性、求值顺序、未定义行为和非确定行为浅析

    零. 优先级    在C++ Primer一书中,对于运算符的优先级是这样描述的:     Precedence specifies how the operands are grouped. It ...

  3. 标准SQL语言的用法

    原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94 ...

  4. 关于标准C语言的预定义宏

    标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__  当前 ...

  5. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  6. UML(统一建模语言)是通用的可视化标准建模语言。由构造块、公共机制、构架三部分组成。

    UML UML(统一建模语言)是通用的可视化标准建模语言.由构造块.公共机制.构架三部分组成. 1.构造块:包括基本的UML建模元素(类.接口.用例等).关系(关联关系.依赖关系.泛化关系.实现关系) ...

  7. 标准C 语言总结

    ***************C语言****************** --day01-- Linux是一个和Windows类似的操作系统 通常通过终端软件使用Linux操作系统 终端软件里只能使用 ...

  8. 标准C语言(1)

    C语言程序的绝大部分内容应该记录在以.c作为扩展名的文件里,这种文件叫源文件,C语言里还包含以.h作为扩展名的文件,这种文件叫做头文件 C语言程序里可以直接使用数字和加减乘除四则运算符号(*代表乘法, ...

  9. 【M35】让自己习惯于标准C++语言

    1.最近一些年C++语言增加的特性有: a.RTTI,namespace,bool,关键字mutable和explicit,enums,以及const static int可以直接初始化. b.扩充了 ...

  10. 标准C语言的输入输出流(i/o)方法详解

    cppreference.com -> 标准 C I/O ->详细说明 标准 C I/O clearerr 语法: #include <stdio.h> void cleare ...

随机推荐

  1. Spring Data JPA 介绍

    Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在 ...

  2. 【SVN】导出项目后报错汇总

    原文链接 1.jsp页面内:标点符号,引入报错 解决方法:关闭此项目的jsp验证,右键,最下面一个,Verification,右边一溜只留一个dtd就好 2. 编码问题-乱码 刚拉下来的项目编码可能与 ...

  3. python操作轻量级数据库

    1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ import sqlite3 2. 创建/打开数据库 ...

  4. PJzhang:查看你的微信、QQ、新浪微博都授权给过谁

    猫宁!!! ​​   个人信息的保护,需要时刻关注,不能有丝毫懈怠.   保护个人信息,有两个方向,一个是减少个人信息外泄,另一个是上传大量鱼龙杂的个人信息,难以分辨,混淆视听.   这里不谈第二个, ...

  5. PJzhang:QQ输入法用户许可协议和隐私政策阅读

    猫宁!!! 参考链接:http://qq.pinyin.cn/ 中国用户量最大的输入法是搜狗输入法,百度输入法也有上亿的用户量. 我下载了7个输入法,查看他们的用户许可协议和隐私政策情况.这里说的都是 ...

  6. PI薄膜相关的基本理论

    一.耐电晕的基本理论 在电场作用下,绝缘材料聚酰亚胺薄膜的部分区域发生放电短路的现象称为局部放电 根据局部放电发生部位的不同,可分为绝缘材料内部的局部放电.表面的局部放电.发生在导体边缘而周围气体被击 ...

  7. Win10无线网络配置VMware的nat网络

    1.在windows上用运行cmd,用ipconfig /all查看可用网络的dns服务器 2.配置VMnet8,其dns与本地的dns服务器相同 3.打开VMware Workstation 的编辑 ...

  8. 【JulyEdu-Python基础】第 4 课:面向对象基础

    类(class):用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 对象:通过类定义的数据结构实例.对象包括两个数据成员(类变量和实例变量)和方法 ...

  9. 关于Pytorch中accuracy和loss的计算

    这几天关于accuracy和loss的计算有一些疑惑,原来是自己还没有弄清楚. 给出实例 def train(train_loader, model, criteon, optimizer, epoc ...

  10. Git_mergetool_tutorial(转载)

    原文链接:https://gist.github.com/karenyyng/f19ff75c60f18b4b8149#table-of-content Table Of Content Skip t ...