分支与循环小练习

Posted Suk_god

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分支与循环小练习相关的知识,希望对你有一定的参考价值。

针对于循环与分支的一些练习

计算n的阶乘

此题相对比较简单,理解阶乘的概念,联想1–100的求和,利用循环实现即可,具体见代码

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <windows.h>

int main()
{
	int num = 0;
	int i = 0;
	long fac = 1;
	printf("Please Enter Your Number#");
	scanf("%d",&num);
	if (num < 0)
	{
		printf("Enter Error!\\n");
	}
	else if (num == 0)
	{
		printf("%d\\n", 1);
	}
	else
	{
		for (i = num; i>1; i--)
		{
			fac *= i;
		}
		printf("%d\\n", fac);
	}
	
	system("pause");
	return 0;
}

计算1–10的阶乘和

直接上代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int i = 0;
	int sum = 0;
	long fac = 1;
	for (i = 1; i <= 10; i++)
	{
		fac *= i;
		sum += fac;
	}
	printf("1!+2!+...+10!=%d\\n", sum);
	system("pause");
	return 0;
}

结果:在这里插入图片描述

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

要求:找到了就打印数字所在的下标,找不到则输出:找不到。
分析题干,提取关键信息,
数组、有序---->折半查找
详解如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>

int SearchIndex(int arr[], int len, int number)
{
	int start = 0;
	int end = len - 1;
	while (start <= end)
	{
		int mid = (start&end) | ((start^end) >> 1);
		if (number < arr[mid])
		{
			end = mid - 1;
		}
		else if (number>arr[mid])
		{
			start = mid + 1;
		}
		else
		{
			return mid;
		}
	}
	return -1;
}

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 134, 156 };
	int len = sizeof(arr) / sizeof(arr[0]);
	int number = 0;
	scanf("%d", &number);
	//二分查找函数
	int result = SearchIndex(arr, len, number);
	if (result == -1)
	{
		printf("找不到");
	}
	else
	{
		printf("%d", result);
	}	
	printf("\\n");
	system("pause");
	return 0;
}

结果:
在这里插入图片描述
在这里插入图片描述

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

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <windows.h>
int main()
{
	char arr1[] = "Where there is a will there is a way!";
	char arr2[] = "*************************************";
	int left = 0;
	int right = strlen(arr1) - 1;
	printf("%s\\n",arr2);
	while (left<=right)
	{
		Sleep(1000);
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
		printf("%s\\n", arr2);
		//此输出语句可以更改为
		//pritnf("%s\\r",arr2);
		//这样写替换的效果更明显,读者可自行尝试
	}
	printf("\\n");
	system("pause");
	return 0;
}

在这里插入图片描述

以上是关于分支与循环小练习的主要内容,如果未能解决你的问题,请参考以下文章

趁着课余时间学点Python真的花点课余时间就能理解的分支控制语句

Python从入门到精通,100天就够了!——分支结构与循环结构

分支与循环语句练习——用C语言设计一个猜数字游戏吧(随机数的生成)

十流程控制结构

分支循环语句(练习篇)-含猜数字游戏

分支与循环