首页 > 其他 > 详细

C和指针 课后题 1.4

时间:2014-01-19 08:31:32      阅读:463      评论:0      收藏:0      [点我收藏+]

编写一个程序,一行行的读取输入行,直到文件尾. 算出每行长度,然后打印最长行,假定每行不超过1000

 

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 int main()
 6 {
 7     char s[10][1000];
 8     int strlens[10];
 9     int i,j,k,max,b=0;
10 
11     scanf("%d ",&i);
12 
13     for(j=0;j<i;j++){
14         gets(s[j]);
15         strlens[j] = strlen(s[j]);
16         printf("第%d行长度为%d\n",j+1,strlens[j]);
17     }
18     max = strlens[0];
19     for(k = 1;k<i;k++){
20         if(strlens[k] > max)
21         b = k;
22 
23         max = strlens[k];
24     }
25     printf("最长的一行为第%d行",b+1);
26     puts(s[b]);
27 }
bubuko.com,布布扣

这是我的想法,就是用二维数组来存储,但这个相应产生了两个问题

1.必须手动输入有多少行。

2.输入行数有限制。

然后翻阅了答案,茅塞顿开的感觉

 

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 int main()
 6 {
 7     char input[1001];
 8     int longest_len=-1;
 9     char longest[1001];
10     int len;
11 
12     while((gets(input)) != NULL){ /*这种形式一直用的不太好*/
13         
14         len = strlen(input);
15 
16         if(len > longest_len){
17             longest_len = len;
18             strcpy(longest,input);/*注意这些C自带函数的运用,有些时候简化很多问题*/
19         }
20     }
21 
22         if(longest_len > 0)
23             puts(longest);
24     
25 }
bubuko.com,布布扣

 

作者很巧妙的避开了到底有多少行,他并没有直接存储,而是每次都把最长的拿出来。很好。

C和指针 课后题 1.4

原文:http://www.cnblogs.com/suixinwuji/p/3525367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!