山东理工大学2022级PTA系统C语言编程练习----实验二题解

7-1 sdut-C语言实验-求绝对值(选择结构)

从键盘上输入任意一个整数,然后输出它的绝对值!

输入格式:

从键盘上输入任意一个整数。

输出格式:

输出它的绝对值。

输入样例:

在这里给出一组输入。例如:

-4

输出样例:

在这里给出相应的输出。例如:

4

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

7-2 sdut-C语言实验——整除

判断一个数n能否同时被3和5整除。

输入格式:

输入一个正整数n。

输出格式:

如果能够同时被3和5整除,输出Yes,否则输出No。

输入样例:

15

输出样例:

在这里给出相应的输出。例如:

Yes
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if (n%3==0&&n%5==0)printf("Yes");
    else printf("No");
    return 0;
}

 7-3 sdut-C语言实验——求两个整数之中较大者

输入两个整数,请编程求其中的较大者。

输入格式:

在一行中输入用空格隔开的两个整数,例如5 9。

输出格式:

输出两个整数之中较大者,输出形式举例:max=9。

输入样例:

在这里给出一组输入。例如:

5 9

输出样例:

在这里给出相应的输出。例如:

max=9
#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a>b)printf("max=%d",a);
    else printf("max=%d",b);
    return 0;
}

 7-4 sdut-C语言实验——找中间数

输入三个整数,找出其中的中间数。(这里的中间数指的是大小,不是位置。)

输入格式:

输入3个整数。

输出格式:

输出中间数。

输入样例:

在这里给出一组输入。例如:

1 2 3

输出样例:

在这里给出相应的输出。例如:

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

 7-5 sdut-C语言实验——三个数排序

输入三个整数x,y,z,请把这三个数由小到大输出。

输入格式:

输入数据包含3个整数x,y,z,分别用逗号隔开。

输出格式:

输出由小到大排序后的结果,用空格隔开。

输入样例:

在这里给出一组输入。例如:

2,1,3

输出样例:

在这里给出相应的输出。例如:

1 2 3
#include<stdio.h>
int main()
{
    int a, b, c, t = 0;
    scanf("%d,%d,%d", &a, &b, &c);
    if (a > b) {
        t = a;
        a = b;
        b = t;
    }
    if (a > c) {
        t = a;
        a = c;
        c = t;
    }
    if (b > c) {
        t = b; b = c; c = t;
    }
    printf("%d %d %d", a, b, c);
    return 0;
}

7-6 sdut-C语言实验-求三个整数的最大值

请编写程序,输入三个整数,求出其中的最大值输出。

输入格式:

在一行上输入三个整数,整数间用逗号分隔。

输出格式:

输出三个数中的最大值。

输入样例:

在这里给出一组输入。例如:

5,7,9

输出样例:

在这里给出相应的输出。例如:

max=9
#include <stdio.h>
int main()
{
    int a,b,c,max,min;
    scanf("%d,%d,%d",&a,&b,&c);
    if (a>b){max=a;b=min;}
    else {max=b;min=a;}//确定最大和最小值了
    if (c>max){printf("max=%d",c);}
    else if ()
    else printf("max=%d",max);
    return 0;
    
}

7-7 sdut-C语言实验- 相加和最大值

输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。

输入格式:

输入数据包含三个整数,用空格分开。

输出格式:

输出两两相加后的最大值。

输入样例:

1 2 3

输出样例:

在这里给出相应的输出。例如:

5
#include <stdio.h>
int main()
{
    int a,b,c,d,e,f;
    scanf("%d %d %d",&a,&b,&c);
    d=a+b;
    e=a+c;
    f=b+c;
    if (d>e){if (e>f)printf("%d",d);
             else if (d>f)printf("%d",d);
             else printf("%d",f);
             }
    else { if (e<f) printf("%d",f);
          else if (d>f) printf("%d",d);
          else printf("%d",e);
        }
    return 0;
}

7-8 sdut-C语言实验-三位数整数的各位数字 

本题要求编写程序,输入一个三位数的正整数,并输出它的个位数字、十位数字和百位数字的值。

输入格式:

请输入三位正整数,例如152。

输出格式:

按照以下格式输出:
152 = 个位数字 + 十位数字10 + 百位数字100
如不是三位数,输出“Please input a three digits number.”。

输入样例1:

125

输出样例1:

125 = 5 + 2*10 + 1*100
#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);//终端输入一个三位数;
    int b,c,d;//分别代表个位十位,百位。
    b=a%10;//得到个位数字
    c=a%100/10;//得到十位数字;
    d=a/100;//得到百位数字;
    if (a>=100&&a<=999)
    {
    printf("%d = %d + %d*10 + %d*100",a,b,c,d);
}
    else printf("Please input a three digits number.");
    return 0;
}

7-9 sdut-C语言实验-虎子算电费

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。

虎子决定编写程序计算一算家里电费。你也会编写这个程序吧?

输入格式:

输入在一行中给出虎子家的月用电量(单位:千瓦时)。

输出格式:

在一行中输出虎子家应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:

10

输出样例1:

cost = 5.30

输入样例2:

100

输出样例2:

cost = 55.50
#include <stdio.h>
int main()
{
    double a, cost = 0;//用电量,费用
    scanf("%lf", &a);
    if (a <= 50 && a >= 0) {
        cost = a * 0.53;
        printf("cost = %.2f", cost);
    }
    else if (a < 0)printf("Invalid Value!");
    else if (a > 50) {
        cost = (a - 50) * 0.58 + 50 * 0.53;
        printf("cost = %.2f", cost);
    }
    return 0;
}

7-10 计算分段函数[1]

本题目要求计算下列分段函数f(x)的值:

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入样例1:

10

输出样例1:

f(10.0) = 0.1

输入样例2:

0

输出样例2:

f(0.0) = 0.0
#include <stdio.h>
int main()
{
    double a;//输入实数
    scanf("%lf",&a);
    if (a==0)printf("f(0.0) = 0.0");
    else printf("f(%.1f) = %.1f",a,1/a);
    return 0;
}

7-11 计算分段函数[2]

本题目要求计算下列分段函数f(x)的值:

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。

输入样例1:

10

输出样例1:

f(10.00) = 3.16

输入样例2:

-0.5

输出样例2:

f(-0.50) = -2.75
#include <stdio.h>
#include <math.h>
int main()
{
    double x,result;
    scanf("%lf",&x);//输入实数X
    if (x>=0){
        result=sqrt(x);
        printf("f(%.2f) = %.2f\n",x,result);
    }
    else {
        result=pow(x+1,2)+(2*x)+(1/x);
          printf("f(%.2f) = %.2f\n",x,result);
          }
    return 0;
}

7-12 sdut-C语言实验-时间格式转换

24 小时制的时间格式为 "HH:mm",如 “05:20”,而 12 小时制的时间格式为 "h:mm AM/PM",如 "5:20 AM"。

24 小时制到 12 小时制的对应关系如下:

0 时:12 时 (AM)
1~11 时:1~11 时 (AM)
12 时:12 时 (PM)
13~23 时:1~11 时 (PM)
例如:"00:00" 对应 "12:00 AM","01:20" 对应 "1:20 AM","12:35" 对应 "12:35 PM","13:17" 对应 "1:17 PM","23:59" 对应 "11:59 PM"。

现在给你一个 24 小时制的时间,请你编写程序将其转换为 12 小时制的时间。

输入格式:

输入只有一行,包含一个 24 小时制的时间。

输出格式:

输出一行,表示转换为 12 小时制以后的时间。其中分钟部分若不足两位需要加 0 补足两位。

输入样例:

在这里给出一组输入。例如:

00:05

输出样例:

在这里给出相应的输出。例如:

12:05 AM
#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d:%d",&a,&b);
    if (a==0) printf("12:%02d AM\n",b);
    else if (a>=1&&a<=11) printf("%d:%02d AM\n",a,b);
    else if (a==12) printf("%d:%02d PM\n",a,b);
    else if (a>=13&&a<=23) printf("%d:%02d PM\n",a-12,b);
    return 0;    
}

7-13 sdut-C语言实验-时间间隔

从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。
如:3点5分25秒应表示为--03:05:25.假设两个时间在同一天内,时间先后顺序与输入无关。

输入格式:

输入包括两行。
第一行为时间点1。
第二行为时间点2。

输出格式:

以“小时:分钟:秒”的格式输出时间间隔。
格式参看输入输出。

输入样例:

12:01:12
13:09:43

输出样例:

在这里给出相应的输出。例如:

01:08:31
#include <stdio.h>
int main()
{
    int a1,b1,c1=0;//第一组数据
    int a2,b2,c2=0;
    scanf("%d:%d:%d\n%d:%d:%d",&a1,&b1,&c1,&a2,&b2,&c2);//格式化输入
    int d,e=0;
    d=a1*3600+b1*60+c1;
    e=a2*3600+b2*60+c2;
    int g=0;
    g=d-e;
    if (g>0)g=g;
    else g=-g;
    printf("%02d:%02d:%02d",g/3600,g/60%60,g%60);
    return 0;
}

7-14 sdut-C语言实验——输入数字星期,输出英文(switch语句)

从键盘上输入数字星期,然后输出它的英文。
其对应关系是:

1 Monday

2 Tuesday

3 Wednesday

4 Thursday

5 Friday

6 Saturday

7 Sunday

如果输入1-7之外的数字,则输出:error

输入格式:

从键盘输入数字星期,输入数字在1-7之间。

输出格式:

输出该数字对应的英文星期表示。

输入样例:

3

输出样例:

在这里给出相应的输出。例如:

Wednesday
#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    if(a==1)printf("Monday");
    else if (a==2)printf("Tuesday");
    else if (a==3)printf("Wednesday");
    else if (a==4)printf("Thursday");
    else if (a==5)printf("Saturday");
    else if (a==6)printf("Sunday");
    else printf("error");
    return 0;
}

7-15 sdut-C语言实验——模拟计算器

简单计算器模拟:输入两个整数和一个运算符,输出运算结果。

输入格式:

第一行输入两个整数,用空格分开;
第二行输入一个运算符(+、-、*、/)。
所有运算均为整数运算,保证除数不包含0。

输出格式:

输出对两个数运算后的结果。

输入样例:

30 50
*

输出样例:

1500
#include <stdio.h>
int main()
{
    int a, b; char c;
    scanf("%d %d\n%c", &a, &b, &c);//格式化输入
    if (c == '+')printf("%d\n", a + b);
    if (c == '-')printf("%d\n", a - b);
    if (c == '*')printf("%d\n", a * b);
    if (c == '/')printf("%d\n", a / b);
    return 0;
}
 

  • 27
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

恰逢*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值