| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 854 人关注过本帖
标题:[求助]看一下错在哪
只看楼主 加入收藏
我是一只小菜鸟
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-12-19
收藏
 问题点数:0 回复次数:10 
[求助]看一下错在哪
编写一个程序,输入n个人的姓名,然后统计其中有多少个以“z”字母开头的名字,并把所有以“z”字母开头的名字和以“z”字母开头的最长的名字显示出来。

# include <stdio.h>
# include <string.h>
# define N 10
main()
{
int i,t,p,max=0;
char name[N][20];
printf("输入姓名:");
for(i=0;i<N;i++)
gets(name[i]);
printf("以z字母开头的姓名有:");
for(i=0;i<N;i++)
if(name[i][0]=='z')
puts(name[i]);
printf("以z字母开头的姓名最长的是:");
for(i=0;i<N;i++)
{
if(name[i][0]=='z')
{
p=strlen(name[i]);
if(p>max)
{
t=p;
p=max;
max=t;
}
max=i;
}
}
puts(name[max]);
}
输出结果是出现错误,高手帮忙看下错在哪?
搜索更多相关主题的帖子: 名字 姓名 统计 
2006-12-22 22:16
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
以下是引用我是一只小菜鸟在2006-12-22 22:16:19的发言:
编写一个程序,输入n个人的姓名,然后统计其中有多少个以“z”字母开头的名字,并把所有以“z”字母开头的名字和以“z”字母开头的最长的名字显示出来。

# include <stdio.h>
# include <string.h>
# define N 10
main()
{
int i,t,p,max=0;
char name[N][20];
printf("输入姓名:");
for(i=0;i<N;i++)
gets(name[i]);
printf("以z字母开头的姓名有:");
for(i=0;i<N;i++)
if(name[i][0]=='z')
puts(name[i]);
printf("以z字母开头的姓名最长的是:");
for(i=0;i<N;i++)
{
if(name[i][0]=='z')
{
p=strlen(name[i]);
if(p>max)
{
t=p;
p=max;
max=t;
}
max=i;
}
}
puts(name[max]);
}
输出结果是出现错误,高手帮忙看下错在哪?

二维数组用的有问题


这个社会太复杂。。。
2006-12-22 23:15
我是一只小菜鸟
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-12-19
收藏
得分:0 
楼上的可以把正确的发出来吗?
2006-12-23 10:08
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

/*编写一个程序,输入n个人的姓名,然后统计其中有多少个以“z”字母开头的名字,并把所有以“z”字母开头的名字和以“z”字母开头的最长的名字显示出来。
*/


# include <stdio.h>
# include <string.h>
# define N 10

void fun(char (*p)[20])
{ int length=0,j=0,i,maxi,max=0;
for(i=0;i<N;i++)
{j=0;
while(*(*(p+i)+j++)!='\n')
length++;
{if(max<length)
{max=length;
maxi=i;
}
length=0;
}
}
printf ("\nthe longest name which begins with 'z'\n");
j=0;
while(*(*(p+maxi)+j)!='\n')
printf("%c", *(*(p+maxi)+j++));
}


main()
{
int i,j=0,t,p,max=0;
char name[N][20];
printf("input the names\n");
for(i=0;i<N;i++)
{while((name[i][j++]=getchar())!='\n')
;
j=0;
}
printf("names which begin with 'z'\n");
j=0;
for(i=0;i<N;i++)
{j=0;
{if(name[i][0]=='z')
while(name[i][j]!='\n')
{printf("%c",name[i][j]);
j++;
}
printf("\n");
}
}
fun(name);
getch();

}

[此贴子已经被作者于2006-12-23 13:34:16编辑过]


这个社会太复杂。。。
2006-12-23 13:23
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
根据你的程序改的。。。思路还是你的思路

这个社会太复杂。。。
2006-12-23 22:59
superkuuga
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-1
收藏
得分:0 

main()
{
int i,x,j=0,t,p,max=0;
char name[N][20];
int a[N];
printf("input the names\n");
for(i=0;i<N;i++)
{while((name[i][j++]=getchar())!='\n')
;
j=0;
}
printf("names which begin with 'z'\n");
j=0;
for(i=0;i<N;i++)
{j=0;
{ if(name[i][0]=='z')
{ while(name[i][j]!='\n')
{ printf("%c",name[i][j]);
j++;
}
printf("\n");
if(j>max)
{ max=j;
        x=i;  /*顺便记录并判断是Z开头的数组的最大长度*/
       }
}
}
}
printf("\nthe longest name which begins with 'z'\n");
for(i=0;i<max;i++)
{printf("%c",name[x][i]);

}
}

本人是在"海蓝啸"的基础上在修改的,这题用指针有点大才小用啊,会把题目复杂化.

[此贴子已经被作者于2006-12-24 1:31:31编辑过]


2006-12-24 01:20
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
楼上的算法比我的好。。。学习一下。。呵呵

这个社会太复杂。。。
2006-12-24 12:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
不用strlen()和printf("%s");简直是一种浪费.

倚天照海花无数,流水高山心自知。
2006-12-24 13:28
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
[CODE]

#include <stdio.h>
#include <string.h>

int main(void)
{
int n, i, num, length, k;

while(scanf("%d", &n) != EOF)
{
num = length = 0;
getchar();

char str[n][16];
char temp[16];

for(i = 0;i < n;i ++)
{
scanf("%s", str[i]);
}
for(i = 0;i < n;i ++)
{
if(str[i][0] == 'z')
{
k = strlen(str[i]);
if(k > length)
{
length = k;
strcpy(temp, str[i]);
}
num ++;
printf("%-18s", str[i]);
}
}
if(num == 0)
printf("no person's name is beginned with 'z'.\n");
else
{
printf("\n%d\n", num);
printf("%s\n", temp);
}
}
return 0;
}

[/CODE]

该学习了。。。
2006-12-24 14:24
crusoe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-12-24
收藏
得分:0 

#include <stdio.h>
#include <string.h>
#define N 5
void main()
{
int i,t=0,s,m;
char name[N][20];
printf("输入姓名:\n");
for(i=0;i<N;i++)
gets(name[i]);
printf("以'z'字母开头的名字:\n");
for(i=0;i<N;i++)
if(name[i][0]=='z')
{
puts(name[i]);
{
s=strlen(name[i]);
if(t<s)
{
m=i;t=(t>s)?t:s;
}
}

}
printf("以'z'字母开头的最长的名字:\n");
puts(name[m]);
}


我的,呵呵

2006-12-24 21:49
快速回复:[求助]看一下错在哪
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045868 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved