考研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每次置为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.hqwc.cn/news/417625.html

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

相关文章

【设计模式-06】Observer观察者模式

简要说明 事件处理模型 场景示例&#xff1a;小朋友睡醒了哭&#xff0c;饿&#xff01; 一、v1版本(披着面向对象的外衣的面向过程) /*** description: 观察者模式-v1版本(披着面向对象的外衣的面向过程)* author: flygo* time: 2022/7/18 16:57*/ public class ObserverMain…

thinkadmin表单上传单图,多图,单文件,多文件

{extend name="../../admin/view/main"}{block name=content} <form action="{:sysuri()}" class="layui-card layui-form" data-auto="tr

安装pycharm

1.浏览器打开链接 PyCharm: the Python IDE for Professional Developers by JetBrains 2.开始下载 3.下载windows版本的软件 4.双击运行软件&#xff0c;点击下一步 5.安装路径默认不进行修改 6.选项全部勾选&#xff0c;点击下一步 7.开始安装 8.选择稍后重启 9.桌面生成图标…

三国游戏(寒假每日一题+贪心、枚举)

题目 小蓝正在玩一款游戏。 游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X,Y,Z&#xff08;一开始可以认为都为 0&#xff09;。 游戏有 n 个可能会发生的事件&#xff0c;每个事件之间相互独立且最多只会发生一次&#xff0c;当第 i个事件发生时会分别让 X,Y,Z 增加 Ai,Bi…

elasticsearch6.6.0设置访问密码

elasticsearch6.6.0设置访问密码 第一步 x-pack-core-6.6.0.jar第二步 elasticsearch.yml第三步 设置密码 第一步 x-pack-core-6.6.0.jar 首先破解 x-pack-core-6.6.0.jar 破解的方式大家可以参考 https://codeantenna.com/a/YDks83ZHjd 中<5.破解x-pack> 这部分 , 也可…

AutoRuns下载安装使用教程(图文教程)超详细

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 AutoRuns 是微软提供的一款「启动项管理」工具&#xff0c;可以检查开机自动加载的所有程…

Spring Cloud 微服务中 gateway 网关如何设置健康检测端点

主要是为了让 k8s 识别到网关项目已经就绪&#xff0c;但是又不想在里面通过 Controller 实现。因为在 Controller 中这样做并不是最佳实践&#xff0c;因为 Gateway 的设计初衷是专注于路由和过滤&#xff0c;而不是业务逻辑的处理。 在 Gateway 中配置健康检查端点可以通过以…

【数据结构和算法】奇偶链表

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;分离节点后合并 三、代码 3.1 方法一&#xff1a;分离节点后合并 四、复杂度分…

x-cmd pkg | fanyi - 命令行中英文翻译工具

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 fanyi 是命令行翻译工具&#xff0c;翻译数据来源于 icba.com 和 fanyi.youdao.com&#xff0c;仅支持中英文互译。支持 ChatGPT&#xff0c;可通过设置 OpenAI API 密钥以启用 ChatGPT 翻译。 注意&#xff1a;在 L…

软件测试——黑盒测试

1.测试概述 1.1综述 本测试报告为计算机程序能力在线测评系统的黑盒测试&#xff0c;黑盒测试可以在不知道程序内部结构和代码的情况下进行&#xff0c;用来测试软件功能是否符合用户需求&#xff0c;是否达到用户预期目标&#xff0c;是否拥有较好的人机交互体验。 图1.1 黑…

C语言从入门到实战——文件操作

文件操作 前言一、 为什么使用文件二、 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 三、 二进制文件和文本文件四、 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭4.4 文件的路径 五、 文件的顺序读写5.1 顺序读写函数介绍fgetcfp…

zoj 3494 BCD Code 数位DP + AC自动机

BCD Code 题意 将十进制数的每一位数位转化成一个 4 4 4 位的二进制数&#xff0c;并给定一些 禁止码&#xff0c;规定符合条件的数字的二进制表示中不能包含连续的某个禁止码。问 [ l , r ] [l,r] [l,r] 中有多少个符合条件的数字 思路 朴素的数位 D P DP DP 只涉及少量…