从零开始学C语言第五天(练习)

一、计算n的阶乘

1.思路:1*2*3....*n,用变量i循环产生n个数

                需要一个变量n来确定范围

                乘积付给变量sum

2.代码

#include <stdio.h>
int main()
{
    int i=1;
    int n=0;
    int sum=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum=sum*i
    }
    return 0;
}

二、计算1!+.....+10!

第一种方法

1.思路:有了第一道题,我们可以求出任意n的阶乘

                可以采用循环嵌套的方式令n=1~10,再将结果相加

                注意,sum1循环完一次要归一

2.代码

#include <stdio.h>
int i=0;
int a=0;
int sum1=1;
int sum2=0;
int main()
{
    for(i=1;i<=10;i++)
    {
        sum1=1;
        for(a=1;a<=i;a++)
        {
            sum1=sum1*a;
        }
        sum2=sum1+sum2;
    }
    printf("%d",sum2);
    return 0;
}

第二种方法

1.思路:2!=1!*2        3!=2!*3....

              从1!开始求,将前面计算的利用起来

2.代码

#include <stdio.h>
int i = 1;
int sum1 = 0;
int mu = 1;
int main()
{
    for (i = 1; i <= 10; i++)
    {
        mu = mu * i;
        sum1 = sum1 + mu;
    }
    printf("%d",sum1);
    return 0;
}

三、在一个有序数组中查找某个数

第一种方法

1.思路:假设数组arr1[]={1,2,3,4,5,6,7,8,9,10},查找数字七

              可以采用遍历的方法

2.代码

int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
int sz = sizeof(arr1) / sizeof(arr1[0]);

int main()
{
    for (i = 0; i < sz; i++)
    {
        if (7 == arr1[i])
        {
            printf("找到了,下标是:%d",i);
            break;
        }
    }
    if(i==sz)
    printf("找不到");
    return 0;
}

第二种方法

1.思路:二分查找(有序数组才能使用)

2.代码

int main()
{
    int k = 7;
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int left = 0;
    int right = sz - 1;
    
    while (left<=right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] == k)
        {
            printf("找到了");
            break;
        }
        else if (arr[mid] > k)
        {
            right = mid - 1;
        }
        else
        {
            left = mid + 1;
        }
        
      
    }
    if (left > right)
    {
        printf("找不到");
    }
    return 0;
}

四、编写代码,演示多个字符从两端移动,向中间汇聚。

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
int main()
{	
	char arr1[] = {"**********"};
	char arr2[] = {"hello qiul"};
	int left = 0;
	int right = strlen(arr1) - 1;;//sizeof(arr[1])-2
	while (left<=right)
	{
		arr1[left] = arr2[left];
		arr1[right] = arr2[right];
		printf("%s\n", arr1);
		Sleep(1000);
		//清空屏幕
		system("cls");
		left++;
		right--;
	}
	printf("%s\n", arr1);
	return 0;
}

sleep函数:Sleep(1000)间隔几毫秒,使用需要引入头文件<windows.h>

system("cls")        清空屏幕        使用需要引入头文件<stdlib.h>

五、模拟登陆界面

编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成公,如果三次均输入错误,则退出程序。

#include <string.h>
#include <stdio.h>
int main()
{	
	int i = 0;
	char mima[] = { "abcdef" };
	char password[] = {"0"};
	while (i<3)
	{
		printf("请输入密码:<");
		scanf("%s", password);//数组名包含地址
		if (strcmp(mima,password)==0)//比较舒服是否相等不能用==,要用strcmp库函数,返回值为0说明相等
		{
			printf("登陆成功");
			break;
		}
		else
		{
			printf("密码错误");
			i++;
		}
	}
	if (3==i)
	{
		printf("退出程序");
	}
	return 0;
}

六、猜数游戏

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("*****************************\n");
	printf("*****************************\n");
	printf("*******1.开始游戏************\n");
	printf("*******2.结束游戏************\n");
	printf("*****************************\n");
	printf("*****************************\n");
	printf("*****************************\n");
}
void game()
{
	int ret = rand()%100+1;
	printf("请猜数一个1-100的数字\n");
	int b = 0;
	while (1)
	{
		scanf("%d", &b);
		if (b == ret)
		{
			printf("恭喜你猜对了,是否继续游戏\n");
			break;
		}
		else if (b > ret)
		{
			printf("大了\n");
		}
		else
		{
			printf("小了\n");
		}
	}
}
int main()
{	
	srand((unsigned int)time(NULL));
	int a = 0;
	do
	{
		menu();
		int sum = rand();
		scanf("%d",&a);
		if (1==a)
		{
			game();
		}
		else if(2==a)
		{
			printf("退出游戏");
			break;
		}
		else
		{
			printf("请重新选择\n");
			
		}
	} while (a);
	return 0;
}

七、关机程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char input[20] = { 0 };
	system("shutdown - s - t60");
again:
	printf("注意!!!请输入:我是猪 否则你的电脑将在60内关机");
	scanf("%s",input);
	if (strcmp("我是猪",input)==0)
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}

相关推荐

  1. 开始C语言练习

    2024-07-16 23:28:01       22 阅读
  2. 开始C语言系列之三章《strlen》

    2024-07-16 23:28:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 23:28:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 23:28:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 23:28:01       58 阅读
  4. Python语言-面向对象

    2024-07-16 23:28:01       69 阅读

热门阅读

  1. Python正则表达式中的分组

    2024-07-16 23:28:01       20 阅读
  2. 电容蓄电能力测试总结

    2024-07-16 23:28:01       20 阅读
  3. 【C++】使用gtest做单元测试框架写单元测试

    2024-07-16 23:28:01       18 阅读
  4. 探索Perl语言:入门学习与实战指南

    2024-07-16 23:28:01       19 阅读
  5. C# volatile关键字

    2024-07-16 23:28:01       23 阅读
  6. (138)SRAM接口--->(001)基于FPGA实现SRAM接口

    2024-07-16 23:28:01       20 阅读
  7. 排序之 快速排序、归并排序、堆排序

    2024-07-16 23:28:01       24 阅读
  8. Oracle或MySQL数据迁移到国产数据库后的注意事项

    2024-07-16 23:28:01       19 阅读
  9. Redis的中BitMap的应用

    2024-07-16 23:28:01       24 阅读
  10. C# 匿名方法、Lambda、Linq概念及联系

    2024-07-16 23:28:01       23 阅读