PTA 程序设计天梯赛(81~100题)


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

81、Programming in C is fun! (5 分)

本题要求编写程序,输出一个短句“Programming in C is fun!”。

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

输出格式:
在一行中输出短句“Programming in C is fun!”。

#include<stdio.h>
int main(void)
{
	printf("Programming in C is fun!\n");
}

82、出租车计价 (15 分)

7-3 出租车计价 (15 分)
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34

#include<stdio.h>
int main()
{
	double km;			//公里
	int m=0;			//分钟
	double money=0;		//钱
	int yu;
	scanf("%lf %d",&km,&m);
	if(m<5)				//	<5分钟的情况
	{
		if(km<=3)		//0~3公里
			money=10;
		else if(km<=10)	//3~10公里
			money=10+(km-3)*2;
		else			//10以上公里
			money=10+7*2+(km-10)*3;
	}
	else
	{
		if(km<=3)		//0~3公里
			money=10+(m/5)*2;
		else if(km<=10)	//3~10公里
			money=10+(km-3)*2+(m/5)*2;
		else			//10以上公里
			money=10+7*2+(km-10)*3+(m/5)*2;
	}
	printf("%1.lf\n",money);
	return 0;
}

83、求幂级数展开的部分和 (20 分)

已知函数e
​x
​​ 可以展开为幂级数1+x+x
​2
​​ /2!+x
​3
​​ /3!+⋯+x
​k
​​ /k!+⋯。现给定一个实数x,要求利用此幂级数部分和求e
​x
​​ 的近似值,求和一直继续到最后一项的绝对值小于0.00001。

输入格式:
输入在一行中给出一个实数x∈[0,5]。

输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。

输入样例:
1.2
输出样例:
3.3201

#include<stdio.h>
#include<math.h>
double jiecheng(double n);
int main()
{
	double x;		//输入一个实数
	double n=0;		//下面我会给出一个推导公式,你就懂了兄弟
	double c=0;		//表示次方
	double sum=0;	//求总和
	double result;	//最后一项的绝对值
	scanf("%lf",&x);
	/*	题目公式:	 【1】   +  【x】   +【x^2/2!】+【x^3/3!】+【x^n/n!】	*/
	/*	上下中括号都有各5个,然而这5个其实都是对等的!不信你们就在本子上算呀^_^哈哈! */
	/*	推到公式: 【x^0/0!】+【x^1/1!】+【x^2/2!】+【x^3+3!】+【x^n/n!】	*/
	do
	{
		result=pow(x,c)/(jiecheng(n));
		sum+=result;
		n++;
		c++;
	}while((jiecheng(n))>=0.00001);
	result=pow(x,c)/(jiecheng(n));
	sum+=result;
	printf("%.4f\n",sum);
	return 0;
}
double jiecheng(double n)
{
	int mix=1;
	for(int i=1;i<=n;i++)
		mix=mix*i;
	return mix;
}


84、 What is a computer? (5 分)

本题要求编写程序,输出一个短句“What is a computer?”。

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

输出格式:
在一行中输出短句“What is a computer?”。

#include<stdio.h>
int main()
{
	printf("What is a computer?");
	return 0;
}

85、将x的平方赋值给y (5 分)

假设x的值为3,计算x的平方并赋值给y,分别以“y = x ∗ x”和“x ∗ x = y”的形式输出x和y的值。

输入格式:
本题无输入

输出格式:
按照下列格式输出代入x=3的结果:

y = x * x
x * x = y

#include<stdio.h>
int main()
{
	int x=3;
	int y;
	printf("%d = %d * %d\n%d * %d = %d\n",x*x,x,x,x,x,x*x);
	return 0;
}

86、 计算火车运行时间 (15 分)

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。

输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。

输入样例:
1201 1530
输出样例:
03:29

#include <stdio.h>
#include <stdlib.h>
int main() 
{
    int h;		//小时
	int m;		//分钟
	int num1;	//出发时间
	int num2;	//到达时间
    scanf("%d%d",&num1,&num2);
    h=num2/100-num1/100;            //4位整型取前2位(小时)
    m=num2%100-num1%100;            //4位整型取余后2位(分钟)
    if(m<0)                  //num1,num2都是在同一天,h一定大于0
    {
        m=60+m;                 //当m小于0,从h借来一小时,填补m的值
        h=h-1;
    }
    printf("%02d:%02d\n",h,m);	
	return 0;
}

87、计算工资 (15 分)

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。

输出格式:
在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00

#include<stdio.h>
int main()
{
	int year;					//工作年份
	int h;						//小时
	double money;
	scanf("%d %d",&year,&h);	//输入功能
	if(year<5)					//新员工情况
	{	
		if(h<=40)				//正常工作的情况
			money=h*30;
		else					//加班的情况
			money=40*30+(h-40)*1.5*30;
	}
	else						//老员工的情况
	{
		if(h<=40)				//正常工作的情况
			money=h*50;
		else					//加班的情况
			money=40*50+(h-40)*1.5*50;
	}
	printf("%.2lf\n",money);	
	return 0;
}

88、 日K蜡烛图 (15 分)

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。

如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。

输入格式:
输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。

输出格式:
在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。

输入样例1:
5.110 5.250 5.100 5.105
输出样例1:
BW-Solid with Lower Shadow and Upper Shadow
输入样例2:
5.110 5.110 5.110 5.110
输出样例2:
R-Cross
输入样例3:
5.110 5.125 5.112 5.126
输出样例3:
R-Hollow

#include<stdio.h>
int main()
{
	double o;		//Open
	double h;		//High
	double l;		//Low
	double c;		//Close
	scanf("%lf%lf%lf%lf",&o,&h,&l,&c);
	if(c<o)
	{
		printf("BW-Solid");
		if(l<o && l<c && h>o && h>c)
			printf(" with Lower Shadow and Upper Shadow");
		else if(l<o && l<c)
			printf(" with Lower Shadow");
		else if(h>o && h>c)
			printf(" with Upper Shadow");
	}
	else if(c>o)
	{
		printf("R-Hollow");
		if(l<o && l<c && h>o && h>c)
			printf(" with Lower Shadow and Upper Shadow");
		else if(l<o && l<c)
			printf(" with Lower Shadow");
		else if(h>o && h>c)
			printf(" with Upper Shadow");
	}
	else if(c==o)
	{
		printf("R-Cross");
		if(l<o && l<c && h>o && h>c)
			printf(" with Lower Shadow and Upper Shadow");
		else if(l<o && l<c)
			printf(" with Lower Shadow");
		else if(h>o && h>c)
			printf(" with Upper Shadow");
	}
	return 0;
}

89、 到底是不是太胖了 (10 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:
输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:
为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。

输入样例:
3
169 136
150 81
178 155
输出样例:
You are wan mei!
You are tai shou le!
You are tai pang le!

#include<stdio.h>
#include<math.h>
int main()
{
	int n;		//输入正整数
	int h;		//身高
	int w;		//真实体重
	int x;		//标准体重
	/*	标准体重(市斤) =(身高-100)*0.9*0.2	*/
	scanf("%d",&n);
	if(n<1 || n>20)		return 0;   //n<=20
	for(int i=1;i<=n;i++)
	{
		scanf("%d %d",&h,&w);
		if(h<120 || h>=200 || w<50 || w>300)	return 0;     // 120 < H < 200 和 50 < W ≤ 300
		x = (h-100)*0.9*2;
		if(fabs(w-x) < x*0.1)
			printf("You are wan mei!\n");
		else if((fabs(w-x) >= x*0.1) && w<x)
			printf("You are tai shou le!\n");
		else if((fabs(w-x) >= x*0.1) && w>x)
			printf("You are tai pang le!\n");
	}
	return 0;
}

90、找最小的字符串 (15 分)

本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串。

输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:
在一行中用以下格式输出最小的字符串:

Min is: 最小字符串
输入样例:
5
Li
Wang
Zha
Jin
Xian
输出样例:
Min is: Jin

7-7 找最小的字符串 (15 分)

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
	char a[10000][80];
	int n;
	int i,j;
	int min;
	char temp[80];
	scanf("%d",&n);
	getchar();
	for(i=0;i<n;i++)
		gets(a[i]);
	for(i=0;i<n-1;i++)
	{
		min=i;
		for(j=i+1;j<n;j++)
			if(strcmp(a[min],a[j])>0)
				min=j;
			if(min!=i)
			{
				strcpy(temp,a[min]);
				strcpy(a[min],a[i]);
				strcpy(a[i],temp);
			}
	}
	printf("Min is: %s",a[0]);
	return 0;
}

91、 字符串的冒泡排序 (20 分)

我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。

输入格式:
输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。

输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

输入样例:
6 2
best
cat
east
a
free
day
输出样例:
best
a
cat
day
east
free

7-1 字符串的冒泡排序 (20 分)

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	int n,k;			//n→有几个字符串,k→扫描几次
	int i,j;			//用于循环和数组下标
	char a[100][11];	//用于存储字符串
	char temp[11];
	scanf("%d%d",&n,&k);	//提供输入n、k的功能
	getchar();
	for(i=0;i<n;i++)	//提供输入字符串的功能
		scanf("%s",a[i]);

	for(i=0;i<k;i++)
	{
		for(j=0;j<n-1-i;j++)
		{
			if(strcmp(a[j],a[j+1])>0)
			{
				strcpy(temp,a[j]);
				strcpy(a[j],a[j+1]);
				strcpy(a[j+1],temp);
			}
		}
	}

	for(i=0;i<n;i++)
		printf("%s\n",a[i]);
	return 0;
}

92、组织星期信息 (10 分)

输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

输入输出示例:括号内为说明,无需输入输出

输入样例 (repeat=3) :
3
Tuesday
Wednesday
year
输出样例:
3
4
-1

7-2 组织星期信息 (10 分)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char *p[] ={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
	int repeat;		//输入几个数
	int i,j;		//用于循环和数组下标
	//int flag = 0;	//判断是否有输出那句话
	char tmp[50];	//输入的字符串
	scanf("%d",&repeat);
	getchar();
	for(i=0;i<repeat;i++)
	{
		gets(tmp);
		for(j=0;j<7;j++)
		{
			if(strcmp(tmp,p[j])==0)
			{	printf("%d\n",j+1);	break;	}
			else if(j==6)
				printf("-1\n");
		}
	}
	return 0;
}

93、 奇偶分家 (10 分)

给定N个正整数,请统计奇数和偶数各有多少个?

输入格式:
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。

输出格式:
在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。

输入样例:
9
88 74 101 26 15 0 34 22 77
输出样例:
3 6

7-3 奇偶分家 (10 分)

#include <stdio.h>
#include <math.h>
int main()
{
	int n;			//有几个数
	int a[1001];	//存储数据的空间
	int i;		//用于循环和数组下标
	int ji=0,ou=0;	//ji→统计奇数数量,ou→统计偶数数量
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(i=0;i<n;i++)
	{
		if(a[i]%2==0)
			ou++;
		else
			ji++;
	}
	printf("%d %d\n",ji,ou);
	return 0;
}

94、 海盗分赃 (25 分)

P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略:

首先,P 个海盗通过抽签决定 1 - P 的序号。然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包括 1 号在内的绝对多数(即大于半数)同意,则按照该分配方案执行,否则 1 号将被投入大海喂鲨鱼;而后依次类似地由第 2 号、第 3 号等等海盗提出方案,直到能够获得绝对多数同意的方案出现为止,或者只剩下最后一位海盗,其独占所有钻石。请编写一个程序,给出第 1 号海盗的钻石分配方案中自己分得的钻石数量。

附带的三个假定:

“聪明”与“贪婪”假定:每个海盗总能够以本人利益最大化作为行为准则;
“人性化”假定:在能够取得尽量多钻石的情况下,海盗不会故意致同伙于死地;
“无偏见”假定:海盗之间没有个人恩怨,分给其他海盗钻石的次序以小序号优先为原则。
输入格式:
输入在一行中给出 2 个正整数 D 和 P(3≤P≤D≤100)。

输出格式:
输出第 1 号海盗的钻石分配方案中自己分得的钻石数量。

输入样例:
10 7
输出样例:
6

7-9 海盗分赃 (25 分)

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	int d,p;					//d→钻石数量,p→人数
	scanf("%d %d",&d,&p);		//提供输入钻石、人数的功能
    if(p == 3){
        printf("%d",d-1);
    }
    else{
        printf("%d",d-(p/2+1));	//转化为数学规律 当人数超过三个人的时候 第一个海盗得到的金币为: D - (P / 2 + 1)
    }
 
 
    return 0;
}

95、 超速判断 (10 分)

模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。

输出格式:
在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK。

输入样例1:
40
输出样例1:
Speed: 40 - OK
输入样例2:
75
输出样例2:
Speed: 75 - Speeding

7-4 超速判断 (10 分)

#include<stdio.h>
int main()
{
	int sudu;
	scanf("%d",&sudu);
	if(sudu<=60){
		printf("Speed: %d - OK\n",sudu);
	}else{
		printf("Speed: %d - Speeding\n",sudu);
	}
	return 0;
}

96、 jmu-ds-顺序表区间元素删除 (15 分)

若一个线性表L采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)。

输入格式:
三行数据,第一行是顺序表的元素个数,第二行是顺序表的元素,第三行是x和y。

输出格式:
删除元素值在[x,y]之间的所有元素后的顺序表。

输入样例:
10
5 1 9 10 67 12 8 33 6 2
3 10

输出样例:
1 67 12 33 2

7-8 jmu-ds-顺序表区间元素删除 (15 分)

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int g=0,t=0;
		int x,y;
		int L[]={1,2,3,4,5,6,7,8,9,21213,123,1123,1,132123,123
				,123,132,23,123,12,32,123,123,12,132,123,12,32
				,123,12,132,123,1,23,132,123,312,321
				,12312,32,123,123,1,1231,231,23,123,1321,32
				,12,132,123,132,123,123,132,12,123,
				123,123,123,1,231,231,231,231,231,21,321,231,231,3
				,1,1,3,1321,1,1,132,123,1,1321,1,32,32,
				123,123,123,132,23,1321,321,1,23,1
				,123,13,1231,32,231,1,321,
				123,1,132,123,123,132,123,132,12,132,123,132,132,321,132
		  ,123,23,132,132,132,132,13,213,2,132,1,231,32,132,132,132,132
		  ,23,132,132,132,132,13,213,2,132,1,231,32,132,132,132,13
		  ,23,132,132,132,132,13,213,2,132,1,231,32,132,132,132,13};
		int i,j;
		for(i=0;i<n;i++)
			L[i]=scanner.nextInt();
		x = scanner.nextInt();
		y = scanner.nextInt();
		for(i=0;i<n;i++)
		{
			if(L[i]>=x && L[i]<=y)
			{	L[i]=0;}
		}
		for(i=0;i<n;i++)
			if(L[i]!=0)
				g++;
		for(i=0;i<n;i++)
		{
			if(L[i]!=0){
				if(t!=g-1)
				System.out.print(L[i] + " ");
				else
				System.out.print(L[i]);
				t++;
			}
		}
	}
}

97、查找指定字符 (15 分)

本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:
m
programming
输出样例1:
index = 7
输入样例2:
a
1234
输出样例2:
Not Found

#include<stdio.h>
int main(void)
{
	char c,b[10010];	//待查询的字符,输入的字符串
	int index=-1;		//标记
	scanf("%c",&c);
	getchar();		//吃掉一个空格,否则会被认为是字符串中的内容
	gets(b);		受到gets输入的影响,字符串都以\0作为结尾
	for(int i=0;b[i]!='\0';i++)	//所以这里就从0开始,一直执行到等于\0时才结束
		if(b[i]==c)	//当出现一次待查询字符时,就标记一次,一直到循环结束为止
			index=i;
	if(index==-1)
		printf("Not Found\n");
	else
		printf("index = %d\n",index);
}

98、复数四则运算 (15 分)

本题要求编写程序,计算2个复数的和、差、积、商。

输入格式:
输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部。题目保证C2不为0。

输出格式:
分别在4行中按照(a1+b1i) 运算符 (a2+b2i) = 结果的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。

输入样例1:
2 3.08 -2.04 5.06
输出样例1:
(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i
输入样例2:
1 1 -1 -1.01
输出样例2:
(1.0+1.0i) + (-1.0-1.0i) = 0.0
(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i
(1.0+1.0i) * (-1.0-1.0i) = -2.0i
(1.0+1.0i) / (-1.0-1.0i) = -1.0

7-3 复数四则运算 (15 分)

#include<stdio.h>
void shizi(double x,double y);		//负责打印式子
void result(double x,double y);		//负责打印结果
struct Love{		
	double shi,xu;	//表示实部,虚部
}love1,love2;
int main()
{	
	scanf("%lf%lf%lf%lf",&love1.shi,&love1.xu,&love2.shi,&love2.xu);
	//下面的计算根据复数的实部与虚部计算公式:
	//求加法的实部与虚部值
	double jia_shi = love1.shi + love2.shi;
	double jia_xu  = love1.xu  + love2.xu;

	//求减法的实部与虚部值
	double jian_shi = love1.shi - love2.shi;
	double jian_xu  = love1.xu  - love2.xu;

	//求乘法的实部与虚部值
	double cheng_shi = love1.shi*love2.shi-love1.xu*love2.xu;
	double cheng_xu  = love1.xu*love2.shi+love1.shi*love2.xu;
	
	//求除法的实部与虚部值
	double chu_shi = (love1.shi*love2.shi+love1.xu*love2.xu)/(love2.shi*love2.shi+love2.xu*love2.xu);
	double chu_xu  = (love1.xu*love2.shi-love1.shi*love2.xu)/(love2.shi*love2.shi+love2.xu*love2.xu);
	
	//因为题目的输出结果要分多种情况,那就在函数里来判断情况输出吧
	
	//加法
	shizi(love1.shi,love1.xu);	//式子
	printf(" + ");
	shizi(love2.shi,love2.xu);	//式子
	printf(" = ");
	result(jia_shi,jia_xu);		//结果

	//减法
	shizi(love1.shi,love1.xu);	//式子
	printf(" - ");
	shizi(love2.shi,love2.xu);	//式子
	printf(" = ");
	result(jian_shi,jian_xu);		//结果
	
	//乘法
	shizi(love1.shi,love1.xu);	//式子
	printf(" * ");
	shizi(love2.shi,love2.xu);	//式子
	printf(" = ");
	result(cheng_shi,cheng_xu);		//结果

	//除法
	shizi(love1.shi,love1.xu);	//式子
	printf(" / ");
	shizi(love2.shi,love2.xu);	//式子
	printf(" = ");
	result(chu_shi,chu_xu);		//结果
	return 0;
}
void shizi(double x,double y)		//负责打印式子
{
	if(y<0)							//虚部为负数的时候不用加'+'号
		printf("(%.1lf%.1lfi)",x,y);
	else
		printf("(%.1lf+%.1lfi)",x,y);	//反之成立
}
void result(double rshi,double rxu)
{	
	//虚部不存在时,只需输出实部
	if(rxu<=0.05&&rxu>=-0.05)	//其实这里也判断了两段都没有的情况,输出0.0
		printf("%.1lf\n",rshi);
	else if(rshi<=0.05&&rshi>=-0.05)	//实部不存在时,输出虚部单个即可
		printf("%.1lfi\n",rxu);
	else if(rxu<0)
		printf("%.1lf%.1lfi\n",rshi,rxu);	//结果虚部为负数的时候不用加'+'号
	else
		printf("%.1lf+%.1lfi\n",rshi,rxu);	//反之成立
}

99、 输出三角形字符阵列 (15 分)

本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。

输入格式:
输入在一行中给出一个正整数n(1≤n<7)。

输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:
4
输出样例:
A B C D
E F G
H I
J

输出三角形字符阵列 (15 分)

#include<stdio.h>
int main()
{
	int n,i,j;
	char x=64;  //从A开始,A的ASCLL是65,进j循环时+1
	scanf("%d",&n);
	for(i=0;i<n;i++)  //控制行数
	{
		for(j=0;j<n-i;j++)  //控制打印
		{ 
			x += 1; //每一次都要+1,A→65,B→66
			printf("%c ",x);
		}
		printf("\n");
	}
	return 0;
}

100、找最长的字符串 (15 分)

本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:
在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。

输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang

7-5 找最长的字符串 (15 分)

#include<stdio.h>
#include<string.h>
int main()
{
	int n,i;
	char a[100],b[100];	//a→拿来输入的,b→拿来得到最长的字符串
	scanf("%d",&n);
	getchar();	//吃掉空格
	for(i=0;i<n;i++){
		gets(a);
		if(i==0)
			strcpy(b,a);	//第一此需复制,防止第一个就是最长的情况
		if(strlen(b)<strlen(a))	//若新来的比原来的还要长,那么就复制新来的来覆盖掉原来的
			strcpy(b,a);
	}
	printf("The longest is: ");
	puts(b);
	return 0;
}

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

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王睿丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值