5-1 科学计数法的值

科学计数法是一种数学专用术语。将一个数表示成 a×10的n次幂的形式,其中1≤|a|<10,n为整数,这种记数方法叫科学计数法。例如920000可以表示为9.2*10^5。现在需要对输入的字符串进行分离,自动识别该科学计数法中的a和幂次,计算其表征的具体数值并输出该值。例如,对于输入的复数字符串“9.210^5”,输出 The actual value for 9.210^5 is 920000

注意:

  • 1、每组测试数据仅包括一个用于科学计数法的字符串。
  • 2、输入字符串保证合法。
  • 3、字符串长度不超过1000
  • 4、幂次不超过200

输入示例:
9.2*10^5

输出示例:
The actual value for 9.2*10^5 is 920000

#include<iostream>
#include<sstream>
#include<string>
#include<cstdio>
using namespace std;

int main()
{
    string str;
    while(cin >> str)
    {
        string ans;
        bool flag,IsSign,IsMinus;
        int i;
        int len = str.size();

        string::size_type loc = str.find("^");
        if (str[loc + 1] != '-')
        {
            IsSign = false;
        }
        else
        {
            IsSign = true;
        }

        if (!IsSign)
        {
            int intcnt = 0;
            for (i = 0; str[i] != '*' && str[i] != '.'; i++)
            {
                ans += str[i];
                intcnt++;
            }
            if (str[i] == '.')
            {
                i++;
            }
            int cnt = 0;
            for (; str[i] != '*'; i++)
            {
                ans += str[i];
                cnt++;
            }

            int record;
            string tmp;
            stringstream ss;
            if (loc == string::npos)
            {
                record = 1;
            }
            else
            {
                for (i = loc+1; i < len; i++)
                {
                    tmp += str[i];
                }
                ss << tmp;
                ss >> record;
            }

            if (record < cnt)
            {
                flag = false;
            }
            else
            {
                flag = true;
            }

            int len1 = ans.size();
            if (flag)
            {
                cout << "The actual value for " << str << " is " << ans;
                for (i = record - cnt; i > 0; i--)
                {
                    cout << "0";
                }
                cout << endl;
            }
            else
            {
                cout << "The actual value for " << str << " is ";
                for (i = 0; i < intcnt + record; i++)
                {
                    cout << ans[i];
                }
                cout << ".";
                for (i = intcnt + record; i < len1; i++)
                {
                    cout << ans[i];
                }
                cout << endl;
            }
        }
        else
        {
            if (str[0] == '-')
            {
                str.erase(0,1);
                IsMinus = true;
            }
            else
            {
                IsMinus = false;
            }
            len = str.size();
            int intcnt = 0;
            for (i = 0; str[i] != '*' && str[i] != '.'; i++)
            {
                ans += str[i];
                intcnt++;
            }
            if (str[i] == '.')
            {
                i++;
            }
            for (; str[i] != '*'; i++)
            {
                ans += str[i];
            }

            int record;
            string tmp;
            stringstream ss;
            if (loc == string::npos)
            {
                record = 1;
            }
            else
            {
                if (IsMinus)
                {
                    for (i = loc + 1; i < len; i++)
                    {
                        tmp += str[i];
                    }
                }
                else
                {
                    for (i = loc + 2;i < len;i++)
                    {
                        tmp += str[i];
                    }
                }
                ss << tmp;
                ss >> record;
            }
            cout << "The actual value for " << str << " is ";
            if (IsMinus)
            {
                cout << "-";
            }
            cout  << "0.";
            for (i = 0; i < record - intcnt; i++)
            {
                cout << "0";
            }
            cout << ans << endl;
        }
    }
    return 0;
}

5-3 不能用循环是一件多么悲伤的事

下面是一个算到10的加法表:
0 + 0 = 0 0 + 1 = 1 0 + 2 = 2 0 + 3 = 3 0 + 4 = 4 0 + 5 = 5 0 + 6 = 6 0 + 7 = 7 0 + 8 = 8 0 + 9 = 9 0 +10 = 10
1 + 0 = 1 1 + 1 = 2 1 + 2 = 3 1 + 3 = 4 1 + 4 = 5 1 + 5 = 6 1 + 6 = 7 1 + 7 = 8 1 + 8 = 9 1 + 9 = 10
2 + 0 = 2 2 + 1 = 3 2 + 2 = 4 2 + 3 = 5 2 + 4 = 6 2 + 5 = 7 2 + 6 = 8 2 + 7 = 9 2 + 8 = 10
3 + 0 = 3 3 + 1 = 4 3 + 2 = 5 3 + 3 = 6 3 + 4 = 7 3 + 5 = 8 3 + 6 = 9 3 + 7 = 10
4 + 0 = 4 4 + 1 = 5 4 + 2 = 6 4 + 3 = 7 4 + 4 = 8 4 + 5 = 9 4 + 6 = 10
5 + 0 = 5 5 + 1 = 6 5 + 2 = 7 5 + 3 = 8 5 + 4 = 9 5 + 5 = 10
6 + 0 = 6 6 + 1 = 7 6 + 2 = 8 6 + 3 = 9 6 + 4 = 10
7 + 0 = 7 7 + 1 = 8 7 + 2 = 9 7 + 3 = 10
8 + 0 = 8 8 + 1 = 9 8 + 2 = 10
9 + 0 = 9 9 + 1 = 10
10+ 0 = 10
本题目要求读入1个整数,输出加法表,每一行都算到结果为输入的整数为止。不允许使用循环,不允许使用循环,不允许使用循环。重要的事情说三遍(括弧笑)

输入格式:
在一行中给出一个正整数N(0≤N≤99)。

输出格式:
按照示例的格式输出左上三角N+M的表,行列都从0开始。
加号左边数字占2位、左对齐;
加号右边数字占2位、右对齐;
结果数字占2位,左对齐。
等号两边各一个空格。
两个式子之间加一个空格(行末的空格不用去掉)

输入样例:
5

输出样例:
0 + 0 = 0 0 + 1 = 1 0 + 2 = 2 0 + 3 = 3 0 + 4 = 4 0 + 5 = 5
1 + 0 = 1 1 + 1 = 2 1 + 2 = 3 1 + 3 = 4 1 + 4 = 5
2 + 0 = 2 2 + 1 = 3 2 + 2 = 4 2 + 3 = 5
3 + 0 = 3 3 + 1 = 4 3 + 2 = 5
4 + 0 = 4 4 + 1 = 5
5 + 0 = 5

这道题虽然AC了,总感觉递归的姿势不正确= =

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

int N;

void func(int num,int cnt)
{
    if (num <= N)
    {
        if (num + cnt <= N)
        {
            printf("%-2d+%2d = %-2d ",num,cnt,num+cnt);
            //cout << setiosflags(ios::left) << setw(2) << num << " + " << setiosflags(ios::right) << setw(2) << cnt << " = " << setiosflags(ios::left) << setw(2) << num+cnt << " ";
            func(num,cnt+1);
        }
        cout << endl;
    }
    if (num > N)
    exit(0);
    func(num+1,0);
}

int main()
{
    scanf("%d",&N);
    func(0,0);
    return 0;
}

fzuoop期中练习的更多相关文章

  1. 《Linux及安全》期中总结&《Linux内核分析》期终总结

    [5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE ...

  2. 20135202闫佳歆--week 9 期中总结

    期中总结 前半学期的主要学习内容是学习mooc课程<Linux内核分析>以及课本<Linux内核设计与实现>. 所涉及知识点总结如下: 1. Linux内核启动的过程--以Me ...

  3. JavaScript去除日期中的“-”

    JavaScript去除日期中的"-" 1.说明 经常会出现这样的情况,页面的日期格式是:YYYY-MM-DD,而数据库中的日期格式是:YYYYMMDD,两者之间需要转换一下,方能 ...

  4. Linux运维期中架构(50台集群)

    一.期中架构 二.期中架构-前端部分 三.第三阶段作业-期中架构

  5. 《Linux内核分析》期终总结&《Linux及安全》期中总结

    <Linux内核分析>期终总结&<Linux及安全>期中总结 [李行之 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc. ...

  6. Linux内核分析——期中总结

    期中总结 一.MOOC课程 (一)计算机是如何工作的 1.冯诺依曼体系结构的核心思想是存储程序计算机. 2.CPU在实际取指令时根据cs:eip来准确定位一个指令. 3.寄存器模式,以%开头的寄存器标 ...

  7. Linux内核设计期中总结

    Linux内核设计期中总结 ● 知识点 一.计算机是如何工作的 计算机是按照冯·诺依曼存储程序的原理. 在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器 ...

  8. 《Linux内核分析》 期中总结

    Linux内核分析 期中总结 20135307 张嘉琪 一.Linux内核分析课程总结 学习笔记汇总 第一节 计算机是如何工作的 第二节 操作系统是如何工作的 第三节 构造一个简单的Linux系统Me ...

  9. Linux内核期中

    Linux内核期中总结 一.计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行. 二.存储程序计算机工作模型 ...

随机推荐

  1. PRML读书会第十一章 Sampling Methods(MCMC, Markov Chain Monte Carlo,细致平稳条件,Metropolis-Hastings,Gibbs Sampling,Slice Sampling,Hamiltonian MCMC)

    主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:05:00  今天的主要内容:Markov Chain Monte Carlo,M ...

  2. web安全——目录

    说明 写这个目录是为了方便阅读.也是为了记录统一的问题. 这个系列,并不一定是全的,也不一定是对的,所以请大家多做过滤. 这里面场景比较多的是本人在实践中遇到的问题,然后自己思考抽象的. 目录 web ...

  3. Android Studio代码混淆插件

    之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆. 截图 第三方库列表清单 ...

  4. 处理Linux下subversion尝试连接自建的VisualSVN server报“Key usage violation in certificate has been detected”错误的问题

    在Linux下使用subversion尝试链接VisualSVN server搭建的svn库,可能会报下面错误, svn: OPTIONS of 'https://server.domain.loca ...

  5. 外网不能访问部署在虚机的NodeJs网站(80端口)

    外网能访问部署在虚机的NodeJs网站需注意如下: 在管理门户上配置端点(Http 80->80) 在虚机中的防火墙入站规则中增加应用程序Node.exe的允许规则 启动NodeJs的侦听进程时 ...

  6. SQLite剖析之功能特性

    SQLite是遵守ACID的轻型数据库引擎,它包含在一个相对较小的C库中.它是D.RichardHipp创建的公有领域项目.不像常见的客户端/服务器结构范例,SQLite引擎不是一个与程序通信的独立进 ...

  7. 【Magenta 项目初探】手把手教你用Tensorflow神经网络创造音乐

    原文链接:http://www.cnblogs.com/learn-to-rock/p/5677458.html 偶然在网上看到了一个让我很感兴趣的项目 Magenta,用Tensorflow让神经网 ...

  8. python作为一种胶水和c/c++

    如果需要用 Python 调用 C/C++ 编写的第三方库,只需要一个脚本语言来粘合它们.这个时候,用 Python ctypes 可以很方便地实现调用. StackOverflow 上的 Calli ...

  9. C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据

    转载:http://www.cnblogs.com/kivenhou/archive/2013/02/22/2921954.html 操作List前请设置SPWeb的allowUnsafeUpdate ...

  10. [转]《Hadoop基础教程》之初识Hadoop

    原文地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不 ...