PTA 程序设计天梯赛(121~140题)

article/2025/5/23 2:59:37

文章目录

    • 121、高速公路超速处罚 (15 分)
    • 122、抓老鼠啊~亏了还是赚了? (20 分)
    • 123、用天平找小球 (10 分)
    • 124、求符合给定条件的整数集 (15 分)
    • 125、用扑克牌计算24点 (25 分)
    • 126、近似求PI (15 分)
    • 127、两个数的简单计算器 (10 分)
    • 128、算术入门之加减乘除 (10 分)
    • 129、倒数第N个字符串 (15 分)
    • 130、计算符号函数的值 (10 分)
    • 131、12-24小时制 (15 分)
    • 132、成绩转换 (15 分)
    • 133、求组合数 (15 分)
    • 134、输出全排列 (20 分)
    • 135、魔法优惠券 (25 分)
    • 136、找出最小值 (20 分)
    • 137、通讯录的录入与显示 (10 分)
    • 138、计算物体自由下落的距离 (5 分)
    • 139、时间换算 (15 分)
    • 140、韩信点兵 (10 分)

原创不易,有用请点个赞,感谢各位!

121、高速公路超速处罚 (15 分)

按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。

输入样例1:
65 60
输出样例1:
OK
输入样例2:
110 100
输出样例2:
Exceed 10%. Ticket 200
输入样例3:
200 120
输出样例3:
Exceed 67%. License Revoked

#include<stdio.h>
#include<math.h>
int main()
{float chesu,xiansu;scanf("%f%f",&chesu,&xiansu);//if(chesu<xiansu*1.1)	之前写的判断,这种理解是错误的,弄我了自闭半天^_^哈哈if(chesu-xiansu<xiansu*0.1)printf("OK\n");else if(chesu<xiansu*1.5)printf("Exceed %1.f%%. Ticket 200\n",((chesu-xiansu)/xiansu)*100);elseprintf("Exceed %1.f%%. License Revoked\n",((chesu-xiansu)/xiansu)*100);return 0;
}

122、抓老鼠啊~亏了还是赚了? (20 分)

某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪©,或者什么也不放(X)。捕鼠夹可重复利用,不计成本,奶酪每块3元。
聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥:

若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期。在不高兴期间,不派出老鼠。不高兴期结束之后,派出老鼠。
若有捕鼠夹(T),这只老鼠被引诱吃掉奶酪并被打死(Dead),老鼠们会有长达两天(也就是第二和第三天)的伤心期。在伤心期间,不派出老鼠。伤心期结束之后,派出老鼠。在这种情况下,抓到1只老鼠可获得奖励10元,但同时也耗费了一块奶酪。注意,如果某一天放置了捕鼠夹但老鼠没有出现,则没有耗费奶酪。
若有奶酪©,老鼠吃了奶酪会很开心(Happy!),会有长达两天(第二和第三天)的兴奋期。在兴奋期间,即使叠加了不高兴或者伤心,也必定派出老鼠。在这种情况下,没抓到老鼠,而且耗费了一块奶酪。注意,如果某一天放置了奶酪但老鼠没有出现,则奶酪可以下次再用,没有耗费。
现在给你连续几天的操作序列,且已知第一天肯定会派出老鼠,请判断老鼠每天的状态,并计算盈利。

输入格式:
输入在一行中给出连续的由C或T或X组成的不超过70个字符的字符串,以$结束。字符串中每个字符表示这一天的操作( 即X:什么都不放;T:放捕鼠夹;C:放奶酪)。题目保证至少有一天的操作输入。

输出格式:
要求在第一行输出连续的字符串,与输入相对应,给出老鼠的状态:

! 表示派出老鼠吃到奶酪
D 表示派出老鼠被打死
U 表示派出老鼠无所获

  • 表示没有派出老鼠
    第二行则应输出一个整数表示盈利。(如果有亏损,则是负数)

输入样例1:
TXXXXC$
输出样例1:
D–U-!
4
输入样例2:
CTTCCX$
输出样例2:
!DD–U
11

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{int money=0;int i,j;int flag=0,index=0,kong=1;int pai=1;char s[72];gets(s);//int len = strlen(s);//s[len-1]='\0';for(i=0;s[i]!='$';i++){if(flag<=0 && index==0){if(s[i]=='X'){	printf("U");	index=-1;pai-=1;	}else if(s[i]=='T'){	if(pai>=1){printf("D");	index=-2;money+=7;pai-=2;}}else if(s[i]=='C'){	if(pai>=1){printf("!");	flag=2;money-=3;}}}else if(flag>0 && kong>=0){if(s[i]=='X'){	printf("U");		}else if(s[i]=='T'){	printf("D");kong--;money+=7;	}else if(s[i]=='C'){	printf("!");money-=3;}flag--;}if(kong==-1){	kong=0;	index=-2;	}while(index<0 && s[i+1]!='$'){if(index!=0){printf("-");++index;}i=i+1;if(pai<1)pai++;}if(pai<1)pai++;}printf("\n%d\n",money);return 0;
}

123、用天平找小球 (10 分)

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。

输入格式:
输入在一行中给出3个正整数,顺序对应球A、B、C的重量。

输出格式:
在一行中输出唯一的那个不一样的球。

输入样例:
1 1 2
输出样例:
C

#include<stdio.h>
int max;
void swap(int a,int b,int c)
{max=a;if(max!=b&&max==c){	max=b;	}else if(max!=c&&max==b){	max=c;	}
}
int main()
{int a,b,c;scanf("%d%d%d",&a,&b,&c);swap(a,b,c);if(max==a)printf("A\n");else if(max==b)printf("B\n");else printf("C\n");return 0;
}

124、求符合给定条件的整数集 (15 分)

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:
输入在一行中给出A。

输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

#include<stdio.h>
int main()
{int i,j,k;int huan_hang=0;	//控制空格和换行int t,n;scanf("%d",&t);n=t;for(i=n;i<=n+3;i++){for(j=n;j<=n+3;j++){if(i!=j){for(k=n;k<=n+3;k++){if(j!=k&&i!=k){huan_hang++;	//控制空格和换行if(huan_hang<=5)printf("%d%d%d ",i,j,k);elseprintf("%d%d%d",i,j,k);if(huan_hang%6==0){printf("\n");huan_hang=0;}}}}}}return 0;
}

125、用扑克牌计算24点 (25 分)

一副扑克牌的每张牌表示一个数(J、Q、K 分别表示 11、12、13,两个司令都表示 6)。任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个且可以重复取。运算遵从一定优先级别,可加括号控制,最终使运算结果为 24。请输出一种解决方案的表达式,用括号表示运算优先。如果没有一种解决方案,则输出 -1 表示无解。

输入格式:
输入在一行中给出 4 个整数,每个整数取值在 [1, 13]。

输出格式:
输出任一种解决方案的表达式,用括号表示运算优先。如果没有解决方案,请输出 -1。

输入样例:
2 3 12 12
输出样例:
((3-2)*12)+12

#include<stdio.h>
#define N 4//下面这个函数用于分配不同的四种符号
static int result(int arr[],char op[]);//根据不同的优先级不同的符号计算结果的函数
static double Result(double x, double y, int op);//下面这五个函数是分配不同的优先级
//((A op B) op C) op D
static double result1(double num1,double num2,double num3,double num4,int op1,int op2,int op3);
//(A op (B op C)) op D
static double result2(double num1,double num2,double num3,double num4,int op1,int op2,int op3);
//A op (B op (C op D))
static double result3(double num1,double num2,double num3,double num4,int op1,int op2,int op3);
//A op ((B op C) op D)
static double result4(double num1,double num2,double num3,double num4,int op1,int op2,int op3);
//(A op B) op (C op D)
static double result5(double num1,double num2,double num3,double num4,int op1,int op2,int op3);int main()
{			int num[N],i,j,k,t;char op[5] ={'睿','+','-','*','/'};	//把四种运算符都存入数组中for(i=0;i<N;i++)	//随意输入四个数scanf("%d",&num[i]);//将4个数字组合成各个位上互不相同的数for(i=0;i<N ;i++){for(j=0;j<N;j++){if(i==j) continue;for(k=0;k<N;k++){if(i==k || j==k) continue;for(t=0;t<N;t++){ if(i==t || j==t || k==t) continue;int zuhe_num[N] = {num[i],num[j],num[k],num[t]};	/*	排列四种数字出现的不同顺序,因为有了运算符的不同,所以计算的结果自然是不同的	*/int swap =	result(zuhe_num,op);	//得到值是是否已经有一组数据成立了 24的结果,有就直接结束if(swap)//若已有解,则直接结束程序{return 0;}}}}	}//无解printf("-1");	
}
static int result(int zuhe_num[],char op[])	//下面这个函数用于分配不同的四种符号
{double sum =0;//穷举所有运算组合for(int i=1;i<=N;i++){for(int j=1;j<=N;j++){for(int k=1;k<=N;k++){sum = result1(zuhe_num[0],zuhe_num[1],zuhe_num[2],zuhe_num[3],i,j,k);if(sum==24)		//如果条件满足直接输出,并返回1结束程序,依次类推下面的一样{//((A op B) op C) op Dprintf("((%d%c%d)%c%d)%c%d\n",zuhe_num[0],op[i],zuhe_num[1],op[j],zuhe_num[2],op[k],zuhe_num[3]);return 1;}sum = result2(zuhe_num[0],zuhe_num[1],zuhe_num[2],zuhe_num[3],i,j,k);if(sum==24){//(A op (B op C)) op Dprintf("(%d%c(%d%c%d))%c%d\n",zuhe_num[0],op[i],zuhe_num[1],op[j],zuhe_num[2],op[k],zuhe_num[3]);return 1;}sum = result3(zuhe_num[0],zuhe_num[1],zuhe_num[2],zuhe_num[3],i,j,k);if(sum==24){//A op (B op (C op D))printf("%d%c(%d%c(%d%c%d))\n",zuhe_num[0],op[i],zuhe_num[1],op[j],zuhe_num[2],op[k],zuhe_num[3]);return 1;}sum = result4(zuhe_num[0],zuhe_num[1],zuhe_num[2],zuhe_num[3],i,j,k);if(sum==24){//A op ((B op C) op D)printf("%d%c((%d%c%d)%c%d)\n",zuhe_num[0],op[i],zuhe_num[1],op[j],zuhe_num[2],op[k],zuhe_num[3]);return 1;}sum = result5(zuhe_num[0],zuhe_num[1],zuhe_num[2],zuhe_num[3],i,j,k);if(sum==24){//(A op B) op (C op D)printf("(%d%c%d)%c(%d%c%d)\n",zuhe_num[0],op[i],zuhe_num[1],op[j],zuhe_num[2],op[k],zuhe_num[3]);return 1;}				}}}//如果没有解决方案return 0;
}
static double Result(double num1, double num2, int op)		//根据不同的优先级不同的符号计算结果的函数
{if(op==1)		//根据传过来的符号进行判断,并执行相应的计算return num1+num2;else if(op==2)return num1-num2;else if(op==3)return num1*num2;else if(op==4)return num1/num2;elsereturn 0;
}
//下面这五个函数是分配不同的优先级
static double result1(double num1,double num2,double num3,double num4,int op1,int op2,int op3)	
{														//((A op B) op C) op Ddouble r1,r2,r3;r1 = Result(num1,num2,op1);r2 = Result(r1,num3,op2);r3 = Result(r2,num4,op3);return r3;
}
static double result2(double num1,double num2,double num3,double num4,int op1,int op2,int op3)
{														//(A op (B op C)) op Ddouble r1,r2,r3;r1 = Result(num2,num3,op2);r2 = Result(num1,r1,op1);r3 = Result(r2,num4,op3);return r3;
}
static double result3(double num1,double num2,double num3,double num4,int op1,int op2,int op3)
{														//A op (B op (C op D))double r1,r2,r3;r1 = Result(num3,num4,op3);r2 = Result(num2,r1,op2);r3 = Result(num1,r2,op1);return r3;	
}
static double result4(double num1,double num2,double num3,double num4,int op1,int op2,int op3)
{														//A op ((B op C) op D)double r1,r2,r3;r1 = Result(num2,num3,op2);r2 = Result(r1,num4,op3);r3 = Result(num1,r2,op1);return r3;
}static double result5(double num1,double num2,double num3,double num4,int op1,int op2,int op3)
{														//(A op B) op (C op D)double r1,r2,r3;r1 = Result(num1,num2,op1);r2 = Result(num3,num4,op3);r3 = Result(r1,r2,op2);return r3;
}

126、近似求PI (15 分)

7-1 近似求PI (15 分)
本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

在这里插入图片描述

输入格式:
输入在一行中给出精度eps,可以使用以下语句来读输入:

scanf(“%le”, &eps);
输出格式:
在一行内,按照以下格式输出π的近似值(保留小数点后5位):

PI = 近似值
输入样例:
1E-5
输出样例:
PI = 3.14158

#include<stdio.h>
double fenzi(int n);
double fenmu(int n);
int main()
{int n=0;double sum=0;double eps;scanf("%le",&eps);do{sum+=fenzi(n)/fenmu(n);n++;}while((fenzi(n)/fenmu(n))>=eps);if(sum>=eps)sum+=fenzi(n)/fenmu(n);printf("PI = %.5lf", sum * 2);return 0;
}
double fenzi(int n)
{if(n==0)return 1;return n*fenzi(n-1);
}
double fenmu(int n)
{if(n==0)return 1;return (n*2+1) * fenmu(n-1);
}

127、两个数的简单计算器 (10 分)

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。

输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR

#include<stdio.h>
int main(int argc,char* argv[])
{int num1,num2;char c;scanf("%d %c %d",&num1,&c,&num2);switch(c){case '+':printf("%d\n",num1+num2);break;case '-':printf("%d\n",num1-num2);break;case '*':printf("%d\n",num1*num2);break;case '/':printf("%d\n",num1/num2);break;case '%':printf("%d\n",num1%num2);break;default :printf("ERROR\n");}return 0;
}

128、算术入门之加减乘除 (10 分)

对于输入的两个整数,按照要求输出其和差积商。

输入格式:
在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。

输出格式:
共四行,格式是:

[a] + [b] = [a+b]
[a] - [b] = [a-b]
[a] * [b] = [a*b]
[a] / [b] = [a/b]

其中,带有方括号的内容(如[a]、[b]、[a+b]等)表示相应整数或运算结果的值,在输出时要用实际的值代替。

并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。

提示:注意表达式中的空格。

输入样例1:
6 3
输出样例1:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
输入样例2:
8 6
输出样例2:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33

#include<stdio.h>
int main(int argc,char* argv[])
{int num1,num2;scanf("%d%d",&num1,&num2);printf("%d + %d = %d\n",num1,num2,num1+num2);printf("%d - %d = %d\n",num1,num2,num1-num2);printf("%d * %d = %d\n",num1,num2,num1*num2);double result = (num1*0.1/num2)*10;if(result == (int)result)printf("%d / %d = %d\n",num1,num2,num1/num2);elseprintf("%d / %d = %.2lf\n",num1,num2,result);return 0;
}

129、倒数第N个字符串 (15 分)

给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。

输入格式:
输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤10
​5
​​ )。

输出格式:
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。

输入样例:
3 7417
输出样例:
pat

#include<stdio.h>
#include<math.h>
#define L 6int main()
{char ch[26]={'z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'};char arr[L];int n,l,a,i;         //l为序列长度,n为序列所处倒序的位置,a为所求字符串的某个字符在ch数组中的位置 scanf("%d %d",&l,&n);n=n-1;               //根据推导过程发现,减去1后最后一个字符才是正确的for(i=0;i<l;i++){a=n/pow(26,l-i-1);arr[i]=ch[a];n=n-a*pow(26,l-i-1);}for(i=0;i<l;i++){printf("%c",arr[i]);}return 0;}

130、计算符号函数的值 (10 分)

7-6 计算符号函数的值 (10 分)
对于任一整数n,符号函数sign(n)的定义如下:

在这里插入图片描述

请编写程序计算该函数对任一输入整数的值。

输入格式:
输入在一行中给出整数n。

输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。

输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1

#include<stdio.h>
int main(int argc,char* argv[])
{int n;int result;scanf("%d",&n);if(n<0)result=-1;else if(n==0)result=0;elseresult=1;printf("sign(%d) = %d",n,result);return 0;
}

131、12-24小时制 (15 分)

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:
输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。

输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。

输入样例:
21:11
输出样例:
9:11 PM

#include<stdio.h>
int main()
{int h,m;scanf("%d:%d",&h,&m);if(h<=12){if(h<12)printf("%d:%d AM\n",h,m);elseprintf("%d:%d PM\n",h,m);}else{if(h<24)printf("%d:%d PM\n",h-12,m);elseprintf("%d:%d AM\n",h,m);}
}

132、成绩转换 (15 分)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。

输出格式:
在一行中输出对应的五分制成绩。

输入样例:
90
输出样例:
A

#include<stdio.h>
int main()
{int n;scanf("%d",&n);if(n>=90)printf("A\n");else if(n>=80)printf("B\n");else if(n>=70)printf("C\n");else if(n>=60)printf("D\n");elseprintf("E");
}

133、求组合数 (15 分)

本题要求编写程序,根据公式
在这里插入图片描述
​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。

输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。

输入样例:
2 7
输出样例:
result = 21

#include<stdio.h>
double jiecheng(int x);
int main()
{int n,m;scanf("%d%d",&m,&n);double result = jiecheng(n)/(jiecheng(m)*jiecheng(n-m));printf("result = %1.lf",result);return 0;
}
double jiecheng(int x)
{double mix=1;if(x==0)return 1;for(int i=2;i<=x;i++)mix*=i;return mix;
}

134、输出全排列 (20 分)

请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。

输入格式:
输入给出正整数n(<10)。
在这里插入图片描述
输入样例:
3
输出样例:
123
132
213
231
312
321

#include <stdio.h>
int a[10],b[10],n;
void dfs(int step){if (step==n+1){for (int i=1;i<=n;i++)printf("%d",a[i]);printf("\n");return;}for (int i=1;i<=n;i++){if (b[i]==0){a[step]=i;b[i]=1;dfs(step+1);b[i]=0;}}return;
}
int main(){scanf("%d",&n);dfs(1);return 0;
}

135、魔法优惠券 (25 分)

在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)

例如,给定一组优惠劵,面值分别为1、2、4、-1;对应一组商品,价值为火星币M$7、6、-2、-3,其中负的价值表示该商品是免费赠品。我们可以将优惠劵3用在商品1上,得到M$28的回报;优惠劵2用在商品2上,得到M$12的回报;优惠劵4用在商品4上,得到M$3的回报。但是如果一不小心把优惠劵3用在商品4上,你必须倒贴给商店M$12。同样,当你一不小心把优惠劵4用在商品1上,你必须倒贴给商店M$7。

规定每张优惠券和每件商品都只能最多被使用一次,求你可以得到的最大回报。

输入格式:
输入有两行。第一行首先给出优惠劵的个数N,随后给出N个优惠劵的整数面值。第二行首先给出商品的个数M,随后给出M个商品的整数价值。N和M在[1, 10
​6
​​ ]之间,所有的数据大小不超过2
​30
​​ ,数字间以空格分隔。

输出格式:
输出可以得到的最大回报。

输入样例:
4 1 2 4 -1
4 7 6 -2 -3
输出样例:
43

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int yh[1000001];
int hx[1000001];
int comp(const void* num1,const void* num2)
{return *(int*)num2 - *(int*)num1;
}
int main()
{int N,M;int sum=0;int i,j;scanf("%d",&N);for(i=0;i<N;i++)scanf("%d",&yh[i]);scanf("%d",&M);for(i=0;i<M;i++)scanf("%d",&hx[i]);qsort(yh,N,sizeof(int),comp);qsort(hx,M,sizeof(int),comp);for(i=0,j=0; i<N&&j<M; i++,j++){if(yh[i]>0&&hx[j]>0)sum+=yh[i]*hx[j];}for(i=N-1,j=M-1; i>=0&&j>=0 ;i--,j--){if(yh[i]<0&&hx[j]<0)sum+=yh[i]*hx[j];}printf("%d\n",sum);return 0;
}

136、找出最小值 (20 分)

本题要求编写程序,找出给定一系列整数中的最小值。

输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。

输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。

输入样例:
4 -2 -123 100 0
输出样例:
min = -123

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int comp(const void* a,const void* b)
{return *(int*)a-*(int*)b;
}
int main(void)
{int i,j,a[1000];int min;int n;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}qsort(a,n,sizeof(int),comp);printf("min = %d",a[0]);return 0;
}

137、通讯录的录入与显示 (10 分)

通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

输入格式:
输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。

在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。

输出格式:
对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。

输入样例:
3
Chris 1984/03/10 F +86181779452 13707010007
LaoLao 1967/11/30 F 057187951100 +8618618623333
QiaoLin 1980/01/01 M 84172333 10086
2 1 7
输出样例:
LaoLao 057187951100 +8618618623333 F 1967/11/30
Not Found

#include<stdio.h>
struct Stu{char name[11];char year[11];char sex[2];char phone[17];char telephone[17];
}love[100];
int main()
{int i,j;int n;scanf("%d",&n);getchar();for(i=0;i<n;i++){scanf("%s%s%s%s%s",&love[i].name,&love[i].year,&love[i].sex,&love[i].phone,&love[i].telephone);}int x;	//查询人数s scanf("%d",&x);int cha;for(i=0;i<x;i++){scanf("%d",&cha);if(cha<n && cha>=0)   //这里还要注意判断cha>0,搞我自闭了半天{printf("%s %s %s %s %s\n",love[cha].name,love[cha].phone,love[cha].telephone,love[cha].sex,love[cha].year);}else{printf("Not Found\n");}}
}

138、计算物体自由下落的距离 (5 分)

一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒
​2
​​ 。

输入格式:
本题目没有输入。

输出格式:
按照下列格式输出

height = 垂直距离值
结果保留2位小数。

#include<stdio.h>
int main()
{int a=10,t=3;printf("height = %.2lf\n",0.5*10*t*t);
}

139、时间换算 (15 分)

本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。

输入格式:
输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。

输出格式:
输出在一行中给出hh:mm:ss格式的结果时间。

输入样例:
11:59:40
30
输出样例:
12:00:10

#include<stdio.h>
int main()
{int h,m,s;int n;scanf("%d:%d:%d",&h,&m,&s);scanf("%d",&n);s+=n;if(s>=60){if(m==59){h+=1;m=0;s-=60;}else{m+=1;s-=60;}}if(h>=24)h-=24;printf("%02d:%02d:%02d\n",h,m,s);
}

140、韩信点兵 (10 分)

在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

按从1至5报数,记下最末一个士兵报的数为1;
再按从1至6报数,记下最末一个士兵报的数为5;
再按从1至7报数,记下最末一个士兵报的数为4;
最后按从1至11报数,最末一个士兵报的数为10;
请编写程序计算韩信至少有多少兵。

输入格式:
本题无输入

输出格式:
输出韩信至少拥有的士兵人数。

#include<stdio.h>
int main()
{int i=1,j;while(1){if((i%5==1)&&(i%6)==5&&(i%7)==4&&(i%11)==10){printf("%d",i);break;}elsei++;}
}

原创不易,有用请点个赞,感谢各位!


http://chatgpt.dhexx.cn/article/qf8mJlk6.shtml

相关文章

PTA 程序设计天梯赛(161~180题)

文章目录 161、单词长度 (15 分)162、表格输出 (5 分)163、装箱问题 (20 分)164、求交错序列前N项和 (15 分)165、求集合数据的均方差 (15 分)166、币值转换 (20 分)167、求矩阵的局部极大值 (15 分)168、查询水果价格 (15 分)169、混合类型数据格式化输入 (5 分)170、BCD解密 …

名帖129 成亲王 楷书《赵孟頫大士赞卷》

《中国书法名帖目录》 永瑆(1752-1823)&#xff0c;清乾隆皇帝十一子&#xff0c;封成亲王&#xff0c;清代书法家。永瑆作为皇族&#xff0c;其书法的成就也得益于眼界宽、收藏广。 清代成亲王《永瑆楷书赵孟頫大士赞卷》纸本。故宫博物院藏。 【释文】 秉般若。剑推黑暗尽…

名帖311 成亲王 行书《杜甫秋兴诗》

《中国书法名帖目录》 成亲王永瑆行书《杜甫秋兴诗》&#xff0c;此本墨迹藏钱抚棠少宰家&#xff0c;吴门翻刻。 【释文】秋兴 玉树凋伤枫树林&#xff0c;巫山巫峡气萧森。江间波浪兼天涌&#xff0c;塞上风云接地阴。 丛菊两开他日泪&#xff0c;孤舟一系故园心。寒衣处处…

名帖39 席夔 隶书《千字文》

《中国书法名帖目录》 【释文】 天地玄黄 宇宙洪荒 日月盈昃 辰宿列张 寒来暑往 秋收冬藏 闰余成岁 律吕调阳 云腾致雨 露结为霜 金生丽水 玉出昆冈 剑号巨阙 珠称夜光 果珍李柰 菜重芥姜 海咸河淡 鳞潜羽翔 龙师火帝 鸟官人皇 始制文字 乃服衣裳 推位让国 有虞陶唐 吊民…

春秋·左丘明-《左传·成公八年》

《左传》原名《左氏春秋》&#xff0c;到西汉班固时才改称《春秋左氏传》。相传为鲁国史官左丘明所著&#xff0c;大约成书于战国初期。全书六十卷&#xff0c;以《春秋》为纲&#xff0c;并仿照春秋体例&#xff0c;按照鲁国君主的次序&#xff0c;记载了自鲁隐公元年至鲁悼公…

天津巨富八大家——天成号韩家

韩家是靠海运发的家。 津的海运发展&#xff0c;可以追溯到元代。13世纪元朝统一中国后&#xff0c;把都城设在了北京。皇上在哪&#xff0c;资源就得往哪折腾&#xff0c;这道理在简单不过了&#xff0c;所以那时对南粮北运的需求开始增大。而隋唐时期开挖的大运河通济渠段已…

谢良辅

状江南仲春 唐代&#xff1a;谢良辅江南仲春天&#xff0c;细雨色如烟。丝为武昌柳&#xff0c;布作石门泉。 仲春&#xff1a;农历二月&#xff1b; 孟春&#xff1a;农历正月&#xff1b;暮春&#xff1a;农历三月&#xff1b; 暮春三月 状江南孟冬 唐代&#xff1a;谢良辅江…

有文事者,必有武备

28 iOS 图像渲染原理 https://www.jianshu.com/p/a81d48e0e44a 27 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别 https://www.cnblogs.com/heluan/p/8620312.html https://www.jianshu.com/p/25b762d58e66 26 十大经典算法 http://www.runoob.com/w3cnote/ten-sorting-algorithm.h…

计算机网络八股文(2022最新整理)

网络分层结构 计算机网络体系大致分为三种&#xff0c;OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。 五层模型&#xff1a;应用层、传输层、网络层、数据链路层、物理层。 应用层&#xff1a;为应用程序提供交互服务。在互联网中的应用层…

名帖246 唐寅 行书《自书集贤宾等词卷》

《中国书法名帖目录》 唐寅书《自书“集贤宾”等词卷》&#xff0c;纸本&#xff0c;行书。北京故宫博物院藏 此为唐寅所作词并自书&#xff0c;分《集贤宾》、《锦衣公子》、《山坡羊》三组曲牌&#xff0c;共24首。 唐寅博学多能&#xff0c;吟诗作曲&#xff0c;能书善画。…

猿创征文|从mysql 到kingbase(人大金仓)

一、背景介绍 公司主要做toG 的项目&#xff0c;经常服务于各个地方政府。之前某省会城市下属区县项目&#xff0c;需要将已交付的项目中所使用到的各类中间件全部替换为国产&#xff0c;其中就包括了数据库的替换。项目中一直使用的是mysql数据库&#xff0c;后经商务调研及选…

如何评价唐卫国公李靖的战功、军事才能、政治才能?

link 一鞭直渡清河洛 Research and no development 已关注 470 人赞同了该回答 个人以为&#xff0c;在军事上&#xff0c;李靖是当之无愧的唐朝第一名将&#xff0c;他用兵如神&#xff0c;精于谋略&#xff0c;无论是在实际的军事指挥上&#xff0c;还是军事理论上&#xff0…

PHP汉字取拼音缩写

<?php class ChineseSpell { /** * var array $chineseSpellList 拼音编码对应表 * access private */ private $chineseSpellList array( a>-20319, ai>-20317, an>-20304, ang>-20295, ao>-20292, ba>-20283, bai>-20265, ban>-20257, bang>…

js获取汉字拼音首字母

使用pinyin-pro这个npm包 github: https://github.com/zh-lx/pinyin-pro 特色功能 支持汉字、词语、句子多种格式输入获取获取拼音获取声母获取韵母获取拼音首字母获取音调获取多音字的多种拼音支持字符串和数组两种输出形式 版本更新 当前版本&#xff1a; 3.0.7 -> 3.…

Oracle 获取汉字拼音首字母

Oracle 获取汉字拼音首字母 获取汉字拼音函数脚本 CREATE OR REPLACE FUNCTION F_GETPY(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000);FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT(P_WOR…

java获取中文拼音首字母

import net.sourceforge.pinyin4j.PinyinHelper;public class PinyinHelperUtil {/*** 返回中文的首字母** param str* return*/public static String getPinYinHeadChar(String str) {String convert "";for (int j 0; j < str.length(); j) {char word str.c…

java获取中文字符串汉语拼音和首字母

业务需求&#xff1a;将用户中文名字根据拼音首字母分类排序 直接上代码&#xff1a; 引入依赖&#xff1a; <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></depend…

excel中提取中文拼音

概述&#xff1a;在工作时&#xff0c;有时候会用到汉语拼音&#xff0c;本文讲述如何在Excel中通过vba程序提取汉字的拼音。 1、altF11调出vba编写窗口 2、新建——模块 3、粘贴以下代码 Function PinYin2(Hz As String)Dim PinMa As StringDim MyPinMa As VariantDim Temp As…

MYSQL 中取拼音首字母的函数

2019独角兽企业重金招聘Python工程师标准>>> 今天碰到了取拼音首字母的需求。整理了一下。 1、编码表&#xff1a; /*DDL Information For - test.cs_char2letter*/ ------------------------------------------------------ Table Create Table …

Openlayers利用kriging.js实现纯前端插值

关于空间插值这一块&#xff0c;也是GIS一个重要的分析。前端可以通过turf.js后端可以采用contour&#xff0c;如果仅有少量数据需要进行插值分析并进行展示&#xff0c;那应当如何做&#xff1f;可以采用turf.js但是turf.js插值效果是真的烂。通过检索发现可以通过kriging.js去…