Overflow(UVA - 465)

简介: Overflow(UVA - 465)

最近新学了一个函数的用法,头文件是 stdlib.h 的 atof() 的函数,它可以把字符串的数字转化为double类型。

题目:

Write a program that reads an expression consisting of two non-negative integer and an operator.Determine if either integer or the result of the expression is too large to be represented as a “normal”signed integer (typeintegerif you are working Pascal, typeintif you are working in C).

Input

An unspecified number of lines. Each line will contain an integer, one of the two operators ‘+’ or ‘*’,and another integer.

Output

For each line of input, print the input followed by 0-3 lines containing as many of these three messages as are appropriate: ‘first number too big’, ‘second number too big’, ‘result too big’.Sample

Input

300 + 3
9999999999999999999999 + 11

Sample Output

300 + 3
9999999999999999999999 + 11
first number too big
result too big

解题思路:就是先判断两个数是否超出范围,然后再判断加和乘结果是否超出范围。

1、atof()函数写法:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
long long max=2147483647;
int main()
{
  char s[5000],s1[5000],t;
  double u,v;
  while(scanf("%s %c %s",s,&t,s1)!=EOF)
  {
    printf("%s %c %s\n",s,t,s1);
    u=atof(s);
    v=atof(s1);
    if(u>max)
      printf("first number too big\n");
    if(v>max)
      printf("second number too big\n");
    if(t=='+'&&u+v>max)
      printf("result too big\n");
    else if(t=='*'&&u*v>max)
      printf("result too big\n");   
  }
  return 0;
}

2、不用atof()函数的代码:

#include<stdio.h>
#include<string.h>
long long max=2147483647;
int main()
{
  char s[5000],s1[5000],t;
  int n,m,i,j,k;
  long long u,v;
  while(scanf("%s %c %s",s,&t,s1)!=EOF)
  {
    printf("%s %c %s\n",s,t,s1);
    n=strlen(s);
    m=strlen(s1);
    u=v=0;
    for(i=0;i<n;i++)
    {
      u=u*10+s[i]-'0';
      if(u>max)
      {
        printf("first number too big\n");
        break;
      }
    } 
    for(i=0;i<m;i++)
    {
      v=v*10+s1[i]-'0';
      if(v>max)
      {
        printf("second number too big\n");
        break;
      }
    }
    if(t=='+'&&u+v>max)
      printf("result too big\n");
    else if(t=='*'&&u*v>max)
      printf("result too big\n");   
  }
  return 0;
}
相关文章
|
9月前
|
缓存 负载均衡 安全
什么是CDN服务
CDN(内容分发网络)是全球分布的服务器网络,旨在加速互联网内容的传输。它通过将内容缓存至靠近用户的服务器,减少延迟,提升访问速度与性能,同时实现负载均衡、减轻源服务器压力并提供安全防护。广泛应用于网站加速、视频直播等领域,优化用户体验。
8619 5
|
编解码
图片的DPI是什么
【6月更文挑战第19天】图片的DPI是什么
1555 2
|
弹性计算 运维 Shell
自动化软件包安装与管理
【4月更文挑战第30天】
93 0
|
自然语言处理 并行计算 PyTorch
基于Pytorch中安装torchvision简单详细完整版
基于Pytorch中安装torchvision简单详细完整版
4752 1
基于Pytorch中安装torchvision简单详细完整版
|
存储 边缘计算 人工智能
云服务:解锁数字时代的无限可能
在数字时代,云服务已经成为了企业和个人不可或缺的一部分。它不仅改变了我们存储和管理数据的方式,还为创新提供了无限可能性。本文将深入介绍云服务的概念、种类以及它们如何改变了我们的工作方式和生活。
|
存储 JSON 应用服务中间件
JavaWeb开发 Servlet技术详解(三)
JavaWeb开发 Servlet技术详解(三)
|
人工智能 vr&ar 开发者
函数 | 学习笔记
快速学习函数
144 0
函数  |  学习笔记
|
存储 XML 自然语言处理
【Solr】之倒排索引算法【字典树】2
【Solr】之倒排索引算法【字典树】2
176 0
【Solr】之倒排索引算法【字典树】2
|
SQL 关系型数据库 数据库
开发指南—DAL语句—SHOW—慢SQL相关
本文介绍了慢SQL相关的SHOW语句。
167 0
和“利奇马”赛跑的男人
超强台风“利马奇”,国际编号:1909,正在向浙江沿海靠近。这是今年以来登陆我国的最强台风。
1892 0

热门文章

最新文章