2014秋C++ 第10周项目 控制结构综合、C程序结构及输入输出

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。


【项目1:程序填充与阅读】云学堂中有完整的代码,不必再费力亲自输入:
1.阅读下面的程序,在____上填上合适的成份,使程序能够输入“1+2”形式的式子,并输出相应的结果。

#include <iostream>
using namespace std;
int main()
{
    int a = 100;
    int b = 20;
    int c;
    char oper;
    cin>>a>>oper>>b;
    switch(____)  //(1)
    {
    case '+':
        c = a + b;
        break;
    case '-':
        c = a - b;
        break;
    case '*':
        c = a * b;
        break;
    default :
        if( b==0)
            c = a;
        else
            c = a / b;
        break;
    }
    cout<<"c="<<c<<endl;
    return 0;
}


拓展题目:要是运行一次程序,可以计算10道题就好了!请你改造上面的程序,使其能实现这个想法。
2.在计算机上单步运行下面的程序,观察输出的结果,同时对照教材中的表3.1,领会各种控制符号所起的作用和方式。不要试图记忆这些方式,领会并知道从书上哪里能找到即可。
#include <iostream>
#include <iomanip>//不要忘记包含此头文件
using namespace std;
int main()
{
    int a=34;
    cout<<"hex:"<<hex<<a<<endl; 
    cout<<"oct:"<<setbase(8)<<a<<endl; 
    cout<<"dec:"<<dec<<a<<endl;  
    char *pt="China";
    cout<<setw(10)<<pt<<endl; 
    cout<<setfill('*')<<setw(10)<<pt<<endl; 
    double d=225.0/7.0; 
    cout<<"d="<<d<<endl;  
    cout<<"d="<<setprecision(4)<<d<<endl;  
    cout<<"d="<<setiosflags(ios::fixed)<<d<<endl;
    cout<<setprecision(5)<<d<<endl;
    return 0;
}

3. 运行下面程序,观察输入下面的数据时,程序的输出,总结getchar()接受字符数据时的规律。一时搞不明白,找兄弟们启发,或者,问问度娘也行。
最后在发博文时,总结出你的观点。
#include <iostream>
#include <cstdio>
using namespace std;
int main( )
{
    char c1,c2,c3;
    c1=getchar();
    c2=getchar();
    cout<<c1<<" "<<c2<<endl;
    cout<<int(c1)<<" "<<int(c2)<<endl;
    c3=getchar();
    cout<<c3<<endl;
    cout<<int(c3)<<endl;
    return 0;
}

开放问题:getchar()处理输入时,输入的字符会立刻显示在屏幕上,这在有些时候可不好,例如,输入密码时。
如何处理这种情况?C/C++中还有另外的字符输入函数,可以让输入时,输入的字符不在屏幕上显示,这个函数是什么?请问度娘,或者找论坛去。
还有一个问题,“挖掘机技术……”,不对。还有一个问题是,不管输入什么,屏幕上都出现*,例如你在取款机上输入密码时,就是******,这该如何初实现?

【项目2-M$pszi$y是嘛意思?】
小明让同学传纸条给小丽,纸条上写着M$pszi$y。小丽接到会心一笑,大家却不知所云。
他们俩的花招瞒不过老师,给你一个程序,输入M$pszi$y,输出的,就是小明的真实意思!
老师真坏!下面,该你运行程序了,明白这样的处理方式后,扩展完成后面的两项工作:
#include <cstdio>
using namespace std;
int main()
{
    char ch;
    while((ch=getchar())!='\n')
    {
        putchar(ch-4);
    }
    return 0;
}

(1)因为他们俩人的“加密”手段泄露,决定纸条由人传,加密数字(1-9)用两人约好的手势传。所以在解密前,需要将加密数字提前输入。例,输入4(回车)M$pszi$y(回车),输出……
(2)小刚常帮着传纸条,想知道俩人的秘密,但不知道加密数字,于是悄悄写了一个程序,可以列出所有可能的情况。例,输入M$pszi$y,多行输出中必然有一行是……。你就是小刚,写出这个程序来吧。

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


【项目4:大奖赛计分】
在歌手大奖赛中,有10个评委为参赛的选手打分,分数为0~10分。选手最后得分为:去掉一个最高分和一个最低分后,取其余8个分数的平均值。请编写一个程序实现这个程序。
下面的3项拓展使这个程序更有实用价值,作为选做内容供同学们参考:
(1)当评委人数并不固定为10人,修改程序,可以选择在运行开始时输入评委人数;
(2)输入的成绩必须在0-10之间,而上面并没有对此进行约束。修改程序,当输入错误时要能马上重新输入,直到输入值在正确的范围内。
(3)一次比赛有好几十位选手参加,每算一位,就得重新运行一次程序!修改程序,输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N:”如果输入的不是N或n,可以为下一位选手计算成绩。运行结果请参考附图:



【项目5:输出完数】(课本p86第20题)
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数。编程找出1000以内的所有完数。
提示:首先从2到1000构造循环控制变量为i的外层循环。每次循环中,利用内嵌的循环逐个地求出i的因子,并累加起来(为提高效率,可能的因子从1到i/2),如果因子和等于i,则说明是完全数,输出。然后继续循环,考察i+1……



【项目6:贪财的富翁(选做题目)】
一个百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,....,你每天给我的钱是前一天的两倍,直到满一个月(30天),百万富翁很高兴,欣然接受了这个契约。请编程序,通过计算说明,这个换钱计划对百万富翁是否是个划算的交易。
提示:(1)需要计算出30天后陌生人给了百万富翁多少钱,百万富翁给了陌生人多少钱,然后才能做出判断;(2)想要看得清楚,可以选择列出每一天双方交易获得的钱数。




 

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

迂者-贺利坚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值