whyyouhitme_ 2018-04-04 01:53 采纳率: 57.1%
浏览 713
已结题

检查回文,用指针运算替换数组下标追踪数组位置

单改指针的话是会的。但是这个涉及到主函数和检查回文函数都有数组下标,请问,主函数和被调用函数都可以用指针运算替换数组下标吗?怎么做?
另外,被调用函数还需要计算判断条件(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;
}

  • 写回答

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数据集呀