关于判断回文的c语言程序,我用string语句写了下,运行后发现无论输入啥输出都是b
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于判断回文的c语言程序,我用string语句写了下,运行后发现无论输入啥输出都是b相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<string.h>
int main(void)
char ch[80];
char *p[80];
int i,n=0;
while ((ch[n] = getchar()) != '\n')
n++;
ch[n] = '\0';
for(i=0;i<n;i++)
p[i] = &ch[i];
i = 0;
n = n - 1;
while (i < n)
if (strcmp(p[i], p[n]) != 0)
break;
i++;
n--;
if (i >= n)
printf("a");
else
printf("b");
return 0;
请问该怎么改才能正确输出?
判断回文用不到字符串库函数,是单个单个字符处理的,简单修改如下:
DEV-CPP 5.4 纯C环境,通过编译和初步测试
#include<stdio.h>int main(void)
char ch[80];
int i,n=0;
while ((ch[n] = getchar()) != '\\n')
n++;
i = 0;
n = n - 1;
while (i < n)
if (ch[i]!= ch[n])
break;
i++;
n--;
if (i >= n)
printf("a");
else
printf("b");
return 0;
也不需要用什么指针...
追问我是按书上的改编过来的,现在我想为什么用strcmp语句不行呢
追答strcmp函数用来判断两个字符串的大小,而判断回文数是依次判断两头的字符是否相同,完全没有必要用字符串来处理,强行用会使简单的问题变得复杂。
追问谢谢你的帮助
参考技术A #include<stdio.h>#include<string.h>
int main(void)
char ch[80];
char *p[80];
int i,n=0;
while ((ch[n] = getchar()) != '\\n')
n++;
ch[n] = '\\0';
for(i=0;i<n;i++)
p[i] = &ch[i];
i = 0;
n = n - 1;
while (i < n)
if (*p[i]!=*p[n])//<===================
break;
i++;
n--;
if (i >= n)
printf("a");
else
printf("b");
return 0;
追问
这样还是有问题
追答具体描述问题,以及提供输入样例
Java判断回文语句的程序(可变参数,String转化为char数组)
static void Huiwen(char... cs){ //char... cs 支持可变参数格式为
//(类型名... 变量名)--形参列表,相当于建立了一个长度可变的动态数组,系统根据用户需求来确定数组的长度
int b_ool=1;
for(int i=0;i<cs.length/2;i++) //length为这个可变数组的长度,注意此时长度为数组下表加1,通过cs.length-i-1可知
if(cs[i]!=cs[cs.length-i-1 // 判断
]){
b_ool=0;break;}
if(b_ool==1)
JOptionPane.showMessageDialog(null,
"你输入的是一个回文语句!");
else
JOptionPane.showMessageDialog(null,
"你输入的不是一个回文语句!");
}
public static void main(String[] args){
String enterChar=JOptionPane.showInputDialog(null,
"请输入一个语句:");
char[] ca=enterChar.toCharArray(); //String转化为char数组
Huiwen(ca); //调用
}
以上是关于关于判断回文的c语言程序,我用string语句写了下,运行后发现无论输入啥输出都是b的主要内容,如果未能解决你的问题,请参考以下文章
Java判断回文语句的程序(可变参数,String转化为char数组)