C 语言基础题:PTA L1-027 出租

news2024/10/5 5:37:45

下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

程序源码:

#include <stdio.h>  // 引入标准输入输出库  
#include <stdint.h> // 引入整数类型库  

int main(void)  // 主函数  
{
	uint8_t buf[10], buf2[11], flag = 0; // 定义两个数组和一个标志位,buf用于统计数字出现次数,buf2用于记录数字首次出现的位置,flag用于控制输出格式  
	char c;  // 定义字符变量,用于读取输入中的每个字符  
	int8_t x = 0, i, j;  // 定义整数变量,x用于循环控制,i、j用于嵌套循环中的计数  

	memset(buf, 0, 10);  // 将buf数组初始化为0  

	while (1)  // 无限循环,直到遇到非数字字符  
	{
		c = getchar();  // 从标准输入中读取一个字符  
		if (c >= '0' && c <= '9')  // 如果该字符是数字字符(0-9)  
		{
			buf[c - '0']++;  // 将该数字对应的计数器加1  
			buf2[x++] = c - '0';  // 将该数字首次出现的位置记录在buf2数组中,并将x自增1  
		}
		else  // 如果该字符不是数字字符  
		{
			break;  // 跳出循环  
		}
	}

	printf("int[] arr = new int[]{");  // 输出Java代码中的数组定义语句  
	for (x = 9; x >= 0; x--)  // 从大到小遍历buf数组  
	{
		if (buf[x] > 0)  // 如果该数字出现过  
		{
			if (flag == 0)  // 如果还没有输出过数字  
			{
				printf("%d", x);  // 输出该数字  
				flag = 1;  // 将标志位设为1,表示已经输出过数字  
			}
			else  // 如果已经输出过数字  
			{
				printf(",%d", x);  // 输出该数字和逗号  
			}
		}
	}
	printf("};\n");  // 输出数组定义语句的结束符号和分号、换行符  

	flag = 0;  // 将标志位重置为0,用于控制输出格式  
	printf("int[] index = new int[]{");  // 输出Java代码中的数组定义语句  
	for (x = 0; x < 11; x++)  // 遍历buf2数组  
	{
		j = 0;  // 定义计数器j,用于记录数字首次出现的位置(从右往左数)  
		for (i = 9; i >= 0; i--)  // 从大到小遍历buf数组  
		{
			if (buf[i] > 0)  // 如果该数字出现过  
			{
				if (buf2[x] != i)  // 如果buf2中记录的数字与当前遍历到的数字不同  
				{
					j++;  // 将计数器j加1  
				}
				else  // 如果buf2中记录的数字与当前遍历到的数字相同  
				{
					if (flag == 0)  // 如果还没有输出过数字的位置信息  
					{
						printf("%d", j);  // 输出该数字的位置信息(从右往左数)  
						flag = 1;  // 将标志位设为1,表示已经输出过位置信息  
					}
					else  // 如果已经输出过数字的位置信息  
					{
						printf(",%d", j);  // 输出该数字的位置信息和逗号  
					}
					break;  // 跳出内层循环,继续遍历下一个数字的位置信息  
				}
			}
		}
	}
	printf("};\n");  // 输出数组定义语句的结束符号和分号、换行符  
}

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

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

相关文章

springboot 捕获数据库唯一索引导致的异常

在一些业务场景中,需要保证数据的唯一性,一般情况下,我们会先到数据库中去查询是否存在,再去判断是否可以插入新的数据.如果是在高并发的情况下,可能还是会出现重复的情况.这时候可能就需要用到锁.也可以在数据库中设置唯一索引. 如果使用唯一索引,在插入相同数据的情况下会抛出…

【postgresql】ERROR: column “xxxx.id“ must appear in the GROUP BY

org.postgresql.util.PSQLException: ERROR: column "xxx.id" must appear in the GROUP BY clause or be used in an aggregate function 错误&#xff1a;列“XXXX.id”必须出现在GROUP BY子句中或在聚合函数中使用 在mysql中是正常使用的&#xff0c;在postgre…

GAN笔记:利普希茨连续(Lipschitz continuity)

利普希茨连续&#xff08;Lipschitz continuity&#xff09;是一个数学概念&#xff0c;用于描述一个函数在其定义域内的变化程度。在生成对抗网络&#xff08;GAN&#xff09;中&#xff0c;利普希茨连续性对于鉴别器&#xff08;Discriminator&#xff09;的设计和训练具有重…

麻将技术从入门到高手,麻将听牌从基础到进阶

一、教程描述 本套麻将教程&#xff0c;大小8.82G&#xff0c;共有132个文件。 二、教程目录 麻将教程001-麻将的基本概念.mp4 麻将教程002-数牌的特性.mp4 麻将教程003-好坏搭判断.mp4 麻将教程004-拆搭原则.mp4 麻将教程005-听牌攻略.mp4 麻将教程006-进程判断.mp4 …

MySQL高级语句(第二部分)

MySQL高级语句(第二部分)一、视图表 create view1、视图表概述2、视图表能否修改&#xff1f;&#xff08;面试题&#xff09;3、基本语法3.1 创建3.2 查看3.3 删除 4、通过视图表求无交集值 二、case语句三、空值(null) 和 无值(’ ) 的区别四、正则表达式五、存储过程1、简介…

【LeetCode热题100】--238.除自身以外数组的乘积

238.除自身以外数组的乘积 思路&#xff1a; 利用索引左侧所有数字的乘积和右侧所有数字的乘积&#xff08;即前缀和后缀&#xff09;相乘得到答案 算法&#xff1a; 1.初始化两个空数组L和R&#xff0c;对于给定索引i&#xff0c;L[i]代表的是i左侧所有数字的乘积&#xff…

基于springboot会员制医疗预约服务管理信息系统springboot017

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载

2023最新PS(photoshop)WinMac免费下载安装包及教程内置AI绘画-网盘下载 2023最新PS(photoshop)免费下载安装教程来咯&#xff5e; 「PhotoShop」全套&#xff0c;winmac&#xff1a; https://pan.quark.cn/s/9d8d8ef5c400#/list/share 所有版本都有 1&#xff0c;复制链接…

高并发下双重检测锁DCL指令重排问题剖析

文章目录 一、引言1.1 双重检查锁定&#xff08;Double-Checked Locking&#xff0c;简称DCL&#xff09;定义介绍1.2 高并发环境下DCL的应用和优势 二、DCL存在的问题2.1 DCL的代码示例2.2 指令重排的定义和工作原理2.3 指令重排导致DCL失效的情况分析 三、深入分析指令重排和…

「大数据-2.1」HDFS集群启停命令

目录 一、HDFS集群一键启停脚本 1. HDFS集群的一键启动脚本 2. HDFS集群的一键关闭脚本 二、单进程启停 1. hadoop-daemon.sh脚本 2. hdfs脚本 三、总结 1. 一键启停脚本 2. 独立进程启停 一、HDFS集群一键启停脚本 Hadoop HDFS组件内置了HDFS集群的一键启停脚本。 1. HDFS集群…

JavaScript 期约 Promise 总结

同步与异步的概念 JavaScript 是一门单线程的语言&#xff0c;这意味着它在任何给定的时间只能执行一个任务。 然而&#xff0c;JavaScript 通过异步编程技术来处理并发操作&#xff0c;以避免阻塞主线程的情况。 在上图中&#xff0c;同步行为的进程 A 因为等待进程 B 执行完…

深入浅出Java的多线程编程——第一篇

目录 1. 认识线程&#xff08;Thread&#xff09; 1.1 概念 1.1.1 线程是什么 1.1.2 为啥需要线程 1.1.3 进程和线程的区别 1.1.4 Java的线程和操作系统线程的关系 1.2 第一个多线程程序 1.3 创建线程的方式&#xff08;5种&#xff09; 1.3.1 继承Thread类 1.3.2 实现…

电脑开机慢问题的简单处理

电脑用久了&#xff0c;开机时间要10-20分钟特别慢&#xff0c;一下介绍两种简单有效处理方式&#xff0c;这两种方式经测试不会影响原系统软件的使用&#xff1a; 方式一&#xff1a;禁用非必要启动项【效果不是很明显】 利用360里面的优化加速禁用启动项【禁用启动项还有其…

红色模板和黑色模板的区别

红色建筑模板和黑色建筑模板是常见的建筑支模材料&#xff0c;它们在颜色、材料、性能和适用范围等方面存在显著的区别。下面将详细介绍这两种建筑模板的区别。 首先&#xff0c;红色建筑模板通常由胶合板或其他木材制成&#xff0c;外观呈红色&#xff0c;而黑色建筑模板则采用…

MySQL数据库入门到精通6--进阶篇(锁)

5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…

沐风老师3DMAX刀剑轨迹拖尾插件SwordTrails使用方法详解

3DMAX刀剑轨迹拖尾插件SwordTrails使用教程 SwordTrail刀剑轨迹拖尾插件&#xff0c;是一款简单的运动轨迹特效工具。 【适用版本】 3dmax2011-2023&#xff08;不仅于此范围&#xff09; 【安装方法】 该插件无需安装&#xff0c;使用时直接拖动插件脚本文件到3dmax视口中打…

联机手写汉字识别系统技术要求与测试规程

声明 本文是学习GB-T 18790-2010 联机手写汉字识别系统技术要求与测试规程. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了联机手写汉字识别系统的技术要求和测试规程。 本标准适用于微型计算机、手持式信息处理设备等数字化设…

功能定义-后方碰撞预警

功能概述 后方碰撞预警(Rear Collision Warning)&#xff0c;简称RCW&#xff0c;其功能表现为实时监测车辆后方环境&#xff0c;并在可能受到后方碰撞危险时发出警告信息 报警区域 其中&#xff1a; L&#xff1a;表示后方盲区&#xff0c;受布置及传感器FOV影响 W&#xff1…

Java实现byte数组与Hex互转

十六进制字符的输出大写字符&#xff1a;0123456789ABCDEF 十六进制字符的输出小写字符&#xff1a;0123456789abcdef下面使用十六进制大写字符。 1、方式1 public class HexStringUtils {private static final char[] HEX_CHAR_TABLE {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,…

00-MySQL数据库的使用-上

一 数据库基础知识 先谈发音 MySQL如何发音&#xff1f;在国内MySQL发音有很多种&#xff0c;Oracle官方文档说 他们念作 My sequal[si:kwəl]。 数据库基本概念 数据 数据&#xff08;Data&#xff09;是指对客观事物进行描述并可以鉴别的符号&#xff0c;这 些符号是可识别…