【PTA|期末复习|编程题】数组相关编程题(一)

时间:2024-02-11 23:26:56 标签:  数组  

目录

7-1 乘法口诀数列 (20分)

输入格式:

输出格式:

输入样例:

输出样例:

样例解释:

代码

7-2 矩阵列平移(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-3 组合数的和(15分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-4 求集合数据的均方差(15分)

输入格式:

输出格式:

输入样例 1:

输出样例 1:

输入样例 2:

输出样例 2:

代码

7-5 矩阵A乘以B(15分)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

代码

7-6 点赞(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-7 数组循环左移(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-8 数列求和-加强版(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码


7-1 乘法口诀数列 (20分)

本题要求你从任意给定的两个 1 位数字 a1​ 和 a2​ 开始,用乘法口诀生成一个数列 {an​},规则为从 a1​ 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。

输入格式:

输入在一行中给出 3 个整数,依次为 a1​、a2​ 和 n,满足 0≤a1​,a2​≤9,0<n≤103。

输出格式:

在一行中输出数列的前 n 项。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

2 3 10

输出样例:

2 3 6 1 8 6 8 4 8 4

样例解释:

数列前 2 项为 2 和 3。从 2 开始,因为 2×3=6,所以第 3 项是 6。因为 3×6=18,所以第 4、5 项分别是 1、8。依次类推…… 最后因为第 6 项有 6×8=48,对应第 10、11 项应该是 4、8。而因为只要求输出前 10 项,所以在输出 4 后结束。

编译器:GCC

代码

#include<stdio.h>
int main()
{int a1 = 0;int a2 = 0;int n = 0;scanf("%d %d %d", &a1, &a2, &n);int arr[1000] = { 0 };arr[0] = a1;arr[1] = a2;int i = 0;int mul = 0;int count = 2;for (i = 0; i < n; i++){mul = arr[i] * arr[i + 1];if (mul > 9){arr[count++] = mul / 10;arr[count++] = mul % 10;}else{arr[count++] = mul;}if (count == n){break;}}printf("%d", a1);for (i = 1; i < n; i++){printf(" %d", arr[i]);}return 0;
}

7-2 矩阵列平移(20分)

给定一个 n×n 的整数矩阵。对任一给定的正整数 k<n,我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置,平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。

输入格式:

输入第一行给出 3 个正整数:n(<100)、k(<n)、x(<100),分别如题面所述。

接下来 n 行,每行给出 n 个不超过 100 的正整数,为矩阵元素的值。数字间以空格分隔。

输出格式:

在一行中输出平移后第 1 到 n 行元素的和。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

7 2 99
11 87 23 67 20 75 89
37 94 27 91 63 50 11
44 38 50 26 40 26 24
73 85 63 28 62 18 68
15 83 27 97 88 25 43
23 78 98 20 30 81 99
77 36 48 59 25 34 22

输出样例:

440 399 369 421 302 386 428

样例解读

需要平移的是第 2、4、6 列。给定 k=2,应该将这三列顺次整体向下平移 1、2、1 位(如果有更多列,就应该按照 1、2、1、2 …… 这个规律顺次向下平移),顶端的空位用 99 来填充。平移后的矩阵变成:

11 99 23 99 20 99 89
37 87 27 99 63 75 11
44 94 50 67 40 50 24
73 38 63 91 62 26 68
15 85 27 26 88 18 43
23 83 98 28 30 25 99
77 78 48 97 25 81 22

编译器:GCC

代码

#include<stdio.h>int main()
{int n,k,x;scanf("%d %d %d",&n,&k,&x);int a[n][n];int f=1;for(int i=0;i<n;i++)for(int j=0;j<n;j++){scanf("%d",&a[i][j]);}for(int j=1;j<n;j+=2){for(int i=n-1;i>=f;i--){a[i][j] = a[i-f][j];}for(int i=0;i<f;i++){a[i][j] = x;}f = f%k+1;}for(int i=0;i<n;i++){int sum = 0;for(int j=0;j<n;j++){sum += a[i][j];}if(i==0) printf("%d",sum);else printf(" %d",sum);}return 0;
}

7-3 组合数的和(15分)

给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。

输入格式:

输入在一行中先给出 N(1 < N < 10),随后一行给出 N 个不同的非 0 个位数字。数字间以空格分隔。

输出格式:

输出所有可能组合出来的2位数字的和。

输入样例:

3
2 8 5

输出样例:

330

编译器:GCC

代码

#include<stdio.h>
int main()
{int m,sum=0,s[10];scanf("%d",&m);for(int i=0;i<m;i++){scanf("%d",&s[i]);sum+=s[i]*(m-1)*10+s[i]*(m-1);}printf("%d",sum);return 0;
}

7-4 求集合数据的均方差(15分)

设计函数求 N 个给定整数的均方差。若将 N 个数 A[ ] 的平均值记为 Avg,

输入格式:

输入首先在第一行给出一个正整数 N(≤104),随后一行给出 N 个正整数。所有数字都不超过 1000,同行数字以空格分隔。

输出格式:

输出这N个数的均方差,要求固定精度输出小数点后5位。

输入样例 1:

10
6 3 7 1 4 8 2 9 11 5

输出样例 1:

3.03974

输入样例 2:

1
2

输出样例 2:

0.00000

编译器:GCC

代码

# include<stdio.h>
# include<math.h>
int main()
{int A[10000],m,i,j,sum=0;double x,y1=0,y2=0;scanf("%d",&m);for(i=0;i<m;i++){scanf("%d",&A[i]);sum+=A[i];}x=sum*1.0/m;for(i=0;i<m;i++){y1+=(A[i]-x)*(A[i]-x);}y2=sqrt(y1/m);printf("%0.5lf",y2);return 0; }

7-5 矩阵A乘以B(15分)

给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra​行、Ca​列,B有Rb​行、Cb​列,则只有Ca​与Rb​相等时,两个矩阵才能相乘。

输入格式:

输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。

输出格式:

若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。

输入样例1:

2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8

输出样例1:

2 4
20 22 24 16
53 58 63 28

输入样例2:

3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72

输出样例2:

Error: 2 != 3

编译器:GCC

代码

#include<stdio.h>
int main()
{int row1 = 0;int col1 = 0;scanf("%d %d", &row1, &col1);int arr1[100][100] = { 0 };int i = 0;//输入第一个矩阵for (i = 0; i < row1; i++){int j = 0;for (j = 0; j < col1; j++){scanf("%d", &arr1[i][j]);}}int row2 = 0;int col2 = 0;scanf("%d %d", &row2, &col2);int arr2[100][100] = { 0 };//输入第二个矩阵for (i = 0; i < row2; i++){int j = 0;for (j = 0; j < col2; j++){scanf("%d", &arr2[i][j]);}}//判断if (col1 != row2){printf("Error: %d != %d", col1, row2);}else{//输出乘积矩阵printf("%d %d\n",row1,col2);for (i = 0; i < row1; i++){int j = 0;for (j = 0; j < col2; j++){int sum = 0;int k = 0;for (k = 0; k < row2; k++){sum += arr1[i][k] * arr2[k][j];}printf("%d", sum);if (j != col2 - 1){printf(" ");}else{printf("\n");}}}}return 0;}

7-6 点赞(20分)

微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。

输入格式:

输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F1​⋯FK​”,其中1≤K≤10,Fi​(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。

输出格式:

统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。

输入样例:

4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123

输出样例:

233 3

编译器:GCC

代码

#include <stdio.h>
int main(){int i,j,k,N,K,F,max=0,cha[1001]={0};scanf("%d",&N);for(i=0;i<N;i++){scanf("%d",&K);for(j=0;j<K;j++){scanf("%d",&F);cha[F]++;if(cha[F]>cha[max]){max=F;}if(cha[F]==cha[max]&&F>max){max=F;}}}printf("%d %d",max,cha[max]);return 0;}

 

7-7 数组循环左移(20分)

本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(am​⋯an−1​a0​a1​⋯am−1​)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

8 3
1 2 3 4 5 6 7 8

输出样例:

4 5 6 7 8 1 2 3

编译器:GCC

代码

#include<stdio.h>
int main(){int i,n,j;int k;scanf("%d",&n);int m;scanf("%d",&m);int a[n];for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<m;i++){//每次移动一位,一共移动m次k=a[0];//保存第一位的值for(j=0;j<n-1;j++){a[j]=a[j+1];//数组向左移动}	a[n-1]=k;	//让最后一位等于原本的第一位的值}for(i=0;i<n-1;i++){printf("%d ",a[i]);}printf("%d",a[n-1]);//结尾没有空格return 0;

7-8 数列求和-加强版(20分)

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。

输入格式:

输入数字A与非负整数N。

输出格式:

输出其N项数列之和S的值。

输入样例:

1 3

输出样例:

123

编译器:GCC

代码

#include <stdio.h>int main() {
int result[100000]={0};//存放结果的每一位
int a=0,n=0;
scanf("%d %d",&a,&n);
int i=n;
int flag=0;
int cnt=0;//控制存放结果的位数:从低位开始存 
if(n==0)
printf("%d",0);
else
{for(;i>=1;i--){int temp=i*a+flag;result[cnt++]=temp%10;flag=temp/10;}//输出结果:从高位开始输出 if(flag!=0)//要注意高位 result[cnt++]=flag; i=cnt-1;for(;i>=0;i--){printf("%d",result[i]);}
}return 0;}
来源:分享自作者个人站点/博客

智能推荐

目录 7-1 乘法口诀数列 (20分) 输入格式&#xff1a; 输出格式&#xff1a;

标签:数组  

在一个二维数组中(每个一维数组的长度相同)&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数   1.查找的过程&#xff0c;本质是排除的过程 2.是的&#xff0c;一次排除一行或者一列 3.临界条件  

标签:数组  

目录 一. 单选题&#xff08;共164 题&#xff09; 二. 多选题&#xff08;共14 题&#xff09;

标签:复习题  

适合期末复习c&#43;&#43;看&#xff0c;或者刚入门c&#43;&#43;的小白看&#xff0c;有的题会补充知识点&#xff0c;期末复习题的代码一般比较简单&#xff0c;所以

标签:题库  

适合期末复习c&#43;&#43;看&#xff0c;或者刚入门c&#43;&#43;的小白看&#xff0c;有的题会补充知识点&#xff0c;期末复习题的代码一般比较简单&#xff0c;所以

标签:题库  

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习6 - 结构

标签:语言  

一、试用经验设计法设计满足下图设计的梯形图。

标签:复习题  

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a;数据结构_IT闫的博客-CSDN博客 &#x1f420;数据结构&#xff1a;​​​​​​数据结构_IT闫的博客-CSDN博客 &#x1f48e;C&#43;&#43;&#xff1a;C&#43;&#43;_IT闫的博客-CSDN博客

标签:复习题  

数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 数据库第十第十一

标签:选择题  

  新的一年希望可以成为更好的人嘿嘿&#xff01;  这一篇基本就是把 up 讲的题都截了一遍然后加了点自己的笔记啥的 O.o  &#xff08;不妥的话会删掉的 qwq&#xff0c;希望没事嘿嘿&#xff09;

标签:期末  

体系结构 习题/题库/期末复习/考研复习前段时间体系结构考试收集整理了一些题来练手,现在考完了发出来供需要的人期末复习 or 考研复习用由于整理的时候为了方便用 word 弄的,题量又有些多,就截图上传了存储器-存储器型指令集结构不属于通用寄存器结构(RISC-V的是寄存器-寄存器型)RISC-V并没有减少指令和寻址方式的种类对指令集的基本要求是:完整性、规整性、正交性、高效率、兼容性流水线通过指令级的并行来提高性能当Cache缺失时如何复制数

标签:体系结构  题库  习题  期末  

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755&#64;

标签:期末  

一、预测分析方法步骤 提取左公因子&#xff0c;消除左递归判断文法是否为LL(1)文法若是&#xff0c;构造预测分析表&#xff1b;否则&#xff0c;不能进行分析。根据预测分析表对输入串进行分析 例子&#xff1a;

标签:例题  

 个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755&#64

标签:信息论  

软件工程期末复习第一章 概论软件:程序+数据+文档软件工程三要素:过程、方法、工具软件危机:计算机软件开发、运行、维护过程中所遇到的一系列严重问题,质量差、周期长、难维护、难以复用、成本高软件危机出现的原因:缺乏正确的理论指导开发人员与用户缺乏充分交流:需求不明确对软件开发过程缺乏整体认识:忽视文档管理、

标签:软件工程  期末  

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习6 - 结构

标签:函数  

 个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755&#64

标签:期末  

 个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755

标签:期末  

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755&#64

标签:计算机网络  

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &

标签:计算机网络  

已知CPU结构如下图所示&#xff0c;其中包括一个累加器AC、一个状态寄存器和其他几个寄存器。各部分之间的连线表示数据通路&#xff0c;箭头表示信息传递方向。试完成以下工作&#xff1a;①写出图中四个寄存器A、B、C、D的名称和作用&#xff1b;②

标签:流程图  

小编推荐一个学C语言

标签:概念  

应用统计学期末复习简答题 1&#xff0e;解释众数、中位数和调和平均数。2、什么是普查&#xff1f;其有何特点和作用&#xff1f;3、什么是抽样调查&#xff1f;其有何特点和作用&#xff1f;

标签:简答题  

1.线程的引入 1.1使用线程同时读取键盘和鼠标 代码演示&#xff1a;

标签:线程  

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755&#64;

标签:小题  

猜你喜欢

目录 1.为什么要引用非线性激活函数&#xff1f;

标签:期末  

1》time -- 获取日历时间         日历时间&#xff1a;1970年1月1日距离现在的秒数         #include <time.h>

标签:时间  

02:不吉利日期 总时间限制:  1000ms 内存限制:  65536kB 描述 在国外&#xff0c;每月的13号和每周的星期5都是不吉利的。特别是当13号那天恰好是星期5时&#xff0c;更不吉利。已知某年的一月一日是星期w&#xff0c;并且这一年一定不是闰年&#xff0c;求出这一年所有13号那天是星期5的月份&#xff0c;按从小到大的顺序输出月份数字。&#xff08;w&#61;1..7&#xff09; 输入 输入有一行&#xff0c;即一月一日星期几&#xff08;w&#xff09;。&#xff08;1 <&#61; w &l

标签:练习题  

Linux 期末复习 计算机历史

标签:期末  

   目录    一、网络相关知识简介

标签:知识点  

Python global 语句的作用lambda 匿名函数好处Python 错误处理Python 内置错误类型简述 any() 和 all() 方法Python 中什么元素为假?提高 Python 运行效率的方法Python 单例模式为什么 Python 不提供函数重载实例方法/静态方法/类方法__new__和 __init __方法的区别Python 的函数参数传递Python 实现对函参做类型检查为什么说 Pyt

标签:面试题  

目录 实验一西游游戏-对象 1&#xff0c;选择角色后&#xff0c;角色

标签:作业  

##承接上一篇文章的知识&#xff0c;有下面的实例操作 通过代码新生一个海龟&#xff0c;放置在(5,5)点&#xff0c;命名为turtle2&#xff0c;通过代码订阅turtle2的实时位置并打印在终端&#xff0c;控制turtle2实现旋转运动 步骤&#xff1a; 1.创建一个工作空间和一个功能包&#xff0c;功能包的依赖有rospy turtlesim在功能包里面的src文件创建.py文件用于编写代码,代码如下 #!/usr/bin/env python3# -*- coding: utf-8 -*-import rospyfrom turtlesi

标签:之旅  

机器学习 选择题名词解释&#xff1a;简答题计算题一、线性回归二、决策树三、贝叶斯

标签:期末  

文章目录 数据结构期末复习第一章&#xff1a;数据结构绪论第二章&#xff1a;顺序表与单链表第三章&#xff1a

标签:数据结构  

文章目录 数据结构期末复习第一章&#xff1a;数据结构绪论第二章&#xff1a;顺序表与单链表第三章&#xff1a;其它链表第四章&#xff1a;栈

标签:数据结构  

PTA数组及排序查找题解与解题思路函数题目函数题目为平台提供的裁判程序调用所完成的函数进行判题,题目规定语言为C语言6-1 求出二维数组的最大元素及其所在的坐标本题较为简单,考察的是如何遍历一个二维数组,只需要两个循环依次遍历其每个维度和元素即可如何寻找最大值?只需要在遍历每个元素的过程中,使用一个变量记录最大值,当出现更大的值时,更新最大值的变量即可,同时更新最大值所在的坐标(题目已经给出的全局变量中已经定义,即Row与C

标签:题解  数组  思路  PTA  

1、编译过程概述 词法分析&#xff1a;输入源程序&#xff0c;对构成源程序的字符串进行扫描和分解&#xff0c;识别出一个个单词&#xff08;也称单词符号&#xff0c;或简称符号&#xff09;语法分析&#xff1a;在语法分析的基础上将单词序列分解成各类语法短语。

标签:简答题  

学习数据结构时&#xff0c;以下建议可能对您有所帮助&#xff1a; 理解基本概念&#xff1a;首先&#xff0c;确保您理解数据结构的基本概念&#xff0c;例如数组、链表、栈、队列、树、图等。了解它们的定义、特点和基本操作。

标签:数据结构  

相关问题

相关文章

热门文章

推荐文章

相关标签