PTA_语法入门赛

文章目录

    • 7-1 格式化数字的显示-简单版
    • 7-2 三角形判定
    • 7-3 表面积和体积
    • 7-4 特殊数列求和
    • 7-5 矩阵中的鞍点
    • 7-6 反素数
    • 7-7 ISBN转换

题源:https://pintia.cn/problem-sets/1768428576024760320/overview

7-1 格式化数字的显示-简单版

在金融领域对金额之类的数字,一般是在整数部分的每三个数字加一个千分位分隔符,分别对应1,000(千),1,000,000(百万),1,000,000,000(十亿)等等,另外在小数部分保留2位小数。例如1234567格式化后显示为1,234,567.00。

本题目要求读入1个7位整数,要求进行格式化的输出,输出时在合适的地方加上千分位分隔符,并补齐小数点后的两位。

分析

  • 输入输出
  • 直接定义7个char或者开数组
#include<stdio.h>int main(){char s[10];scanf("%s", s);printf("%c,%c%c%c,%c%c%c.00",s[0],s[1],s[2],s[3],s[4],s[5],s[6]);
}

7-2 三角形判定

给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。

分析

  • 任意两边之和大于第三边就能构成三角形。
  • 即最小的两边和大于第三边。
#include<stdio.h>
int max(int a,int b,int c){if(a<b) a=b;if(a<c) a=c;return a;
}
int main(){int a,b,c; scanf("%d%d%d",&a,&b,&c);int y = max(a,b,c);printf("%s", (a+b+c-y > y) ? "Yes":"No");return 0;
}

7-3 表面积和体积

读入5个整数a, b, c, d 和 e,计算物体的表面积和体积。你可以想像该物体是一个长宽高为a, b, c 的长方体,每一面中央都是凹进去的,而凹进去的深度为 d,沒凹进去的边框宽度 e。
如图:

在这里插入图片描述

分析

  • 表面积:做加法,在abc的基础上加小方块
  • 体积:做减法,在abc的基础上减去小方块
#include<stdio.h>
#define p (2*e)
int main(){int a,b,c,d,e;scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);int s=2*(a*b+b*c+a*c) + 4*d*(2*(a+b+c)-6*p);int v=a*b*c-2*d*((a-p)*(c-p) + (b-p)*(c-p) +(a-p)*(b-p));printf("%d %d",s,v);return 0;
}

7-4 特殊数列求和

用户输入一个小于10的正整数,求1 + 12 + 123 + 1234+ …… 的前n项的和,当输入大于或等于10时,输出“data error!”

分析

  • for循环枚举,同步迭代数据
#include<stdio.h>
int main(){int n; scanf("%d", &n);if(n>=10){puts("data error!");}else{int ans = 0, t=0;for(int i=1; i<=n;i++){ans += t*10+i;t = t*10 + i;//printf("%d\n", ans);}printf("%d\n", ans);}return 0;
}

7-5 矩阵中的鞍点

如果矩阵A中存在元素A[i][j]满足下列条件:A[i][j]是第i行中值最大的元素,且又是第j列中值最小的元素,则称之为该矩阵的鞍点。请编写程序判断矩阵是否存在鞍点,并输出。

分析

  • 将问题分解为两个条件:1.同行最大、2.同列最小
  • 于是考虑开一个二维数组 b[i][j],当 b[i][j]=0\1\2时分别代表(i,j)这个点一个都不满足、满足一个、满足两个条件。
  • 最后答案就是满足两个条件的点。
#include<stdio.h>
#define  N 100
#include<string.h>
int a[N][N],b[N][N];int main(){int t;scanf("%d", &t);while(t--){memset(b, 0, sizeof(b));int m,n; scanf("%d%d", &m, &n);for(int i=1; i<=m; i++)for(int j=1; j<=n; j++) scanf("%d", &a[i][j]);// 同行最大,在某一列for(int i=1; i<=m; i++){int id=1;for(int j=1; j<=n; j++)if(a[i][id] < a[i][j])id = j;b[i][id] = 1;}// 同列最小,在某一行for(int j=1; j<=n; j++){int id =1;for(int i=1; i<=m; i++)if(a[id][j] > a[i][j])id = i;b[id][j] ++;}int x=0,y=0;for(int i=1; i<=m; i++)for(int j=1; j<=n; j++)if(b[i][j]==2)x=i,y=j;// x--, y--;if(x) printf("(%d,%d)%d\n",x-1,y-1,a[x][y]);else puts("NONE");}
}

7-6 反素数

反素数寻找。反素数是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数且均不是回文数,所以13和31都是反素数。

分析

  • 使用函数解决更加方便,具体看代码
#include<stdio.h>int isp(int n){for(int i=2; i<=n/i; i++)if(n%i==0) return 0;return n>1;
}
int re(int n){int t=n, a=0;while(t) a=a*10+t%10, t/=10;return a;
}
int ish(int n){return n == re(n);
}
int main(){int n; scanf("%d", &n);for(int i=1; i<n; i++){// printf("%d %d\n", re(i), isp(i));if(isp(i) && isp(re(i)) && !ish(i)){printf("%d ", i);}}return 0;
}

7-7 ISBN转换

图书都有唯一的ISBN码(书号)标识,ISBN分为10位(ISBN-10)和13位(ISBN-13,以“978”开头)两种。

设ISBN-13为978-7-302-56474-4,从ISBN-13转换为ISBN-10的具体步骤如下:
(1)从ISBN-13中删除前缀978和校验码(最后一位),得到ISBN-10的前面部分:7-302-56474,然后去掉该部分的“-”得到一个9位数字730256474

(2)重新计算校验码。将上一步得到的9位数字依序分别乘以从10,9,8,……,3,2,将其乘积相加得到累加和sum,求余数r=sum%11;若r=0,则校验码为0;否则求11与r的差数d=11-r,若d=10,则以“X”来表示校验码,否则校验码为d。即:
sum=7×10+3×9+0×8+2×7+5×6+6×5+4×4+7×3+4×2=216,r=216 % 11=7,d=11-7=4,因此校验码为4。

最终得到ISBN-10:7-302-56474-4。

要求把书号从ISBN-13转换为ISBN-10。

分析

  • 模拟,看清题目描述
  • 主要是想到较为简单的实现方式
  • 可以使用多个变量,但是代码较为繁琐
  • 考虑使用数组
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){char s[33]; scanf("%s",s);int n=strlen(s), p=10, sum=0;for(int i=4; i<n-1; i++)if(isdigit(s[i])){sum += (s[i]-'0') * p--;}int r = sum%11;if(r==0) s[n-1]='0';else {int d=11-r;if(d==10) s[n-1]='X';else s[n-1]=d+'0';}puts(s+4);return 0;
}

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

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

相关文章

主流公链 - Fantom

Fantom&#xff1a;高性能的区块链协议 Fantom是一种开创性的区块链协议&#xff0c;旨在革新去中心化应用和数字金融领域 技术特点 共识机制 Lachesis协议&#xff1a;Fantom使用了Lachesis协议作为其共识算法。Lachesis是一种 异步拜占庭容错&#xff08;ABFT&#xff09;共…

java数据结构与算法刷题-----LeetCode200. 岛屿数量

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 深度优先遍历 深度优先遍历 解题思路&#xff1a;时间复杂度O( …

Reversing Linked List

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specifi…

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之云原生架构设计理论与实践&#xff08;12&#xff09; 所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第3节 云原生架构相关技术 14.3.2 云原生微服务 1. 微服务发展背景 过去开发一个后端应用最为直接的方…

2023年第十四届蓝桥杯 - 省赛 - Python研究生组 - A.工作时长

题目 数据文件&#xff1a;https://labfile.oss.aliyuncs.com/courses/21074/records.txt Idea 直接通过 datetime 模块加载时间字符串进行格式化&#xff0c;然后对时间列表进行排序&#xff0c;最后两两计算时间差。 Code Python from datetime import datetimetime_lis…

在js中本地存储的数组如何转成对象

一、此方法仅适用一维数组&#xff1b; 二、效果图 使用后 三、js代码。 function gong(s){console.log(s);let data;let kk1;// 检查ask_id是否不为空 if (s.ask_id null ) { kk1}else{kk2let dd;dds.data;sessionStorage.setItem(wenda,JSON.stringify(dd[0]))window.l…

【Frida】【Android】08_爬虫之网络通信库okhttp3

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

基于深度学习的停车场车辆检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 上图测试结果如下图所示&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 image imread(image_test\test.jpg); image2 image;%图…

HUAWEI 华为交换机 配置 Eth-Trunk 接口流量本地优先转发示例(堆叠)

组网需求 说明 S5720I-10X-PWH-SI-AC 和 S5720I-6X-PWH-SI-AC 不支持此配置。 如 图 3-23 所示&#xff0c;为了增加设备的容量采用设备堆叠技术&#xff0c;将 Switch3 和 Switch4通过专用的堆叠电缆链接起来&#xff0c;对外呈现为一台逻辑交换机。为了实现设备间的备份、…

【深耕 Python】Data Science with Python 数据科学(5)Matplotlib可视化(1)

写在前面 关于数据科学环境的建立&#xff0c;可以参考我的博客&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;1&#xff09;环境搭建 往期数据科学博文&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;2&#xf…

递归算法讲解(结合内存图)

递归算法 递归是快速排序的基础&#xff0c;所以一定要理解基本概念&#xff01; 递归其实就是一种循环 for循环/while循环&#xff0c;循环的是一个代码块 递归循环&#xff0c;循环的是一个方法 递归的定义&#xff0c;作用&#xff0c;本质 本质&#xff1a;方法不断调用…

2024年04月编程语言流行度排名

点击查看最新编程语言流行度排名&#xff08;每月更新&#xff09; 2024年04月编程语言流行度排名 编程语言流行度排名是通过分析在谷歌上搜索语言教程的频率而创建的 一门语言教程被搜索的次数越多&#xff0c;大家就会认为该语言越受欢迎。这是一个领先指标。原始数据来自…