单改指针的话是会的。但是这个涉及到主函数和检查回文函数都有数组下标,请问,主函数和被调用函数都可以用指针运算替换数组下标吗?怎么做?
另外,被调用函数还需要计算判断条件(n/2-1),这个怎么用指针表示呢
#include// 检查输入的句子是不是回文
#include
#define LEN 100
int compare(const char str[],int n);
int main(void)
{
char ch,str_1[LEN];
int i=0;
printf("Enter a message:");
while((ch=getchar())!='\n')//输入句子
if(toupper(ch)<=90&&toupper(ch)>=65)//是字母就存入数组
str_1[i++]=ch;
if(compare(str_1,i)==1)//调用compare函数,返回1是回文
printf("Plindrome\n");
else if (compare(str_1,i)==0)//调用compare函数,返回0不是回文
printf("Not a Plindrome\n");
return 0;
}
int compare(const char str[],int n)//检测回文的函数。
{
int i=0,a,b,flag;
for(i=0;i<=(n/2)-1;i++){
a=toupper(str[i]);
b=toupper(str[(n-1)-i]);
if(a!=b){
flag=0;
break;
}
else
flag=1;
}
return flag;
}
检查回文,用指针运算替换数组下标追踪数组位置
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答
- harveyfree 2018-04-04 03:36关注
可以用指针替换数组下标:
int compare(const char str[],int n)//检测回文的函数。
{
int i=0,a,b,flag;
const char sPtr;
sPtr = str;
for(i=0;i<=(n/2)-1;i++){
a=toupper((sPtr+i));
b=toupper(*(sPtr+(n-1)-i);
if(a!=b){
flag=0;
break;
}
else
flag=1;
}
return flag;
}解决 无用评论 打赏 举报
悬赏问题
- ¥15 mmocr的训练错误,结果全为0
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀