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

  • 如果代码存在问题,麻烦大家指正 ~ ~
  • 有帮助麻烦点个赞 ~ ~

    编程练习4 - 数组Ⅱ(8~15)

    • 7-8 2048游戏模拟(2)--向下移位合并(分数 15)
    • 7-9 二进制数据转换成十进制数(分数 15)
    • 7-10 英文单词排序(分数 15)
    • 7-11 统计单词的长度(分数 15)
    • 7-12 来验证我们的身份证吧(分数 15)
    • 7-13 将整数按三位分节(分数 15)
    • 7-14 求完全对称日(分数 10)
    • 7-15 念数字(分数 10)

7-8 2048游戏模拟(2)–向下移位合并(分数 15)

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

本题模拟2048游戏的规则,提供4X4个格子,输入每个格子的初始值(空白格子值为0),玩家选择向下移动,所有数字向下靠拢,相同的数字相撞时会合并。移动结束后,输出合并后的数值。

输入格式:
分4行,每行输入4个整数,分别表示格子中的初值,数据之间用空格分隔。

输出格式:
分4行,输出移动合并后的数据,每个数之间有一个空格,行末无空格。

输入样例:

2 0 2 2
2 2 4 4
0 2 0 2
4 0 0 4

输出样例:

0 0 0 2
0 0 0 4
4 0 2 2
4 4 4 4

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

参考代码

#include <stdio.h>
int main()
{int i, j, temp, k, count, a[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(k=0;k<=3;k++)for(j=0;j<=3;j++)for(i=0;i<=3-j;i++)if(a[i][k]==0&&i-1>=0) {temp=a[i][k];a[i][k]=a[i-1][k];a[i-1][k]=temp;}for(k=0;k<=3;k++)for(i=3;i>=0;i--)if(a[i][k]==a[i-1][k]) {a[i][k]+=a[i-1][k];a[i-1][k]=0;}for(k=0;k<=3;k++)for(j=0;j<=3;j++)for(i=0;i<=3-j;i++)if(a[i][k]==0&&i-1>=0) {temp = a[i-1][k];a[i-1][k] = a[i][k];a[i][k] = temp;}for(k=0;k<=3;k++)for(i=0;i<=3;i++)if(count!=3) {printf("%d ",a[k][i]);count++;} else {printf("%d\n",a[k][i]);count=0;}return 0;
}

7-9 二进制数据转换成十进制数(分数 15)

作者 汤练兵
单位 武汉理工大学

输入1个无符号二进制数串,编写程序将其转换成对应的十进制数,并输出。

输入格式:
输入1个二进制数串(至少1位且不超过16位)。

输出格式:
输出转换后的十进制数。

输入样例:

0110110001100

输出样例:

3468

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

参考代码

#include <stdio.h>
#include <math.h>
int main()
{char a[17];gets(a);int i, n = strlen(a), k, sum=0;for(i=n-1,k=0; i>=0; i--,k++)sum += (a[i]-48)*pow(2,k);printf("%d", sum);return 0;
}

7-10 英文单词排序(分数 15)

作者 张泳
单位 浙大城市学院

本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

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

参考代码

#include<stdio.h>
#include<string.h>
int main(){int i, j, k;char a[30][20], temp[20];for(i=0;i<20;i++) {gets(a[i]);if(a[i][0]=='#')break;}for(k=0;k<i-1;k++)for(j=0;j<i-k-1;j++)if(strlen(a[j])>strlen(a[j+1])) {strcpy(temp, a[j]);strcpy(a[j], a[j+1]);strcpy(a[j+1], temp);}for(j=0;j<i;j++)printf("%s ", a[j]);return 0;
}

7-11 统计单词的长度(分数 15)

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

本题目要求编写程序,输入一行字符,统计每个单词的长度。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:
输入给出一行字符。

输出格式:
在一行中输出每个单词的长度。每个数字后有一个空格。

输入样例:

How are you?

输出样例:

3 3 4 

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

参考代码

#include<stdio.h>
int main()
{int i=0, n=0;char b;scanf("%c", &b);if(b!=' ') n++;while(b != '\n') {scanf("%c", &b);if(b!=' ' &&b !='\n') n++;if(n!=0 && b==' ' || b=='\n') {if(n) {printf("%d ", n);i=1;}n=0;}}if(i!=1)printf("0 ");return 0;
}

7-12 来验证我们的身份证吧(分数 15)

作者 孙骏
单位 武汉理工大学

咱们的身份证号码由18位字符组成,其中17位为地区、日期编号和顺序编号,最后1位为校验码。

校验码的计算规则如下:

首先求出前17位数字的加权和S,权重分配按顺序为:{ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
然后将计算的和S对11取模得到值Z;
最后按照以下关系对应Z值与校验码M的值:
Z: 0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2

例如:对于身份证号420111200001014148,按权重累加和S为:

4×7+2×9+0×10+1×5+…+4×8+1×4+4×2=125

由此计算 Z=S%11=4

对应的M值为 8 ,即校验位值为8,与输入的身份证号最后一位相同,故上述身份证号正确。若M值与身份证最后一位不同,则身份证号有问题。

本题给出一些身份证号码,请你验证校验码是否正确。若身份证号有问题,则输出该号码。

输入格式:
第1行输入需判断的身份证号码条数N(0<N<=10)。从第2行开始,每行输入一条身份证号。

输出格式:
每行输出一条不正确的身份证号。

若全部正确,输出"全部正确!"。

输入样例 1:

3
420106197107251007
310111196602231020
602402200311154723

输出样例 1:

全部正确!

输入样例 2:

2
42010619710725100X
220111196302231027

输出样例 2:

42010619710725100X

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

参考代码

#include <stdio.h>
int main(){int sum, Z, n, i, count = 0, j, k, weight[] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 }, wrong = 0;char M[] = { '1','0','X','9','8','7','6','5','4','3','2' }, id[100][20];scanf("%d", &n);for(i = 0; i < n; i++) {sum = 0;scanf("%s", id[i]);for(j = 0; j < 18; j++)if(j < 17) {if(id[i][j] >= '0' && id[i][j] <= '9')sum += (id[i][j] - '0') * weight[j];else {wrong = 1;break;}} else {Z = sum % 11;if (id[i][j] != M[Z])wrong = 1;}if(wrong) {printf("%s\n", id[i]);count++;wrong = 0;}}if(count == 0) printf("全部正确!\n");return 0;
}

7-13 将整数按三位分节(分数 15)

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

编写一个程序,将某个位数不确定的非负整数进行三位分节后输出。程序保证数据是不超过4个字节的正整数。

输入格式:
输入一个非负整数,以回车结束输入。

输出格式:
将这个正整数每隔3位就用逗号分隔,然后输出。

输入样例:

1234567

输出样例:

1,234,567

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

参考代码

#include<stdio.h>
#include<string.h>
int main(){char a[1000];scanf("%s", a);int i, t = strlen(a);for(i=0; i<t; i++) {printf("%c", a[i]);if((t-i-1)%3==0 && i!=t-1)printf(",");}printf("\n");return 0;
}

7-14 求完全对称日(分数 10)

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

刚进入2020年,网上就流传着2020.02.02是“千年一遇”的对称日(正着读反着读都一样),很多情侣准备选择这一天去登记结婚。事实上,像这样的完全对称日还有很多。
现在来编写一个程序,输入2个年份M、N(1000<=M<=N<=9999),输出M和N之间(包含M、N)的所有完全对称日。如果没有完全对称日,则输出"None"。

输入格式:
输入2个年份M、N(1000<=M<=N<=9999)。

输出格式:
按“年.月.日”的格式输出该年所有的完全对称日。其中年按4位输出,月、日均按2位输出,位数不足则加前导0。每行输出一个完全对称日。

输入样例:

2011 2020

输出样例:

2011.11.02
2020.02.02

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

参考代码

#include <stdio.h>
int main()
{int y, mm, day, m, n, result=0;scanf("%d %d", &m, &n);for(y=m;y<=n;y++)for(mm=1;mm<=12;mm++) {if(mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12)for(day=1;day<=31;day++)if(y==day%10*1000+day/10*100+mm%10*10+mm/10) {printf("%d.%02d.%02d\n",y,mm,day);result=1;}if(mm==4||mm==6||mm==9||mm==11)for(day=1;day<=30;day++)if(y==day%10*1000+day/10*100+mm%10*10+mm/10) {printf("%d.%02d.%02d\n", y, mm, day);result=1;}if(mm==2) {if((y%4==0&&y%100!=0)||(y%400==0)) {for(day=1;day<=29;day++)if(y==day%10*1000+day/10*100+mm%10*10+mm/10) {printf("%d.%02d.%02d\n", y, mm, day);result=1;}}elsefor(day=1;day<=28;day++)if(y==day%10*1000+day/10*100+mm%10*10+mm/10) {printf("%d.%02d.%02d\n", y, mm, day);result=1;}}}if(result==0) printf("None");return 0;
}

7-15 念数字(分数 10)

作者 翁恺
单位 浙江大学

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu

输入格式:
输入在一行中给出一个整数,如:1234

提示:整数包括负数、零和正数。

输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如
yi er san si

输入样例:

-600

输出样例:

fu liu ling ling

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

参考代码

#include<stdio.h>
#include<string.h>
int main()
{char num[20];scanf("%s", &num);int i, n = strlen(num);for(i=0; i<n; i++) {switch(num[i]) {case '-':printf("fu"); break;case '0':printf("ling"); break;case '1':printf("yi"); break;case '2':printf("er"); break;case '3':printf("san"); break;case '4':printf("si"); break;case '5':printf("wu"); break;case '6':printf("liu"); break;case '7':printf("qi"); break;case '8':printf("ba"); break;case '9':printf("jiu"); break;default: break;}if(i<n-1) printf(" ");}return 0;
}

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

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

相关文章

嵌入式系统

嵌入式系统 目前国内一个普遍认同的嵌入式系统定义是&#xff1a;以应用为中心、以计算机技术为基础&#xff0c;软件硬件可裁剪&#xff0c;适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。&#xff08;引用自《嵌入式系统设计师教程》&#xff09; …

48.Go简要实现令牌桶限流与熔断器并集成到Gin框架中

文章目录 一、简介二、限流器与熔断器在微服务中的作用1.限流器 &#xff1a; 对某个接口单位时间内的访问量做限制2. 熔断器&#xff1a;当服务连续报错&#xff0c;超过一定阈值时&#xff0c;打开熔断器使得服务不可用 三、具体实现1. 限流器实现逻辑&#xff08;以令牌桶算…

算法训练营Day9(字符串,以后补KMP)

总结 卡哥总结 代码随想录 (programmercarl.com) 我的总结 java字符串 字符串&#xff0c;java中String字符串是不可变的&#xff0c;所以一些操作需要转化为字符数组来做&#xff0c; str.toCharArray 类型是char [] 然后针对库函数这里&#xff0c;我个人认为仅仅调…

SQL Server——权限管理

一。SQL Server的安全机制 SQL Server 的安全性是建立在认证和访问许可两种安全机制之上的。其中&#xff0e;认证用来确定登录Sal Server 的用户的登录账户和密码是否正确&#xff0e;以此来验证其是否具有连接SQL Server 的权限;访问许可用来授予用户或组能够在数据库中执行哪…

软件设计师中级软考资料大全(一次过)

2023年下半年第一次参加软件设计师中级软考就过了&#xff0c;整理了下自己的备考资料和学习笔记&#xff0c;有需要可以下载 1.软件设计师中级软考全套官方参考资料及辅导书 软件设计师中级软考全套官方参考资料及辅导书 2.软件设计师中级软考历年真题解析(2004-2023) 软…

在springboot中引入参数校验

一、概要 一般我们判断前端传过来的参数&#xff0c;需要对某些值进行判断&#xff0c;是否满足条件。 而springboot相关的参数校验注解&#xff0c;可以解决我们这个问题。 二、快速开始 首先&#xff0c;我用的springboot版本是 3.1.5 引入参数校验相关依赖 <!--1…

2023五岳杯量子计算挑战赛数学建模思路+代码+模型+论文

目录 计算力网络&#xff08;CPN&#xff09;是一种新型的信息基础设施&#xff0c;完整论文代码见文末 问题描述 2.1 问题1 2.2 问题2 2.3 问题3 问题1的解答过程&#xff1a; 问题3的解答过程&#xff1a; 决策优化应用场景&#xff1a;人工智能模型超参数调优 背景信…

最新V2Board 面板搭建教程(一)

1、购买服务器 2、解析域名并放行端口&#xff0c;Cloudflare官网&#xff1a;【点击进入】 更多的防火墙设置可查看此文章&#xff1a;【点击进入】 firewall-cmd --zonepublic --add-port端口号/tcp --permanent 顺哥博客 3、安装宝塔面板国际版&#xff0c;官网地址&am…

ELK(四)—els基本操作

目录 elasticsearch基本概念RESTful API创建非结构化索引&#xff08;增&#xff09;创建空索引&#xff08;删&#xff09;删除索引&#xff08;改&#xff09;插入数据&#xff08;改&#xff09;数据更新&#xff08;查&#xff09;搜索数据&#xff08;id&#xff09;&…

Kafka性能调优:高吞吐、低延迟的数据流

Apache Kafka作为一种高性能、分布式流处理平台&#xff0c;对于实时数据的处理至关重要。本文将深入讨论Kafka性能调优的关键策略和技术&#xff0c;通过丰富的示例代码为大家提供实际操作指南&#xff0c;以构建高吞吐、低延迟的数据流系统。 Broker 配置的优化 首先&#…

Cisco Packet Tracer配置命令——交换机篇

交换机VLAN配置 在简单的网络环境中&#xff0c;当交换机配置完端口后&#xff0c;即可直接应用&#xff0c;但若在复杂或规模较大的网络环境中&#xff0c;一般还要进行VLAN的规划&#xff0c;因此在交换机上还需进行 VLAN 的配置。交换机的VLAN配置工作主要有VLAN的建立与删…

【银行测试】第三方支付平台业务流,功能/性能/安全测试方法...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、第三方支付平台…

dorker使用一

1.1&#xff0c;先卸载老的 yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine1.2 ,安装准备 安装所需的软件包。yum-utils 提供了 yum-config-manager &#xff0c;并且 devic…

DSP外部中断笔记

中断原理 三部分 注意 &#xff0c;外部中断使能&#xff0c;PIE使能&#xff0c;CPU中断使能 外部中断有7个&#xff0c;PIE有12组&#xff0c;一个组有8个中断复用。只有一个CPU中断可执行。 外部中断原理 1、外部中断概述 外部中断结构图 外部中断XINT1对应的是0到31GPI…

在vue中深度选择器的使用

一、为什么要使用深度选择器 在vue中&#xff0c;当我们使用了第三方库中的组件时&#xff0c;想要更改一些样式&#xff0c;达到我们想要的效果&#xff0c;由于scoped的影响直接编写同名样式时&#xff0c;是覆盖不了组件内的样式的。 为了达到我们想要的效果&#xff0c;…

区块链实验室(28) - 拜占庭节点劫持区块链仿真

在以前的FISCO环境中仿真拜占庭节点攻击区块链网络。该环境共有100个节点&#xff0c;采用PBFT作为共识机制&#xff0c;节点编号分别为&#xff1a;Node0&#xff0c;Node&#xff0c;… &#xff0c;Node99。这100个节点的前2010区块完全相同&#xff0c;自区块2011开始分叉。…

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…

如何将idea中导入的文件夹中的项目识别为maven项目

问题描述 大家经常遇到导入某个文件夹的时候&#xff0c;需要将某个子文件夹识别为maven项目 解决方案

计算整数各位数字之和 C语言xdoj29

时间限制: 1 S 内存限制: 1000 Kb 问题描述: 假设n是一个由最多9位数字&#xff08;d9, …, d1&#xff09;组成的正整数。编写一个程序计算n的每一位数字之和 输入说明: 输入数据为一个正整数n 输出说明: 对整数n输出它的各位数字之和后换行 输入样例: …

金融行业文件摆渡,如何兼顾安全和效率?

金融行业是数据密集型产业&#xff0c;每时每刻都会产生海量的数据&#xff0c;业务开展时&#xff0c;数据在金融机构内部和内外部快速流转&#xff0c;进入生产的各个环节。 为了保障基础的数据安全和网络安全&#xff0c;金融机构采用网络隔离的方式来隔绝外部网络的有害攻击…