求每步详解 #include<studio.h> char *a="you"; char b[

求每步详解
#include<studio.h>
char *a="you";
char b[ ]="welcome you to China!";
main( )
{ int i,j=0; char*p;
for(i=0;b[i]!='\0';i++)
{ if(*a==b[i])
{p=a;
for(j=I;*p!='\0';j++)
{ if(*p!=b[j] ) break;
p++;
}
if (*p=='\0') break;
}
}
printf("%s",&b[i];
}

输出应该是 you to China!
该程序的功能是寻找字符数组b中是否有“you”字符串。若有,则输出b中首个you以及其后的字符;否则不输出。
整形变量i,j的意义在此不赘述。
程序首先定义了一个字符型指针a,指向“you”字符串。一个字符型指针指向一个字符串,则该指针指向该字符串的首地址,本题中a目前指向‘y’,而将a++后,则p指向‘o’。
紧接着定义了一个字符数组b,不赘述。
具体详解如下:
#include <stdio.h>
char *a="you";
char b[ ]="welcome you to China!";
int main()
{
int i,j=0; char*p;
for(i=0;b[i]!='\0';i++){ //使用for循环来遍历数组b
if(*a==b[i]) //判断当前遍历到的b中字符b[i]与*a(即'y')是否相等
{
p=a; //复制指针a到p,p相当于a的副本,此举为了保证a指针不变
/*以下循环体功能:从字符数组b的当前字符b[i]开始与字符串"you"进行比较。若b中紧接着的三个字符与"you"相同,则"p++"语句执行三次,此时*p = '\0';否则在某次循环时会执行break语句,跳出当前循环,继续第一层循环。*/
for(j=i;*p!='\0';j++){
if(*p!=b[j] )
break;
p++;
}
if (*p =='\0') //若*p =='\0',即匹配成功,跳出当前循环。
break;
}
}
printf("%s",&b[i]);//输出b中从b[i]开始往后的字符串。
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

求每步详解 #include<studio.h> char *a="you"; char b[
紧接着定义了一个字符数组b,不赘述。具体详解如下:include <stdio.h> char *a="you";char b[ ]="welcome you to China!";int main(){ int i,j=0; char*p;for(i=0;b[i]!='\\0';i++){ \/\/使用for循环来遍历数组b if(*a==b[i]) \/\/判断当前遍历到的b中字符b[i]与*a(...

C语言 求每步详解求每步详解 #include<studio.h> char *a="you
char *a="you"; \/\/ 一个字符指针,但是指向的是一个常量,结果未知,牵扯到内存的问题 \/\/ 建议先设一个字符串或者字符数字 再用指针。char b[ ]="welcome you to China!"; \/\/一个动态长度的字符数组b ,main( ) \/\/主函数开始 { int i,j=0; char*p; \/\/编程风格很不好...

每步是什么意思
include <studio.h> 的目的是引入头文件,系统中有一些已经定于好的函数,引入头文件,就是告诉程序你要用这个头文件下的函数,比如studio.h引入后printf函数,scanf函数等就能使用,printf就是系统提供的打印函数,他会把输出的结果输出出来 char a* ="you"; 这个是字符串指针,指向字符串"you"的...

#include<stdio.h> #include<stdlib.h> #define N 8 typedef struct list...
采用尾插法,先找到链表的尾。while(p!=NULL&&x>p->data){ q=p;p=p->next;} 然后插入数据。至于怎么走的,C是过程语言,你看看main函数就知道了。

2-14 求方程ax2+bx+c=0的根 C语言作业!!
include<math.h> int main(){ float a,b,c;float x1,x2;scanf("%f%f%f",&a,&b,&c);if(b*b-4*a*c<0)printf("wu jie");else if(b*b-4*a*c==0)printf("you yi ge gen:%.3f",(-b)\/(2*a));else printf("x1:%.3f,x2:%.3f",(-b+sqrt(b*b-4*a*c))\/(2*a...

C语言用函数解题(急)100财富值
include<string.h> int main(){ char digits[100], i, n;scanf("%s",digits);n = strlen(digits);for(i=0;i<n\/2;i++){ if(digits[i]!=digits[n-i-1]){ printf("bu shi huiwenshu\\n");return 0;} } printf("shi huiwenshu\\n");return 0;第二题。void rp(const char* p...

ZJU的1247总是WA 为什么???
(4)用sscanf 得 每步距离和方向 (5)计算每步dx,dy (6)得x,y include<stdio.h> include<math.h> void get_ang(char *d, double *a);void main(){ char a[201] ="a";char str[100][6];double x,y;double dx,dy,ang;int v;char d[3];int len;int i,j,k;printf("...

谁能给我讲解一下C语言做的读心术代码每步都代表什么
include<bits\/stdc++.h> using namespace std;int main(void){ int i,a[4],ans;string t[4];t[0]="1,2,3,4,5,6,7";t[1]="1,3,5,7";t[2]="2,3,6,7";t[3]="4,5,6,7";cout<<"读心术猜数"<<endl;cout<<"请你从下面7个数中,选一个并记在心里。"<<endl;co...

相似回答