PTA乙级-1041 考试座位号 (15分)-C语言版

本题开始,格式和以前不同,方便发表。

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。
输出格式:
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。
输入样例:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出样例:
3310120150912002 2
3310120150912119 1

方法一:用结构体,因为每个学生有三个属性,所以用结构体清晰明了。建议用方法一

#include<stdio.h>
typedef struct student{
	char zkz[20];
	int sj;
	int ks;
}Student;
int main(){
	int i,j,N,M;
	scanf("%d",&N);
	Student s[N];
	for (i=0;i<N;i++){
		scanf("%s%d%d",&s[i].zkz,&s[i].sj,&s[i].ks);
	}
	scanf("%d",&M);
    int a[M];
	for (i=0;i<M;i++){
		scanf("%d",&a[i]);
	}
	for (i=0;i<M;i++){
		for (j=0;j<N;j++){
			if (a[i]==s[j].sj){
				printf("%s %d\n",s[j].zkz,s[j].ks);
			}
		}
	}
	return 0;
}

方法二:二维数组

#include<stdio.h>
int main(){
	int i,j,k,N,M,flag;
	scanf("%d",&N);
	getchar();
	char str[N][30];
	for (i=0;i<N;i++){
		gets(str[i]);
	}
	scanf("%d",&M);
	int a[M];
	for (i=0;i<M;i++){
		scanf("%d",&a[i]);
	}
	for (i=0;i<M;i++){
		for (j=0;j<N;j++){
			flag = str[j][17]-'0';
			printf("%d\n",flag);
			if (a[i]==flag){
				for (k=0;k<16;k++){
					printf("%c",str[j][k]);
				}
				printf(" %c\n",str[j][19]);
				break;
			}
		}
	}
	return 0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 题目描述 本题要求实现一个打印月历的简单函数。 函数接口定义: void PrintCalendar( int year, int month ); 函数PrintCalendar应打印指定年月的月历,输出格式见样例。其中输出的每一行末尾均须有一个换行符。如果输入的年月不合法,则输出一行字符串"Not Found"。 裁判测试程序样例: #include <stdio.h> void PrintCalendar( int year, int month ); int main() { int year, month; scanf("%d %d", &year, &month); PrintCalendar(year, month); return 0; } 输入样例1: 2011 9 输出样例1: September 2011 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 输入样例2: 2008 2 输出样例2: February 2008 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 输入样例3: 2007 13 输出样例3: Not Found 题目解析 本题要求实现一个打印月历的简单函数。可以先判断输入的年月是否合法,如果不合法则输出"Not Found"。如果合法,则可以根据输入的年月计算出该月的第一天是星期几,然后根据该月的天数和第一天是星期几,输出该月的月历。 参考代码 ### 回答2: pta7-6 打印月历 题目要求我们能够输出一个月的日历。这是一个较为复杂的问题,需要用到一些算法和编程技巧。 首先,我们需要知道一个月的第一天是星期几。这可以使用日期计算的方法得到。可以使用下面的公式计算: weekday = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400 + 1) % 7; 其中,day、month、year 是表示当前日期的日、月、年数。这个公式的结果是一个 0 到 6 的数字,0 表示周日,1 表示周一,以此类推。 接下来,我们需要找出一个月的总天数。这也可以使用日期计算的方法。一个月的天数最多是 31 天,最少是 28 天(2 月)。可以根据月份来确定天数。需要注意的是,闰年的 2 月有 29 天,判断闰年的方法是: if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { isLeapYear = true; } 最后,我们需要将这些信息显示在屏幕上。要显示一个月的日历,需要按照日期排列出来,每一行显示一周的信息。可以使用一个二维数组来表示一个月的日历。首先,要将月历的表头显示出来,包括月份和星期。然后,逐行输出每一周的日期,如果日期超出了总天数,则输出空格。 题目要求一次显示三个月的日历。为了避免代码重复,可以将上述代码封装成一个函数,输入参数是年和月份,输出是一个二维数组。对于每个月份,调用这个函数来获取日历,然后按照题目要求显示即可。 综上所述,pta7-6 打印月历 题目需要我们掌握日期计算和二维数组使用的知识,需要使用一些算法和编程技巧来解决。如果对这些知识点不熟悉,可以多做相关的编程题目来增强理解和练习。 ### 回答3: 这道题要求我们编写程序打印出指定年月的月历。打印月历的方法有很多种,下面我来介绍一种简单的方法。 首先,我们需要从用户输入获取年份和月份,可以使用`input`函数。代码如下: ```python year = int(input("请输入年份:")) month = int(input("请输入月份:")) ``` 接着,我们需要计算出该月份的第一天是星期几,和该月份的天数。这可以使用`calendar`模块中的`monthrange`函数来实现。代码如下: ```python import calendar week_day, month_days = calendar.monthrange(year, month) ``` 然后,我们需要打印出月历的表头。由于每个月的表头都比较长,我们可以将其写成一个函数,方便调用。代码如下: ```python def print_calendar_title(week_day): print("日 一 二 三 四 五 六") print("-" * 20) print(" " * week_day, end="") ``` 最后,我们需要打印出月历的每一行。对于每一行,我们只需要根据该月份的天数和第一天是星期几来判断需要打印出哪些数字。代码如下: ```python def print_calendar_rows(week_day, month_days): for day in range(1, month_days+1): print(f"{day:2d}", end=" ") week_day += 1 if week_day == 7: print() week_day = 0 print() ``` 接下来,我们可以将以上三个函数组合起来,就可以打印出指定年月的月历了。完整代码如下: ```python import calendar def print_calendar_title(week_day): print("日 一 二 三 四 五 六") print("-" * 20) print(" " * week_day, end="") def print_calendar_rows(week_day, month_days): for day in range(1, month_days+1): print(f"{day:2d}", end=" ") week_day += 1 if week_day == 7: print() week_day = 0 print() year = int(input("请输入年份:")) month = int(input("请输入月份:")) week_day, month_days = calendar.monthrange(year, month) print_calendar_title(week_day) print_calendar_rows(week_day, month_days) ``` 通过以上代码,我们就可以成功打印出指定年月的月历了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sky丶Mamba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值