首页 > 代码库 > 雪泥鸿爪-教学中的debug(12) 可怕的字符类型
雪泥鸿爪-教学中的debug(12) 可怕的字符类型
http://oj.hi-hi.cn/JudgeOnline/problem.php?cid=1088&pid=12
问题 M: 回文串
题目描述
回文串是从左到右或者从右到左读起来都一样的字符串,试编程判别一个字符串是否为回文串。
输入
输入一个字符串。串长度<255.
输出
判别输入的字符串是否为回文串,是输出"Y",否则输出"N"。
样例输入
abcba
样例输出
Y
学生问 ,下面的代码为啥答案错误 ,自己试都可以来着
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <ctype.h> 4 #include <string.h> 5 int main() 6 { 7 char c[255],i,a,n; 8 while(gets(c)!=NULL) 9 {10 n=strlen(c);11 char b[n+1];12 a=n-1;13 for(i=0; i<n; i++)14 {15 b[i]=c[a];16 a--;17 }18 b[n]=‘\0‘;19 20 if(strcmp(b,c)==0)21 printf("Y\n");22 else23 printf("N\n");24 }25 return 0;26 }
答案:
把a,i, n改成整型即可。 char的符号是signed还是unsigned是实现定义的,与编译器相关,字符长度可以到127以上, 如果是signed负数,就会出现负下标,而不是预期的正下标,负下标是往前走的,显然和预期不符。
雪泥鸿爪-教学中的debug(12) 可怕的字符类型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。