考研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;
}

方法二:递归法 

 注意0!,0的阶乘也为1

//n!递归写法
int fib(int n) {if (n <= 1) {		//0!=1return 1;}else {return n * fib(n - 1);}}
int main() {int n = 0;scanf("%d", &n);int sum = fib(n);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每次置为1for (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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言第三弹---数据类型和变量

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 数据类型和变量 1、数据类型介绍1.1、整型1.2、浮点型1.3、字符型1.4、布尔类型1.5、各种数据类型的长度1.5.1、sizeof操作符1.5.2、数据类型的长度1.5.3、sizeo…

K8S--部署Nacos

原文网址&#xff1a;K8S--部署Nacos-CSDN博客 简介 本文介绍K8S部署Nacos的方法。Nacos版本是&#xff1a;2.2.3。 部署方案 本文为了简单&#xff0c;使用此部署方式&#xff1a;使用本地pvconfigmap&#xff0c;以embedded模式部署单机nacos。以nodePort方式暴露端口。 …

SpringSecurity+JWT前后端分离架构登录认证

目录 1. 数据库设计 2. 代码设计 登录认证过滤器 认证成功处理器AuthenticationSuccessHandler 认证失败处理器AuthenticationFailureHandler AuthenticationEntryPoint配置 AccessDeniedHandler配置 UserDetailsService配置 Token校验过滤器 登录认证过滤器接口配置…

Kafka常见指令及监控程序介绍

kafka在流数据、IO削峰上非常有用&#xff0c;以下对于这款程序&#xff0c;做一些常见指令介绍。 下文使用–bootstrap-server 10.0.0.102:9092,10.0.0.103:9092,10.0.0.104:9092 需自行填写各自对应的集群IP和kafka的端口。 该写法 等同 –bootstrap-server localhost:9092 …

ctfshow-SQL注入(web214-web220)

时间盲注 &#xff08;最贴合实际的注入&#xff09; web214 什么都不存在 使用bp进行抓包看看有没有注入点 在原始页面刷新 抓包发现修改debug为1是返回结果是一个sql的查询语句 id可能存在注入点 发现存在时间注入 使用web193脚本进行修改 python盲注脚本 import requests …

django后台进行加密手机号字段,加密存储,解密显示

需求: 1 &#xff1a;员工在填写用户的手机号时&#xff0c;直接填写&#xff0c;在django后台中输入 2&#xff1a;当员工在后台确认要存储到数据库时&#xff0c;后台将会把手机号进行加密存储&#xff0c;当数据库被黑之后&#xff0c;手机号字段为加密字符 3&#xff1a;员…

RT-Thread Studio学习(十七)虚拟串口

RT-Thread Studio学习&#xff08;十七&#xff09;虚拟串口 一、简介二、新建RT-Thread项目并使用外部时钟三、启用USB设备功能四、测试 一、简介 本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下实现USB虚拟串口。 硬件及开发环境如下&#xff1a; OS WI…

C++入门学习(一)写一个helloworld

1、头文件 #include <iostream> using namespace std; 任何程序都需要这两句的&#xff0c;写上就好。 2、主文件 int main() {cout<<"Hello World!"<<endl;return 0; } 由于是int型数据&#xff0c;所以要返回一个值&#xff0c;即return0。…

Leetcode 2788. 按分隔符拆分字符串

我们可以先自己模拟一下分隔字符串的过程。如果只是简单的&#xff0c;遇到分隔符&#xff0c;将分隔符前后的子串加入结果的List&#xff0c;那么很显然并没有考虑到一个String中有多个字符串的情况。一种比较容易想到的方法是&#xff1a; 先对List中每个字符串遍历&#xf…

华为原生 HarmonyOS NEXT 鸿蒙操作系统星河版 发布!不依赖 Linux 内核

华为原生 HarmonyOS NEXT 鸿蒙操作系统星河版 发布&#xff01;不依赖 Linux 内核 发布会上&#xff0c;余承东宣布&#xff0c;HarmonyOS NEXT鸿蒙星河版面向开发者开放申请。 申请链接 鸿蒙星河版将实现原生精致、原生易用、原生流畅、原生安全、原生智能、原生互联6大极致原…

Docker 部署考核

Docker安装 安装必要的系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 添加docker-ce安装源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 配置阿里云Docker Yum源: yum-config-manager --ad…

IDEA的database使用

一、数据据库 在使用database之前&#xff0c;首先你的电脑要安装好了数据库并且启动。 MySQL卸载手册 链接&#xff1a;https://pan.baidu.com/doc/share/AVXW5SG6T76puBOWnPegmw-602323264797863 提取码&#xff1a;hlgf MySQL安装图解 链接&#xff1a;https://pan.baidu.…

Rust - 可变引用和悬垂引用

可变引用 在上一篇文章中&#xff0c;我们提到了借用的概念&#xff0c;将获取引用作为函数参数称为 借用&#xff08;borrowing&#xff09;&#xff0c;通常情况下&#xff0c;我们无法修改借来的变量&#xff0c;但是可以通过可变引用实现修改借来的变量。代码示例如下&…

OpenHarmony 应用开发入门 (二、应用程序包结构理解及Ability的跳转,与Android的对比)

在进行应用开发前&#xff0c;对程序的目录及包结构的理解是有必要的。如果之前有过android开发经验的&#xff0c;会发现OpenHarmony的应用开发也很简单&#xff0c;有很多概念是相似的。下面对比android分析总结下鸿蒙的应用程序包结构&#xff0c;以及鸿蒙对比android的诸多…

Ubuntu系统pycharm以及annaconda的安装配置笔记以及问题集锦(更新中)

Ubuntu 22.04系统pycharm以及annaconda的安装配置笔记以及问题集锦 pycharm安装 安装完之后桌面上并没有生成图标 后面每次启动pycharm都要到它的安装路径下的bin文件夹下&#xff0c; cd Downloads/pycharm-2018.1.4/bin然后使用sh命令启动脚本程序来打开pycharm sh pycha…

[C#]C# winform部署yolov8目标检测的openvino模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【openvino介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是由Intel推出的&#xff0c;用于加速深度学习模型推理的工具套件。它旨在提高计算机视觉和深度学…

移动云助力智慧交通数智化升级

智慧交通是在整个交通运输领域充分利用物联网、空间感知、云计算、移动互联网等新一代信息技术&#xff0c;综合运用交通科学、系统方法、人工智能、知识挖掘等理论与工具&#xff0c;以全面感知、深度融合、主动服务、科学决策为目标&#xff0c;推动交通运输更安全、更高效、…

muduo网络库剖析——事件循环EventLoop类

muduo网络库剖析——事件循环EventLoop类 前情从muduo到my_muduo 概要框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#xff0c;我们需要抽取其…

鸿蒙开发系列教程(四)--ArkTS语言:基础知识

1、ArkTS语言介绍 ArkTS是HarmonyOS应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开…

Mac book air 重新安装系统验证显示 untrusted_cert_title

环境&#xff1a; Mac Book Air macOS Sierra 问题描述&#xff1a; Mac book air 重新安装系统验证显示 untrusted_cert_title 解决方案&#xff1a; 1.终端输入命令行输入 date 会看到一个非常旧的日期 2.更改日期为当前时间 使用以下命令来设置日期和时间&#xff1a…