【PTA-C语言】编程练习4 - 数组Ⅰ

news2025/2/23 20:06:55
  • 如果代码存在问题,麻烦大家指正 ~ ~
  • 有帮助麻烦点个赞 ~ ~

    编程练习4 - 数组Ⅰ(1~7)

    • 7-1 评委打分(分数 10)
    • 7-2 组合数的和(分数 10)
    • 7-3 找不同(分数 15)
    • 7-4 利用二分查找搜寻所有待查找数据(分数 15)
    • 7-5 判断上三角矩阵(分数 10)
    • 7-6 方阵循环右移(分数 15)
    • 7-7 TicTacToe游戏--胜负判定(分数 15)

7-1 评委打分(分数 10)

作者 翁恺
单位 浙江大学

班级里要搞智力竞赛啦!同学们都踊跃参加。进入最后决赛的是10个同学,随着一道道题目的出示,有时是1号选手得分,有时是5号选手得分,每次答对者得10分,最后结果如何呢?

输入格式:
第一行有十个整数,表示十位同学的初始分。第二行一个整数n,表示有n道题竞赛。
接下去有n行,每行有一个数字x,x表示本次可以加分的选手序号(每次答对者得10分)。

输出格式:
10个同学最终的得分值,每两位同学之间有一个空格。

输入样例:

10 0 0 0 10 10 0 0 0 10
3
1
10
1

输出样例:

30 0 0 0 10 10 0 0 0 20

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

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

7-2 组合数的和(分数 10)

作者 陈越
单位 浙江大学

给定 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

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include<stdio.h>
int main()
{
    int i, j, n, sum=0;
    int a[100];
    scanf("%d", &n);
    for(i=0; i<n; i++)
        scanf("%d", &a[i]);
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            if(j!=i)
                sum += a[i]*10+a[j];
    printf("%d\n", sum);
    return 0;
}

7-3 找不同(分数 15)

作者 胡伟平
单位 广西科技大学

这是一个签到题,非常简单。一群网友在网上在玩游戏,看谁是最与众不同的,每一个人都单独写一个数字,然后依次上交,谁的数据没有和其他人重复,谁就赢了,如果有很多人都与众不同,那么第一个做到的才是真正的与众不同。

输入格式:
输入是一个测试用例,首先给出网友个数N,之后依次给出N个正整数,给出的正整数和N都不超过10的5次方。

输出格式:
对每一组输入,输出与众不同的那个数,如果没有,输出None

输入样例1:
在这里给出一组输入。例如:

8 1 2 3 4 4 5 3 1

输出样例1:
在这里给出相应的输出。例如:

2

输入样例2:
在这里给出一组输入。例如:

8 1 2 3 4 4 3 2 1

输出样例2:
在这里给出相应的输出。例如:

None

代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB

参考代码

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

7-4 利用二分查找搜寻所有待查找数据(分数 15)

作者 Sun Jun
单位 武汉理工大学

利用二分法在一个有N(N≤20)个元素的有序数列中查找指定值y。找到y后,先输出查找次数,再输出其在数组中对应的下标。若数列中存在多个y,将所有y的位置按下标序号顺序输出;
否则输出“not found”.

输入格式:
输入在第1行中给出1个不大于20的数N。在第2行给出N个数(升序),以空格分隔。最后在第3行给出待查找数据y。

输出格式:
若数列中存在y:先输出查询次数,在其后每行以格式“位置:k”,输出一个位置值。
若数列中没有y:输出“not found”。

输入样例 1:

10
34 56 78 87 87 87 87 112 520 888
87

输出样例 1:

查找次数1
位置:3
位置:4
位置:5
位置:6

输入样例 2:

10
34 56 78 87 87 87 87 112 520 888
80

输出样例 2:

not found

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include<stdio.h>
int main()
{
    int n, b, i, j=0, l=0, h, mid, sum=1;
    int a[20];
    scanf("%d", &n);
    h = n-1;
    for (i=0; i<n; i++)
        scanf("%d", &a[i]);
    scanf("%d", &b);
    while(l<=h) {
        mid = (l+h)/2;
        if(b==a[mid])
            break;
        else if(b<a[mid])
            h = mid-1;
        else
            l = mid+1;
        sum++;
    }
    for(i=0; i<n; i++)
        if(a[i]==b)
            if(j==0) {
                j=1;
                printf("查找次数%d\n", sum);
                printf("位置:%d\n", i);
            } else
                printf("位置:%d\n", i);
    if(j==0)
        printf("not found");
    return 0;
}

7-5 判断上三角矩阵(分数 10)

作者 C课程组
单位 浙江大学

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入格式:
输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:
每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

输入样例:

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

输出样例:

YES
NO
NO

鸣谢中水七局机电安装分局喻春桥补充数据!

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include<stdio.h>  
int main()
{  
    int T, m, n, i, j, flag;
    int a[10][10];
    scanf("%d", &T);
    for(m=0; m<T; m++) {
        flag = 1;
        scanf("%d", &n);
        for(i=0; i<n; i++)
            for(j=0; j<n; j++) {
                scanf("%d", &a[i][j]);
                if(i>j && a[i][j]!=0)
                    flag=0;
            }
        if(flag)
            printf("YES\n");  
        else   
            printf("NO\n");
    }
    return 0;
}

7-6 方阵循环右移(分数 15)

作者 颜晖
单位 浙大城市学院

本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。

输入格式:
输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

输出格式:
按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

输入样例:

2 3
1 2 3
4 5 6
7 8 9

输出样例:

2 3 1  5 6 4  8 9 7

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

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

7-7 TicTacToe游戏–胜负判定(分数 15)

作者 李民
单位 武汉理工大学

井字棋是一种在3x3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边框,格线排成井字故得名。

游戏规则:由分别代表O和X的两个游戏者轮流在格子里留下标记。由最先在任意一条直线上成功连接三个标记的一方获胜。(摘抄自百度百科)

在这里插入图片描述

读入一个3X3的二维数组,数组元素为’X’表示下X,元素为’O’表示下O,数组元素为’.'(英文符号“点”)表示未下棋,现编写程序进行当前胜负的判断,如果X方胜,则显示"X win!“,如果O方胜,则显示"O win!”,如果无人获胜,则显示"No one win!"。

输入格式:
读入一个3X3的二维数组,数组元素为’X’表示下X,元素为’O’表示下O,数组元素为’.'(英文符号“点”)表示未下棋。

输出格式:
若X方胜,则显示"X win!“;若O方胜,则显示"O win!”;若无人获胜,则显示"No one win!"。

输入样例1:

X.O
OX.
O.X

输出样例2:

X win!

输入样例2:

O.O
XX.
X..

输出样例2:

No one win!

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include <stdio.h>
int main()
{
    char a[4][4];
    int i, flag1=0, flag2=0;
    for(i=0;i<3;i++)
        scanf("%s",a[i]);
    for(i=0;i<3;i++)
        if((a[i][0]==a[i][1])&&(a[i][1]==a[i][2])&&(a[i][0]==a[i][2]))
            if(a[i][0]!='.')
                if(a[i][0]=='X')
                    flag1=1;
                else
                    flag2=1;
    for(i=0;i<3;i++)
        if((a[0][i]==a[1][i])&&(a[1][i]==a[2][i])&&(a[0][i]==a[2][i]))
            if(a[0][i]!='.')
                if(a[0][i]=='X')
                    flag1=1;
                else
                    flag2=1;
    if(((a[0][0]==a[1][1])&&(a[1][1]==a[2][2])&&(a[0][0]==a[2][2]))||((a[0][2]==a[1][1])&&(a[1][1]==a[2][0])&&(a[0][2]==a[2][0])))
        if(a[1][1]!='.')
            if(a[1][1]=='X')
                flag1=1;
            else
                flag2=1;
    if(flag1&&(flag2==0))
        printf("X win!\n");
    else if((flag1==0)&&flag2==1)
        printf("O win!\n");
    else
        printf("No one win!\n");
    return 0;
}

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

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

相关文章

在前端开发中,什么是SEO(Search Engine Optimization)?如何优化网站的SEO?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

聚观早报 |华为畅享 70正式开售;梦饷科技双12玩法

【聚观365】12月8日消息 华为畅享 70正式开售 梦饷科技双12玩法 华为Mate X5应对火海挑战 谷歌发布AI模型Gemini 字节跳动开启新一轮回购 华为畅享 70正式开售 精致外观与创新科技兼具的华为畅享 70正式开售&#xff0c;1199元起搭载6000mAh超大电池&#xff0c;带来超强…

高并发爬虫用Python语言适合吗?

不管你用什么语言没在进行高并发前&#xff0c;有几点是需要考虑清楚的&#xff0c;&#xff1b;例如&#xff1a;数据集大小&#xff0c;算法、是否有时间和性能方面的制约&#xff0c;是否存在共享状态&#xff0c;如何调试&#xff08;这里指的是日志、跟踪策略&#xff09;…

如何对售后服务的全流程进行精细化的管理?

——“如何对售后服务的全流程进行精细化的管理&#xff1f;” ——“售后又是一个十分复杂的过程&#xff0c;仅靠手工或者电子表格记录这些内容&#xff0c;肯定是低效率、易出错的。最好的办法是借助合适的管理工具进行精细化的过程管理。” 假设你购买了一台新的家用电器…

大规模敏捷的7个容易被误解的真相

大规模敏捷不只是将敏捷实践从团队扩展到组织&#xff0c;而是需要改变思维和组织架构&#xff0c;将以管理为主的组织观念转变为以人为中心的组织观念&#xff0c;将组织改造为简化、自治的团队&#xff0c;实现可持续的价值交付。原文: The Uncomfortable Truth of Scaling A…

selenium 解决 id定位、class定位中,属性值带空格的解决办法

一、前置说明 selenium遇到下面这种元素&#xff1a; <th id"demo id" class"value1 value2 value3 ">1、虽然id一般不会有空格&#xff0c;但是前端错误的这种写法(如下图)&#xff0c;会造成使用id定位不到元素&#xff0c;如&#xff1a; find…

Windows11如何找到桌面聚焦图片的位置并获取(不是锁屏聚焦图片的位置)

如题&#xff0c;windows11有个独享功能&#xff0c;在win10及之前里都没有&#xff0c;即在桌面的个性化设置背景里&#xff0c;可以直接选择使用windows聚焦&#xff0c;让聚焦来给桌面换背景&#xff0c;如下&#xff1a; 注意&#xff0c;这是设置桌面的背景图片为聚焦&am…

深入理解网络 I/O 多路复用:SELECT、POLL

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

K-means算法通俗原理及Python与R语言的分别实现

K均值聚类方法是一种划分聚类方法&#xff0c;它是将数据分成互不相交的K类。K均值法先指定聚类数&#xff0c;目标是使每个数据到数据点所属聚类中心的总距离变异平方和最小&#xff0c;规定聚类中心时则是以该类数据点的平均值作为聚类中心。 01K均值法原理与步骤 对于有N个…

Redis安全与性能

文章目录 第1关&#xff1a;持久化第2关&#xff1a;复制第3关&#xff1a;Redis事务与流水线 第1关&#xff1a;持久化 1、创建快照的方式有&#xff1a; A、执行 SAVE 命令 B、执行 BESAVE 命令 C、使用 save 选项配置自动快照 D、通过客户端发送关闭服务器请求 E、以上…

Python---time库

目录 时间获取 时间格式化 程序计时 time库包含三类函数&#xff1a; 时间获取&#xff1a;time() ctime() gmtime() 时间格式化&#xff1a;strtime() strptime() 程序计时&#xff1a;sleep() perf_counter() 下面逐一介绍&#…

[Linux] Bash脚本多函数应该如何执行?使用eval提高脚本编写效率!

在工作过程中经常会编写一些测试脚本&#xff0c;有些脚本里有多个函数&#xff0c;要通过用户输入执行对应的函数&#xff0c;如这样&#xff1a; 这也太麻烦了吧 执行如下&#xff1a; 这样在函数多的情况下需要写很多判断&#xff0c;效率低下。 我们可以使用eval命令来进行…

【深度学习】一维数组的聚类

在学习聚类算法的过程中&#xff0c;学习到的聚类算法大部分都是针对n维的&#xff0c;针对一维数据的聚类方式较少&#xff0c;今天就来学习下如何给一维的数据进行聚类。 方案一&#xff1a;采用K-Means对一维数据聚类 Python代码如下&#xff1a; from sklearn.cluster im…

Zabbix自定义飞书webhook告警媒介1

说明&#xff1a;此配置仅适用于7版本及以上&#xff0c;低版本可能有问题 JavaScript 内容如下&#xff1a; try {var sourceData JSON.parse(value),req new HttpRequest(),response;if (sourceData.HTTPProxy) {req.setProxy(sourceData.HTTPProxy);}req.addHeader(Conte…

vuepress-----20、全文搜索

默认主题自带的搜索, 只会为页面的标题、h2、h3 以及 tags构建搜索索引。所以尽量将围绕知识点的关键字体现到标题上。而 tags 更为灵活&#xff0c;可以把相关的能想到的关键字都配置到 tags 中&#xff0c;以方便搜索。 默认插件介绍 (opens new window) 默认主体配置 (ope…

Latex公式中矩阵的方括号和圆括号表示方法

一、背景 在使用Latex写论文时&#xff0c;不可避免的涉及到矩阵公式。有的期刊要求矩阵用方括号&#xff0c;有的期刊要求矩阵用圆括号。因此&#xff0c;特记录一下Latex源码在两种表示方法上的区别&#xff0c;以及数组和方程组的扩展。 二、矩阵的方括号表示 首先所有的…

CnetSDK .NET OCR Library SDK Crack

CnetSDK .NET OCR Library SDK Crack CnetSDK .NET OCR Library SDK 是一款高精度 .NET OCR 扫描仪软件&#xff0c;用于从图像中识别字符&#xff0c;如文本、手写和符号。该.NET OCR库软件采用Tesseract OCR引擎技术&#xff0c;将字符识别准确率提高高达99%。通过将 .NET OC…

时序数据库选型TimescaleDB

最近要做一个数字车间的物联网项目&#xff0c;数据存储成了首先要解决的问题&#xff0c;整个车间一共104台数控机床&#xff0c;1s钟采集1次数据&#xff0c;360024365*1043,279,744,000 &#xff0c;一年要产生32亿条记录&#xff0c;这个数据量用常见的关系型数据库肯定是不…

PHP对接企业微信

前言 最近在做项目中&#xff0c;要求在后台管理中有企业微信管理的相关功能。相关准备工作&#xff0c;需要准备好企业微信账号&#xff0c;添加自建应用&#xff0c;获得相应功能的权限&#xff0c;以及agentid、secre等。 参考文档&#xff1a; 企业微信开发文档 功能实现 因…

MacBook 逆水寒下载安装使用教程,支持最新版本 MacOS 流畅不闪退

最近 MacBook 系统更新到了 MacOS 14.1 很多朋友的逆水寒玩不了了&#xff0c;我尝试了一番可以正常玩了&#xff0c;看图&#xff1a; 其实操作也很简单&#xff0c;我们从头开始&#xff0c;因为 MacOS 系统的更新所以我们也需要更新新版本的 playCover 来适配新的系统&#…