c语言基础学习记录——练习1

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include<string.h>
#include<windows.h>//用于控制输出窗口的函数库
#include<stdlib.h>//用于调用system()函数的库

//int main()
//{
    //循环和分支语句练习**************************************************************************

    //练习1:计算n的阶乘   练习2:计算1!+2!+3!.....+n!
    //练习3:在一个有序数组中查找具体的某个数字n,编写 int binsearch(int x,int v[],int n)函数,功能是在v[]数组中查找x
    //练习4:编写代码,演示多个字符从两端移动,向中间汇聚
    //练习5:编写代码实现,模拟手机解锁情景情景,并且只能登录5次,(第4次错误锁屏30分钟,第五次锁屏1小时,并显示用户锁定,退出程序)
    //*********************************************************
    //practice 1:求阶乘和
    /*int n = 0;
    int result = 1;
    printf("请输入要求的阶乘数:>");
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        result = result * i;
    }
    printf("%d! = %d\n", n, result);*/
    //********************************************************
    //practice 2: 求1!+2!+...n!

    /*int n = 0;
    int result = 1;
    int sum = 0;
    printf("请输入要求到多少的阶乘数和:>");
    scanf("%d", &n);
    for (int j = 1; j <= n; j++)
    {
        result = 1;
        for (int i = 1; i <= j; i++)
        {
            result = result * i;
        }
        printf("%d! = %d\n", j,result);
        sum = sum + result;
    };
    printf("1!+2!+....%d! = %d\n ", n, sum);*/
    //********************************************************
    //practice 3:编写函数实现在数组中查找某个数字n

    //1:数组遍历
    //*********************************************************
    //int Num = 0;
    //int all = 0;
    //int arr[] = { 1,2,3,4,5,6,7,8,9,10 ,12,15,5,6,7,8,9,10,1,2,3,4,11,13,14};
    //int num = sizeof(arr) / sizeof(arr[0]);//用来求数组中有多少个元素
    //printf("数组中有%d个元素,分别是:\n",num);
    //for ( int  i = 0; i < num; i++)
    //{
    //    printf("%d\t", arr[i]);
    //}
    //printf("\n");
    //printf("请输入要查找的数字:>\n");
    //scanf("%d", &Num);
    //
    //for (int i = 0; i < num; i++)
    //{
    //    if (Num == arr[i])
    //    {
    //        printf("你要查找的数字是%d,在%d号位置上\n",Num, i + 1);
    //        all++;
    //    };
    //}
    //if (all == 0)
    //{
    //    printf("很遗憾,没有您要寻找的数字,请重新输入\n");
    //};
    //printf("查找完毕");
    /*char arr1[] = "abcdef";
    printf("%s\n", arr1);*/
    //strlen(arr); 用于获取字符串的长度
    //字符串型数组可以整体输出,而字符型需要循环输出。
    //************************************************************************

    //查找方法:2、折半查找法:核心:每次选取有序数据的中位数与查找数据比较,缩小查找范围

    //int arr[200];
    //    for (int i = 0; i < 200; i++)
    //    {
    //        arr[i] = i;
    //    }//用循环初始化一个1-199的有序数组
    //int num = 0;
    //
    //int right = 0;
    //int left = 0;
    //int len = sizeof(arr) / sizeof(arr[0]);
    //right = len - 1;
    //
    //printf("请输入您要查找的数字:>\n");
    //scanf("%d", &num);
     
    //for (int i = 0; (right-left)>1; i++)
    //{
    //    int mid = (left + right) / 2;
    //    if (num == arr[mid])
    //    {
    //        printf("找到了,您要查找的数据下标是%d\t共查找了%d次", mid,i+1);
    //        break;
    //    }
    //    else if (num>arr[mid])
    //    {
    //        left = mid;
    //    }
    //    else if (num<arr[mid])
    //    {
    //        right = mid;
    //    };
    //    
    //};
    //
    //if ((right - left)<=1)
    //{
    //    printf("对不起,没查找到,请输入正确数字");
    //};
     //注意:这里的left和right在判断条件控制上,要考虑到整型的舍去问题,所以设置成left = right||right - left = 1;
    //****************************************************************************
    //practice 4: 目标实现效果:
    // welcome to bit !!!!!!!
    // ############################
    // w##########################!
    // we#######################!!
    // wel####################!!!
    // ......
    // welcome to bit !!!!!!!
 //   char arr1[] = "welcome to bit !!!!!!";
 //   char arr2[] = "#####################";
    //int left = 0;
    int right = sizeof(arr1) / sizeof(arr1[0]) - 1;//err 写法错误,是求不出最右边!的下标的,应该要-2;
    //int right = strlen(arr1) - 1;//通过strlen获取字符串数组的元素个数更直观,sizeof一般用于求数字型数组
    sizeof(arr)/sizeof(arr[0]),求的是数组的元素个数
    比如对于字符串数组"abc"
    内存中存储的是[ a, b, c, \n]
    数组的下标是:  0   1  2  3    ,因此当我们要获取字母c的下标,应该为sizeof(arr)/sizeof(arr[0])-2
    核心代码: arr2[left] = arr1[left], arr2[right] = arr1[right];
    //for (int i = 0; left<=right; i++)
    //{
    //    arr2[left] = arr1[left];
    //    arr2[right] = arr1[right];
    //    printf("%s\n", arr2);
    //    //休息一秒
    //    Sleep(1000);
    //    system("cls");//清空屏幕
    //    left++;
    //    right--;
    //}
    //system("pause");
    //return 0;
      
//*******************************************************************************
//practice 5:简单密码解锁系统:
//模拟手机解锁情景情景,并且只能登录5次,(第4次错误锁屏30分钟,第五次锁屏1小时,并显示用户锁定
//运用到strcmp库函数
   //   char password[20];
      //printf("请设定解锁密码:>");
      //scanf("%s", password);
      //char input[20];
      //int rem = 0;
      //for (int i = 0; i < 5; i++)
      //{
         // rem = 4 - i;
         // printf("请输入6位解锁密码(5次机会):>");
         // scanf("%s", input);
         // if (strcmp(input ,password )== 0)//err, == 不能用于比较两个字符串是否相等,应该使用一个库函数-strcmp
         // //strcmp(string 1,string 2):当表达式 == 0,说明字符串相等,当!= 0时,说明字符串不相等
         // {
            //  printf("密码正确,已解锁");
            //  break;
         // }
         // else
         // {
            //  if (rem == 0)
            //  {
            //      printf("密码错误,屏幕锁定24h");
            //      break;
            //  }
            //  if (i ==3)
            //  {
            //      printf("密码错误,屏幕锁定10秒,您还最后%d次机会\n", rem);
            //      Sleep(10000);
            //      system("cls");
            //      continue;
            //  }

            //  printf("密码错误,您还有%d次机会\n", rem);
            //  Sleep(2000);
            //  system("cls");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值