for循环
1.for循环的基础
for(循环控制变量;运行的条件;控制变量的变化)
for循环中间条件必须要,其他部分可省略,分号不能省略
2. 示例
for(;1<2;)
for(int i = 0;i<10;i++)
3.循环控制变量
<1.>
循环控制变量的定义和初始化只执行一次
<2.>
循环控制变量什么时候变化?
i++ i-- j++ j--
i+=2
当这一次循环结束后在变化/执行
<3.>变量的作用域:
(1.)局部变量 :代码块里定义的变量
{
int a;
{int a;
}
}
(2.)全局变量 main函数前定义的变量
(3.)静态变量
4.结束循环的方式
break跳出整个for循环
continue结束当前这次循环继续下一次循环
for循环:<1.>输出1-10之间的整数;
<2.>不断输出1-10之间的整数
#include<stdio.h>
/*
for循环
while循环
数组
*/
/*
for(循环控制变量;运行的条件;控制变量的变化)
for循环中间条件必须要,其他部分可省略,分号不能省略
for(;1<2;)
for(int i = 0;i<10;i++)
*/
int main(){
/*
//输出1-10之间的整数
for(int i = 1;i < = 10;i++)
{
printf("i = %d\n",i);
}
*/
/*
循环控制变量的定义和初始化只执行一次
变量的作用域:
局部变量 :代码块里定义的变量
{
int a;
{int a;
}
}
全局变量 main函数前定义的变量
静态变量
*/
/*循环控制变量什么时候变化?
i++ i-- j++ j--
i+=2
当这一次循环结束后在变化/执行
*/
/*
for(int i = 1;i<=10;) {
printf("i = %d\n",i);
i+=1;
}
int i = 1;
for(;int i = 1;i<=10;) {
printf("i = %d\n",i);
i+=1;
}
*/
//不断输出1-10之间的整数
//int i = 1;
/*
for(int i = 1;i<=10;i++)
{
printf("i = %d\n",i);
if(i == 10) {
i = 0;
}
//i++;
}
*/
//break跳出整个for循环
//continue结束当前这次循环继续下一次循环
for(int i = 1;i<=10;i++)
{
printf("i = %d\n",i);
if(i == 5) {
break;
}
//i++;
}
return 0;
}
程序运行结果
for循环实例运用demo:ATM
#include<stdio.h>
#include<stdlib.h>
int main(){
//ATM终
/*
**********
欢迎使用建设银行
**********
请输入密码:
密码错误请重新输入:
密码错误次数过多 请联系工作人员!
3次
请选择操作
**********
1.存款
请输入存款金额:8000
存款成功,余额为:8000
是否继续(y/n)
2.取款
请输入取款金额:8000
余额不足请重新输入
取款成功,余额为:8000
是否继续(y/n)
3.更改密码
请输入新密码:
请确认密码
设置成功
两次密码不一致,请输入新密码:
4.查询余额
5.退出
**********
*/
int old=123;//原始密码
int input;//用户输入密码
int wrongTime = 3;//错误次数
int total=1000;//金额
printf("**********\n");
printf("欢迎使用建设银行\n");
printf("**********\n");
printf("请输入密码:");
for(int i = 1;i<=wrongTime;i++){
scanf("%d",&input);
//判断密码
if(input == old){
//密码正确
break;
}
if(i == wrongTime){
printf("密码错误次数过多 请联系工作人员!\n");
return 1;//退出整个程序
}
//密码不正确
printf("密码错误请重新输入密码:");
}
printf("密码正确\n");
//接收用户是否继续的输入
/*
getchar();从终端接收一个字符
注意:当上一次有输入的情况下,必须要将上一次缓冲区里面的内容清空
scanf("%d");
123\n;
\n
第一种方法
getchar();//拿走\n
getchar();
第二种方法
fflush(stdin);刷新输入流
*/
int choice;//接受用户选择
char goon;//是否继续
for(;1<2;) { //条件永久成立 ,始终循环
//主界面
printf("**********\n");
printf("请选择相关操作:\n");
printf("1.存款\n");
printf("2.取款\n");
printf("3.更改密码\n");
printf("4.查询余额\n");
printf("5.退出\n");
printf("**********\n");
//提示用户选择
printf("请选择操作:");
scanf("%d",&choice) ;
//判断操作
switch(choice){
case 1://存款
int temp;
printf("请输入存款金额:");
scanf("%d",&temp);
total+=temp;//total=total+temp
printf("存款成功!可用余额为:%d\n",total);
break;
case 2://取款
int temp2;
for(;1<2;){
printf("请输入取款金额:");
scanf("%d",&temp2);
if(temp2>total) {
printf("余额不足");
}else{
total -= temp2;
printf("取款成功 余额为:%d",total);
break;
}
}
break;
case 3://查询余额
printf("当前余额为:%d\n",total) ;
break;
case 4: //更改密码
int n1;
int n2;
for(;1<2;){
printf("请输入新密码:");
scanf("%d",&n1);
printf("请确认密码:");
scanf("%d",&n2);
if(n1 == n2){
printf("密码设置成功!\n");
old = n1;
break;
}else{
printf("两次输入不一致!\n");
}
}
break;
default://退出
exit(EXIT_SUCCESS);
//exit(EXIT_FAILURE);
break;
}
//提示是否继续操作
for(;1<2;){
printf("是否继续(y/n)");
getchar();
scanf("%c",&goon);
if(goon == 'y'){
break;
}
if(goon == 'n'){
exit(EXIT_SUCCESS);
}
printf("输入无效 ");
}
}
/*
return ;结束当前这个函数
main(){
1;
2;
3;
}
exit();导入头文件<stdlib.h>直接退出程序
add(){
return;
}
*/
return 0;
}
/*
main函数:不写实际代码 ,逻辑
*/
程序运行结果:switch语句的基础
1.
switch 可读性
2.switch基本结构
switch(已经确定值的变量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
}
同样功能if-else if-else if-else
switch语句demo:输入1-3之间的一个数,系统显示你输出的是哪一个数
#include<stdio.h>
int main(){
/*
switch 可读性
switch(已经确定值的变量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
同样功能if-else if-else if-else
*/
int a=0;
printf("请输入一个数1-3:");
scanf("%d",&a);
//int char-ASCII bool
switch(a){
case 1:
printf("你输入的是1\n");
break;
case 2:
printf("你输入的是2\n") ;
break;
default:
printf("你输入的是3\n") ;
break;
}
return 0;
}
程序运行结果:随机数
1.随机数的产生
当程序运行起来的时候,系统自动产生一个种子
使用rand()产生随机数后,重新启动程序,再次使用rand(),发现种子是一样的
总结:只要种子一样产生的随机数就一样
如果需要每次重新运行都产生 不一样的随机数就需要更改种子
则此时就有
时间: 001 002
运用时间做种子:
srand(time(NULL)) 导入头文件<stdlib.h> <time.h>
控制时间
1.延时2s
<1.>第一种方式
for(long long i = 0;i<10000000000/14;i++); //显示时间2s即延时2s
<2.>第二种方式
(1.)
Sleep(2000) ;
#include<windows.h> 用Sleep延时时需用该头文件
(2.)
windows系统延时或用
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
2.刷新界面
<1.>
system("cls"); 刷新界面
#include<stdlib.h> 刷新界面需要使用该头文件
<2.>
mac系统刷新
for(int i=0;i<20;i++){
printf("\n");
}
demo:输入的内容显示2s后消失
//控制时间输入2s后消失
#include<stdio.h>
#include<stdlib.h>//刷新界面需要使用该头文件
#include<windows.h>//用Sleep延时时需用该头文件
int main(){
printf("12\n");
//for(long long i = 0;i<10000000000/14;i++);//显示时间2s即延时2s
Sleep(2000) ;//#include<windows.h>//用Sleep延时时需用该头文件
system("cls");//刷新界面
return 0;
}
/*
windows系统延时或用
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
*/
/* mac系统刷新
for(int i=0;i<20;i++){
printf("\n");
}
*/
demo:小游戏,产生不同的随机数,产生的随机数显示2s后消失,玩家输入所看到的随机数,输入正确,游戏继续,否则游戏结束
#include<stdio.h>
#include<stdlib.h>//使用rand函数需用此头文件
#include<time.h>//关于时间的头文件
#include<windows.h>//用Sleep延时时需用该头文件
int main(){
int count = 3;//记录每次生成多少个随机数
while(1){
unsigned int seed = time(NULL);
//设置随机数的种子
srand(seed) ;
for(int i = 0;i<count;i++){
//生成一个随机数
int temp = rand() % 9 + 1;//生成0-1之间的数
printf("%d ",temp);
}
printf("\n");
//延时2s
Sleep(2000) ;
//for(int i = 0;i < 10000000000/15*2;i++);
//刷新屏幕
system("cls");//#include<stdlib.h>//刷新界面需要使用该头文件
/* mac
for(int i=0;i<20;i++){
printf("\n");
}
*/
int temp;
printf("请输入:");
//重新设种子和之前生成时的种子一样
srand(seed);
//接受用户输入一个一个接收
for(int i = 0;i < count;i++){
scanf("%d",&temp);
//获取对应生成的随机数
int old = rand() % 9 + 1;
//比较输入的和随机数是否相同
if(temp != old){
printf("错误 退出!");
exit(EXIT_SUCCESS);
}
}
printf("正确");
count ++;//第一轮3个数,第二轮4个数,以此类推
}
return 0;
}
程序运行结果:数组
1.数组的基础 数组:存储多个同种类型的数据
<1.>数组的定义:必须明确知道数组元素的个数
系统为数组分配内存空间的时候 必须确定
<2.>数组内存
数组名就是数组的首地址
<3.>数组访问:下标 0 - n-1
#include <stdio.h>
int main(){
//if for while 数组 指针 结构体 动态分配内存
//学生管理系统
/*
基本数据类型:int float double long char
数组:存储多个同种类型的数据
*/
//1.数组的定义:必须明确知道数组元素的个数
// 系统为数组分配内存空间的时候 必须确定
int a = 10; //4
int array1[4];
int array2[4] = {1,2};
//2.数组内存
//数组名就是数组的首地址
int array[] = {1,2,3,4};
printf("%d\n",array);
printf("%d\n",array+1);
printf("%d\n",&array[0]);
printf("%d\n",&array[1]);
//3.数组访问:下标 0 - n-1
array[0] = 2;
array[1] = 23;
//4.Demo - 产生4个随机数 保存到数组 输出
return 0;
}
<4.>Demo - 产生4个随机数 保存到数组 输出
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
//产生四个(不同)随机数 保存到数组 输出
int array[4] = {};//最好初始化数组,防止出现数据出现错误
srand(time(NULL));//种种子,使每次产生的随机数不一样
//生成数组
/*防止生成的随机数中有重复,解决方法:产生随机数的同时
去比较是否重复 ,如果重复就重新在产生一个随机数,如果
不重复就保存
每次i的值正好可以用来判断已经有几个了
*/
for(int i = 0;i < 4;i++){
int temp = rand() % 10;//产生0-99之间的数
if(i == 0){
//第一个 直接保存
array[i] = temp;
} else {
//判断前面是否已经存在了
int j = 0;
for(;j < i;j++){
//比较j对应的值和temp是否相同
if(array[j] == temp){
//重复了
printf("重复了:%d\n",temp);
break;
}
}
//判断是怎么出来的
if(j == i) {
//将i前面的比较一遍都没有发现重复的
//保存temp值
array[i] = temp;
}else{
//重复了
i--;//重新回到当前这一次
}
}
}
//输出
for(int i = 0;i < 4;i++){
printf("%d ",array[i]);
}
return 0;
}
程序运行结果: