PAT
life is fantastic
这个作者很懒,什么都没留下…
展开
-
6-5 链式表操作集 (20分)
本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X );List Insert( List L, ElementType X, Position P );List Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode {ElementType Data;PtrToLNode Next;};typed转载 2020-09-14 11:58:02 · 309 阅读 · 0 评论 -
6-2 顺序表操作集 (20分)
本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { Eleme原创 2020-08-23 09:55:58 · 258 阅读 · 0 评论 -
6-1 单链表逆转 (20分)
本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。裁判原创 2020-08-23 09:51:06 · 223 阅读 · 0 评论 -
自测-4 Have Fun with Numbers (20分)
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a diffe原创 2020-08-15 21:52:32 · 162 阅读 · 0 评论 -
浙江大学-PTA-自测-1 打印沙漏 (20分)
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印。***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符号组成的最大的沙漏形状原创 2020-08-14 22:46:57 · 487 阅读 · 0 评论 -
习题9-5 通讯录排序 (20分)
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。输出格式:按照年龄从大到小输出朋友的信息,格式同输出。输入样例:3zhang 19850403 1391原创 2020-08-13 22:11:49 · 249 阅读 · 0 评论 -
习题9-4 查找书籍 (20分)
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。输入样例:3Programming in C21.5Programming in VB18.5Programming in Delphi原创 2020-08-12 22:10:06 · 227 阅读 · 0 评论 -
习题6-8 统计一行文本的单词个数 (15分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。输入格式:输入给出一行字符。输出格式:在一行中输出单词个数。输入样例:Let's go to room 209.输出样例:5代码如下:int main(){ char w[10000]; int i,count=0,t1=0,t2=0; gets(w); for(i=0;w[i]!='\0';i++){ t1=t2;原创 2020-08-08 16:08:47 · 151 阅读 · 0 评论 -
习题6-7 简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。输入样例:1+2*10-10/2=输出样例:10代码如下:#include<stdio.h>int main(){ int i,sum,flag=0原创 2020-08-08 15:59:53 · 156 阅读 · 0 评论 -
习题4-11 兔子繁衍问题 (15分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?**输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。输入样例:30输出样例:9经过分析可知该题就是斐波那契数列问题,第一个月为1只兔子,第二个月为1只兔子,从第三个月开始,该月的兔子数为前两个月兔子的和**代码如下:#include&原创 2020-08-08 15:53:48 · 423 阅读 · 0 评论 -
习题4-9 打印菱形图案 (15分)
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。输入样例:7输出样例: * * * * * * * * * * * * * * * * * * * * * * * * * 代码如下:#include<stdio.h>int main(){ int a[5原创 2020-08-06 14:29:16 · 233 阅读 · 0 评论 -
习题4-10 猴子吃桃问题 (15分)
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?输入格式:输入在一行中给出正整数N(1<N≤10)。输出格式:3输出样例:10代码如下:#include<stdio.h>int main(){ int i,n,t=1,m; scanf("%d",&n); for(i=1;i原创 2020-08-06 14:23:06 · 151 阅读 · 0 评论 -
习题4-7 最大公约数和最小公倍数 (15分)
本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例:511 292输出样例:73 2044代码如下:#include<stdio.h>int main(){ int n,m,temp,i; scanf("%d%d",&n,&m); if(m<n){ temp=m; m=n; n=tem原创 2020-08-06 12:25:44 · 137 阅读 · 0 评论 -
习题4-6 水仙花数 (20分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+3**3。本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407代码如下:#include<stdio.h>int p(int a,int b){ int i,s=1; for(i=1;i<=b;i+原创 2020-08-06 12:19:19 · 225 阅读 · 0 评论 -
习题4-5 换硬币 (20分)
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:13输出样例:fen5:2, fen2:1, fen1:1, total:4fen5:1, fen2:3, fen1:2, total:6fen5:1, fen2:2, fen1:4, total:7fen5:1, fen2:1, fen1:6, total:8count = 4代码如下:#include<stdio.h&原创 2020-08-06 12:11:40 · 307 阅读 · 0 评论 -
习题11-7 奇数值结点链表 (20分)
无头节点(本题答案)**无头节点**(本题答案)struct ListNode *readlist(){ int data; struct ListNode *head=NULL; //头节点为空 struct ListNode *p; while(scanf("%d",&data)&&data!=-1) { struct ListNode *q=(struct ListNode*)malloc(..原创 2020-08-03 17:44:30 · 319 阅读 · 0 评论 -
习题11-8 单链表结点删除 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode *readlist(){ struct ListNode *p,*q,*head=NULL; int data; while(scanf("%d",&data)&&data!=-1){ p=(struct ListNode *)malloc(sizeof(struct ListNode)); p->data=data;原创 2020-08-03 17:34:27 · 222 阅读 · 0 评论 -
习题11-6 查找子串 (20分)
本题要求实现一个字符串查找的简单函数**方法一**:char *search(char *s, char *t){ int i,j,flag=0; i=j=0; char *p; while(t[j]!='\0'&&s[i]!='\0'){ //循环结束的条件 if(s[i]==t[j]&&flag==0){ //第一次找到第一个与s[]相同的字符 flag=1; p=&s[i]; //p指向子串t在s中的首原创 2020-08-02 09:02:11 · 2769 阅读 · 4 评论 -
习题11-5 指定位置输出字符串 (20分)
本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。关于这题以下会给出三种解题思路**第一种方法**char *match( char *s, char ch1, char ch2 ){ int i,flag=0; char *ch; for(i=0;s[i]!='\0';i++){ if(s[i]==ch1&&flag==0){ //第一次找到第一个字符匹配的位置时开始,第二次在遇到原创 2020-08-01 17:30:31 · 552 阅读 · 2 评论 -
习题11-2 查找星期 (15分)
本题要求实现函数,可以根据下表查找到星期,返回对应的序号。关于这道题以下给出了三种解题方案**第一种方法**int getindex(char *s){ int i; i=strlen(s); if(s[0]=='S') return 0; else if(s[0]=='M') return 1; else if(s[0]=='T'&&i==7) return 2; else if(s[0]=='W') return 3; else if(s原创 2020-08-01 11:11:06 · 8950 阅读 · 4 评论