- 博客(0)
- 资源 (46)
- 收藏
- 关注
C++信息学竞赛课程 循环部分26道练习题
C++信息学竞赛课程 循环部分26道练习题
1.求100内能被5整除的所有整数之和
2.求100内能同时被5和3整除的所有整数之和
3.求100内能所有偶数之和
4.求100内能所有奇数之和
5:求100以内个位数字包含3的所有数字之和
6:100以内所有数中,要求某个数的各个位上数字之和为6,求所足条件的所有数字之和
7:输入一个数,判断是否为质数,若是,则输出OK,否则输出NO。
2023-10-28
NOI 2023基础知识题库
NOI 2023基础知识题库
树是没有环的图,图不一定是树。
树是图的子集。 树有一个根节点,图没有。 树有层次划分,图没有。 树可以递归遍历,图不一定。 树是一种“层次”关系,图是“网络”关系。 在图中结点之间的关系是任意的,任何两个结点都可能相关。
树,和图一样也是一系列点的集合。有一个根节点。这个根节点有一些子节点。子节点也有它们自己的孙子节点。不断重复直到所有的数据都被用树的数据结构表示。图从数学领域进化而来,主要被用来描述一个从一个位置到另一个位置的路线的模型。一个图包含一系列的点和一系列的边。边用来把点连接起来。路线是用来描述共用一条边的点的轨迹的术语。
2023-08-11
C++关于信息学竞赛 函数章节 53个源文件试题 供初学者练习
C++关于信息学竞赛 函数章节 53个源文件试题 供初学者练习
详细讲解了有关函数章节的对应练习题
#include <iostream>
using namespace std;
void fun(int n,int r)//由十进制数n,转换成对应的r进制 (100,8)
{
char ch[6]={'A','B','C','D','E','F'};
int a[200],k=0;
while(n)
{
a[k++]=n%r;
n/=r;
}
for(int i=k-1;i>=0;i--)
if(a[i]<10) cout<<a[i];
else cout<<ch[a[i]-10];
}
main()
{
//进制的转化 十进制转换为非十进制 非十进制 转换 成 十进制
int n,r;
cin>>n>>r;
fun(n,r); //11
}
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
using namespa
2022-06-06
C++关于信息学竞赛 二维数组23个源文件试题 供初学者练习
C++关于信息学竞赛 二维数组23个源文件试题 供初学者练习
#include <iostream>
using namespace std;
main()
{
int a[6][6],max,max_y,min,min_x;
for(int i=1;i<6;i++)
for(int j=1;j<6;j++)
cin>>a[i][j];
for(int i=1;i<6;i++)
{
max=a[i][1];max_y=1;
for(int j=2;j<6;j++)
if(a[i][j]>max) {max=a[i][j];max_y=j; } //本行最大值存入max 本行中最大值所在的列下标 存入max_y
min=a[1][max_y];min_x=1;
for(int j=2;j<6;j++)
if(a[j][max_y]<min) {min=a[j][max_y];min_x=j;}
if(max==min)
{
cout<<min_x<<" "<<max_y<<" "<<min;
2022-06-06
有关约瑟夫环(持有密码版和经典版)C++信息学竞赛13个文件
约瑟夫环(持有密码版和经典版)
实验内容
约瑟夫环问题的一种描述是:编号为 1,2,…,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人开始按顺时针方向自 1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方向上的下一个人开始重新从 1 报数,如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序
实验要求
基本要求一:利用单向循环链表模拟此过程,按照出列的顺序印出各人的编号。程序运行后,首先要求用户指定初始报数上限值,然后读取各人的密码。可设n<=30。此题所用的循环链表中不需要头结点,注意空表和非空表的界限。
基本要求二:用顺序表实现该问题。
实现提示
假设 i 为当前数组下标,n 为元素个数,用取模运算%可以实i+1==n 时,i 重新回到下标 0 。即(i+1)%n。
顺序表中的元素存放二个成员,密码和出列标识。也就是说,出列时并不真正删除元素,否则每次需大量移位。只需做出列标识即可。报数统计时跳过已做出列标识的人。第几个人直接和数组下标相对应
测试数据
2022-06-06
关于C++信息学竞赛一维数组及其应用52个源文件及试题
例: 对班中编号为0到9的10名学生,分别输入数学科目的成绩,然后对低于平均分的学生,输出其对应的编号和数学成绩。
例5.1 输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。
例5.2 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。
例5.3 一维数组输入n个数,计算所有元素的和,求出最大的元素和最小的元素
1 利用for循环,计算输出1+2+…+100的和
2 输出1—100之间所有偶数。
3 输出1—100之间所有奇数。
4 分别计算1--100之间所有的偶数和、奇数和,并输出
5 计算1—1000之间能同时被3和5整除的整数的和。
例5.2 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。
运行结果 :
read 10 datas:
• 1 2 3 4 5 6 7 8 9 10
Result:
• 2 3 4 5 6 7 8 9 10 1
例5.3 宾馆里有一百个房间,从1-100编了号。第一个服务员把所有的房间
2022-06-06
C++ 信息学竞赛 校门外的树
#include <iostream>
using namespace std;
main()
{
int k[10001]={0},a,b,L,M,s=0;
//数组a用于存放每棵树,0表示没有移走,1表示移走
cin>>L>>M;
for(int i=1;i<=M;i++)
{
cin>>a>>b;
for(int i=a;i<=b;i++) k[i]=1;//标注本区间内的树移走
}
for(int i=1;i<=L;i++)
if(k[i]==1) s++;
cout<<L+1-s;
}
/*
500 3
150 300
100 200
470 471
298
*/
2022-06-06
数据结构:图解链表,用链表实现栈的Pop和Push(c语言版)
数据结构:图解链表,用链表实现栈的Pop和Push(c语言版)
出栈以及入栈我们只要可虑栈顶就可以,所以我们就只考虑对栈顶就行插入和删除就可以,上代码
void Pop(SqStack* s,Elemtype data)
{
assert(s);
if (s->head == NULL)
{
s->head = calloc(1, sizeof(LNode));
assert(s->head);
s->head->data = data;
s->len++;
return;
}
else {
LNode* node = calloc(1, sizeof(LNode));
node->data = data;
node->next = s->head;
s->head = node;
}
}
这里我们定义的SqStack,该结构体中 head始终指向栈顶,这样我们插入结点是只要将其他结点赋值给新节点的next,在将新结点赋值head即可实现Pop
出栈
2022-06-06
数据结构:图解链表,用链表实现栈(c语言版)
数据结构:图解链表,用链表实现栈(c语言版)
栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈低(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除,所以栈又被称为后进先出的线性表(简称LIFO:Last in, First out.结构)。
用链表实现栈,仅仅限定在头指针和尾指针,可以将头指针作为栈低,尾指针作为栈顶,所以对栈的操作也就限定在尾指针。
SqStack* InitStack() //初始栈
void Pop(SqStack* s,Elemtype data)//入栈
Elemtype Push(SqStack* s)//出栈
void Destory(SqStack* s)//销毁栈
以下述类型说明作为顺序栈的定义:
这里可以给栈定义一系列基本操作:
typedef int Elemtype;
typedef struct LNode{
struct LNode* next;
Elemtype data;
}LNode;
typedef struct SqStack{
LN
2022-06-06
数据结构:图解链表,链表的插入和删除(c语言版)
数据结构:图解链表,链表的插入和删除(c语言版)
我们上节讲解了链表的建立,本节讲解的是在链表中指定位置中插入一个结点,以及在指定位置中删除一个结点
指定位置插入一个结点
这里我们在第3个结点后插入一个结点,可以将新结点赋值给第三个结点的next,将原来的第4个结点赋值给新界点的next,这里新结点就成立第4个结点了,上代码
void List_IndexInsert(LNode** root, ElemType data, int index)
{
LNode* node = *root;
if (node == NULL)
{
return;
}
if (index == 1)
{
LNode* item = calloc(1, sizeof(LNode));
assert(item);
item->data = data;
item->next =node;
2022-06-06
中缀表达式转后缀.cpp
#include <iostream>
#include <malloc.h>
using namespace std;
struct Stack{
char *Data;
int top;
int MaxSize;
};
Stack * Creat(int Size)
{
Stack * s=(Stack *)malloc(sizeof(Stack));
s->Data=(char *) malloc(sizeof(char)*Size);
s->top=-1;
s->MaxSize=Size;
}
2022-06-06
C语言——将中缀表达式转化为后缀表达式
按顺序扫描中序表达式
(1)若扫描到数字,加入到后缀表达式中
(2)若扫描到运算符
a. 若为 ‘(’,入栈;
b. 若为 ‘)’,则依次把栈中的的运算符加入后缀表达式中,直到出现’(’,从栈中删除’(’ ;
c. 若为 除括号外的其他运算符, 当其优先级高于除’(‘以外的栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到遇到一个比它优先级低的或者遇到了一个’('为止,然后将其自身压入栈中(先出后入)。
2022-06-06
信息学奥赛C++第一章:C++语言入门
编写一个能够输出“Hello,World!”的程序,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常工作。
2020-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人