首页 > 其他分享 >郑州轻工业大学ZZULIOJ1111~1123合集

郑州轻工业大学ZZULIOJ1111~1123合集

时间:2024-07-25 19:27:14浏览次数:8  
标签:输出 int 样例 scanf 1123 ZZULIOJ1111 数组 合集 输入

郑州轻工业大学zzulioj1111~1123合集

本人小趴菜一颗,写博客是为了监督自己的学习以及分享学习资源给需要的人,欢迎大家评论区指出问题。同时由于本人比较懒,注释就不再写了,当然一些自己经常犯迷糊的地方还是会标注的,大家有什么问题也可以指出来,大家一起学习进步。

郑州轻工业大学zzulioj1111~1123合集


1111多个整数的逆序输出(函数专题)

题目描述
输入n和n个整数,以与输入顺序相反的顺序输出这n个整数。要求不使用数组,而使用递归函数实现。
递归函数实现过程如下:
void inverse(int n)
{
读入一个整数,存入num;
if(n >1)
{
将后面的n-1个数逆序输出: inverse(n-1);
输出num;
}
if( n == 1) 直接输出num;
}
输入
输入有n + 1行,第一行是一个正整数n,接下来n行有n个整数。
输出
输出n个整数,顺序与输入顺序相反,每个整数后有一个空格。
样例输入 Copy
5
11
22
33
44
55
样例输出 Copy
55 44 33 22 11
代码如下(示例):

#include<stdio.h>
void inverse(int n)
{  int num;
    scanf("%d",&num);
    if(n >1)
    {
        inverse(n-1);
        printf("%d ",num);
    }
    if( n == 1)
    {
        printf("%d ",num);
    }
}
}//用到了递归函数,这个比较考验逻辑能力,自己要多想一想,搞清楚每次n这个变量值的被谁取代,搞清楚每一层之间的关系,虽然这个题在之后的数组中十分简单但是大家可以在这类题上锻炼逻辑能力,我就经常迷糊【苦笑】
int main()
{
    int n;
    scanf("%d",&n);
    inverse(n);
    return 0;
}

1112进制转换(函数专题)经典题

题目描述
输入一个十进制整数n,输出对应的二进制整数。常用的转换方法为“除2取余,倒序排列”。将一个十进制数除以2,得到余数和商,将得到的商再除以2,依次类推,直到商等于0为止,倒取除得的余数,即为所求的二进制数。例如,把52换算成二进制数的计算过程如下图:
在这里插入图片描述
52除以2得到的余数依次为0,0,1,0,1,1,倒序排列,得到52对应的二进制数110100。
用递归的思想来描述上述计算过程是这样的:输出n/2对应的二进制数,然后输入%2。递归函数的实现过程如下:
void convert(int n)
{
if(n > 0)
{
调用自身,输出n/2对应的二进制数;
输出n%2;
}
}
试试吧!
输入
输入一个正整数n。
输出
输出n对应的二进制数。
样例输入 Copy
52
样例输出 Copy
110100
代码如下(示例):

#include<stdio.h>
void convert(int n)
{ 	
	int m;
	if(n > 0)
   	{
   		m=n%2;//这一步很关键
      	convert(n/2);//依次递归下去直到新的n是1结束这个递归,进行下一步的输出,比较像是套娃,一层层套进去之后输出是从最里面一层开始逐层输出
    printf("%d",m);
	}
}
int main()
{
	int n;
	scanf("%d",&n);
	convert(n);
}//这类题要尝试自己写出来,因为正式考试中是没有题目中的提示的,顶多给你一个函数名,让你引用

1113递归调用的次数统计(函数专题)

题目描述
如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。
#include<stdio.h>
int fib(int k);

int main()
{
int n;
scanf(“%d”, &n);
printf(“%d\n”, fib(n));
return 0;
}

int fib(int k)
{
if(k == 1 || k == 2)
return 1;
else
return fib(k-1) + fib(k-2);
}
输入
输入一个正整数n。
输出
输出包含两行,第一行是一个整数,表示第n项的值;第二行输出递归调用了多少次,具体格式见输出样例。
样例输入 Copy
20
样例输出 Copy
6765
递归调用了13529次
代码如下(示例):

#include<stdio.h>
int m=0;
int b(int m);
int fib(int k)
{
	m++;
    if(k == 1 || k == 2)
        return 1;
    else
        return fib(k-1) + fib(k-2);//递归套娃哟
    return m;
}
int b(int n)
{
	printf("%d\n", fib(n));  
    printf("递归调用了%d次",m);
}
int main(void)
{
    int m,n;
    scanf("%d", &n);
	b(n);
}

1114逆序(数组)

题目描述
输入n(1<=n<=10)和n个整数,逆序输出这n个整数。
输入
输入n(1<=n<=10),然后输入n个整数。
输出
逆序输出这n个整数,每个整数占4列,右对齐。
样例输入 Copy
6
4 5 6 1 2 3
样例输出 Copy
3 2 1 6 5 4
代码如下(示例):

#include <stdio.h>
//定义宏常量N为10
#define N 10

int main()
{
    int i, n;
    //定义长度为10的整型数组
    int a[N];
    //输入n
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    	//输入n个整数
        scanf("%d", &a[i]);
    for(i = n - 1; i >= 0; i--)
    	//逆序输出n个整数
        printf("%4d", a[i]);
    return 0;
}

1115数组最小值

题目描述
数组a有n个元素,请输出n个元素的最小值及其下标。若最小值有多个,请输出下标最小的一个。注意,有效下标从0开始。
输入
输入分两行,第一行是一个正整数n(n<=1000),第二行是n个整数。
输出
输出占一行。输出数组的最小值及其下标,用空格隔开。
样例输入 Copy
5
8 4 5 1 2
样例输出 Copy
1 3
代码如下(示例):

#include<stdio.h>
# define N 1000
int main()
{
   int i,n,m,j=0;
   int a[N];
   scanf("%d",&n);
   for(i=0;i<n;i++)
   {
       scanf("%d",&a[i]);
   }
   m=a[0];
   for(i=1;i<n;i++)
   {
       if(m>a[i])
       {
           m=a[i];
           j=i;
       }
   }
   printf("%d %d",m,j);
   return 0;
}

1116删除元素(经典题)

题目描述
输入一个递增有序的整型数组A有n个元素,删除下标为i的元素,使其仍保持连续有序。注意,有效下标从0开始。 定义如下两个函数分别实现删除元素操作和数组输出操作。
void del(int a[], int n, int i); /删除数组a中下标为i的元素/
void PrintArr(int a[], int n); /输出数组a的前n个元素/
输入
输入分三行,第一行是一个整数n(n<10),第二行是n个整数,第三行是要删除元素的下标i,i>=0。
输出
输出删除下标为i的元素后的数组元素,数据之间用空格隔开。
样例输入 Copy
6
1 3 5 7 9 11
3
样例输出 Copy
1 3 5 9 11
代码如下(示例):

#include<stdio.h>
#define N 1000
void del(int a[], int n, int i)
{
    int j;
    for(j=i;j<n-1;j++)
    {
        a[j]=a[j+1];
    }
}
void PrintArr(int a[], int n)
{
    int j;
    for(j=0;j<n-1;j++)
    {
        printf("%d ",a[j]);
    }
}
int main()
{
    int n,a[N],i,j;
    scanf("%d",&n);
    for(j=0;j<n;j++)
    {
        scanf("%d",&a[j]);
    }
    scanf("%d",&i);
    del(a,n,i);
    PrintArr(a,n);
    return 0;
}

1117查找数组元素(经典题)*

题目描述
输入n个整数构成一个数组,在这个数组中查找x是否存在,如果存在,删除x,并输出删除元素后的数组。如果不存在,输出“Not Found”。
定义一个查找函数find(),在数组a中查找x,若找不到函数返回-1,若找到返回x的下标,函数原型如下:
int find(int a[], int n, int x);
然后在main()中,先调用函数find(),若查找失败输出“Not Found";若查找成功,则调用上一题中定义的函数del()删除该元素,再调用上一题中的PrintArr()输出删除元素后的数组内容。
输入
输入第一行是一个正整数n(1<=n<=10);
第二行是n个整数,构成一个数组;
第三行是一个整数x,表示待查找元素。
输出
输出删除元素后的数组,每个元素占4列,右对齐。如果不存在,输出“Not Found”。如果数组中有多个x,只删除下标最小的那个。
样例输入 Copy
6
3 6 2 4 7 9
4
样例输出 Copy
3 6 2 7 9
代码如下(示例):

#include<stdio.h>
int find(int a[],int n,int x)
{
    int i,m=-1;
    for(i=0;i<n;i++)
    {
        if(x==a[i])
        {
            m=i;
        }
    }
    return m;
}
void del(int a[],int n,int i)
{
    int j;
    for(j=i;j<n-1;j++)
    {
        a[j]=a[j+1];
    }
}
void PrintArr(int a[],int n)
{
    int i;
    for(i=0;i<n-1;i++)
    {
        printf("%4d",a[i]);
    }
}
int main()
{
    int n,x,i,j,a[10];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    j=find(a,n,x);
    if(j==-1)
    {
        printf("Not Found");
    }
    else
    {
        del(a,n,j);
        PrintArr(a,n);
    }return 0;
}

1118数列有序(经典题)

题目描述
一个非递减有序的整型数组有n个元素,给定一个整数num,将num插入该序列的适当位置,使序列仍保持非递减有序。
要求定义一个函数insert(),将整数num插入在数组a的适当位置上,函数原型如下:
void insert(int a[], int n, int num);
另外函数仍然调用以前定义过的函数PrintArr()输出数组所有元素。
输入
输入有三行。第一行是一个正整数n,n<=1000。第二行是n个整数,第三行是待插入整数num。
输出
输出非递减有序的n+1个整数,数据之间用空格隔开。输出占一行。
样例输入 Copy
5
1 2 4 5 6
3
样例输出 Copy
1 2 3 4 5 6
提示
元素之间有空格,最后一个元素后面没有空格。序

代码如下(示例):

#include<stdio.h>
void insert(int a[],int n,int num)
{
    int i;
    for(i=n-1;i>=0;i--)
    {
        if(a[i]>num)
        {
            a[i+1]=a[i];
        }
        else{break;}
    }
    a[i+1]=num;
}
void PrintArr(int a[],int n)
{
    int i;
    for(i=0;i<=n;i++)
    {
        printf("%d ",a[i]);
    }
}
int main()
{
    int i,num,n,a[1001];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&num);
    insert(a,n,num);
    PrintArr(a,n);
    return 0;
}

1119一维数组排序

题目描述
对一维数组按照从小到大的顺序排序。程序定义函数sort()来实现数组a的排序。函数原型如下:
void sort(int a[], int n);
数组元素的输出调用PrintArr()。
输入
第一行输入一个整数n(1<=n<=10),表示数组有n个整数;第二行输入n个整数。
输出
输出占一行。对这n个整数数按照从小到大的顺序输出,数据之间用一个空格隔开。
样例输入 Copy
6
6 5 1 2 3 4
样例输出 Copy
1 2 3 4 5 6
代码如下(示例):

#include<stdio.h>
void sort(int a[], int n)
{
    int i,j,t;
    for(i=0; i<n; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(a[i]>a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;

            }
        }
    }
}
void PrintArr(int a[],int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }
}
int main()
{
    int a[1000],j,n;
    scanf("%d",&n);
    for(j=0; j<n; j++)
    {
        scanf("%d",&a[j]);
    }
    sort(a,n);
    PrintArr(a,n);
    return 0;
}

1120最值交换

题目描述
有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。
int MinIndex(int a[], int n); //函数返回数组a中最小元素的下标
int MaxIndex(int a[], int n); //函数返回数组a中最大元素的下标
数组元素的输出调用函数PrintArr()。
输入
输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列,保证没有重复元素。
输出
输出转换好的序列。数据之间用空格隔开。
样例输入 Copy
5
5 4 1 2 3

样例输出 Copy
1 4 3 2 5
代码如下(示例):

#include<stdio.h>
int MinIndex(int a[], int n)
{
    int i,min=0;
    for(i=1;i<n;i++)
    {
        if(a[min]>a[i])
        {
            min=i;
        }
    }
    return min;
}
int MaxIndex(int a[], int n)
{
    int i,max=0;
    for(i=1;i<n;i++)
    {
        if(a[max]<a[i])
        {
            max=i;
        }
    }return max;
}
void PrintArr(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
}
int main()
{
    int n,i,b,c,t,a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    b=MinIndex(a,n);
    t=a[0];
    a[0]=a[b];
    a[b]=t;
    c=MaxIndex(a,n);
    t=a[n-1];
    a[n-1]=a[c];
    a[c]=t;
    PrintArr(a,n);

    return 0;
}

1121电梯

题目描述
在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
输入
输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
输出
输出电梯完成该任务序列所需的时间,单独占一行。
样例输入 Copy
3
2 3 1

样例输出 Copy
41
代码如下(示例):

#include<stdio.h>
int main()
{
    int n,i,a[1000],t=0;
    scanf("%d",&n);
    a[0]=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        if(a[i]<a[i+1])
        {
            t=t+(a[i+1]-a[i])*6+5;
        }
       else if(a[i]>a[i+1])
        {
            t=t+(a[i]-a[i+1])*4+5;
        }
        else
        {
            t+=5;
        }
    }
    printf("%d",t);
    return 0;
}

1122小明的调查作业

题目描述
小明的老师布置了一份调查作业,小明想在学校中随机找N个同学一起做一项问卷调查,聪明的小明为了实验的客观性,他先随机写下了N个1到1000之间的整数(0<N≤1000),不同的数对应着不同的学生的学号。但他写下的数字难免会有重复数字,小明希望能把其余重复的数去掉,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入
输入有2行,第1行为1个正整数,表示整数的个数:N.
第2行有N个用空格隔开的正整数,表示小明写下的N个整数。
输出
输出也是2行,第1行为1个正整数M,表示不相同的整数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的整数。
样例输入 Copy
10
20 40 32 67 40 20 89 300 400 15
样例输出 Copy
8
15 20 32 40 67 89 300 400
代码如下(示例):

#include<stdio.h>
int main()
{
    int n,i,j,a[1000],m,t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    m=n;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }//从小到大排序
    for(i=0;i<n-1;i++)
    {
        if(a[i]==a[i+1])
        {
            a[i]=0;//这个和后面的输出有关要注意本题条件已经说明0不是数组中的输入整数
            m-=1;
        }
    }//去重加统计去重之后的数量
    printf("%d",m);//输出去重后的数组数量
    printf("\n");//换行
    for(i=0;i<n;i++)
    {
        if(a[i]==0)
            continue;
        else
            printf("%d ",a[i]);
    }//输出排序去重后的数组
    return 0;
}

1123最佳校友

题目描述
北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。
输入
输入若干个整数,表示签到簿上的校友编号,所有编号均为0~99的整数,以一个负数作为输入结束的标志。
输出
输出出现次数最多的编号。若获奖选手有多个,则按从小到大的顺序输出选手编号,用空格隔开。
样例输入 Copy
4 5 3 1 3 4 2 7 -1
样例输出 Copy
3 4
代码如下(示例):

#include<stdio.h>
int main()
{
    int a[100]={0};
    int i,j=0,num;
    int max;
    while(scanf("%d",&num),num>=0)
    {
        a[num]++;//记录a【】数组中num出现几次
    }
    max=a[0];//把0出现的次数赋给max
    for(i=1;i<100;i++)
    {
        if(a[i]>max)
        {
            max=a[i];
        }
    }//把数组中出现的最多次数赋值给num
    for(i=0;i<100;i++)
    {
        if(a[i]==max&&j==0)
        {
            printf("%d",i);
            j=1;
        }
        else if(max==a[i]&&j!=0)
        {
            printf(" %d",i);
        }
        else
            continue;
    }
    return 0;
}

标签:输出,int,样例,scanf,1123,ZZULIOJ1111,数组,合集,输入
From: https://blog.csdn.net/2301_80341258/article/details/140572786

相关文章

  • CTFHub-SSRF解析合集
    内网访问直接使用http://访问内网获取flag数据伪协议读取文件使用file://绝对路径读取flag.php数据,需要查看网页源代码使用file://绝对路径读取flag.php数据,需要查看网页源代码端口扫描1.打开靶场后访问随机一个端口,抓包2.将抓到的包发送到攻击......
  • 智慧油气合集 | 图扑数字孪生实现全生命周期管理
    石油和天然气在当今社会中扮演着不可替代的角色,虽然面临着环保和资源可持续性的挑战,但在现阶段仍然是全球能源体系中的核心组成部分。石油和天然气行业一直是技术创新的驱动者,带动了勘探、开采、处理和运输等方面的技术进步。效果展示图扑软件运用自主研发HTforWeb产品,打造......
  • 【专题】2024AI人工智能体验营销行业研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=37084原文出处:拓端数据部落公众号 随着体验经济与智能新时代的双重浪潮席卷而来,既有的传统营销框架与初始体验营销理念逐渐显露出对快速膨胀的数字化生态及企业多元化需求的适应性不足。在此背景下,构建一个契合数智化时代脉搏的全新营销理论体系......
  • 力扣题库合集(2):动态规划(1)
      本文将持续更新~~ hellohello~,这里是绝命Coding——老白~......
  • 分享遇到的异步问题合集
    1.异步传输文件,解析时报错文件未找到场景:异步上传excel文件并需要解析时,在执行到代码中使用流时报错文件未找到原因:因为解析文件的时候并没有存到本地而是作为临时文件在内存中解析,使用异步立即返回的时候,也把临时文件删除了,所以使用流的时候,他找不到流对应路径下的文......
  • 最大矩形(水题)合集???
    前言刷水题,被水题刷。。。悬线法要比单调栈好写的多。P1387最大正方形悬线法#include<bits/stdc++.h>usingnamespacestd;constintN=105;intn,m,a[N][N],l[N][N],r[N][N],up[N][N],ans;intmain(){ scanf("%d%d",&n,&m); for(inti=1;i<=n;i++) for(intj=1......
  • Vue常用组件安装命令合集
    qs是一个流行的查询参数序列化和解析库。可以将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,帮助我们查询字符串解析和序列化字符串。npminstallqsnpminstallaxios-Selementuiui组件库npmielement-ui-Snpmielement-ui@2......
  • 【视频讲解】PCA主成分分析原理及R语言2实例合集|附代码数据
    原文链接:https://tecdat.cn/?p=37034原文出处:拓端数据部落公众号 分析师:RuoyiXu在数据分析的浩瀚宇宙中,我们时常面对多变量的数据海洋。这些变量虽然信息丰富,却也给处理带来了巨大挑战:工作量激增,而关键信息却可能淹没在繁杂的数据之中。为了有效减少指标数量同时尽可能保留原......
  • 郑州轻工业大学zzulioj1071~1090合集
    郑州轻工业大学zzulioj1071~1090合集本人小趴菜一颗,写博客是为了监督自己的学习以及分享学习资源给需要的人,欢迎大家评论区指出问题。同时由于本人比较懒,注释就不再写了,当然一些自己经常犯迷糊的地方还是会标注的,大家有什么问题也可以指出来,大家一起学习进步。郑州轻......
  • 【专题】2024年中国AIGC行业应用价值研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=36570原文出处:拓端数据部落公众号大模型的发展标志着AIGC时代的来临,没有大模型支撑的AI已成为旧时代产物,缺乏竞争力。技术的突破始终是AI发展的关键,而商业应用则是推动其迅速发展的加速器。AI的持久繁荣依赖于其商业化的成功。展望2024年,我们有......