考研C语言刷题基础篇之分支循环结构基础(二)

目录

第一题分数求和

[第二题:求10 个整数中最大值](#第二题:求10 个整数中最大值)

第三题:在屏幕上输出9*9乘法口诀表

第四题:写一个代码:打印100~200之间的素数

第五题:求斐波那契数的第N个数

斐波那契数的概念:前两个数相加等于第三个数

斐波那契数的公式:

第六题:汉诺塔游戏

思路:

[1. 当n=1时,需要一步](#1. 当n=1时,需要一步)

2.当n=2时,需要三步

3.当n=3时,需要七步

总结一下

公式结论

第七题:青蛙跳台阶问题

第八题数9的个数

[第十题 猜数字游戏(复习版本)](#第十题 猜数字游戏(复习版本))

[第十一题 二分查找(复习版)](#第十一题 二分查找(复习版))


第一题分数求和

计算1/1-1/2+1/3-1/4+1/5 ...... + 1/99 - 1/100 的值,打印出结果

  1. 将这个试子分成两部分,第一部分为1/1+1/3+1/5+....+1/99;第二部分1/2+1/4+.....1/100
  2. 然后将这两个试子相减
  3. 注意这里分数是浮点型
  4. double型是长整型浮点型
cpp 复制代码
//分数求和

int main() {
	double sum = 0.0;
	double sub = 0.0;
	double acc = 0.0;
	for (int i = 1; i <= 100; i++) {
		if (i % 2 == 0) {
			sum += (1.0 / i);
		}
		else {
			sub += (1.0 / i);
		}
	}
	acc = sub - sum;
	printf("%lf", acc);
	

第二题:求10 个整数中最大值

第三题:在屏幕上输出9*9乘法口诀表

第四题:写一个代码:打印100~200之间的素数

第五题:求斐波那契数的第N个数

斐波那契数的概念:前两个数相加等于第三个数

1 1 2 3 5 8 13 21 34 55

斐波那契数的公式:

当N<=2时 Fib(N)= 1;

当N>3时, Fib(N)=Fib(N-2)+Fib(N-1);2

cpp 复制代码
//求斐波那契数列的第N个数

int Fib(int n) {

	if (n <= 2) {
		return 1;
	}
	else {
		return Fib(n - 1) + Fib(n - 2);
	}

}

int main() {

	int n = 0;
	scanf("%d", &n);
	int sum = Fib(n);
	printf("第%d个数为:%d\n", n,sum);
	return 0;


}

第六题:汉诺塔游戏

思路:

1. 当n=1时,需要一步

2.当n=2时,需要三步

3.当n=3时,需要七步

这里我们发现为了实现第四步,是完成了n=2的所有步骤3步。若将黑红当一个整体。

那么我们要实现最后一步是不是也是完成相同的操作即n=2时的操作。

总结一下

首先,是完成一次n=2时的操作 即(n-1)时操作的操作。

在加上一步将蓝色放入第三根柱子的操作

最后,是将黑红当一个整体,在完成一次n=2即(n-1)时的操作。

公式结论

汉诺塔公式为:

当n=1时 要1步

当n>1时 要 2*(n-1)+1步

cpp 复制代码
//汉诺塔游戏
int Hanoi(int n) {

	if (n == 1) {
		return 1;
	}
	else {
		return 1 + 2 * Hanoi(n - 1);
	}

}

int main() {

	int n = 0;
	scanf("%d", &n);
	int sum = Hanoi(n);
	printf("需要%d步", sum);
	return 0;

}

第七题:青蛙跳台阶问题

问题:青蛙一次可以跳一个台阶,也可以一次跳2个台阶。请问如果有n个台阶时,青蛙有几种方法

|-----|--------------------------|---------------|-------------|
| 台阶数 | 第一次跳一格 | 第一次跳两格 | 方法数 |
| 1 | 1 | | 1 |
| 2 | 1 1 | 2 | 2 |
| 3 | 111;12 | 21 | 3 |
| 4 | 1111;121;112 | 22;211 | 5 |
| 5 | 11111;1211;1121;1112;122 | 2111;221;212; | 8 |
| n | n-1 | n-2 | (n-1)+(n-2) |

cpp 复制代码
//青蛙跳台游戏
int fac(int n) {

	if (n == 1) {
		return 1;
	}
	else if(n==2) {
	
		return 2;
	}else{
		return fac(n-1)+fac(n-2);
	}

}

int main() {

	int n = 0;
	scanf("%d", &n);
	int sum = fac(n);
	printf("需要%d步", sum);
	return 0;

}

第八题数9的个数

数100以内的出现过9的数字

cpp 复制代码
//数9的个数
int main() {
	int n = 1;
	while (n <= 100) 
	{
		if (n % 10 == 9) {
			printf("%d ", n);
		}
		else if(n / 10 == 9) {
			printf("%d ", n);
		}
		n++;
	}
	return 0;
}

第十题 猜数字游戏(复习版本)

易错点:

  1. srand((unsigned int)time(NULL));随机数种子,不能放在while循环里,要不然每次输入数字,都会生成随机的种子,会导致永远猜不对数字。

2.scanf("%d", &n);要放在循环里,要不然每次上一次猜对的数会一直在循环里循环。

cpp 复制代码
//猜数字游戏
void menu() {

	printf("*******************\n");
	printf("*******0 结束******\n");
	printf("*******1 开始******\n");
	printf("*******************\n");
	printf("输入0/1\n");
}

int fac(int n) {
	srand((unsigned int)time(NULL));
	int nnn = rand()%100+1;
	return nnn;

}

int main() {
	menu();
	int n = 0;
	int nn = 0;
	scanf("%d", &nn);
	srand((unsigned int)time(NULL));
		if (nn == 1) {
			int sum = fac(n);
			while (1) {
				
				printf("输入你猜的数字:");
				scanf("%d", &n);
				
				if (n < sum) 
				{
					printf("猜小了\n");
					
					
				}
				else if (n > sum) 
				{
					printf("猜大了\n");
					

				}
				else 
				{
					printf("猜对了");
					break;
					
				}
			
			}
		}
		else {
			printf("结束游戏");
		}
	

	return 0;


}

第十一题 二分查找(复习版)

编写代码在一个整形有序数组中查找具体的某个数

要求:找到了就打印数字所在的下标,找不到则输出:找不到。

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

//二分查找
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sum = sizeof(arr) / sizeof(arr[0]);
	printf("数组有%d个\n", sum);
	int left = 0;
	int right = sum - 1;
	int n = 0;
	printf("请输入你要查找的数:");
	scanf("%d", &n);
	while (n)
	{
		int mid = (left + (right - left)) / 2;
		if (n < arr[mid])
		{
			right = mid - 1;
		}
		else if (n > arr[mid])
		{
			left = mid + 1;
		}
		else
		{
			printf("找到了下标为:%d", arr[n]);
			break;
		}
	}
	return 0;
}
相关推荐
HXR_plume1 天前
【计算机网络】王道考研笔记整理(2)物理层
笔记·计算机网络·考研
海海不掉头发2 天前
【408考研知识点全面讲解计算机学科专业基础综合(408)】——数据结构之排序
数据结构·考研·排序算法
今天背单词了吗9802 天前
算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·笔记·考研·算法·蒙特卡洛算法
西电研梦3 天前
西电考研录取:哪些省份考研上岸西电更容易?
考研·西安电子科技大学·考研录取·26考研
海海不掉头发6 天前
【计算机组成原理】-CPU章节学习篇—笔记随笔
笔记·单片机·学习·考研·计算机组成原理
岑梓铭6 天前
计算机网络第九章——数据链路层《局域网》
网络·笔记·计算机网络·考研·408
热血的柯基破防了6 天前
计算机组成原理—第一章 计算机系统概述
考研
一个 00 后的码农7 天前
26考研物理复试面试常见问答问题汇总(2)电磁波高频面试问题,物理专业保研推免夏令营面试问题汇总
考研·面试·职场和发展
新中地GIS开发老师7 天前
新发布:26考研院校和专业大纲
学习·考研·arcgis·大学生·遥感·gis开发·地理信息科学
羊小猪~~9 天前
数据库学习笔记(十七)--触发器的使用
数据库·人工智能·后端·sql·深度学习·mysql·考研