目录
1. 水仙花数
2. 五位回文数
3. 输入x,计算y
4. 百分制改为等级制
5. 同构数
6. 月份天数
7. 加一天后日期(条件)
8. 计算服装款(条件)
1. 水仙花数
【问题描述】输入一个3位正整数,判断该数是否为一个水仙花数。所谓水仙花数,是指该数各位数字的立方之和等于其本身。如153,370是水仙花数,123不是。
【输入形式】一个3位正整数。
【输出形式】如果这个3位数是一个水仙花数,输出该数,空格后输出Y,否则输出该数空格后输出N。
【样例1输入】153
【样例1输出】153 Y
【样例1输入】105
【样例1输出】105 N
#include<stdio.h>
int main(){
int n;
int a,b,c;
scanf("%d",&n);
a=n%10;
b=n/10%10;
c=n/100;
if(a*a*a+b*b*b+c*c*c==n){
printf("%d Y",n);
}else{
printf("%d N",n);
}
return 0;
}
2. 五位回文数
【问题描述】输入一个5位的整数,判断该数是否为回文数。5位回文数是指其个位数与万位数相同,十位数与千位数相同。如12321是5位回文数。
【输入形式】输入一个整数,如12321
【输出形式】如果是回文数,输出这个数,空格后再输出Y,否则输出这个数,空格后再输出N
【样例1输入】12321
【样例1输出】12321 Y
【样例2输入】12345
【样例2输出】12345 N
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a,b,c,d,e;
a=n/10000;
b=n/1000%10;
c=n/100%10;
d=n/10%10;
e=n%10;
if(a==e&&b==d){
printf("%d Y",n);
}else{
printf("%d N",n);
}
return 0;
}
3. 输入x,计算y
【问题描述】 输入x,计算y
【输入形式】输入一个实数,如 1.5
【输出形式】输出一个实数,保留6位小数,注意结果用double数据类型。
【样例输入】-1.5
【样例输出】3.349996
#include<stdio.h>
#include<math.h>
int main(){
double x,y;
scanf("%lf",&x);
if(x<-2){
y=log(-x);
}else if(x>=-2&&x<pow(5,1/3)){
y=sqrt(x+3)+log(5-pow(x,3));
}else{
y=x*x+exp(x);
}
printf("%.6lf",y);
return 0;
}
4. 百分制改为等级制
【问题描述】将考试成绩百分制改为等级制,规则为:90~100分改为A;75~89分改为B;60~74分改为C,60分以下改为D。负数或大于100数,输出“error”
【输入形式】一个整数
【输出形式】一个大写英文字母或“error”
【样例输入】89
【样例输出】B
【样例输入】-89
【样例输出】error
#include<stdio.h>
int main(){
int score;
scanf("%d",&score);
if(score>100){
printf("error");
return 0;
}
if(score>=90){
printf("A");
}else if(score>=75){
printf("B");
}else if(score>=60){
printf("C");
}else if(score>=0){
printf("D");
}else{
printf("error");
}
return 0;
}
5. 同构数
【问题描述】输入一个5~99之间的整数,判断该数是否为一个同构数。所谓同构数是指该数出现在其平方数的右边,如5,25是同构数,23不是同构数。
【输入形式】一个5~99之间的整数.
【输出形式】一个整数,一个大写英文字母Y或N,英文空格分开。
【样例1输入】10
【样例1输出】10 N
【样例2输入】76
【样例2输出】76 Y
#include<stdio.h>
int main(){
int n,s;
scanf("%d",&n);
s=n*n;
if(n>=5&&n<=9){
if(s%10==n){
printf("%d Y",n);
}else{
printf("%d N",n);
}
}else{
if(s%100==n){
printf("%d Y",n);
}else{
printf("%d N",n);
}
}
return 0;
}
6. 月份天数
【问题描述】从键盘输入年份(1 ~ 3000)和月份(1 ~ 12),判断该月有多少天。 如果是2月,要考虑闰年,闰年2月有29天,如是年份是4的倍数但不是100的倍数或者年份是400的倍数,这一年是闰年。
【输入形式】输入合法年份和月份二个整数,空格分开
【输出形式】一个整数
【样例1输入】2001 2
【样例1输出】28
【样例说明】2001年2月不是闰年,28天。
【样例2输入】2000 2
【样例2输出】29
【样例3输入】2019 3
【样例3输出】31
【问题描述】从键盘输入年份(1 ~ 3000)和月份(1 ~ 12),判断该月有多少天。 如果是2月,要考虑闰年,闰年2月有29天,如是年份是4的倍数但不是100的倍数或者年份是400的倍数,这一年是闰年。
【输入形式】输入合法年份和月份二个整数,空格分开【输出形式】一个整数
【样例1输入】2001 2
【样例1输出】28【样例说明】2001年2月不是闰年,28天。
【样例2输入】2000 2
【样例2输出】29【样例3输入】2019 3
【样例3输出】31
7. 加一天后日期(条件)
【问题描述】输入一个有效日期,显示这个日期加一天后的日期。注意要考虑这个日期是年尾或各个月的月尾的情况。
【输入形式】输入一个有效日期,年月日形式表示,英文逗号分开。
【输出形式】 输出一个日期,年月日形式表示,字符-分开。
【样例输入】2000,12,31
【样例输出】2001-1-1
【样例说明】2000年12月31日加一天后是2001年1月1日。
#include<stdio.h>
int main(){
int year,month,day;
scanf("%d,%d,%d",&year,&month,&day);
if(month==2){
if(year%400==0||(year%100!=0&&year%4==0)){
if(day==29){
month+=1;
day=1;
}else{
day+=1;
}
}else{
if(day==28){
month+=1;
day=1;
}else{
day+=1;
}
}
}else if(month==1||month==3||month==5||month==7||month==8||month==10){
if(day==31){
month+=1;
day=1;
}else{
day+=1;
}
}else if(month==12){
if(day==31){
year+=1;
month=1;
day=1;
}else{
day+=1;
}
}else{
if(day==30){
month+=1;
day=1;
}else{
day+=1;
}
}
printf("%d-%d-%d",year,month,day);
return 0;
}
8. 计算服装款(条件)
【问题描述】某服装店经营套服,也单件出售,若买的不少于50套,每套80元,不足50套,每套90元,若只买上衣,每件60元,只买裤子每条45元,读入所买上衣和裤子件数(不小于0的整数),计算总付款。
【输入形式】上衣数和裤子数二个不小于0的整数,空格分开
【输出形式】总付款一个整数
【样例输入】35 40
【样例输出】3375
【样例说明】35*90+(40-35)*45=3375
【评分标准】 20
#include<stdio.h>
int main(){
int x,y,s1,s2;
scanf("%d %d",&x,&y);
int min=x;
if(min>y){
min=y;
}
if(min>=50){
s1=min*80;
if(x>y){
s2=(x-y)*60;
}else{
s2=(y-x)*45;
}
}else{
s1=min*90;
if(x>y){
s2=(x-y)*60;
}else{
s2=(y-x)*45;
}
}
printf("%d",s1+s2);
}