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

目录

第一题

第二题

 方法一:要循环两次,一次求阶乘,一次求和。

注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。

方法二:

第三题

方法一:用数组遍历的思想

 方法二用折半查找的思想

折半查找的思想

 第四题

方法一:用两个变量,两个数组进行复制

方法二

第五题

 方法一:用for循环和if else分支结构。

方法二:用strcmp函数比较字符串的大小 

第五题(重要需要多次复习)


第一题

求n!

int main() {

	int n = 0;
	int sum = 1;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		sum = sum * i;
		//sum *=i;
	}
	printf("%d\n",sum);
	return 0;
}

第二题

第二题1!+2!+...+n!

 方法一:要循环两次,一次求阶乘,一次求和。

注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。

正常求和,1+1*2+1*2*3......

每一重置sum:1+1+1*2+1+1*2+1*2*3+1+1*2+1*2*3+1*2*3*4

方法二:

//第二题1!+2!+...+n!
int main() {

	int n = 0;
	scanf("%d", &n);
	int sum = 1;
	int cum = 0;
	for(int i = 1;i<=n;i++)				//要循环两次
	{
		sum = 1;						//让sum每次置为1
		for (int j = 1; j <= i; j++) 
		{
			sum = sum * j;
		}
		cum = cum + sum;
	}

	/*for (int i = 1; i <= n; i++) {
		sum *= i;
		cum += sum;
	}*/
	printf("%d", cum);
	return 0;
}

第三题

 在有序数组1,2,3,4,5,6,7,8,9,10里查找元素

printf("%d\n", sizeof(arr));    //求数组的大小
    printf("%d\n", sizeof(arr[0]));        //求数组一个元素的大小
    printf("%d\n", sizeof(arr) / sizeof(arr[0])         //求数组的元素个数

方法一:用数组遍历的思想

 这里用到sizeof函数,可以求出数组的大小

//第三题 在有序数组里查找元素

方法一遍历查找
int main() {

	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d\n", sizeof(arr));
	printf("%d\n", sizeof(arr[0]));
	printf("%d\n", sizeof(arr) / sizeof(arr[0]));
	int n = 0;
	scanf("%d", &n);
	int i=0;
	while (i<=10) {
		if (arr[i] != n) {			
        i++;
	}
		else {
			printf("找到了,下标为%d", i);
			break;
		}
	}

	return 0;
}

 方法二用折半查找的思想

 用一个变量left表示第一个元素,一个变量right表示最后一个元素。

数组的下标是从0开始的,所以right的值应该是数组长度-1;

折半查找的思想

//方法二折半查找

	int main(){

		int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
		int n = 0;
		scanf("%d", &n);
		int tp = sizeof(arr) / sizeof(arr[0]);
		int left = 0;
		int right = tp - 1;
		int mid = (left + right) / 2;
		while (left <= right) {
			mid = (left + right) / 2;
			if (n > arr[mid]) {
				left = mid + 1;
			}
			else if (n < arr[mid]) {
				right = mid - 1;
			}
			else {
				printf("找到了下标为%d",mid);
				break;
			}
		}

		return 0;
	}

 第四题

从两头向中间移动,生成相应的字符串

如将 welcome to China !!!,从两头向中间输出

输出结果如下 

方法一:用两个变量,两个数组进行复制

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<stdio.h>
//第四题 
int main() {

		//方法一
		char arr1[] = "welcome to China!!!";
		char arr2[] = "*******************";
		int tp = sizeof(arr1) / sizeof(arr1[0]);
		int left = 0;
		int right = tp - 1;

		while (left <= right) {
				arr2[left] = arr1[left];
				arr2[right] = arr1[right];
				left++;
				right--;
				printf("%s\n", arr2);
		}
		return 0;

}

方法二

可以设置延迟效果,利用Sleep函数,和system(“cls”)来清空屏幕。

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<stdio.h>
//第四题 
int main() {

		//方法二
		char arr1[] = "welcome to China!!!";
		char arr2[] = "*******************";
		int tp = sizeof(arr1) / sizeof(arr1[0]);
		int left = 0;
		int right = tp - 1;

		while (left <= right) {
				arr2[left] = arr1[left];
				arr2[right] = arr1[right];
				left++;
				right--;
				Sleep(1000);
				system("cls");
				printf("%s\n", arr2);
		}
		return 0;

}

第五题

编写代码,模拟用户登录程序,只能登录三次,只允许输入三次密码,如果三次都错误就退出程序,密码正确就提示成功。

 方法一:用for循环和if else分支结构。

//第五题
int main() {

	int i = 0;
	int n = 0;
	int pas = 123456;
	for (int i = 0; i < 3;i++) {
		printf("请输入正确的密码\n");
		scanf("%d", &n);
		if (n == pas) {
			printf("成功");
			break;
		}
		else {
			printf("密码不对\n");
		}
	}

	return 0;
}

方法二:用strcmp函数比较字符串的大小 

 注意:strcmp函数的头文件是#include<string.h>

 注意:两个字符串比较大小不能直接用==比较,要使用strcmp函数比较

 如直接相比会导致密码不对

	//方法二
	int i = 0;
	char password[20] = {0};
	for (int i = 0; i < 3; i++) {
		printf("请输入正确的密码\n");
		scanf("%s", password);
		if (strcmp(password,"123456")==0) {
			printf("成功");
			break;
		}
		else {
			printf("密码不对\n");
		}
	}

	return 0;

第五题(重要需要多次复习)

电脑随机生成1-100的之间的数,然后我们猜数字,如果猜小了,返回猜小了。猜大了,返回猜大了,如果猜对返回猜大了,如果猜对了,返回猜对了,然后游戏结束。

  1.  在使用随机数函数rand之前要使用srand()随机数生成器。
  2.  srand(),传入参数如srand(1),参数不同所生成的随机数不同,参数相同生成的随机数是相同的,如srand(1)与srand(2)的随机数不同,但是srand(1)与srand(1)的随机数相同。
  3. 若要生成随机的随机数种子,就要用到time函数,srand((unsigned int)time(NULL))生成随机的随机数种子。
  4. rand函数是伪随机的,真正的随机要用srand。
  5. time函数的返回值是time_t,srand的形参是unsigned int所以要强制类型转换,time的参数是一个指针类型,所以当不用时要值为空NULL。
//第六题
void meun() {

	printf("**********************\n");
	printf("********1 play********\n");
	printf("********0 exit********\n");
	printf("**********************\n");

}
void game() {
	//生成随机数
	int ran = rand() % 100 + 1;
	/*printf("随机数是%d\n ", ran);*/
	//猜数字
	int n = 0;
	while (1) {
		printf("输入你猜的数字\n");
		scanf("%d", &n);
		if (n > ran) {
			printf("猜大了\n");
		}
		else if (n<ran) {
			printf("猜小了\n");
		}
		else {
			printf("猜对了\n");
		}
	

	}

}
int main() {

	int input = 0;
	srand((unsigned int)time(NULL));		//不用每次都生成一个随机数种子,用同一个随机数种子,才能多次输入使用的相同的随机数

	do {
		meun();
		printf("请输入1\\0:\n");
		scanf("%d", &input);
		if (input == 1) {
			printf("开始猜数字游戏\n");
			game();
		}
		else if (input == 0) {
			printf("结束游戏");
			break;
		}
		else {
			printf("输入错误");
		}

	} while (input);


	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/335447.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows给docker设置阿里源

windows环境搭建专栏&#x1f517;点击跳转 Windows系统的docker设置阿里源 文章目录 Windows系统的docker设置阿里源1.获得镜像加速器2.配置docker 由于我们生活在中国大陆&#xff0c;所以外网的访问总是那么慢又困难&#xff0c;用docker拉取几兆的小镜象还能忍受&#xff…

数据结构排序二叉树(下)

哎,调了几天深度学习模型,今天来更新排序二叉树 文章目录 前言 一、排序二叉树的结构定义 二、在排序二叉树添加数据 三、定义创建排序二叉树函数 四、查找一棵二叉排序树中的结点x的所在层数 五、删除二叉排序树中T关键字x的节点 六、查找二叉排序树中的所有小于key的关…

Mysql:重点且常用的操作和理论知识整理 ^_^

目录 1 基础的命令操作 2 DDL 数据库定义语言 2.1 数据库操作 2.2 数据表操作 2.2.1 创建数据表 2.2.2 修改和删除数据表 2.2.3 添加外键 3 DML 数据库操作语言 3.1 插入语句(INSERT) 3.2 修改语句(UPDATE) 3.3 删除语句 3.3.1 DELETE命令 3.3.2 TRUNCATE命令 4 …

探索C++中std::string的弱点:你可能未曾注意到的缺点

C中std::string的弱点&#xff1a;你可能未曾注意到的缺点 一、背景二、性能方面的局限三、可变性带来的问题四、内存管理和指针操作五、Unicode和多字节字符集的支持六、其他替代方案七、总结 一、背景 C中std::string是一个非常重要的类&#xff0c;用于表示和处理字符串数据…

前端开发必备 HTML的常用标签(二)

目录 一、HTML语言 二、水平线标签 三、字体样式标签 四、注释和特殊符号 一、HTML语言 HTML&#xff08;Hypertext Markup Language&#xff09;是一种标记语言&#xff0c;用于创建网页的结构和内容。它由一系列的标签组成&#xff0c;这些标签定义了网页中各个元素的结…

如何防护网站存在的sql注入攻击漏洞

SQL注入攻击是最危险的Web漏洞之一&#xff0c;危害性极大&#xff0c;造成的后果不堪设想&#xff0c;因此受到了大家的高度重视。那么你知道SQL注入攻击防范方法有哪些吗? SQL注入是一种网站的攻击方法。它将SQL代码添加到网站前端GET POST参数中&#xff0c;并将其传递给my…

MSPM0L1306例程学习-UART部分(2)

MSPM0L1306例程学习系列 1.背景介绍 写在前边的话&#xff1a; 这个系列比较简单&#xff0c;主要是围绕TI官网给出的SDK例程进行讲解和注释。并没有针对模块的具体使用方法进行描述。所有的例程均来自MSPM0 SDK的安装包&#xff0c;具体可到官网下载并安装: https://www.ti…

【 Qt 快速上手】-②- Qt 环境搭建

文章目录 1. Qt 开发工具概述1.1 Qt Creator 介绍1.2 Visual Studio 介绍1.3 Eclipse 介绍 2. Qt SDK 的下载与安装2.1 Qt SDK 的下载2.2 Qt SDK 的安装2.3 验证 Qt SDK 安装是否成功2.4 Qt 环境变量配置 1. Qt 开发工具概述 Qt 开发环境需要安装三个部分&#xff1a; C编译器…

从零开始,自己搭建一个autonomous mobile robot做gazebo仿真(1):mobile robot建模与添加差速控制器

这样一个简单的mobile robot模型 首先写xacro文件&#xff0c;创建 link joint transmission <?xml version"1.0"?> <robot xmlns:xacro"http://www.ros.org/wiki/xacro" name"whill_modelc" ><xacro:property name"PI&q…

JS-元素尺寸与位置

通过js的方式&#xff0c;得到元素在页面中的位置 获取宽高 元素.offsetWidth 元素.offsetHeight 1&#xff09;获取元素的自身宽高、包括元素自身设置的宽高paddingborder 2&#xff09;获取出来的是数值&#xff0c;方便计算 3&#xff09;注意&#xff1a;获取的是可视…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (14) | 强化学习(Robot Learning)

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

【Unity】URP报错Object reference not set to an instance of an object

使用URP之后&#xff0c;Unity报错&#xff1a;显示不正常 NullReferenceException: Object reference not set to an instance of an object UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.get_cameraStack () (at Library/PackageCache/com.unity.render-p…

富士康在印度受挫,在郑州建设新能源汽车工厂,还是中国制造可靠

日前消息指富士康宣布在郑州建设新能源汽车工厂&#xff0c;此前它一直推动印度制造&#xff0c;如此做法形成了鲜明对比&#xff0c;这显示出富士康在印度多番努力之后&#xff0c;终于还是认清了现实&#xff0c;印度难以担起富士康的事业。 此前富士康大举向印度转移的是手机…

可视化k8s页面(Kubepi)

Kubepi是一个简单高效的k8s集群图形化管理工具&#xff0c;方便日常管理K8S集群&#xff0c;高效快速的查询日志定位问题的工具 随便在哪个节点部署&#xff0c;我这里在主节点部署 docker pull kubeoperator/kubepi-server docker run --privileged -itd --restartunless-st…

探索curl的高级应用:HTTP请求的大师级技巧

探索curl的高级应用&#xff1a;HTTP请求的大师级技巧 引言高级用法概览1. HTTP请求与响应处理2. 身份验证与安全3. 进阶技巧4. Cookie管理与会话保持5. 脚本自动化 HTTP请求与响应处理1. 自定义请求头2. 发送数据3. 处理响应 身份验证与安全1. 基本认证2. 摘要认证3. HTTPS安全…

力扣:494. 目标和(动态规划)(01背包)

题目&#xff1a; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前添加…

独立服务器和云服务器的区别

独立服务器和云服务器的区别是很多用户在选择服务器时要做的课程&#xff0c;那么独立服务器和云服务器的区别有哪些呢? 独立服务器和云服务器是两种不同的服务器部署方式&#xff0c;它们在性能、成本、资源利用、安全性和维护等方面存在显著差异。 1. **性能对比**&#xff…

【CentOS 7联网】手把手解决CentOS7虚拟机的网络连接问题

在安装CentOS7虚拟机之后发现连不上网络&#xff0c;捣鼓了好久都没有弄好&#xff0c;一路上走了很多弯路&#xff0c;希望我的经验能够帮助到大家。这里我是通过NAT连接配置静态网络的方式来连接的。 本机&#xff1a;windows1 虚拟机&#xff1a;centos7 x86_64 网络连接…

Java 应用部署包优化经验分享

背景 最近接手了一个 2018 年的老项目&#xff0c;因为太久远了&#xff0c;功能上的代码不敢乱动&#xff0c;虽然是老项目&#xff0c;但最近一年也在持续加功能&#xff0c;功能不稳定&#xff0c;于是我就进入了救火式改 Bug 的状态。 功能不能妄动&#xff0c;但是这个项…

yum配置文件及NFS共享

一 yum配置文件及命令 1 /etc/yum.conf //主配置文件 2 /etc/yum.repos.d/*.repo //yum仓库文件位置 写错一个字母就不行&#xff0c;可以ping www.google.com 测试网络 3 /var/log/yum.log //日志文件 二 yum命令 1 [rootlocalhost ~…