#include #include #include main() { char string1[10] = \"\ int r,i=0,j=0; while ( string1[0] != 'Z') { gets(string1); r = strcmp(string1,string2); //r记录的是判断string1和string2是否相等 如果相等r=0否则r=1 if (!r)//果然两个字符串相等则执行下面代码 { if(strcmp(string3,string1)) //下面代码的功能是判断是否需要输出 { i=0; //为了拼接字符串,i和j用来标示位置所在 j=0; //之后写一段代码类似于下面这样的功能 //string4 = string4+\"\\n\"+string1; while(string4[i] !='\\0') i++; while(string1[j] !='\\0') string4[i++]=string1[j++]; //下面两句是拼接最后输出的字符串。如果符合则追加到string4的末尾 string4[i]='\\n'; //为了不让他们在一行显示,这里我们追加一 次就换一行显示 strcpy(string3,string1); //为了判断是否要将它显示出来,这里设定个string3来做个标示,如果相同输入的,就只显示一个就可以了 } } strcpy(string2,string1);//想一般大家都会想到用指针取值的方式来赋值,那样是不可以的。这能这样写 不可以这样*string2=*string1 } printf(\"\"); puts(string4); system(\"pause\"); return 0; } /* 《C和指针》64页,即:第四章编程练习第五题。题目如下: 编写一个程序,从标准输入一行一行地读取文本,并完成如下任务:如果文件中有两行或多行相邻的文本内容相同, 那么就打印出其中一行,其余的行不打印。你可以假设文件中的文本行在长度上不会超过128个字符(127个字符外加一个用于终结文本行的换行符)。 考虑下面的输入文件。 This is the first line. Another line. And another. And another. And another. And another. Still more. Almost done now -- Almost done now -- Another line. Still more. Finished! 假定所有的行在尾部没有任何空白(它们在视觉上不可见,但它们却可能使邻近两行在内容上不同),根据这个输入文件,程序应该产生下列输入出: And another. Almost done now-- 所有内容相同的相邻文本行有一行被打印。 问题补充 2010-09-10 13:01 #include #include #include main() { char string1[10] = \"\ int r; while ( string1[0] != 'Z'){ gets( string1); r = strcmp( string1, string2); if ( !r){ puts( string1); } *string2 = *string1;//不知道这里可不可以这样,是想将string1中的值转到string2中 } system(\"pause\"); return 0; } */ 因篇幅问题不能全部显示,请点此查看更多更全内容