HNU程序设计作业三

找最小值

【问题描述】有一个包含任意n个整数的序列,请找出最小值并打印。

【输入形式】第一行输入n,第二行输入n个整数,用空格隔开。

【输出形式】输出最小数的值。

【样例输入】

10
34 91 83 0 29 93 57 -12999 88 72
【样例输出】

-12999
【样例说明】这10个整数中最小值为-12999。

【评测用例规模与约定】n的取值范围为[1,100]。序列中每个整数的取值范围[-100000 , 100000],且保证这n个整数各不相同。

#include <iostream>
using namespace std;
int main()
{
    int a[100];
    int n,i;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int min=a[0];
    for(i=0;i<n;i++)
    {
        if(a[i]<min)
            min=a[i];
    }
    cout<<min;
    return 0;
}

十进制转二进制

【问题描述】对任意一个十进制正整数,将其转换为二进制的形式
【输入形式】一个int型正整数
【输出形式】该输入的二进制形式
【样例输入】

100
【样例输出】

1100100
【样例说明】十进制数100的二进制形式是1100100

【评分标准】正确输出

#include <iostream>

using namespace std;

int main()
{
    int a,b;
    int i=1,j=0;
    cin>>a;
    while(a!=0)
    {
        b=a%2;
        a=a/2;
        j=j+i*b;
        i=i*10;
    }
    cout<<j<<endl;
    return 0;
}

敲7

【问题描述】输出指定范围内包含7的数字和7的倍数

【输入形式】一个int型正整数
【输出形式】从0到该输入整数范围以内所有包含7的数字和7的倍数,每个输出以换行隔开
【样例输入】

20

【样例输出】

7
14
17
【样例说明】0到20以内包含7的数字和7的倍数有7、14、17
【评分标准】正确输出

#include <iostream>
using namespace std;
int main()
{
 int n,i=1,j;
 cin>>n;
 while(i<=n)
 {
     if(i%7==0) {
            cout<<i<<endl;
     }
 else  {
        j=i;
   while(j<=n)
   {
       if(j%10==7) {
            cout<<i<<endl;
            break;
       }
     j=j/10;
  if(j==0)
    break;
   }

   }
  i++;

 }
 return 0;
}

打印一个金字塔

【问题描述】打印一个由"“组成的金字塔,每一行比上一行多一个”"。由键盘输入数字决定金字塔的高度,但是金字塔高度至少为1。

【输入形式】一个int型的自然数n
【输出形式】当n大于等于1时,输出一个n行的"“金字塔;当n小于1时输出一个一行的”"金字塔
【样例输入】

10
【样例输出】

      *
     * *
    * * *
   * * * *
  * * * * *
 * * * * * *
* * * * * * *



【样例说明】金字塔有10行,每一行比上一行多一个"“,”“和”*"之间有一个空格作为间隔。

【评分标准】输出正确

#include <stdio.h>

int main()
{
 int n,i,j;
 scanf("%d",&n);
 if(n>=1){
 for(i=1; i<=n; i++)
 {
  for(j=1; j<=n-i; j++)
   putchar(' ');
  for(j=1; j<=i; j++)
  {
    printf(" *");
  }

  putchar('\n');
 }
 }
 else
 {
     printf("*");
 }

 return 0;
}

求一个数的位数

【问题描述】求一个数的位数
【输入形式】一个int型的正整数
【输出形式】该输入正整数的位数或长度
【样例输入】

100
【样例输出】

3
【样例说明】100的位数是3
【评分标准】正确输出

#include <iostream>

using namespace std;

int main()
{
    int n,a=0;
    cin>>n;
    if(n==0)
    {
        cout<<'1'<<endl;
    }
    else
    {
        while(n>0)
        {
            n=n/10;
            a++;
        }
        cout<<a<<endl;
    }
    return 0;
}

湖南省阶梯电费

【问题描述】输入月份和用电量,计算出电费。

湖南省全省居民生活用电试行阶梯电价。居民阶梯电价试行范围为全省由供电企业(含地方供电企业)实行“一户一表”抄表结算到户的城乡居民用电户。

湖南省分档电量:

第一档电量,不分季节,为每户每月180千瓦时及以内的用电量。

第二、三档用电量分季节。3、4、5、9、10、11月为春秋季,二档电量为超过180千瓦时—350千瓦时,三档电量为350千瓦时以上;

1、2、6、7、8、12月为冬夏季,二档电量为超过180千瓦时—450千瓦时,三档电量为450千瓦时以上。

湖南阶梯电价:

第一档电量以内,基准电价仍按价格主管部门批复的现行居民生活用电价格标准执行,不作调整(其中省电网居民用户现行基准电价为0.588元/千瓦时);

第二档电量区间,在基准电价的基础上,每千瓦时加价0.05元;

第三档电量,在基准电价的基础上,每千瓦时加价0.30元。

湖南阶梯电价计算方法:

一档用电量180×一档价0.588+二档用电量×二档价0.638+三档用电量×三档价0.888

【输入形式】输入两个int型数字,分别代表月份和用电量(千瓦),用空格隔开

【输出形式】输出电费(元)
【样例输入】

1 180
【样例输出】

105.84
【样例说明】输入表示1月份的用电量为180千瓦,180千瓦是1档,电费为180×0.588=105.84(元)

【评分标准】输出正确

#include <iostream>

using namespace std;

int main()
{
    double n,m,x;
    cin>>m>>n;
    if((n<=180)&&(m>=1)&&(m<=12))
    {
        x=0.588*n;
        cout<<x<<endl;
    }
    else if((n>180)&&(n<=350)&&((m==3)||(m==4)||(m==5)||(m==9)||(m==10)||(m=11)))
    {
        x=0.588*180+0.638*(n-180);
        cout<<x<<endl;
    }
    else if((n>350)&&((m==3)||(m==4)||(m==5)||(m==9)||(m==10)||(m=11)))
        {
            x=0.588*180+0.638*170+0.888*(n-350);
            cout<<x<<endl;
        }
    else if((n>180)&&(n<=450)||((m==1)||(m==2)||(m==6)||(m==7)||(m==8)||(m=12)))
    {
        x=0.588*180+0.638*(n-180);
        cout<<x<<endl;
    }
    else if((n>450)||((m==1)||(m==2)||(m==6)||(m==7)||(m==8)||(m=12)))
    {
        x=0.588*180+0.638*270+0.888*(n-450);
        cout<<x<<endl;
    }
    return 0;
}

ch4-3 判断“水仙花数”

【问题描述】

所谓“水仙花数”,是指一个三位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为 153=13+53+3^3。现在给定一个数字,判断是否是水仙花数。

【输入形式】

​ 输入一个整数n。

【输出形式】

​ 输出“Yes”表示水仙花数,输出“No”表示不是水仙花数

【样例输入】

​ 153

【样例输出】

​ Yes

【样例说明】

​ 153=13+53+3^3

【评分标准】

评测用例规模与约定

所有评测用例满足:0 ≤ n ≤ 1000000000。

#include <iostream>

using namespace std;

int main()
{
    int n,a,b,c;
    cin>>n;
    a=n/100;//百位数
    b=(n-a*100)/10;//十位数
    c=n%10;//个位数
    if(n==a*a*a+b*b*b+c*c*c)
    {
        cout<<"Yes"<<endl;
    }
    if(n!=a*a*a+b*b*b+c*c*c)
    {
        cout<<"No"<<endl;
    }
    return 0;
}

数字魔术

【问题描述】请编程实现数字魔术——给定M值,推测符合以下计算规则的三位数X。假定该三位数为X(abc),M = acb + bac + bca + cab + cba。

【输入形式】输入一行,包含整数m。
【输出形式】输出一行,包含整数X。
【样例输入】

1209
【样例输出】

123
【样例说明】

132+213+231+312+321=1209,所以在该计算规则下,1209对应的三位数为123。
【用例规模】

确保X是一个三位数,且每个用例都能得出解决方案。

#include <stdio.h>
using namespace std;
int T( int a, int b, int c )
{
    return a*100+b*10+c;
}
 int main()
{
    int m ,X, a, b, c, s;
    cin>>m;
    for(X=999;X>99;X--)
    {
        a=X/100; b=X/10%10; c=X%10;
        s = T(a,c,b)+T(b,a,c)+T(b,c,a)+T(c,a,b)+T(c,b,a);
        if(s==m) break;
    }
    if(X > 99)
        cout<<X;
    return 0;
}

比n大的第一个素数

【问题描述】从键盘输入一个正整数N,输出比N大的第一个素数。素数定义:只能被自己和1整除的自然数。(1≤N≤1000000000)
【输入形式】一个正整数N
【输出形式】一个正整数,比N大的第一个素数。
【样例输入】

31
【样例输出】

37
【样例说明】比31大的第一个素数是37

【样例输入】

113092
【样例输出】

113093
【样例说明】比113092大的第一个素数是113093

【辅助提示】计算平方根的库函数为sqrt(x),其函数原型声明在头文件中。

#include<iostream>
#include<cmath>
using namespace std;
int pd(int y)
{
    if(y<=1)
    {
        return 0;
    }
    for(int i=2;i<=sqrt(y);i++)
    {
        if(y%i==0)
            return 0;
    }
    return 1;
}

int main()
{
    int N;
    cin>>N;
    for(int i=N+1; ;i++)
    {
        if(pd(i))
        {
            cout<<i<<endl;
            break;
        }
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值