您的位置:首页 > 编程语言 > C语言/C++

2014秋C++第17周 OJ题目及参考

2014-12-19 07:56 405 查看
课程主页在/article/1353164.html,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。

A. 3数求平均

Description

输入3个整数,输出它们的平均值,保留3位小数

Input

3个整数

Output

3数的平均值,要求输出3位小数

Sample Input

3 5 2

Sample Output

3.333

HINT

#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
    int a, b, c;
    double x;
    cin>>a>>b>>c;
    x=(a+b+c)/3.0;
    cout<<setiosflags(ios::fixed)<<setprecision(3)<<x<<endl;
    return 0;
}


B. 买就打折,不买打骨折

Description

新年到了,商场狂打折。一件衣服x元,消费满y元,可打八五折。输入购买衣服的件数n,输出需要支付的金额(元),保留两位小数。

Input

衣服单价x(元),打折的最低消费y(元),购买衣服的件数n

Output

输出需要支付的金额(元),保留两位小数。

Sample Input

95.5 300 5

Sample Output

405.88

HINT

#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
    double x, y, s;
    int n;
    cin>>x>>y>>n;
    s = x * n;
    if(s>y)
        s*=0.85;
    cout<<setiosflags(ios::fixed)<<setprecision(2)<<s<<endl;
    return 0;
}


C. 奇偶各几何?

Description

输入若干个整数,统计并输出其中的奇数、偶数分别有几个

Input

若干个整数,个数不定

Output

这些整数中奇数和偶数的个数

Sample Input

11 42 45 67 12 78 34

Sample Output

3 4

HINT

用下面的循环,当输入结束时,循环结束。键盘输入数据时, 需要用CTRL-Z结束
while(cin>>n)
{
……
}
参考解答:
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
    int odd=0, even=0;
    int n;
    while(cin>>n)
    {
        if(n%2==0)
            even++;
        else
            odd++;
    }
    cout<<odd<<" "<<even<<endl;
    return 0;
}


D. 函数求值

Description

给定的程序用来计算sum=f(0)+f(1)+...+f(n),其中,f(x)=x2+1。输入x和n,输出sum的值。请将下面的程序补充完整:
#include <iostream>
using namespace std;
int sum(int n);
int f(int x);
int main( )
{
    int n;
    cin>>n;
    cout<<sum(n)<<endl;
    return 0;
}
/*只提交下面的程序*/
int sum(int n)
{
    int x, ____(1)______;
    for(x=0;____(2)____; x++)
        ______(3);
    return s;
}

_____(4)_________
{
    return x*x+1;
}

Input

n的值,一个整数

Output

sum=f(0)+f(1)+...+f(n),一个整数

Sample Input

4

Sample Output

35

HINT

#include <iostream>
using namespace std;
int sum(int n);
int f(int x);
int main( )
{
    int n;
    cin>>n;
    cout<<sum(n)<<endl;
    return 0;
}
/*只提交下面的程序*/
int sum(int n)
{
    int x, s=0;
    for(x=0; x<=n; x++)
        s+=f(x);
    return s;
}
 
int f(int x)
{
    return x*x+1;
}



E. 重复字符串

Description

输入一个字符串,将其重复若干次,例如,输入goal和5,得到的就是球迷的欢呼:goalgoalgoalgoalgoal。
不急着欢呼,先补充完整下面的程序。还需要注意的是,给出的程序段中,还藏着一个小Bug,需要你将其改过来。
#include <iostream>
#include <cstdio>
using namespace std;
void strcopy(char*,char*,int);
int main( )
{
     char str1[80];
     char str2[80];
     int n;
     gets(str1);
     cin>>n;
     strcopy(str2,str1,4);
     cout<<str2<<endl;
     return 0;
}

Input

一个待重复的字符串
重复的次数

Output

重复后的文字

Sample Input

goal 5

Sample Output

goalgoalgoalgoalgoal

HINT

#include <iostream>
#include <cstdio>
using namespace std;
void strcopy(char*,char*,int);
int main( )
{
    char str1[80];
    char str2[80];
    int n;
    gets(str1);
    cin>>n;
    strcopy(str2,str1,n);  //这儿有改动
    cout<<str2<<endl;
    return 0;
}
 
void strcopy(char *s1, char *s2, int n)
{
    int i,j=0,k;
    for(i=0;i<n;i++)
    {
        k=0;
        while(s2[k]!='\0')
            s1[j++] = s2[k++];
    }
    s1[j]='\0';
    return;
}


F. 用数字造数字

Description

输入一个3位以上的整数,求其中最大的数字最小的数字之间的差。例如:输入8729,输出7(即9-2=7),再如,输入24825,输出6(即8-2=6)。

Input

一个3位以上的整数

Output

输入整数的最大的数字最小的数字之间的差。

Sample Input

8729

Sample Output

7

HINT

可以在分离各数字过程中找最大、最小数字,也可以先将分离好的数字存储在数组中,再从数组中找出最大最小值。
#include <iostream>
using namespace std;
int main( )
{
    int n,arr[15],num=0;
    int i, imax, imin;
    cin>>n;
    while(n>0)
    {
        arr[num++]=n%10;
        n/=10;
    }
    imax=imin=arr[0];
    for(i=1; i<num; i++)
    {
        if(imax<arr[i])
            imax = arr[i];
        if(imin>arr[i])
            imin = arr[i];
        }
    cout<<imax-imin;
    return 0;
}


=================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: