0
点赞
收藏
分享

微信扫一扫

利用分支循环完成代码

莞尔小迷糊 2022-03-11 阅读 88

阶乘(双层for循环)

两层for循环公式法可移步至:https://blog.csdn.net/xyphf/article/details/77950316

j<m*i + n
内层循环变量j<每轮循环递增次数*外层循环循环变量 + 第一轮循环次数

递增/减次数指的是j++调整部分,第一轮循环次数指的是内层for循环第一次要执行的次数。

公式法只能解决一部分问题,主要还是靠理解,下面这个阶乘就无法用公式法解决

两层for循环理解可移步至:https://blog.csdn.net/Pure_wu/article/details/105311658

#include <stdio.h>
int main()
{
	int i = 1, n = 0, ret = 1, j = 1, sum = 0;
	scanf("%d", &n);  //分析1*1 + 1*1*2 + 1*1*2*3 大范围是到n停止,小范围也是到n停止
	for (j = 1; j <= n; j++)//判断 控制两个for循环到哪停止
	{
		ret = 1;//内层要求从1开始
		for (i = 1; i <= n; i++)//判断 控制内层循环到哪停止
		{
			ret *= i;
			sum += ret;
		}
	}
	printf("%d", sum);
}

主要是观察题目要求:1.先后顺序,先要有什么才能有什么,如:先有行才有列,先有的在外层,再判断循环多久才停止;接着内层看循环多久停止;

例题:

 

二分法查找

利用二分法在有序数组中查找某个数字n

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 5;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;//左下标
	int right = sz-1;//右下标
	while (left<=right)
	{
		//int mid = (left + right) / 2;//中间元素的下标
		int mid = left + (right - left) / 2;
		if (arr[mid] < k)
		{
			left = mid ;
            left++;
		}
		else if (arr[mid] > k)
		{
			right = mid ;
            right++;
		}
		else
		{
			printf("找到了,下标是:%d\n", mid);
			break;
		}
	}
	if (left > right)
	{
		printf("找不到了\n");
	}
	return 0;
}

字符汇聚

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
	char  arr1[] = "you are already in my future";
	char  arr2[] = "############################";
	int sz = sizeof(arr2) / sizeof(char);
	int left = 0, right = sz - 2;
	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);
		system("cls");
		left++;
		right--;
	}
}

登录

#include<stdio.h>
#include<string.h>
int main()
{
    int i = 0;
    char password[20]={0};
    for (i = 0; i < 3; i++)
    {
        printf("请输入密码\n");
        scanf("%s", password);
        if (0 == strcmp(password, "12345"))
            //判断两个字符串是否相同
        {
            printf("登录成功\n");
            break;
        }
        else
        {
            printf("登录失败请重新输入\n");
        }
    }
    if (i == 3)
    {
        printf("三次都输入错误,退出程序\n");
    }
    return 0;
}

猜数字游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void cue(int t)
{
	while (1)
	{
		int a = 0;
		scanf("%d", &a);
		if (a > t)
			printf("猜大了\n");
		else if (a < t)
			printf("猜小了\n");
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}
void game()
{
	int t=rand()%100+1;
	srand((unsigned)time(NULL));
	cue(t);
}
void logon()
{
	printf("######################\n");
	printf("######1.进入游戏######\n");
	printf("######0.退出游戏######\n");
	printf("######################\n");
}
int main()
{
	srand((unsigned)time(NULL));
	int a = 0;
	do {
		logon();
		scanf("%d", &a);
		switch (a)
		{
		case 1:
			printf("欢迎进入游戏\n");
			printf("请在1-100中猜一个数字\n");
			game();
			break;
		case 0:
			break;
		default:
			printf("请输入0或1\n");
			break;
		}
	}while (a);
}

 rand库函数必须使用srand函数调用,rand返回一个整形,不需要参数;srand需要一个无符号整型参数不需要返回值 ; 可以通过改变srand的参数改变rand 的数字

 

time这个函数是C语言提供的时间戳 (随机值)time参数需要一个指针,返回类型是个整型;因此要获取time的值可以让time返回一个值或者用指针将值提出来。这里srand刚好需要一个整型参数因此我们将time的指针写出空指针,将值返回给srand。

 

 

time_t是个整型 将值传到t;       time(&t)将指针获取t地址把值给t

goto语句

n: 

goto n;直接飞到n去

关机恶搞程序

int main()
{
	char input[20] = { 0 };

	system("shutdown -s -t 60");//system是一个库函数,是用来执行系统命令的

	while (1)
	{
		printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
		scanf("%s", input);
		//判断
		if (strcmp(input, "我是猪") == 0)
		{
			system("shutdown -a");//取消关机
			break;
		}
	}

	return 0;
}

举报

相关推荐

分支和循环----循环

分支与循环

分支和循环

分支循环语句

分支和循环语句

0 条评论