2013级C++第18周——收官来战

课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759

Problem A: 1-n之间能够被m整除的数的和

Description
输入n和m,输出1-n之间能够被m整除的数的和,例如:输入35 7,输出的是1-35之间所以能够被7整除的数的和,即7+14+21+28+35=105
Input
两个正整数n和m
Output
1-n之间能够被m整除的数的和
Sample Input
35 7
Sample Output
105

参考解答:

#include<iostream>
using namespace std;
int main()
{
    int n, m, i, s=0;
    cin>>n>>m;
    for(i=m; i<=n; i+=m)
        s+=i;
    cout<<s;
    return 0;
}



Problem B: 帮警长数一数【循环、分支简单综合】

Description
黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的样本数目。
Input
血型序列(A/B/O/C,C代表AB型血,输入以X结束)
Output
各种血型的数量
Sample Input
ABCAOCOAOOBX 
Sample Output
A:3 
B:2
O:4
AB:2

HINT
设置4个变量分别表示这4种血型的人数。利用一个循环读取输入的字符,直到读到X退出循环。在循环中,根据读到的字符,相应的变量递增即可。

参考解答

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
  int a=0, b=0, ab=0, o=0;
  char blood;
  cin>>blood;
  while(blood!='X')
  {
    switch (blood)
    {
    case 'A' :
      a++;
      break;
    case 'B' :
      b++;
      break;
    case 'C' :
      ab++;
      break;
    case 'O' :
      o++;
      break;
    }
  cin>>blood;
  }
  cout<<"A:"<<a<<endl;
  cout<<"B:"<<b<<endl;
  cout<<"O:"<<o<<endl;
  cout<<"AB:"<<ab<<endl;
  return 0;
}



Problem C: 数字中的数字

Description
输入一个3位以上的整数,求其中最大的两数字之和与最小的两个数字之和的差。例如:输入8729,输出8(即9+8-2-7=8),再如,输入24825,输出9(即8+5-2-2)。
Input
一个3位以上的整数
Output
输入的数据中,最大的两数字之和与最小的两个数字之和的差
Sample Input
8729
Sample Output
8
HINT
可以将整数的各位数取出后保存在数组中,将这些数排序后进行计算。
参考解答
#include <iostream>
using namespace std;
int main( )
{
    int n,arr[15],num=0;
    int i,j,t;
    cin>>n;
    t=n;
    while(t>0)
    {
        arr[num++]=t%10;
        t/=10;
    }
    //这样,n共有num位,在arr[0]-arr[n-1]中
    for(j=0; j<num-1; j++)   //共进行num-1趟比较
        for(i=0; i<num-j-1; i++) //在每趟中要进行num-j次两两比较
            if (arr[i]>arr[i+1]) //如果前面的数小于后面的数
            {
                t=arr[i]; //交换两个数的位置,使小数下沉
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
    //这样,数组中小者在前,大者在后
    t=arr[num-1]+arr[num-2]-arr[0]-arr[1];
    cout<<t;
    return 0;
}

Problem D: 一元多项式求值

Description
一元多项式是形如f(x)=a 0+a1·x+a2·x^2+...+an-1·x^(n-1)的式子,其中a0-an-1均为常数。要求输入x及一元多项式的系数,求出x的值。
Input
首先输入x,随后是不多于15个数据,表示多项式系数。如输入 2.5 3.2 4.3 5.6,代表求多项式f(x)=3.2+4.3x+5.6x^2在当x=2.5时的值,即f(2.5)。注意,多项式的最高次指数不定,不超过14次方即可。
Output
输出f(x)的值,结果小数点后保留3位。
Sample Input
2.5 3.2 4.3 5.6
Sample Output
48.950
参考解答
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
    int n=0,i;
    double x, a[15],sum=0;
    cin>>x;    //输入x
    while(cin>>a[n])n++;   //输入多项式系数
    i=n-1;   //最高项的次数为n-1,共n项
    while(i>=0)
    {
        sum=sum*x+a[i--];
    }
    cout<<setiosflags(ios::fixed)<<setprecision(3)<<sum;
    return 0;
}





==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======





==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======


©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页