PTA 7-2 4102 气球升起来

文章描述了一个编程挑战,要求读入多组数据,每组包含不同颜色的气球数量,找出最流行的气球颜色。解决方案涉及字符串处理和结构体使用,通过比较不同颜色气球的数量找到出现最多的颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

又到一年竞赛时,每当看到气球升起来,是多么令人兴奋呀。告诉你一个秘密,裁判总是热衷于猜哪题是最流行的题。比赛结束后,只要统计一下所有的气球颜色就能得到答案。
今年,他们决定把这个工作留给你来完成。

输入格式:

输入包括多组测试样例,每个测试数据都是以数字N开始 (0 < N <= 1000) ,它标识分发的气球总数。接下来的N行就是不同颜色的气球,气球颜色是一个不超过15个字符的字符串。
当N=0时表示输入结束。

输出格式:

对于每组数据,输出最流行的问题对应的颜色。这里保证每个测试数据只会有一个答案。

输入样例:

5
green
red
blue
red
red
3
pink
orange
pink
0

输出样例:

red
pink

解题代码:

#include <stdio.h>
#include <string.h>
struct colour
{
	char store[1000];
}c[1000];
int main()
{
	int i,j,k,m,max,b[1000],t,mark;
	char a[16];
	while(scanf("%d",&m)!=EOF)
	{
		if(m==0)
			break;
        memset(c,0,sizeof(c));
		scanf("%s",a);
		for(i=1,k=0,strcpy(c[0].store,a),b[0]=1;i<m;i++)
		{
			scanf("%s",a);
			for(j=0,mark=1;j<=k;j++)
				if(strcmp(c[j].store,a)==0)
				{
					b[j]++;
					mark=0;
				}
			if(mark)
			{
				k++;
				strcpy(c[k].store,a);
				b[k]=1;
			}
		}
		for(i=0,t=0,max=b[0];i<=k;i++)
			if(max<b[i])
			{
				max=b[i];
				t=i;
			}
		printf("%s\n",c[t].store);
	}
	return 0;
}

知识点简述——结构体:

1.结构体声明的一般形式

struct  结构体名称{
成员列表
};

struct colour //结构体 结构体名称
{
	char store[1000];
}c[1000]; //结构体变量的定义

2.结构体变量定义的一般形式 

struct  结构体名  结构体变量名

在本题目的解答中,将结构体变量的定义跟在了结构体声明后面,简化了代码

但要注意的是:这样的定义虽然简便,但是后续不可以再定义新的结构体变量了

3.访问结构体成员的一般形式

结构体变量名.成员名

strcpy(c[k].store,a); //用此形式访问结构体
### PTA7-2 数字格式化 示例与解决方案 对于PTA7-2中的数字格式化问题,可以借鉴Java中`String.format()`方法的行为来理解不同编程环境下的实现逻辑。当处理类似于Java的格式化操作时,需要注意特定于语言的特性差异。 在Java中,使用`String.format()`函数进行格式化输出时,不同的转换字符决定了输出的具体形式[^4]: ```java // Java 中的简单数字格式化例子 public class Main { public static void main(String[] args) { int number = 10; System.out.println(String.format("The formatted number is: %d", number)); double pi = Math.PI; System.out.println(String.format("Pi with two decimal places: %.2f", pi)); float percentage = (float) 85 / 100; System.out.printf("Percentage value as %% notation: %.0f%%\n", percentage * 100); } } ``` 针对PTA7-2题目要求,在C/C++环境下完成类似的整数和浮点数格式化任务可以通过标准I/O库提供的`sprintf`系列函数达成相同效果。下面给出一个简单的实例说明如何按照指定宽度、精度打印数值数据到字符串缓冲区中去: ```c #include <stdio.h> int main(void){ char buffer[50]; // 整型变量格式化输出至buffer数组 int numInt = 123456; sprintf(buffer, "Integer Value:%10d\n", numInt); printf("%s", buffer); // 浮点型变量格式化输出至buffer数组 double numDouble = 3.1415926535; snprintf(buffer, sizeof(buffer), "Float Value(%.2lf):\t%f\n", numDouble, numDouble); printf("%s", buffer); return 0; } ``` 上述代码展示了基本类型的格式控制符以及它们的应用场景;其中包含了设置最小字段宽度(如%10d)、保留指定位数的小数部分(如%.2f)。这些技巧同样适用于其他支持相似语法的语言环境中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳心饼干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值