当前位置:首页 > 未分类 > 正文内容

基础语法数组的练习

admin2天前未分类11

基础语法数组的练习

作者:xinyi

第一题 数组替换

题目链接https://www.acwing.com/problem/content/739/

核心思路:定义长度为 10 的数组,输入 10 个整数,若输入值≤0 则替换为 1,最后按指定格式输出数组元素。

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
   
   int x[10];
   int n;
   for (int i=0;i<=9;i++){
       cin >>n;
       if(n<=0) x[i]=1;
       else x[i]=n;
       printf("X[%d] = %d\n",i,x[i]);
   }
   
   return 0;
   
}

第二题 数组填充

题目链接https://www.acwing.com/problem/content/740/

核心思路:输入初始值v,数组第 1 个元素为v,后续元素为前一个元素的 2 倍,循环填充 10 个元素后按格式输出。

#include <cstdio>
#include <iostream>

using namespace std;

int main(){
   
   int v;
   int a[10];
   cin >>v;
   for(int i = 1;i<10;i++){
       a[0]=v;
       a[i]=a[i-1]*2;
   }
   for(int i=0;i<10;i++){
       printf("N[%d] = %d\n",i,a[i]);
   }
   
   return 0 ;
}

第三题 数组选择

题目链接https://www.acwing.com/problem/content/741/

核心思路:定义长度为 100 的双精度数组,输入 100 个数值后,筛选出≤10 的元素并按指定格式输出(保留 1 位小数)。

#include <cstdio>
#include <iostream>

using namespace std;

int main(){
   
   double a[100];
   double n;
   for (int i=0;i<100;i++){
       cin>>n;
       a[i]=n;
   }
   for(int i=0;i<100;i++){
       
       if(a[i]<=10)printf("A[%d] = %.1lf\n",i,a[i]);
   }
   
   return 0;
}

第四题 数组中的行

题目链接https://www.acwing.com/problem/content/745/

核心思路:定义 12×12 的双精度二维数组,输入指定行号l和操作符S(求和)/M(求平均),计算该行所有元素的和或平均值并输出。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   int l;
   char input;
   double m[12][12];
   int n;
   cin>>l>>input;
   for(int i= 0 ;i<12;i++){
       for(int j=0;j<12;j++){
           cin>>m[i][j];
           //m[i][j]=n
       }
   }
   double sum=0;
   for(int i=0;i<12;i++){
       sum+=m[l][i];
   }
   if(input=='S')cout<<sum<<endl;
   else printf("%.1lf",sum/12);
   return 0;
}

第五题 数组的右上半部分

题目链接https://www.acwing.com/problem/content/747/

核心思路:定义 12×12 的双精度二维数组,计算并输出右上半部分(列号 > 行号)元素的和(S)或平均值(M),平均值保留 1 位小数。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   char n;
   cin>>n;
   double a[12][12];
   for(int i = 0;i<12;i++)
       for(int j=0;j<12;j++)
           cin>>a[i][j];
           
   double s=0;
   double sum=0;
   for(int i=0;i<12;i++){
       
       for (int j=i+1;j<12;j++){
           s++;
           sum+=a[i][j];
       }
       
   }
   if(n=='S')cout <<sum;
   else printf("%.1lf",sum/s);
   
       
   return 0;
}

第六题 数组的左上半部分

题目链接https://www.acwing.com/problem/content/749/

核心思路:定义 12×12 的双精度二维数组,计算并输出左上半部分(行号 + 列号≤10)元素的和(S)或平均值(M),平均值保留 1 位小数。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   char n;
   cin>>n;
   double a[12][12];
   for(int i = 0;i<12;i++)
       for(int j=0;j<12;j++)
           cin>>a[i][j];
           
   double s=0;
   double sum=0;
   for(int i=0;i<12;i++){
       
       for (int j=0;j<12;j++){
           if(i+j<=10){
           s++;
           sum+=a[i][j];}
       }
       
   }
   if(n=='S')cout <<sum;
   else printf("%.1lf",sum/s);
   
       
   return 0;
}

第七题 数组的上方区域

题目链接https://www.acwing.com/problem/content/751/

核心思路:定义 12×12 的双精度二维数组,计算并输出上方区域(行号 0~5,列号 > 行号且行号 + 列号 < 11)元素的和(S)或平均值(M),平均值保留 1 位小数。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   char n;
   cin>>n;
   double a[12][12];
   for(int i = 0;i<12;i++)
       for(int j=0;j<12;j++)
           cin>>a[i][j];
           
   double s=0;
   double sum=0;
   for(int i=0;i<5;i++){
       
       for (int j=i+1;j+i<11;j++){
           s++;
           sum+=a[i][j];
       }
       
   }
   if(n=='S')cout <<sum;
   else printf("%.1lf",sum/s);
   
       
   return 0;
}

第八题 数组的左方区域

题目链接https://www.acwing.com/problem/content/753/

核心思路:定义 12×12 的双精度二维数组,分两部分计算左方区域元素(行号 1~5 时列号≤行号 - 1;行号 6~10 时列号≤10 - 行号)的和(S)或平均值(M),平均值保留 1 位小数。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   char n;
   cin>>n;
   double a[12][12];
   for(int i = 0;i<12;i++)
       for(int j=0;j<12;j++)
           cin>>a[i][j];
           
   double s=0;
   double sum=0;
   for(int i=1;i<=5;i++){
       
       for (int j=0;j<=i-1;j++){
           s+=1;
           sum+=a[i][j];
       }
       
   }
   for(int i=6;i<=10;i++){
       
       for (int j=0;j<=10-i;j++){
           s+=1;
           sum+=a[i][j];
       }
   }
   
   if(n=='S')cout <<sum;
   else printf("%.1lf",sum/s);
   
       
   return 0;
}

第九题 平方矩阵

题目链接https://www.acwing.com/problem/content/755/

说明:题目要求生成边长为n的平方矩阵,每个元素值为该元素到矩阵边界的最小距离(如边界元素为 1,向内逐层递增),代码中通过min(min(i + 1, j + 1), min(n - i, n - j))计算该距离,循环输入n直到n=0结束。

#include <iostream>
#include <cmath>

using namespace std;


int main(){
   int n;

   while (cin >> n, n){

       for (int i = 0; i < n; i ++){
           for(int j = 0; j < n; j ++){
               cout << min(min(i + 1, j + 1), min(n - i, n - j)) << " ";
           }
           cout << endl ;
       }
       cout << endl;
   }

   return 0;
}

第十题 数组变换

题目链接https://www.acwing.com/problem/content/742/

核心思路:输入 20 个整数存入数组a,将a逆序存储到数组b中(如a[19]存到b[0],a[18]存到b[1]),最后按指定格式输出b的元素。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   int a[20],b[20];
   for(int i =0;i<20;i++)cin >>a[i];
   for(int i=19,j=0;i>=0;i--,j++) b[j]=a[i];//这里的j也可以换成19-i,最终结果一致均可AC
   for(int i=0;i<20;i++) printf("N[%d] = %d\n",i,b[i]);
   return 0;
   
}

第十一题 斐波那契数列

题目链接https://www.acwing.com/problem/content/743/

关键注意事项:斐波那契数列第 60 项数值较大,int类型会溢出,需使用long long类型存储数组元素。

辅助截图

img

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   long long a[60];
   a[0]=0,a[1]=1;
   for(int i=2;i<60;i++)a[i]=a[i-1]+a[i-2];
   int n;
   cin >>n;
   while(n--){
   int x;
   cin >>x;
   printf("Fib(%d) = %lld\n",x,a[x]);}
   return 0;
}

第十二题 最小数和它的位置

题目链接https://www.acwing.com/problem/content/744/

核心思路:输入n个整数存入数组,遍历数组找到最小值及其索引(位置),最后按指定格式输出最小值和位置。

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
   
   int n;
   int a[1001];
   cin>>n;
   for(int i=0;i<n;i++) cin>>a[i];
   int p=0;
   for (int i=1;i<n;i++){
       if(a[i]<a[p]) p=i;
       
   }
   printf("Minimum value: %d\n",a[p]);
   printf("Position: %d",p);
   return 0;
}

若你后续想对某道题的代码添加详细注释(比如解释关键逻辑),或者需要补充其他数组相关的练习题转换,都可以告诉我,我会进一步优化内容,让代码和思路更易理解。


扫描二维码推送至手机访问。

版权声明:本文由克拉玛依三十年社团发布,如需转载请注明出处。

本文链接:https://www.klmyssn.com/?id=76

分享给朋友:
返回列表

上一篇:字符串练习题

没有最新的文章了...

“基础语法数组的练习” 的相关文章

(原创)Web 渗透实例之中国教育部青少年普法网站逻辑漏洞【网站逻辑漏洞】【网站逻辑漏洞挖掘】【网站逻辑漏洞实例】

(原创)Web 渗透实例之中国教育部青少年普法网站逻辑漏洞【网站逻辑漏洞】【网站逻辑漏洞挖掘】【网站逻辑漏洞实例】

重要声明:此漏洞于 2016 年 12 月 2 号由社团成员挖掘出来,已经第一时间提交到补天,现已修复,发出来仅供学习与讨论,请勿用于非法途径!!!一、漏洞基本信息漏洞关联网站:中国教育部青少年普法网站用户登录界面地址:https://user.qspfw.com具体漏洞页面:用户密码找回界面,地址...

(原创)一张图片,你的信息暴露无遗~

(原创)一张图片,你的信息暴露无遗~

大家好,我是 31,今天教给大家一个定位的小技巧,也没什么技术含量,看着玩就好啦~~~~昨天看到社团老大 “十三年” 在群里发照片 “装 13”,结果被我抓到了,哈哈哈哈,每个人都有大意之时。不多说,上图(居然发现手表不错,和我的一样帅~~~~~):**一、科普:什么是 Exif 数据?1. Exi...

(原创)想学黑阔?这些书可以带你飞![web 安全书籍]

(原创)想学黑阔?这些书可以带你飞![web 安全书籍]

这些是我多年前收集的一些 web 安全相关书籍,虽当初未能坚持系统学习,但书籍本身质量较好,现分享给大家,希望能为想学 web 安全的朋友提供帮助!书籍资源获取百度云链接:http://pan.baidu.com/s/1jHVch9O提取密码:bauj...

(原创)sqlmap 注入初级教程 [sqlmap][sqlmap 指令][sqlmap 怎么用]

(原创)sqlmap 注入初级教程 [sqlmap][sqlmap 指令][sqlmap 怎么用]

一、熟悉 sqlmap 之路:核心注入场景与方法1. Sqlmap 之 Post 注入Post 注入适用于表单提交(如登录页、数据提交页)等场景,核心是通过抓取 Post 请求数据进行注入测试,以下为 4 种常用方法:方法一:基于请求文件(-r 参数)# 基础用法(请求文件与sqlmap同目录)sq...

(原创) 校园卡破解系列之数据修改 [pm3 破解饭卡][pm3 修改数据][校园卡修改][IC 卡修改数据]

(原创) 校园卡破解系列之数据修改 [pm3 破解饭卡][pm3 修改数据][校园卡修改][IC 卡修改数据]

(二)吃不完的饭卡提升完 IC 卡权限,就该考虑能不能修改饭卡金额了。通过两次消费前后饭卡数据的对比分析,发现虽然卡片数据包含较多扇区和区块,但消费前后变化的地方仅涉及两个扇区,这为后续分析提供了便利。通过十六进制与十进制转换,可进一步拆解变化的数据:消费后金额:373.2(数字:37320;16...

(原创)微信跳一跳辅助跳跃教程,轻轻松松拿高分!

(原创)微信跳一跳辅助跳跃教程,轻轻松松拿高分!

一、前期准备:模拟器配置1. 核心工具与系统要求模拟器:逍遥模拟器(需安装多开器)系统版本:通过多开器创建 “安卓 5.1” 系统的模拟器实例设备型号设置:在模拟器中将设备型号改为 “小米 5S”(适配辅助工具兼容性)2. 微信与游戏准备在模拟器中下载并安装微信,登录账号后打开 “跳一跳” 游戏,确...