oj错误之char型超出范围
在oj时遇到一个题

题目本身并不是很难,但在一个数据时出了错,刚开始一直没想通是哪里出了错
下面为源代码
#include <bits/stdc++.h>
using namespace std;
int n;
char s[];
int main()
{
scanf("%d",&n);
scanf("%s",s); for(int i=;s[i]!='\0';i++)
{
s[i]+=(n%);
if(s[i]>'z') s[i]-=;
}
printf("%s",s);
return ;
}
在输入为如下时,无法通过:
25
xyz
后面去查了ascii表发现,小写字母已经非常接近的末尾了

x+25后已经超出char型的127范围,根据汇编这里应该已经是一个负值了,再减去26也无济于事,所以导致产生错误
随后选择直接在‘a’的基础上计算位移,避免直接在char型上进行加减,成功AC
#include <bits/stdc++.h>
using namespace std;
int n;
char s[];
int main()
{
scanf("%d",&n);
scanf("%s",s); int ans;
for(int i=;s[i]!='\0';i++)
{
ans=(s[i]-'a'+n)%;
s[i]=ans+'a';
}
printf("%s",s);
return ;
}
oj错误之char型超出范围的更多相关文章
- char型指针与其它指针或数组的细节
一道常见题 char * str7="abc"; char * str8="abc"; cout<<(str7==str8)<<endl ...
- char型变量中能存贮一个中文汉字
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦.不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么 ...
- 18:字符串-char型字符串
1 什么是字符串? 字符串是以空字符(\)结尾的字符数组.空字符的assii码为:0, 空格的ascii码为322 \0的作用'\0'是一个空字符标志,它的ASSII码为0,C++有好多处理字符串的函 ...
- getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析
2013-07-18 21:35:58 getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析. char是字符型数 ...
- char型字符串(数组)与string型字符串 指针与引用
一.常指针: int *const p; //指针不可改变,但是指针指向的数据可以改变. 指向常量的指针: const int *p; //指针可以改变,但是指针指向的数据不可以改变. 指 ...
- linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”
计算机编程中经常会用到hash表,而在C++中,使用STL编程更是少不了的.本文将介绍STL中hash_map的使用.在hash_map中使用自定义类型作为key值的方法以及在使用char *类型作为 ...
- java如何把char型数据转换成int型数据(转)
一字符串,String=“2324234535”:把第i个数取出来时是char型的:char temp=String.charAt(i)如何把char型转换成int型?我需要求个尾数之和,如:123的 ...
- c语言int型和char型的自动类型转换
; //机器码为0xff unsigned ; //机器码0xfe if (a <= b){ printf("a <= b\n"); } else{ printf(&q ...
- char型指针和字符串字面量和字符数组
1.当一个char型指针指向一个字符串字面量(也就是常量字符串)时,该指针必须由const修饰,否则,系统会给出deprecated(不赞成)的警告.原因是:字符串字面量不可改变,当它被一个非cons ...
随机推荐
- (转)Ext.onReady详解
(转自)http://hi.baidu.com/kakarot_java/blog/item/8c34e57360472c148601b013.html 我们知道,只有在Ext框架全部加载完后才能在客 ...
- [中英对照]Introduction to DPDK: Architecture and Principles | DPDK概论: 体系结构与实现原理
[中英对照]Introduction to DPDK: Architecture and Principles | DPDK概论: 体系结构与实现原理 Introduction to DPDK: ...
- JS 实现 jQuery的$(function(){});
1.浏览器渲染引擎的HTML解析流程 何谓“渲染”,其实就是浏览器把请求到的HTML内容显示出来的过程.渲染引擎首先通过网络获得所请求文档的内容,通常以8K分块的方式完成.下面是渲染引擎在取得内容之后 ...
- 几个H5炫酷特效
那H5里有哪些高级动效了?小编仔细体验了国内不少几个优秀H5页面作品,整理出下面几个H5页面特效.我们的H5作品如果能用上其中一两个,相信能增色不少! 1.粒子特效 —>>一键爆炸 模拟现 ...
- [Jmeter] 用xsltproc生成html格式的报告
1.下载xsltproc 下载地址:ftp://ftp.zlatkovic.com/libxml/libxslt-1.1.26.win32.zip 其中包含我们所需要的xsltproc可执行文件:xs ...
- js jquery 取得周月年时间
function formatDate(date) { var myyear = date.getFullYear(); var mymonth = date.getMonth() + 1; var ...
- jrebel
jrebel 编辑 JRebel是一套JavaEE开发工具.JRebel允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产品. JRebel是收费软件,用户可以在JReb ...
- 粒子跟随本体unity
Simulation Space(模拟空间):在世界坐标和本地坐标中切换,这个就是制作技能痕迹的重要位置,新建的粒子系统一般都默认为local,所以在粒子本体移动的时候也跟着进行移动,改为world的 ...
- JS将时间戳转化为时间
//将时间戳转化为时间 function timestampToTime(timestamp) { var date = new Date(timestamp * 1000);//时间戳为10位需*1 ...
- Linux 下移植QT(1)---tslib 1.4.0移植
步骤1:下载工具包 如下图 链接在此,点我. 步骤2:将tslib文件放入Linux虚拟机中, 步骤3:解压源码 tar -xvf tslib-1.4.tar cd tslib-1.4 步骤4:执行a ...