2019-11-24c语言的第三次学习 for while 随机数 数组

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
/*
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;
}

程序运行结果


程序运行.PNG

for循环实例运用demo:ATM

#include
#include
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();导入头文件直接退出程序 
        add(){
        return;
    }
    
    
        */
        
        
       
     
     
    return 0;
    }

/*
main函数:不写实际代码 ,逻辑
 */

程序运行结果:
捕获.PNG

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

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;
}

程序运行结果:
switch.PNG

随机数

1.随机数的产生

当程序运行起来的时候,系统自动产生一个种子
使用rand()产生随机数后,重新启动程序,再次使用rand(),发现种子是一样的
总结:只要种子一样产生的随机数就一样
如果需要每次重新运行都产生 不一样的随机数就需要更改种子
则此时就有
时间: 001 002
运用时间做种子:
srand(time(NULL)) 导入头文件

控制时间

1.延时2s

<1.>第一种方式

for(long long i = 0;i<10000000000/14;i++); //显示时间2s即延时2s

<2.>第二种方式

(1.)

Sleep(2000) ;
#include 用Sleep延时时需用该头文件

(2.)

windows系统延时或用

 #include
int main(){
    Sleep(2000);
    return 0;
} 

2.刷新界面

<1.>

system("cls"); 刷新界面
#include 刷新界面需要使用该头文件

<2.>

mac系统刷新

    for(int i=0;i<20;i++){
    printf("\n");
}

demo:输入的内容显示2s后消失

//控制时间输入2s后消失 
#include
#include//刷新界面需要使用该头文件 
#include//用Sleep延时时需用该头文件 
int main(){
    printf("12\n"); 
    
    //for(long long i = 0;i<10000000000/14;i++);//显示时间2s即延时2s
    Sleep(2000) ;//#include//用Sleep延时时需用该头文件
     
    system("cls");//刷新界面 
    
    return 0;
}

/*
windows系统延时或用
#include
int main(){
    Sleep(2000);
    return 0;
} 
*/


/*  mac系统刷新 
    for(int i=0;i<20;i++){
    printf("\n");
}
*/

demo:小游戏,产生不同的随机数,产生的随机数显示2s后消失,玩家输入所看到的随机数,输入正确,游戏继续,否则游戏结束

#include
#include//使用rand函数需用此头文件 
#include//关于时间的头文件 
#include//用Sleep延时时需用该头文件
int main(){
    int count = 3;//记录每次生成多少个随机数
    
    while(1){
        unsigned int seed = time(NULL);
        //设置随机数的种子
        srand(seed) ;
    
        for(int i = 0;i//刷新界面需要使用该头文件 
        /*  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;
    }

程序运行结果:
小游戏.PNG

数组

1.数组的基础 数组:存储多个同种类型的数据

<1.>数组的定义:必须明确知道数组元素的个数

系统为数组分配内存空间的时候 必须确定

<2.>数组内存

数组名就是数组的首地址

<3.>数组访问:下标 0 - n-1

#include 

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
#include
#include 
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;
}

程序运行结果:
数组.PNG

你可能感兴趣的:(2019-11-24c语言的第三次学习 for while 随机数 数组)