第2次上机题目2018年10月12日
以下内容仅供娱乐,欢迎随时探讨,请多指教!
⒈ 输入一个年份,判断其是否为闰年。
#include<stdio.h>
int main()
{
printf("输入一个年份\n");
int year;
scanf("%d",&year);
if((year%4 == 0 && year%100 != 0) | |(year%400 == 0))
printf("Yes\n");
else
printf("No\n");
return 0;
}
⒉ 假设现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。请编写程序,输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m为自助服务,e为协助服务),计算并输出应付款(保留小数点后2位)。
#include<stdio.h>
#define type90 6.95
#define type95 7.44
#define type97 7.93
#define dm 0.95
#define de 0.97
int main()
{
printf("输入顾客的加油量a,汽油品种b(90、93或97)"
"和服务类型c(m为自助服务,e为协助服务)\n");
double a,b;
char c;
scanf("%lf%lf",&a,&b);
getchar();c=getchar();
//注意字符包括空格 ,输入时注意不要空格。
if('m' == c){
if(b == 90) printf("%.2lf",a*type90*dm);
else if(b == 93) printf("%.2lf",a*type95*dm);
else if(b == 97) printf("%.2lf",a*type97*dm);
}
else if('e' == c){
if(b == 90) printf("%.2lf",a*type90*de);
else if(b == 93) printf("%.2lf",a*type95*de);
else if(b == 97) printf("%.2lf",a*type97*de);
}
else printf("你输错了!");
return 0;
}
⒊ 给一个不多于5位的正整数,求出它是几位数,并计算组成该整数的每位上的数字的和。
#include<stdio.h>
int main()
{
printf("输入一个不多于5位的正整数\n");
int x,sum=0,count=0;
scanf("%d",&x);
//注意求单个数的方法,把数分解
if(x>0)count++,sum+=x%10,x/=10;
if(x>0)count++,sum+=x%10,x/=10;
if(x>0)count++,sum+=x%10,x/=10;
if(x>0)count++,sum+=x%10,x/=10;
if(x>0)count++,sum+=x%10,x/=10;
//以后可以用循环解决
printf("数字的和=%d\n位数=%d",sum,count);
return 0;
}
⒋ 输入三角形的三边a,b,c,判断能否构成三角形,输出直角、等边或者等腰三角形。
#include<stdio.h>
int main()
{
double a,b,c;
printf("输入三角形的三边a,b,c\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a){
printf("是三角形,");
if(a*a+b*b == c*c || a*a == b*b+c*c || a*a+c*c == b*b){
printf("这是直角三角形。\n");
}
if(a == b && b==c){
printf("这是等边三角形。\n");
}
else if(a == b || b ==c || a == c){
printf("这是等腰三角形。\n");
}
}
else printf("不是三角形。\n") ;
return 0;
}
⒌ 输入某学生语文课程的成绩,输出该成绩的等级。判断规则为:如果成绩在90-100的范围内,则等级为A;若成绩在80-89的范围内,则等级为B;若成绩在70-79的范围内,则等级为C;若成绩在60-69的范围内,则等级为D;若少于60分,则等级为F。(要求:用switch语句实现。)
#include<stdio.h>
int main()
{
printf("请输入一个成绩\n");
double s;
scanf("%lf",&s);//选好判断量,整除10缩小
switch((int)(s/10)){
case 10:
case 9:
printf("等级为A\n");break;
case 8:
printf("等级为B\n");break;
case 7:
printf("等级为C\n");break;
case 6:
printf("等级为D\n");break;
default:
printf("等级为F\n");break;
}
return 0;
}
6、输入四个整数,按大小顺序输出(要求按四个变量的输入顺序依次输出)。
#include<stdio.h>
int main()
{
double t,a,b,c,d;
printf("请输入4个数:\n");
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
//数学比较排序,用中间量,依次比较。
if(a<b) t=a,a=b,b=t;
if(a<c) t=a,a=c,c=t;
if(a<d) t=a,a=d,d=t;
if(b<c) t=b,b=c,c=t;
if(b<d) t=b,b=d,d=t;
if(c<d) t=c,c=d,d=t;
printf("由大到小输出:%d %d %d %d\n",a,b,c,d);
return 0;
}
7、输入一个一元二次方程,根据实际情况,判断输出等根、实根和虚根的值。
#include"math.h"
#include"stdio.h"
int main()
{
double a,b,c,d,n;
printf("请输入3个数a,b,c(形如ax*x+bx+c=0)\n");
//ax*x+bx+c=0,注意数学求解方法
scanf("%lf%lf%lf",&a,&b,&c);
d= sqrt(b*b-4*a*c);
n=(int)d;
if(n>0) printf("%lf\n%lf\n",(-b+d/(2*a)),(-b-d/(2*a)));
else if(n == 0) printf("%lf\n",-(b/(2*a)));
else if(n<0) printf("实部%lf虚部%lf\n实部%lf虚部%lf\n"
,-b/(2*a),-d/(2*a),-b/(2*a),-d/(2*a));
return 0;
}
##3个题目写实验报告!##
8、输入一个数,判断是否能同时被3和5整除,输出“YES”或“NO”。
#include<stdio.h>
int main()
{
int a;
printf("输入一个数\n");
scanf("%d",&a);
if(a%3 == 0 && a%5 == 0) printf("YES\n");
else printf("NO\n");
return 0;
}
9、 已知三个数a,b,c,找出最大值放于max中。
#include<stdio.h>
int main()
{
double a,b,c,max;
printf("输入3个数\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a>b) max=a;
else max=b;
if(max<c) max=c;
printf("max=%d",max);
return 0;
}
10、有一分段函数:用scanf函数输入x的值(分别为x<1,1~10,>=10三种情况),求y值。
#include<stdio.h>
int main()
{
double x,y;
printf("输入1个数\n");
scanf("%lf",&x);
y=(int)x;
if(y<1) printf("y=%lf\n",x);
else if(y >= 1 && x<10) printf("y=%lf\n",2*x-1);
else printf("y=%lf\n",3*x-11);
return 0;
}