XDOJ试题

角谷猜想

​
是指对于任意一个正整数,
如果是奇数,则乘31,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。
如,假定初始整数为5,计算过程分别为168421。
 程序要求输入一个整数,将经过处理得到1的过程输出来。

输入
一个正整数N(N <= 2,000,000)

输出
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。

样例输入
5

样例输出
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End

​
#include <stdio.h>
 int main(){
 	int n;
 	printf("please input a number:");
 	scanf("%d",&n);
 	while(n!=1){
 		if(n%2!=0){
 			printf("%d * 3 + 1= %d\n",n,n*3+1);
 			n=n*3+1;
		 }else if(n%2==0){
		 	printf("%d / 2 = %d\n",n,n/2);
		 	n=n/2;
		 }
	 }
	 if(n==1){
	 	printf("End");
	 }
 	return 0;
 }

素数判断

#include <stdio.h>
 int main(){
 	int n;
 	printf("please input a number:");
 	scanf("%d",&n);
 	int i = 2;
 	for(i=2;i<=n;i++){
 		if(n%i == 0){
 			break;
		 }
	 }
	 if(n == i){
	 	printf("是素数");
	 	}else printf("不是素数");
	
	 return 0;

字符删除

​
描述主函数中输入一个一维字符数组str[N](N≤50)和待删除字符ch,调用函数dele()完成内容:
1、删除字符数组中的每个待删除字符;2、其它字符依次迁移;3、数组末尾加'\0'结束。
输入说明
输入一个一维字符数组和待删除字符。
输出说明
格式输出:输出处理后字符串。
输入样例
There are three men.
e
输出样例Thr ar thr mn.
提示
字符串输入函数gets(),头文件string.h。

​
#include <stdio.h>
#include <string.h>
void dele(char str[],char c);
int main(){
	char str[100];
	gets(str);
	char c;
	scanf("%c",&c);
	dele(str,c);
	return 0;
}
void dele(char str[],char c){
	int i = 0;
	int j = 0;
	int l = strlen(str);
	for(i =0;i<l;i++){
		while(str[i] == c){
		
			for(j=i;j<l;j++){
				str[j] = str[j+1];
			}
		}
	}
	for(i = 0;str[i]!='\0';i++){
		printf("%c",str[i]);
	}
}

字符输入输出

​
问题描述:通过键盘输入5个大写字母,输出其对应的小写字母,并在末尾加上“!”。
输入说明:5个大写字母通过键盘输入,字母之间以竖线“|”分隔。
输出说明:输出5个大写字母对应的小写字母,之间无分隔,并在末尾加上‘!’。
输入样例:H|E|L|L|O
输出样例:hello!
#include <stdio.h>
#include <string.h>
int main(){
	char letter[10];
	int i = 0;
	gets(letter);
	for(i = 0;i<strlen(letter);i++){
		if(letter[i]!='|'){
			printf("%c",letter[i]+32);
		}
	}
	printf("!");
	return 0;
}

A+B+C

​
问题描述:通过键盘输入三个整数a,b,c,求3个整数之和。
输入说明:三整形数据通过键盘输入,输入的数据介于-100000100000之间,整数之间以空格、跳格或换行分隔。 
输出说明:输出3个数的和。
输入样例:-6  0  39
输出样例:33
#include <stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	printf("%d",a+b+c);
	return 0;
}

整数简单运算

​
问题描述:编写程序,计算用户输入的两个整数的和、差、乘积(*)和商(/)。
输入格式:输入两个整数,整数之间用空格分隔。
输出格式:输出四个整数结果,分别表示和、差、积和商,每输出一个结果换行。
输入样例:
3 4
输出样例:
7
-1
12
0
#include <stdio.h>
int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d\n",a+b);
	printf("%d\n",a-b);
	printf("%d\n",a*b);
	printf("%d\n",a/b);
	return 0;
}

数字字符

​
问题描述:
通过键盘输入1个整数a(0<=a<=4,1个数字字符b(’0<=b<=5’),求a+b。

输入说明:
整形数据、数字字符通过键盘输入,输入的整形数据介于04之间,输入的数字字符介于‘0’和‘5’之间,二个输入数之间用“,”分隔。

输出说明:
分别以整数形式及字符形式输出a+b,输出的二个数之间用“,”分隔。

输入样例:
3 ,5

输出样例:
568
#include <stdio.h>
int main(){
	int a;
	char b;
	scanf("%d,%c",&a,&b);
	printf("%d,%d",a+b,a+b-'0');
	return 0;
}

温度转换

​
题目:温度转换
时间限制:1 S
内存限制:10000Kb
问题描述:
已知华氏温度到摄氏温度的转换公式为:摄氏温度= (华氏温度- 32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出
输入说明:
只有一个整数,表示输入的华氏温度
输出说明:
输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入
输入样例:
50
输出样例:
10.00
提示:
用scanf输入,用printf输出,保留2位小数的格式控制字符为%.2f
#include <stdio.h>
int main(){
	float cen,fah;
	scanf("%f",&fah);
	cen = (fah - 32)*5/9;
	printf("%.2f",cen); 
	return 0;
}

长方体体积

.实数运算
问题描述:
通过键盘输入长方体的长、宽、高,求长方体的体积V(单精度)。

输入说明:
十进制形式输入长、宽、高,输入数据间用空格分隔。

输出说明:
单精度形式输出长方体体积V,保留小数点后3位,左对齐。

输入样例:
15  8.12  6.66

输出样例:
 811.188
#include <stdio.h>
 int main(){
 	float len,height,wid;
 	scanf("%f %f %f",&len,&height,&wid);
 	printf("%.3f",len*height*wid);
 	return 0;
 }

四则运算

1.四则运算
问题描述:
输入两个整数和一个四则运算符,根据运算符计算并输出其运算结果(和、差、积、商、余之一)。注意做整除及求余运算时,除数不能为零。

输入说明:
使用scanf()函数输入两个整数和一个运算符,格式见输入样例。

输出说明:
输出使用printf()函数,格式见输出样例。

输入样例:
5%2

输出样例:
     5%2=1
#include <stdio.h>
int main(){
	int a,b,d;
	char c;
	scanf("%d",&a);
	scanf("%c",&c);
	scanf("%d",&b);
	if(c == '+')  d=a+b;
    else if(c == '-')  d=a-b;
	else if(c == '*')  d=a*b;
	else if(c == '/')  d=a/b;
	else if(c == '%')  d=a%b;
	printf("%d%c%d=%d",a,c,b,d);
	return 0;
}

计算球的质量

​
题目:计算球体重量
时间限制:1S
内存限制:10000Kb
问题描述:
已知铁的比重是7.86(/立方厘米),金的比重是19.3(/立方厘米)。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926
输入说明:
输入两个整数,分别表示铁球与金球的直径(单位为毫米)
输出说明:
输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔
输入样例:
100 100
输出样例:
4115.486  10105.456
提示
用scanf输入,用printf输出,保留3位小数的格式控制字符为%.3f
#include <stdio.h>
#include <math.h>
int main(){
	double steel = 7.86,gold = 19.3;
	double PI = 3.1415926;
	double d1,d2,m1,m2;
	scanf("%lf %lf",&d1,&d2);
	m1 = (4*PI*pow(d1*0.1/2,3)*steel)/3;
	m2 = (4*PI*pow(d2*0.1/2,3)*gold)/3;
	printf("%.3lf %.3lf",m1,m2);
	return 0;
}

判断是否中心对称

​
设单链表中存放着n个字符,试编写算法,判断该字符串是否有中心对称关系,
例如xyzzyx、xyzyx都算是中心对称字符串。要求用尽可能少的时间完成判断。
(提示:将一般字符先依次进栈。)

输入样例:
xy33yx
输出样例:
Yes

输入样例:
567BB7654
输出样例:
No

​
#include <stdio.h>
#include <string.h>
int main(){
	char str[100];
	gets(str);
	int i = 0,j;
	int l = strlen(str);
	j = l;
	for(i=0;i<l/2;i++){
		if(str[i]==str[j-1]){
			j--;
		}else break;
	}
	if(i>=l/2){
		printf("Yes");
	}else printf("No");
	return 0;
}

整除判断1

​
标题	
整除判断

类别	
基本计算

时间限制	
1S

内存限制	
256Kb

问题描述	
判断正整数a能否被b整数,如果不能整除,输出商和余数

输入说明	
输入两个正整数a和b(0<a, b<=10000),a和b之间用空格分隔。

输出说明	
如果a能被b整除,输出yes,否则在同一行输出a除以b的商和余数,商和余数之间用空格分隔

输入样例	
17 7
输出样例	
2 3
#include <stdio.h>
int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	if(a%b==0){
		printf("yes");
	}else printf("%d %d",a/b,a%b);
	return 0;
}

除法计算器

​
标题	
除法计算器

类别
基本计算

时间限制	
1S

内存限制	
256Kb

问题描述	
小明的弟弟刚开始学习除法,为了检查弟弟的计算结果是否正确,小明决定设计一个简单计算器程序来验算。

输入说明	
输入数据由四个整数m,n,q,r构成,m为被除数,n为除数,q和r为小明的弟弟计算出的商和余数。整数之间用空格分隔,
所有整数取值范围在(-100000~100000),n不为0。

输出说明	
如果验算结果正确,输出yes,否则输出正确的商和余数

输入样例	
输入样例:
样例110 3 3 1
样例210 3 3 2

输出样例	
样例1输出:
yes
样例2输出:
3 1
#include <stdio.h>
int main(){
	int a,b,c,d;
	scanf("%d %d %d %d",&a,&b,&c,&d);
	if(c==a/b&&d==a%b){
		printf("yes");
	}else{
		printf("%d %d",a/b,a%b);
	}
	return 0;
}

数位输出

1.数位输出
问题描述:
输入一个5位整数,求出其各数位数值,并按照从高位到低位的顺序输出,如:输入12345,输出为1 2 3 4 5。

输入说明:
输入一个五位正整数。

输出说明:
按数位从高到低依次输出,各数位之间以一个空格相分隔。

输入样例:
96237

输出样例:
    9 6 2 3 7
#include <stdio.h>
#include <math.h>
int main(){
	int t,a;
	int i = 4;
	scanf("%d",&a);
	while(a>10){
		t=a/pow(10,i);
		printf("%d ",t);
		a=a-t*pow(10,i);
		i--;
	}
	printf("%d",a);
	return 0;
}

求三位整数各位之和

​
题目描述:输入一个三位数整数,求其百位、十位和个位数字之和。

输入格式:共一行,输入一个三位整数。

输出格式:共一行,输出一个整数。

示例:
输入:128
输出:11
#include <stdio.h>
int main(){
	int a;
	int sum = 0,i = 2;
	scanf("%d",&a);
	while(a>0){
	   sum = sum+a%10;
	   a=a/10;
	}
	printf("%d",sum);
	return 0;
}

计算球的体积

​
题目描述:输入球的半径,计算并输出球的体积,假定pi=3.14,结果保留两位小数。

输入格式:共一行,输入球体半径,两位小数。

输出格式:共一行,输出球体体积,结果保留两位小数。

示例:
输入:5.50
输出:696.56
#include <stdio.h>
int main(){
	double r;
	scanf("%lf",&r);
	double pi = 3.14;
	printf("%.2lf",4*pi*r*r*r/3);
	return 0;
}

求平均值

​
题目描述:计算三个整数的平均值,结果保留两位小数。

输入格式:共一行,包含三个整数,整数之间用空格分隔。

输出格式:共一行,输出平均值,结果保留两位小数。

输入示例:20 42 55

输出示例:39.00
#include <stdio.h>
int main(){
	float a,b,c;
	scanf("%f %f %f",&a,&b,&c);
	printf("%.2f",(a+b+c)/3);
	return 0;
}

简单程序

​
标题
简单程序

描述
输出特定的文字

时间限制
1	

内存限制
10000	

类别
1

输入说明
无	

输出说明
用C程序输出以下两行文字
C programming language is useful!
I like it very much.	

输入样例
无

输出样例
C programming language is useful!
I like it very much.	

提示
使用printf输出即可

​
#include <stdio.h>
int main(){
	printf("C programming language is useful!\nI like it very much.");
	return 0;
}

冰箱温度预测

​
标题	
冰箱温度预测

类别	
基本计算

时间限制	
1S

内存限制	
256Kb

问题描述	
编写一个程序,用于预测冰箱断电后经过时间t(以小时为单位)后的温度T。已知计算公式如下所示


输入说明	
输入两个整数h和m表示冰箱断电后经过的时间,h表示小时,m表示分钟

输出说明	
输出冰箱断电后经过时间t(以小时为单位)后的温度T,保留两位小数

输入样例	
2 0
输出样例	
-16.00
#include <stdio.h>
int main(){
	float h,m,t;
	scanf("%f %f",&h,&m);
	t = h+m/60;
	printf("%.2f",(4*t*t/(t+2))-20);
	return 0;
}

计算三角形的面积

​
题目描述:输入三角形的三边长,计算三角形的面积,结果保留两位小数。
          边长分别为a,b,c,三角形的面积公式为s=sqrt(p(p-a)(p-b)(p-c)),其中p=(a+b+c)/2。

输入格式:共一行,输入三个数,保留两位小数,用空格隔开各个数据。

输出格式:共一行,输出面积,结果保留两位小数。

示例:
输入:3.00 4.00 5.00
输出:6.00
#include <stdio.h>
#include <math.h>
int main(){
	double a,b,c;
	scanf("%lf %lf %lf",&a,&b,&c);
	double p,s;
	p = (a+b+c)/2;
	s = sqrt(p*(p-a)*(p-b)*(p-c));
	printf("%.2lf",s);
	return 0;
}

工资发放

​
题目描述:公司财务要发工资现金,需要提前换取100元、50元、20元、10元、5元和1元的人民币,
          请输入工资数,计算张数最少情况下,各自需要多少张。

输入格式:共一行,输入一个正整数。

输出格式:共一行,分别是10050201051元面额的张数,用空格隔开各个数据。

示例:
输入:1258
输出:12 1 0 0 1 3
#include <stdio.h>
int main(){
	int sal;
	scanf("%d",&sal);
	printf("%d ",sal/100);
	sal = sal%100;
		printf("%d ",sal/50);
		sal = sal%50;
			printf("%d ",sal/20);
			sal = sal%20;
				printf("%d ",sal/10);
				sal = sal%10;
					printf("%d ",sal/5);
					sal = sal%5;
						printf("%d ",sal/1);
						return 0;
	}

利率计算

​
题目:利率计算
时间限制:1S
内存限制:10000Kb
问题描述:

假如我国国民生产总值的年增长率为9%,计算10年后我国国民总值与现在相比增长多少百分比。计算公式为

r为增长率,n为年数,p为与现在相比的倍数。
输入说明:
输入两个浮点数,分别表示年增长率和年数,两个浮点数之间用空格分隔。
输出说明:
输出一个浮点数,表示与现在相比的倍数,小数点后保留2位小数。
输入样例:
0.09 10
输出样例:
2.37
#include <stdio.h>
#include <math.h>
int main(){
	double t,r;
	int n;
	scanf("%lf %d",&r,&n);
	t = pow(1+r,n);
	printf("%.2f",t);
	return 0;
	}

出租车计价

​
题目描述:
   编写程序,根据某城市普通出租车收费标准进行车费计算。标准如下:
   起步里程为3公里,起步费10元;
   超出起步里程后10公里内,每公理2元;
   超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
   营运过程中,因路阻及乘客要求临时停车等待的,按每5分钟2元计费(不足5分钟不收费)。

输入格式:共一行,包括行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔

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

示例:
输入:40.0 7
输出: 116
#include <stdio.h>
int main(){
	float mile;
	int t,sum = 0;
	scanf("%f %d",&mile,&t);
	if(mile>0&&mile<=3){
		sum=sum +2*(t/5)+0.5+10;
	}else if(mile>3&&mile<=10){
		sum = 10+2*(mile-3)+2*(t/5)+0.5;
	}else if(mile>10){
		sum = 24+3*(mile-10)+2*(t/5)+0.5;
	}
	printf("%d",sum);
	return 0;
} //加0.5为了四舍五入

整除判断2

​
题目描述:编写程序,输入一个正整数,判断是否能被57同时整除,若可以,则输出yes;否则输出no。

输入格式:输入一个正整数。

输出格式:输出“yes”或“no”。

示例:
输入:35
输出:yes

​
#include <stdio.h>
int main(){
	int a;
	scanf("%d",&a);
	if(a%5==0&&a%7==0){
		printf("yes");
	}else printf("no");
	return 0;
}

奇偶判断

​
题目描述:编写程序:输入一个正整数,判断该数的奇偶性,输出判断的结果(偶数/奇数)。

输入格式:输入一个正整数。

输出格式:输出“偶数”或“奇数”。

示例:
输入:5
输出:奇数

​
#include <stdio.h>
int main(){
	int a;
	scanf("%d",&a);
	if(a%2==0){
		printf("偶数");
	}else printf("奇数"); 
	return 0;
}

沸水降温曲线

​
描述: 
沸腾的水(100℃)在室温下温度随时间变化的曲线如图所示,给出时间,计算
水的温度
c =
100-5t (0<=t<=10)
50-(t-10) (10<t<=30)
 30-(t-30)/2 (30<t<=50) 
 20   (t>50)
输入: 
第一行为两个整数 m(m[0100],s(s∈[0,59]),分表表示降温时间的分钟数
和秒数
输出: 
输出一个小数,表示输入时间对应的水的温度,温度保留 1 位小数。
输入样例: 
5 30
输出样例: 
72.5
#include <stdio.h>
int main(){
	float m,s;
	scanf("%f %f",&m,&s);
	float t,c;
	t = m+s/60;
    if(t>=0&&t<=10){
    	c = 100-5*t;
	}else if(t>10&&t<=30){
		c = 50-(t-10);
	}else if(t>30&&t<=50){
		c = 30-(t-30)/2;
	}else c = 20;
	printf("%.1f",c);

三角形判断

/*标题
三角形判别

描述
已知三角形任意两边之和大于第三边,给出三个正整数a,b,c,,请判断能否构成一个三角形,并输出相应结果。

时间限制
1	

内存限制
10000	

类别
1

输入说明
输入数据为同一行上的3个整数a,b,c(0 < a,b,c < 1000),整数之间用空格分隔。

输出说明
如果输入的三个整数能够构成一个三角形,输出该三角形周长,否则输出No	

输入样例1
3 3 2
输入样例2
1 1 5
输出样例1
8	
输出样例2
No
提示
能够构成一个三角形,输出该三角形周长,否则输出No
*/
#include <stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(a+b>c&&a+c>b&&b+c>a){
		printf("%d",a+b+c);
	}else printf("No");
	return 0;
}

数列分段

​
题目2:数列分段
问题描述
  给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
输入格式
  输入的第一行包含一个整数n,表示数列中整数的个数。
  第二行包含n个整数a1, a2,, an,表示给定的数列,相邻的整数之间用一个空格分隔。
输出格式
  输出一个整数,表示给定的数列有多个段。
样例输入
8
8 8 8 0 12 12 8 0
样例输出
5
样例说明
  8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
1 ≤ n ≤ 10000 ≤ ai ≤ 1000。

​
#include <stdio.h>
int main(){
	int n,i;
	scanf("%d",&n);
	int num[n];
	for(i=0;i<n;i++){
		scanf("%d",&num[i]);
	}
	int count = 1;
	for(i=0;i<n-1;i++){
		if(num[i]!=num[i+1]){
			count++;
		}
	}
	printf("%d",count);
	return 0;
}

字符编码

​
题目:字符编码 
时间限制:1S
内存限制:10000Kb
问题描述:
请编程序将“China”译成密码,密码规律是:用原来字母后面第四个字母代替原来的字母。例如“A”后面的第四个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。
输入说明:
用赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为‘C’,‘h’,‘i’‘n’,‘a’,字符之间以空格分隔。
输出说明:
经过运算,使c1,c2,c3,c4,c5分别变成‘G’,‘l’,‘m’,‘r’,‘e’。用printf函数输出这五个字符
输入样例:
C h I n a
输出样例:
Glmre

​
#include <stdio.h>
int main(){
	char s[10];
    gets(s);
	int i = 0;
	for(i=0;s[i]!='\0';i++){
     if(s[i]>='A'&&s[i]<='z'){
     	printf("%c",s[i]+4); 
	 }
}
	return 0;
}

购房贷款计算

​
题目:购房贷款计算
时间限制:1S
内存限制:10000Kb
问题描述:
购房从银行贷了一笔款d,准备每月还款额为P,月利率为r,计算多少月能还清。(设d为300000元,p为6000元,r为1%,对求得的月份取小数点后一位,对第2位按四舍五入处理)
提示:计算还清月数m的公式如下:
m=(logp-log(p-d*r))/log(1+r)

也可以将公式改写为:
m=(log(p/(p-d*r))/log(1+r)

输入说明:
输入三个浮点数,分别表示贷款,每月还款额与月利率,三个浮点数之间用空格分隔。
输出说明:
输出以个浮点数,表示还清贷款的月数,小数点后保留2位小数。
输入样例:
300000 6000 0.01
输出样例:
69.66
#include <stdio.h>
#include <math.h>
int main(){
	double d,p,r;
	scanf("%lf %lf %lf",&d,&p,&r);
	double m;
	m = (log(p)-log(p-d*r))/log(1+r);
	printf("%.2f",m);
	return 0;
}

最小差值

​
题目3:最小差值
问题描述
  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
  输入第一行包含一个整数n。
  第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式
  输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
样例说明
  相差最小的两个数是54,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明
  有两个相同的数3,它们之间的差值是0.
数据规模和约定
对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。


​
#include <stdio.h>
#include <math.h>
int main(){
	int n,i = 0;
    int j = 0;
	int min = 10000;
	scanf("%d",&n);
	int num[n];
	for(i=0;i<n;i++){
		scanf("%d",&num[i]);
	}
	for(i=0;i<n-1;i++){
		for(j=i+1;j<n;j++){
			if(fabs(num[i]-num[j])<min){
				min = fabs(num[i]-num[j]);
			}
		}
	}
	printf("%d",min);
	return 0;
}

气温波动

​
标题	
气温波动

类别
流程控制

时间限制	
1S

内存限制	
256Kb

问题描述	
最近一段时间气温波动较大。已知连续若干天的气温,请给出这几天气温的最大波动值是多少,即在这几天中某天气温与前一天气温之差的绝对值最大是多少。
输入说明	
输入数据分为两行。
第一行包含了一个整数n,表示给出了连续n天的气温值,2 ≤ n ≤ 30。
第二行包含n个整数,依次表示每天的气温,气温为-2040之间的整数。

输出说明	
输出一个整数,表示气温在这n天中的最大波动值。

输入样例	
6
2 5 5 7 -3 5

输出样例	
10
#include <stdio.h>
#include <math.h> 
int main(){
	int n,i;
	int max = 0;
	scanf("%d",&n);
	int t[n];
	for(i=0;i<n;i++){
		scanf("%d",&t[i]);
	}
	for(i = 1;i<n;i++){
		if(fabs(t[i]-t[i-1])>max){
				max = fabs(t[i]-t[i-1]);
			}
		
	}
	printf("%d",max);
	return 0;
}

PM2.5

​
标题	
PM2.5

类别
流程控制

时间限制	
1S

内存限制	
256Kb

问题描述	
给出一组PM2.5数据,按以下分级标准统计各级天气的天数,并计算出PM2.5平均值。
PM2.5分级标准为:
一级优(0<=PM2.5<=50)
二级良(51<=PM2.5<=100为)
三级轻度污染(101<=PM2.5<=150)
四级中度污染(151<=PM2.5<=200)
五级重度污染(201<=PM2.5<=300)
六级严重污染(PM2.5>300)


输入说明	
输入分为两行,
第一行是一个整数n表示天数(1<n<=100);
第二行为n个非负整数Pi(0<=Pi<=1000),表示每天的PM2.5值,整数之间用空格分隔。

输出说明	
输出两行数据,
第一行为PM2.5平均值,结果保留2位小数;
第二行依次输出一级优,二级良,三级轻度污染,四级中度污染,五级重度污染,六级严重污染的天数。

输入样例	
10
50 100 120 80 200 350 400 220 180 165

输出样例	
186.50
1 2 1 3 1 2
#include <stdio.h>
int main(){
	int n,i;
	int fir = 0,sec = 0,thi = 0,fou = 0,fif = 0,six = 0;
	scanf("%d",&n);
	double sum = 0;
	double pm[n];
	for(i=0;i<n;i++){
		scanf("%lf",&pm[i]);
        sum = sum +pm[i];   	
	}
	printf("%.2f\n",sum/n);
	for(i=0;i<n;i++){
		if(pm[i]>=0&&pm[i]<=50){
			fir++;
		}else if(pm[i]>=51&&pm[i]<=100){
		    sec++;
		}else if(pm[i]>=101&&pm[i]<=150){
		    thi++;
		}else if(pm[i]>=151&&pm[i]<=200){
		    fou++;
		}else if(pm[i]>=201&&pm[i]<=300){
		    fif++;
		}else six++;
	}
	printf("%d %d %d %d %d %d",fir,sec,thi,fou,fif,six);
	return 0;
}

整数分析

​
标题	
整数分析

类别
流程控制

时间限制	
1S

内存限制	
256Kb

问题描述	
给出一个整数n(0<=n<=100000000)。求出该整数的位数,以及组成该整数的所有数字中的最大数字和最小数字。

输入说明	
输入一个整数n(0<=n<=100000000)

输出说明	
在一行上依次输出整数n的位数,以及组成该整数的所有数字中的最大数字和最小数字,各个数字之间用空格分隔。

输入样例	
217

输出样例	
3 7 1
#include <stdio.h>
int main(){
	int n,t ;
	int max = 0,min = 10;
	scanf("%d",&n);
	int count = 0;
	if(n == 0){
		printf("1 0 0");
	} else{
	while(n>0){
		t = n%10;
		if(t>max){
			max = t;
		}
		if(t<min){
			min = t;
		}
		n = n/10;
		count++;
	}
	printf("%d %d %d",count,max,min);}
	return 0;
}

阶梯电价计费

​
题目:阶梯电价计费
类别:流程控制	
时间限制:2S
内存限制:10000Kb
问题描述:	
电价分三个档次,[0,110]度电,每度电0.5元;(110,210]度电,超出110部分每度电0.55元,超过210度电,超出210部分每度电0.70元,给出一个家庭一月用电量,请计算出应缴的电费(四舍五入,保留小数点后两位小数)。
输入说明:
输入数据为一个正实数,表示一月用电量
输出说明:
输出应缴电费,四舍五入保留2位小数。
输入样例:
输入样例1
100
输入样例2
200
输入样例3
329.75
输出样例:
输出样例1
50.00
输出样例2
104.50
输出样例3
193.82
#include <stdio.h>
int main(){
	float u;
	scanf("%f",&u);
	float fee;
	if(u>=0&&u<=110){
		fee = u*0.5;
	}else if(u>110&&u<=210){
		fee = 110*0.5+(u-110)*0.55;
	}else fee = 110*0.5+100*0.55+(u-210)*0.7;
	printf("%.2f",fee);
	return 0;
}

计算某月天数

​
标题:计算某月天数
类别:流程控制	
时间限制:2S
内存限制:10000Kb
问题描述:
每年的135781012月有31天,46911月有30天,闰年229天,其他年份228天,给定年份和月份求该月的天数

输入说明:
输入由两个正整数a和b构成,a表示年份,b表示月份,a和b之间用空格分隔

输出说明:
根据年份和月份计算该月天数并输出

输入样例	
输入样例1
2000 3
输入样例2
2001 2
输出样例	
输出样例1
31
输出样例2
28
#include <stdio.h>
int main(){
	int year,month;
	int day;
	scanf("%d %d",&year,&month);
	switch (month){
		case 1:
			case 3:
				case 5:
				  case 7:
				  	case 8:
				  		case 10:
				  			case 12: day = 31;
				  			break;
		case 4:
		case 6:
		case 9:
		case 11:day = 30;
		break;
		case 2:if((year%4==0&&year%100!=0)||year%400==0){
			day = 29;}
			else day = 28;
			break;
		
					}
					printf("%d",day);
		return 0;
}

角谷定理

​
标题:
角谷定理

类别:

时间限制:
2 S

内存限制:
10000 Kb

问题描述:	

角谷定理定义如下:
对于一个大于1的整数n,如果n是偶数,则n = n / 2。如果n是奇数,则n = 3 * n +1,反复操作后,n一定为1。
例如输入22的变化过程: 22 ->11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1,数据变化次数为15。
输入一个大于1的整数,求经过多少次变化可得到自然数1。

输入说明	
输入为一个整数n,1<n<100000。

输出说明	
输出变为1需要的次数

输入样例	
样例1输入
22
样例2输入
33

输出样例
样例1输出	
15
样例2输出
26
#include <stdio.h>
int main(){
	int n;
	int count = 0;
	scanf("%d",&n);
	while(n!=1){
		if(n%2==0){
		n = n/2;
		}else if(n%2==1){
			n = n*3+1;
		}
		count++;
	}
	printf("%d",count);
	return 0;
}

最大公约数

​
标题:	
最大公约数

类别:
	
时间限制:	
1 S

内存限制:	
1000 Kb

问题描述:	
最大公约数(GCD)指某几个整数共有因子中最大的一个,最大公约数具有如下性质,
gcd(a,0)=a
gcd(a,1)=1
因此当两个数中有一个为0时,gcd是不为0的那个整数,
当两个整数互质时最大公约数为1。
输入两个整数a和b,求最大公约数

输入说明:
输入为两个非负整数a和b(0<=a,b<10000),a和b之间用空格分隔,

输出说明:
输出其最大公约数

输入样例:
样例1输入	
2 4
样例2输入:
12 6
样例3输入:
3 5


输出样例:
样例1输出	
2
样例2输出
6
样例3输出
1
#include <stdio.h>
int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	while(b!=0){
		int t;
		t=a%b;
		a=b;
		b=t;
		}
		printf("%d",a);
	return 0;
}

完数

​
标题:
完数

类别:
	
时间限制:	
2 S

内存限制:	
10000 Kb

问题描述:	
请写一个程序,给出指定整数范围[a,b]内的所有完数,0 < a < b < 10000。
一个数如果恰好等于除它本身外的所有因子之和,这个数就称为"完数"。
例如6是完数,因为6=123

输入说明	
输入为两个整数a和b,a和b之间用空格分隔

输出说明	
输出[a,b]内的所有完数,每个数字占一行

输入样例	
1 10

输出样例	
6
#include <stdio.h>
int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	int i,sum = 0;
	for(i=a;i<=b;i++){
	
     for(int j = 1;j<i;j++){
     	if(i%j==0){
     		sum+=j;
		 }
	 }
	 if(sum == i) 	printf("%d\n",i);
	 sum = 0;
	}
	return 0;
}

计算整数各位数字之和

​
标题:
计算整数各位数字之和

类别:

时间限制:	
1 S

内存限制:	
1000 Kb

问题描述:	
假设n是一个由最多9位数字(d9,, d1)组成的正整数。编写一个程序计算n的每一位数字之和
输入说明:	
输入数据为一个正整数n

输出说明:	
对整数n输出它的各位数字之和后换行

输入样例:	
3704

输出样例:	
14
#include <stdio.h>
int main(){
	int n,sum = 0;
	scanf("%d",&n);
	while(n>0){
		sum += n%10;
		n =n/10;
	}
	printf("%d",sum);
	return 0;
}

车牌限行

​
试题名称	车牌限行
时间限制:	1 秒
内存限制:	256KB

问题描述	问题描述
受雾霾天气影响,某市决定当雾霾指数超过设定值时对车辆进行限行,假设车牌号全为数字,且长度不超过6位,限行规则如下: 
(1)限行时间段只包括周一至周五,周六周日不限行; 
(2)如果雾霾指数低于200,不限行; 
(3)如果雾霾指数大于等于200且低于400,每天限行两个尾号的汽车,周一限行16,周二限行27,周三限行38,周四限行49,周五限行50; 
(4)如果雾霾指数大于等于400,每天限行五个尾号的汽车,周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,8。 

现在给出星期几、雾霾指数和车牌号,判断该车牌号是否限行。 

输入说明
输入分为三个整数,第一个整数表示星期几(1~71表示周一,2表示周二,依次类推,7表示周日),
第二个整数表示雾霾指数(0~600),第三个整数表示车牌号,整数之间用空格分隔。

输出说明
输出为两个部分,第一部分为车牌最后一位数字,第二部分为限行情况,限行输出yes,不限行输出no。

输入样例
输入样例1 
4 230 80801 
输入样例2 
3 300 67008

输出样例
输出样例1 
1 no 
输出样例2 
8 yes 

​
#include <stdio.h>
int main(){
	int day,wu,num;
	scanf("%d %d %d",&day,&wu,&num);
	int flag = 0;
	int t;
	t = num%10;
      if(day>=1&&day<=5){
		if(wu>=200&&wu<400){
			switch(day){
				case 1:if(t==1||t==3) flag = 1;break;
				case 2:if(t==2||t==7) flag = 1;break;
				case 3:if(t==3||t==8) flag = 1;break;
				case 4:if(t==4||t==9) flag = 1;break;
				case 5:if(t==5||t==0) flag = 1;break;
			}
		}else if(wu>=400){
			switch(day){
				case 1:
					case 3:
						case 5:if(t==1||t==3||t==5||t==7||t==9) flag = 1;
						break;
						case 2:
							case 4:if(t==0||t==2||t==4||t==6||t==8) flag =1;
			}
		}
	}
	printf("%d ",t);
	if(flag == 1){
		printf("yes");
	}else printf("no");
		return 0;
}

自然数分解

​
标题
自然数分解
类别
流程控制
时间限制
2S
内存限制
1000Kb
问题描述
任何一个自然数 m 的立方均可写成 m 个连续奇数之和。例如:
1^3=1 
2^3=3+5 
3^3=7+9+11 
4^3=13+15+17+19 
编程实现:输入一自然数 n,求组成 n
3 的 n 个连续奇数。
输入说明
一个正整数 n,0<n<30。
输出说明
输出 n 个连续奇数,数据之间用空格隔开,并换行
输入样例
4
输出样例
13 15 17 19
#include <stdio.h>
#include <math.h>
int main(){
	int n;
	scanf("%d",&n);
	int i;
	for(i=1;i<n*n*n;i+=2){
	   if(n*(i+n-1) == pow(n,3)){
	   	for(int count =1;count<n;count++){
	   		printf("%d ",i);
	   		i=i+2;
		   }
		   break;
	   }
	}
	printf("%d\n",i);
	return 0;
}

直角三角形

​
标题	
直角三角形

类别	
流程控制

时间限制	
1S

内存限制	
1000Kb

问题描述	
设直角三角形两条直角边长度为a和b,斜边长度为c,则a,b,c满足a^2+b^2=c^2,
输入三个整数a,b,c,判断对应的三角形是不是直角三角形,不是则输出“no”,是则输出其面积的2倍。

输入说明	
数据由同一行的三个整数a,b,c构成,整数之间以空格分隔

输出说明	
如果输入的三个整数可以构成一个直角三角形,则输出一个整数表示该三角形面积的2倍;否则输出“no”

输入样例
样例1输入
1 1 2
样例2输入
3 4 5

输出样例	
样例1输出
no
样例2输出
12
#include <stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(a*a+b*b==c*c){
		printf("%d",a*b);
	}else if(a*a+c*c==b*b){
		printf("%d",a*c);
	}else if(b*b+c*c==a*a){
		printf("%d",b*c);
	}else printf("no");
	return 0;
}

abc组合

​
标题	
abc组合

类别
	
时间限制	
1S

内存限制	
1000Kb

问题描述	
已知abc+cba=n,其中a,b,c均为一位数,1000<n<2000,编程求出满足条件的a,b,c所有组合。

输入说明	
一个整数n

输出说明	
按照整数abc从小到大的顺序,输出a, b, c, 用空格分隔,每输出一组a,b,c后换行.

输入样例	
1352

输出样例	
3 7 9
4 7 8
5 7 7
6 7 6
7 7 5
8 7 4
9 7 3
#include <stdio.h>
int main(){
	int n;
	scanf("%d",&n);
	int i,j,k;
	for(i=i;i<=9;i++){
		for(j=0;j<=9;j++){
			for(k=0;k<=9;k++){
				if(i*100+j*10+k+k*100+j*10+i == n){
					printf("%d %d %d\n",i,j,k);
				}
			}
		}
	}
	return 0;
}

成绩分级

​
标题	
成绩分级

类别
流程控制
	
时间限制	
1S

内存限制	
1000Kb

问题描述	
给出一个百分制的成绩,要求输出成绩等级'A','B','C','D','E'90分以上为'A'80~89分为'B',70~79分为'C',60~69分为'D'60分以下为'E'。

输入说明	
输入一个正整数m(0<=m<=100)

输出说明	
输出一个字符

输入样例	
59

输出样例	
E

	

​
#include <stdio.h>
int main(){
	int score;
	scanf("%d",&score);
	int t;
	t = score/10;
	switch(t){
		case 10:
			case 9:printf("A");break;
			case 8:printf("B");break;
			case 7:printf("C");break;
			case 6:printf("D");break;
			default :printf("E");break; 
				}
	return 0;
}

字符处理

​
标题	
字符处理

类别
流程控制
	
时间限制	
1S

内存限制	
1000Kb

问题描述	
从键盘输入一个字符,若为小写字母,则输出其对应的大写字母;若为大写字母,则输出对应的小写字母;其他字符原样输出。

输入说明	
输入一个字符

输出说明	
输出一个字符

输入样例	
样例1输入
a
样例2输入
B
样例3输入
2

输出样例	
样例1输出
A
样例2输出
b
样例3输出
2
#include <stdio.h>
int main(){
	char c;
	scanf("%c",&c);
	if(c>='A'&&c<='Z'){
		printf("%c",c+32);
	}else if(c>='a'&&c<='z'){
		printf("%c",c-32);
	}else printf("%c",c);
	return 0;
}

寻找最大整数

​
标题	
寻找最大整数

类别	
流程控制

时间限制	
1S

内存限制	
1000Kb

问题描述	
从键盘输入四个整数,找出其中的最大值并将其输出。

输入说明	
输入4个整数,用空格分隔

输出说明	
输出值最大的一个整数

输入样例	
25 99 -46 0

输出样例	
99
#include <stdio.h>
int main(){
	int num[4];
	int i = 0;
	for(i=0;i<4;i++){
		scanf("%d",&num[i]);
	}
	int max = num[0];
	for(i=1;i<4;i++){
		if(num[i]>max){
			max = num[i];
		}
	} 
	printf("%d",max);
	return 0;
}

折点计数

​
折点计数

类别
流程控制
	
时间限制	
1S

内存限制	
256Kb

问题描述	
给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,
反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点,其他的天都不是折点。如图所示,第3天和第6天是折点。

给定n个整数a1, a2,, an表示连续n天中每天的销售量。请计算出这些天总共有多少个折点。

输入说明	
输入的第一行包含一个整数n。
第二行包含n个整数,用空格分隔,分别表示a1, a2,, an。
3 ≤ n ≤ 100,每天的销售量是不超过1000的非负整数。为了减少歧义,输入数据保证:在这n天中相邻两天的销售量总是不同的,即ai-1≠ai。

输出说明	
输出一个整数,表示折点数量。
输入样例	
7
5 4 1 2 3 6 4

输出样例	
2
#include <stdio.h>
int main(){
	int n,count = 0;
	scanf("%d",&n);
	int i = 0,num[100];
	for(i=0;i<n;i++){
		scanf("%d",&num[i]);
	}
	for(i=1;i<n-1;i++){
		if((num[i]-num[i-1])*(num[i]-num[i+1])>0){
			count++;
		}
	}
	printf("%d",count);
	return 0;
}

​​
​​​

  • 44
    点赞
  • 220
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值