|
发表于 2021-11-27 10:59:37
|
显示全部楼层
- #include<stdio.h>
- int main(void){
- char s[4100];//创建 字符数组 s
- int d[2000][2],i,j,k;//创建 二维int数组d,int 变量 i,j,k
- gets(s);//给 s 赋值
- for(k=i=0;s[i];k++){//循环 1
- i=j;
- for(;s[i];i++)if((s[i]<'a'&&s[i]>'Z')||s[i]<'A'||s[i]>'z');//循环 2,此语句执行后,i 为 用户输入的 字符的数量-1.原代码后面的 if 语句 即没有输出判断结果,也没有其他操作,无意义
- for(j=i;s[j];j++)if((s[j] >= 'A' && s[j] <= 'Z') || (s[j] >= 'a' && s[j] <= 'z'));//循环 3,循环 2 结束后 s[i] == false ,j==i,因此 s[j] == false,该循环仅执行头部的初始化语句 j=i
- d[k][0]=i;//d[0][0]==i
- d[k][1]=j-i;//d[0][1]==j-i==0
- }//循环 1 和 循环 2 的 退出条件 相同,且 s[i]在 循环2 后 没有 变动,因此 循环 1只迭代 1次,循环1 结束后 k==1
- for(j=0,i=1;i<k;i++)if(d[i][1]>d[j][1])j=i;//循环 4.i==1,k==1,循环 4条件 不成立,该循环 仅执行头部的初始化语句 j=0
- for(i=0;i<d[j][1];i++)putchar(s[d[j][0]+i]);//循环 5,i==0,d[j][1]==d[0][1]==0,循环 5条件 不成立,该循环 仅执行头部的初始化语句 i=0
- printf("\n");
- }
复制代码 |
|