角谷猜想
是指对于任意一个正整数,
如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。
如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到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个整数之和。
输入说明:三整形数据通过键盘输入,输入的数据介于-100000和100000之间,整数之间以空格、跳格或换行分隔。
输出说明:输出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。
输入说明:
整形数据、数字字符通过键盘输入,输入的整形数据介于0和4之间,输入的数字字符介于‘0’和‘5’之间,二个输入数之间用“,”分隔。
输出说明:
分别以整数形式及字符形式输出a+b,输出的二个数之间用“,”分隔。
输入样例:
3 ,5
输出样例:
56,8
#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,否则输出正确的商和余数
输入样例
输入样例:
样例1:
10 3 3 1
样例2:
10 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元的人民币,
请输入工资数,计算张数最少情况下,各自需要多少张。
输入格式:共一行,输入一个正整数。
输出格式:共一行,分别是100、50、20、10、5、1元面额的张数,用空格隔开各个数据。
示例:
输入: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
题目描述:编写程序,输入一个正整数,判断是否能被5和7同时整除,若可以,则输出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[0,100]),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 ≤ 1000,0 ≤ 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
样例说明
相差最小的两个数是5和4,它们之间的差值是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个整数,依次表示每天的气温,气温为-20到40之间的整数。
输出说明
输出一个整数,表示气温在这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
问题描述:
每年的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,闰年2月29天,其他年份2月28天,给定年份和月份求该月的天数
输入说明:
输入由两个正整数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=1+2+3
输入说明
输入为两个整数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,每天限行两个尾号的汽车,周一限行1和6,周二限行2和7,周三限行3和8,周四限行4和9,周五限行5和0;
(4)如果雾霾指数大于等于400,每天限行五个尾号的汽车,周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,8。
现在给出星期几、雾霾指数和车牌号,判断该车牌号是否限行。
输入说明
输入分为三个整数,第一个整数表示星期几(1~7,1表示周一,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;
}
文章来源地址https://www.toymoban.com/news/detail-743078.html
文章来源:https://www.toymoban.com/news/detail-743078.html
到了这里,关于XDOJ试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!