首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求高手,解释难懂,不明白解决方案

2012-03-22 
求高手,解释难懂,不明白#includestdio.h#includestring.hvoid main(){char a[100][100]{ },*p,*p1[

求高手,解释难懂,不明白
#include<stdio.h>
#include<string.h>
void main()
{
char a[100][100]={' '},*p,*p1[20];
int i,j=0,l=0,k,c,ji=1,s=1;

for(j=0;j<100;j++)
for(i=0;i<100;i++)
{
scanf("%c",&a[j][i]);
if(a[j][i]=='0')
l++;
if(l==3)
{k=j; j=100;break;}
if(a[j][i]==' ')
break;

}
for(i=0;i<k;i++)
{
p1[i]=a[i];
}

  for(j=0;j<k;j++)
{ for(i=j+1;i<k;i++)

{

if(strcmp(p1[j],p1[i])==0)
ji++; }
for(c=0;c<j;c++)
{ if(strcmp(p1[c],p1[j])==0)
s=0;}
  if(s)
printf("%s %d \n",p1[j],ji);ji=1;

}
}
帮我一步步解释,一下,这程序很难懂;

[解决办法]

C/C++ code
#include<stdio.h>#include<string.h>void main(){    char a[100][100]={' '},*p,*p1[20];    int i,j=0,l=0,k,c,ji=1,s=1;    for(j=0;j<100;j++)        for(i=0;i<100;i++)        {            scanf("%c",&a[j][i]);       //  循环输入1万个字符......这丫的折腾人,存心的            if(a[j][i]=='0')            //  要是输入了'0'字符就让l增量。                l++;            if(l==3)                    //  碰到3个0就退出循环,不干了。话说是人大概都不想干了。                {k=j; j=100;break;}     //  退出前先把j的值记录在k里。            if(a[j][i]==' ')            //  要是输入了空格,就退出内层循环。                break;        }                               //  整个来看,是想要人输入100组字符,每组都以空格结束。有个严重问题是字符串都没给填结束符的......    for(i=0;i<k;i++)                    //  k里面一定有值吗?很怀疑啊。万一来个哥们就是认认真真地输入完100组字符,那个k不就是没有初值了吗?    {        p1[i]=a[i];                     //  呃,要把你输入的内容给倒到p1里,让它指向你输入的字符串们。可是p1才20位置啊!碰到上面说那个哥们儿咋办尼?    }    for(j=0;j<k;j++)                    //  又一次想要利用不知道可不可以利用的k    {        for(i=j+1;i<k;i++)              //  还来......        {            if(strcmp(p1[j],p1[i])==0)  //  要是p1[j]里面的字符串和p1[i]里面的相同,就让ji增量。想要找出后面有多少个和这个字符串重复的内容,我猜作者是这个意思                ji++;                   //  那个问题是p1[j]里面哪来的字符串?呃,也许整个数组a里就被拼成了一个字符串,还是好不容易在遥远的地方撞上了一个'\0'        }        for(c=0;c<j;c++)                        {            if(strcmp(p1[c],p1[j])==0)  //  要是p1[c]与p1[j]里的字符串相同,那就把s变成0。                s=0;                    //  这个,是为了看看前面是不是有相同的字符串吧        }        if(s)                           //  要是没找到相同的字符串,就输出这一串,还有ji的数字——这玩意,表达的是什么尼?            printf("%s %d \n",p1[j],ji);    //  要是ji里面有值,唔,就是说后面还有和它相同的字符串的个数?        ji=1;    }}           /* 真心猜不出这个程序想干啥,但多半它做不到想要做的事情 */ 

热点排行