oj刷题-C语言版

1. A + B

题目

输入两个整数,求这两个整数的和是多少。

输入格式
输入两个整数A,B
,用空格隔开

输出格式
输出一个整数,表示这两个数的和

数据范围
0≤A,B≤108

样例输入:
3 4
样例输出:
7

AC代码C:

#include <stdio.h>
int main()
{int a,b;scanf("%d%d",&a,&b);printf("%d\n",a+b);return 0;
}

2.栈

题目

栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。

栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。

栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。
宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。

宁宁考虑的是这样一个问题:一个操作数序列,从 1,2,一直到 n,栈 的深度大于 n。

现在可以进行两种操作,

将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push
操作)。将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop
操作)。使用这两种操作,由一个操作数序列就可以得到一系列的输出序列。

你的程序将对给定的 n,计算并输出由操作数序列 1,2,…,n经过操作可能得到的输出序列的总数。

输入格式
输入文件只含一个整数 n
。输出格式
输出文件只有一行,即可能输出序列的总数目。数据范围
1≤n≤18
输入样例:
3
输出样例:
5

AC代码C:

3.大小写翻转

AC代码C:

#include<stdio.h> //包含头文件stdio.h#include<string.h> //包含头文件string.hint main() //程序从这里开始执行{char a[100]; //定义一个字符数组a,长度为100int i=0; //定义整型变量i并初始化为0gets(a); //输入字符串,并存储在a数组中while(a[i]!='\0') //循环语句,判断a数组中第i个元素是否为'\0'(即是否到了字符串结尾){if(a[i]>='a'&&a[i]<='z') //如果a数组中第i个元素是小写字母{a[i]=a[i]-32; //将其转换为对应的大写字母}else if(a[i]>='A'&&a[i]<='Z') //如果a数组中第i个元素是大写字母{a[i]=a[i]+32; //将其转换为对应的小写字母}i++; //i自增1}puts(a); //输出转换后的字符串getchar(); //等待用户输入任何字符后结束程序return 0; //程序正常结束
}

4.非素数个数

求 [a,b]
之间的非素数个数。
特别的,1 也算作素数

输入格式
输入包含多组测试数据。

每组数据占一行,包含两个整数 a,b

输出格式
每组数据输出一行答案,表示非素数的个数。

数据范围
1≤a≤b≤107
,
输入最多包含 10组数据。输入样例:
1 10
1 100
输出样例:
5
74

不完全AC代码C:

完全的我不会写,先留着吧,因为我是个lj

#include <stdio.h>// 判断一个数是否为素数,返回值为0或1
int hanshu1(int x)
{for (int i = 2; i * i <= x; i++) // 枚举小于等于sqrt(x)的所有数{if (x % i == 0) return 1; // 如果x能被i整除,说明x不是素数,返回1}return 0; // 否则返回0,表示x是素数
}int main()
{int a, b;while (scanf("%d%d", &a, &b) != EOF) // 读入多组数据,直到读取到文件结尾{int count = 0; // 统计[a,b]中的素数个数for (int i = a; i <= b; i++) // 枚举区间[a,b]中的所有数{if (hanshu1(i)) count++; // 如果i是素数,计数器加1}printf("%d\n", count); // 输出素数个数}return 0;
}

该代码主要使用了两个函数:hanshu1mainhanshu1函数用于判断一个数是否为素数,main函数用于读入多组数据,统计每组数据中区间[a,b]中的素数个数。

hanshu1函数中,使用了一个循环来枚举小于等于sqrt(x)的所有数i,并判断x是否能被i整除。如果x能被i整除,说明x不是素数,返回1;否则返回0,表示x是素数。

main函数中,使用了一个循环来读入多组数据,并对每组数据进行相同的操作。首先定义一个计数器count,用于统计区间[a,b]中的素数个数。然后使用另一个循环来枚举区间[a,b]中的所有数i,如果i是素数,计数器count加1。最后输出计数器count的值,即为区间[a,b]中的素数个数。

5.母牛的故事

题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入格式
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出格式
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

样例输入
2
4
5
0
样例输出
2
4
6

AC代码C:

#include <stdio.h>// 递归函数,计算斐波那契数列的第n项,返回值为整数
int hanshu(int x)
{if (x <= 4) return x; // 当n<=4时,直接返回n的值else // 当n>4时,递归计算前两项的和return hanshu(x - 3) + hanshu(x - 1);
}int main()
{int a;while (scanf("%d", &a)&&a) // 循环读入多组数据printf("%d\n", hanshu(a)); // 对每组数据进行相同的操作,输出斐波那契数列的第n项return 0;
}

该代码定义了一个递归函数hanshu,用于计算斐波那契数列的第n项。在函数中,当n<=4时,直接返回n的值;当n>4时,递归计算前两项的和。

该代码还包括一个循环语句,用于读入多组数据,并对每组数据进行相同的操作。使用scanf函数从标准输入中读入一个整数a,并调用函数hanshu计算斐波那契数列的第a项。最后使用printf函数输出计算结果。

6.用筛法求之N内的素数

AC代码C:

#include<stdio.h>
int main()
{int n;scanf("%d",&n);int i,j;for(i=2;i<=n;i++){for(j=2;j*j<=i;j++)if(i%j==0) break;if(j>sqrt(i)) printf("%d\n",i);}
}

7.C语言训练-计算一个整数N的阶乘

#include<stdio.h>
int main()
{int a,t=1;scanf("%d",&a);for(int i = 1;i<=a;i++)t*=i;printf("%d",t);return 0;
}

i++和++i的区别

1、首先,单独拿出来说,i++和++i的意思是一样的,就是i = i + 1。

2、如果当做运算符来说,就是a = i++ 和 a = ++i这样的形式,情况就不一样了。

a = i++的意思是,先把i的值赋给a,即a = i,再执行i = i + 1;

a = ++i是先执行 i = i+1,再把i的值赋给a;

举个例子来说,如果一开始i=4。

那么执行a=i++这条语句之后,a=4,i=5;

那么执行a=++i这条语句之后,i=5,a=5;

同理,i–和–i的用法也是一样的。

3、另外在循环体中的区别(重要)
①for循环中,for(int i = 0;i < 6;i++)和for(int i = 0;i < 6;++i)效果一样
② while(i++)是先用i的初始化值做循环变量再i+1
而while(++i)是先用i的初始值+1,再循环

8.输人两个正整数m和n,求其最大公约数和最小公倍数

最大公约数和最小公倍数之间的性质:两个自然数的乘积等于这两个自然数的最大公约数和最小公倍数的乘积。

AC代码C:

#include <stdio.h>
int main()
{int p,r,m,n,temp;printf("请输入两个正整数m,n:");scanf("%d%d",&m,&n);if(n<m)
{temp=n;n=m;m=temp;
}
p=n*m;
while(m!=0)
{r=n%m;n=m;m=r;
}
printf("最大公布数:%d\n",n);
printf("最小公倍数:%d\n",p/n);
}

9.输人一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

AC代码C:

这段代码中的 while 循环是一个字符输入循环,其条件为 (cc=getchar())!='\n'

在每次循环中,getchar() 函数用于从输入流中读取一个字符,并将其赋值给变量 cc。然后,条件表达式 (cc=getchar())!='\n' 检查读取的字符是否为换行符(\n)。如果不是换行符,则循环继续执行;如果是换行符,则循环结束。
这样的循环结构可以用来逐个读取用户输入的一行字符,直到遇到换行符为止。每次读取一个字符后,根据字符的类型进行相应的统计操作,如统计英文字母数目、空格数目、数字数目和其他字符数量。

#include<stdio.h>
int main()
{char cc;int a=0,b=0,c=0,d=0;printf("请输入一行字符:");while((cc=getchar())!='\n'){if(cc>='a'&&cc<='z'||cc>='A'&&cc<='Z'){a++;}else if(cc == ' '){b++;}else if(cc>='0'&&c<='9'){c++;}else{d++;}}printf("英文字母数目是:%d\n 空格数目:%d\n 数字数目:%d\n 其他字符数量:%d\n",a,b,c,d);return 0;
}

10.求 S n S_n Sn=a+aa+aaa+…+ a a + ⋯ + a ⏞ n 个 a \overbrace{aa+\dots+a}^{n个a} aa++a na 之值,其中a是一个数字,n表示a的位数,a、n由键盘输入

AC代码C:

可以使用math.h头文件中的pow函数来计算10的i次幂

#include<stdio.h>
#include<math.h>
int main()
{int n;double a,sum,totle_sum;printf("输入a的值以及n的值");scanf("%lf %d",&a,&n);for(int i=0;i<n;i++){sum+=a*pow(10,i);totle_sum+=sum;}printf("总和是:%lf\n",totle_sum);
}

11.求 ∑ n = 1 20 n ! \sum\limits_{n=1}^{20}n! n=120n! (即求1!+2!+3!+4!+…+20!)

在C语言标准中,​double​类型的取值范围通常是-1.7E308到1.7E308之间,而 ​int​类型的取值范围通常是-32768到32767之间(这些范围可能会因为不同的编译器或平台而有所不同)。因此,如果需要处理比较大的数值,使用 ​double​类型可以更好地满足需求。

AC代码C:

#include<stdio.h>
int main()
{double sum=0;for(int i=0;i<=20;i++){double single_sum = 1;for(int j = i;j>0;j--){single_sum*=j;}sum+=single_sum;}printf("阶乘和为:%lf\n",sum);
}

12.求和 ∑ k = 1 100 k \sum\limits{k=1}^{100}k k=1100k + ∑ k = 1 50 k 2 \sum\limits{k=1}^{50}{k}^2 k=150k2+ ∑ k = 1 10 1 k \sum\limits_{k=1}^{10}{\frac{1}{k}} k=110k1

1.0/k表示1.0除以k,其中1.0是一个浮点数常量,而k可以是整数或浮点数。结果将会是一个浮点数,即使k是整数类型。

1/k表示整数除法,其中k必须是整数类型。如果k是整数类型,那么1/k将会进行整数除法运算,结果将会是整数类型。在整数除法中,会将小数部分舍去,只保留整数部分。

AC代码C:

#include<stdio.h>
int main()
{double sum=0,sum1=0,sum2=0,sum3=0;for(int k=1;k<=100;k++){sum1+=k;if(k<=50){sum2+=k*k;}if(k<=10){sum3+=1.0/k;}}sum=sum1+sum2+sum3;printf("三种情况求和结果:%lf\n",sum);
}

13.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

如果操作数都是整数类型,则执行整数除法。整数除法将返回一个整数值,省略小数部分,只保留整数部分。例如,​5 / 2​将返回2,而不是2.5。

如果操作数中至少有一个是浮点数类型,则执行浮点数除法。浮点数除法将返回一个浮点数值,保留小数部分。例如,​5.0 / 2​将返回2.5。

AC代码C:

#include<stdio.h>
int main()
{
int a,b,c;
for(int i=100;i<=999;i++)
{a=i/100;b=(i/10)%10;c=i%10;if(a*a*a+b*b*b+c*c*c==i)
{printf("%d\n",i);
}
}
}

14.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:
6 its factors are 1,2,3

AC代码C:

#include<stdio.h>
int main()
{int a,factor,sum;for(a=2;a<=1000;a++){sum =1;for(factor=2;factor<=a/2;factor++){if(a%factor==0){sum+=factor;}}if(sum==a){printf("%d因子是:1,",a);for(factor=2;factor<=a/2;factor++){if(a%factor==0){printf("%d,",factor);}}printf("\n");}}
}

15.有一个分数序列,求出这个数列的前20项之和。

2 1 \frac{2}{1} 12 3 2 \frac{3}{2} 23 5 3 \frac{5}{3} 35 8 5 \frac{8}{5} 58 13 8 \frac{13}{8} 813 25 13 \frac{25}{13} 1325,…

AC代码C:

#include<stdio.h>
int main(){double a=2,b=1,sum=0;double temp;int count;scanf("%d",&count);for(int i=0;i<count;i++){sum+=a/b;temp=a;a=a+b;b=temp;}printf("前%d项之和:%lf\n",count,sum);}

16.一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。

求它在第10次落地时共经过多少米,第10次反弹多高。
不需要计算第10次的反弹高度,所以减去

AC代码C:

#include<stdio.h>
int main()
{double a=100;double sum=0;for(int i=0;i<10;i++){sum+=a;a=a/2;sum+=a;}sum=sum-a;printf("小球供经历%lf米,第10次反弹%lf米\n",sum,a);return 0;
}

17.猴子吃桃问题。

猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘多少个桃子。
前一天的桃子数量 = (后一天桃子数量+1) * 2

AC代码C:

#include<stdio.h>
int main()
{int day=9;int day_count;int count=1;while(day>0){day_count=(count+1)*2;count = day_count;day--;}printf("total count:%d\n",count);return 0;
}

18.有一个已经排好序的数组,要求输入一个数后,按原来顺序的规律将它插入数组中

AC代码C:

#include<stdio.h>
int main()
{int num;int shuzu[10]={1,2,3,4,5,6,7,8,9,10};printf("请输入一个整数:");scanf("%d",&num);printf("%d\n",num);
int end=9;
while(end>=0&&num<shuzu[end])
{shuzu[end+1]=shuzu[end];end--;
}
shuzu[end+1]=num;
for(int i=0;i<11;i++)
{printf("%d\n",shuzu[i]);
}
printf("\n");
}

19.

AC代码C:

20.

AC代码C:

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

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

相关文章

API是什么?解密API背后的奥秘

API&#xff0c;全称Application Programming Interface&#xff0c;是一种用于不同应用程序间通信的接口&#xff0c;它允许不同的应用程序之间交换数据和功能。API可以理解为应用程序提供给其他应用程序或开发者的接口&#xff0c;通过这个接口&#xff0c;其他应用程序或开发…

2023年CCF非专业级别软件能力认证第二轮 (CSP-J)入门级C++语言试题

2023年CCF非专业级别软件能力认证第二轮 &#xff08;CSP-J&#xff09;入门级C语言试题 编程题第 1 题 问答题 小苹果&#xff08;apple&#xff09; 题目描述 小Y的桌子上放着n个苹果从左到右排成一列&#xff0c;编号为从1到n。 小苞是小Y的好朋友&#xff0c;每天她都会…

PostgreSQL 技术内幕(十一)位图扫描

扫描算子在上层计算和底层存储之间&#xff0c;向下扫描底层存储的数据&#xff0c;向上作为计算的输入源&#xff0c;在SQL的执行层中&#xff0c;起着关键的作用。顺序、索引、位图等不同类型的扫描算子适配不同的数据分布场景。然而&#xff0c;扫描算子背后的实现原理是怎样…

flink测试map转换函数和process函数

背景 在flink中&#xff0c;我们需要对我们写的map转换函数&#xff0c;process处理函数进行单元测试&#xff0c;测试的内容包括查看函数的输出结果是否符合以及函数内的状态是否正确更新&#xff0c;本文就记录几个测试过程中的要点 flink中测试函数 首先我们根据我们要测…

RSA加密的使用(前后端)

公钥&#xff08;publicKey&#xff09;加密、私钥&#xff08;privateKey&#xff09;解密。不能逆向&#xff0c;私钥&#xff08;privateKey&#xff09;加密、公钥&#xff08;publicKey&#xff09;解密。说白了就是前后端都需要用公钥&#xff08;publicKey&#xff09;进…

【JavaEESpring】认识Spring

认识Spring 1. 什么是框架2. SpringBoot 介绍2.1 Spring 的介绍2.2 SpringBoot 1. 什么是框架 框架(Framework) &#xff0c;意思是框架、机制、准则。通俗的来讲: 框架是实现某种功能的半成品, 他提供了⼀些常⽤的⼯具类, 我们在框架的基础上, 可以更加⾼效的进⾏开发 后端框…

Redis6的IO多线程分析

性能测试 机器配置 C Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 14 On-line CPU(s) list: 0-13 Mem: 62G性能 配置推荐 官方表示&#xff0c;当使用redis时有性能瓶…

vue3接口、数据懒加载,回滚不重复加载

目标&#xff1a;实现当组件进入可视区域在加载数据或者发送请求。 背景&#xff1a;父组件为vxe-table构成的组件、子组件为table的某一列&#xff0c;这一列的数据通过接口返回&#xff0c;有多少条表格数据就会请求多少次接口&#xff0c;为了提升性能&#xff0c;所以采用…

《开箱元宇宙》:认识香港麦当劳通过 The Sandbox McNuggets Land 的 Web3 成功经验

McNuggets Land 是 The Sandbox 于 2023 年发布的最受欢迎的体验之一。在本期的《开箱元宇宙》系列中&#xff0c;我们采访了香港麦当劳数位顾客体验暨合作伙伴资深总监 Kai Tsang&#xff0c;来了解这一成功案例背后的策略。 在不断发展的市场营销和品牌推广领域&#xff0c;不…

Visual Studio 2022 + OpenCV 4.5.2 安装与配置教程

目录 OpenCV的下载与配置Visual Studio 2022的配置新建工程新建文件新建项目属性表环境配置测试先写一个输出将OpenCV的动态链接库添加到项目的 x64 | Debug下测试配置效果 Other OpenCV的下载与配置 参考这个OpenCV的下载与环境变量的配置&#xff1a; Windows10CLionOpenCV4…

网络原理---拿捏HTTP协议:请求和响应

文章目录 认识请求首行URLURL的格式URL的encode和decode 版本号方法GET方法POST方法GET VS POST 请求头&#xff1a;headerHostContent-Length 和 Content-TypeUser-Agent&#xff08;UA&#xff09;RefererCookie 空行正文&#xff1a;body如何构造HTTP请求&#xff1f;浏览器…

ARMday04(开发版简介、LED点灯)

开发版简介 开发板为stm32MP157AAA,附加一个拓展版 硬件相关基础知识 PCB PCB&#xff08; Printed Circuit Board&#xff09;&#xff0c;中文名称为印制电路板&#xff0c;又称印刷线路板&#xff0c;是重要的电子部件&#xff0c;是电子元器件的支撑体&#xff0c;是电子…

Linux生成随机密码和根据密码批量生成用户

cat /dev/urandom|tr -dc [:alnum:]|head -c20 生成20位数字字母的随机密码。 /dev/urandom生成随机数&#xff0c;tr -dc [:alnum:] 保留所有数字和字母&#xff0c;head -c20保留前20位。 使用原生的Linux命令生成可以说是极度安全的&#xff0c;也适用于批量用户生成的情况…

Django中如何让DRF的接口针对前后台返回不同的字段

在Django中&#xff0c;使用Django Rest Framework&#xff08;DRF&#xff09;时&#xff0c;可以通过序列化器&#xff08;Serializer&#xff09;和视图&#xff08;View&#xff09;的组合来实现前后台返回不同的字段。这通常是因为前后台对数据的需求不同&#xff0c;或者…

AlphaControls控件TsRadioGroup的使用

通常使用AlphaControls控件中的TsRadioGroup时&#xff0c;往往使用默认值&#xff0c;会造成TsRadioGroup标题被TsRadioGroup的ITEMs占用&#xff0c;严重影响美观&#xff1a; 解决方案&#xff0c;通过对TsRadioGroup的ContentVOffset属性&#xff0c;设置为10。即可立即改善…

处理uniapp打包后有广告的问题

1、登录平台&#xff08;开发者中心&#xff09; 2、 3、 4、 5、

3线硬件SPI+DMA驱动 HX8347 TFT屏-快速显示文字

本文实现DMA快速显示文字 汉字点阵通常是16*16点阵&#xff0c;那么用DMA一次性显示汉字&#xff0c;应该至少申请480*16个字节的空间&#xff0c;用于显示一行文字&#xff0c;其中480是屏幕一行用DMA驱动所需内存。 一、 源码 HX8347.h #ifndef USER_HX8347_H_ #define USE…

回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测

回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测 目录 回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现PCA-PLS主成分降维结合偏小二乘回归预测&#xff08;完整源码和数据) 1.输…

2023年9月少儿编程 中国电子学会图形化编程等级考试Scratch编程二级真题解析(选择题)

2023年9月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、点击绿旗,运行程序后,舞台上的图形是 A、画笔粗细为4的三角形 B、画笔粗细为5的六边形 C、画笔粗细为4的六角形 D、画笔粗细为5的三角形 答案:D 考点分析:考查积木综合使用,重点考查画笔…

伪造referer [极客大挑战 2019]Http1

打开题目 没有发现什么&#xff0c;我们查看源代码 在这里我们发现了提示 访问一下页面得到 提示说不能来自于https://Sycsecret.buuoj.cn&#xff0c;我们尝试访问一下这个url 发现访问不了 我们bp抓包一下 伪造个referer头 referer:https://Sycsecret.buuoj.cn 发包过去…