判断t所指字符串中的字符是否由连续递增字母序列组成中出现的一个小问题。

#include   <stdio.h>
#include<iostream>
#include  <string.h>
using namespace std;
int  fun(char  *t)


{
 int flag = 1;
 while (*(t+1))//问题所在,为什么是*(t+1)而不是 *t 呢?

 {
  if ((*(t + 1) - *t) != 1)
  {
   flag = 0;
   cout << *t;
  }
   


  t++;
 }


 return flag;
}


int main()
{
 char  s[26];


 printf("请输入一个字母组成的字符串 :  ");


 gets_s(s);


 if (fun(s))
  printf("%s 是由连续字母组成的字符串.\n", s);


 else   printf("%s 不是由连续字母组成的字符串!\n", s);


}


听雨0
浏览 4339回答 1
1回答

asd8532

int  fun(char  *t) {  int flag = 1;  while (*(t))  {  cout<<"HHHHH"<endl;   if ((*(t + 1) - *t) != 1)   {    flag = 0;    cout<<"wrong"<<endl;    }    //*t   //第一轮*t b-a有效   //第二轮*t+1 c-b有效   //第三轮*t+2 d-c有效   //第四轮*t+3 e-d无效      //*t+1   //第一轮*t+1 b-a有效   //第二轮*t+2 c-b有效   //第三轮*t+3 d-c有效   //没有第四轮 最大的差别在于,使用*t会在第四轮的时候*t+3的循环内部使得if ((*(t + 1) - *t) != 1)变成*(t+4)=*(t+3)向后多了一位
打开App,查看更多内容
随时随地看视频慕课网APP