c语言,,,菜鸟求助

cjl1166 2013-02-13 02:38:20
c语言 想要输入如下数据该怎么定义类型,并且之后可以运用比较后面的数字的 并输出最大数之前的网址

www.youtube.com 1
www.google.com 13
www.google.com.hk 3
www.alibaba.com 13
www.taobao.com 5


还有#include<stdio.h>
int main()
{
char s[1000][1000];
int T,i,j,k,m,n,t=0;
scanf("%d",&T);
for(j=0;j<T;j++)
{
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
for(k=0;k<n;k++)
{
scanf("%c",&s[i][k]);
if(s[i][k]=='.')
t++;
}
printf("case #%d\n",j);
printf("%d\n",t);
}
return 0;
}
为什么结果不正确呢(求“.”的个数)
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wade_2003 2013-02-19
  • 打赏
  • 举报
回复
引用 4 楼 ForestDB 的回复:
C/C++ code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647# include <stdio.h># include <stdlib.h> typedef struct { char string[BUFSIZ]; int num……
++
ForestDB 2013-02-18
  • 打赏
  • 举报
回复

# include <stdio.h>
# include <stdlib.h>

typedef struct {
    char string[BUFSIZ];
    int number;
} RECORD;

int cmp(const void * a, const void * b)
{
    return ((RECORD *)a)->number - ((RECORD *)b)->number;
}

int main()
{
    int n;
    RECORD * records;
    int i;

    printf("How many records are there? ");
    scanf("%d", &n);

    records = (RECORD *)calloc(n, sizeof(RECORD));

    for (i = 0; i < n; i++)
    {
        scanf("%s%d", records[i].string, &records[i].number);
    }

    printf("\nbefore sorting\n");
    for (i = 0; i < n; i++)
    {
        printf("%s\t%d\n", records[i].string, records[i].number);
    }

    qsort(records, n, sizeof(RECORD), cmp);

    printf("\nafter sorting\n");
    for (i = 0; i < n; i++)
    {
        printf("%s\t%d\n", records[i].string, records[i].number);
    }

    free(records);

    return 0;
}
第二个问题注意吸收多余的空格。
cjl1166 2013-02-15
  • 打赏
  • 举报
回复
谢谢,,,第二个问题是因为共有T组m*n的矩阵,,,求‘.’的个数
Aweiwei_ 2013-02-14
  • 打赏
  • 举报
回复
网址用string,然后用stl定义一个map,索引用int就好啦
25K纯帅 2013-02-13
  • 打赏
  • 举报
回复
第一个问题,我个人觉得应该把网址和数字放在两个不同的数组中,因为一个事char型,一个是int型,然后再比较大小,具体实现参考以下:

#include<stdio.h>
void main()
{
	int num[5];
	char str[5][20];
	int i,k,max; //循环变量

	puts("输入网址以及数据:\n");

	for(i = 0; i < 5; ++i)
	{
		scanf("%s%d",str[i],&num[i]);
	}

	max = num[0];
	for(i = 0; i < 5 - 1; ++i)
	{
		if(num[i] > max)
		{
			k = i;
			max = num[i];
		}
	}

	puts(str[k]);
}
对于第二个问题,我有点不明白你的程序的意思

//求“.”的个数
#include<stdio.h>
int main()
{
	char s[1000][1000];
	int T,i,j,k,m,n,t=0;

	scanf("%d",&T);  //最外层循环---为什么需要一个最外层的循环???

	for(j=0;j<T;j++)
	{
		scanf("%d%d",&m,&n);  //输入两个数,分别做内外循环的限制-----为什么又要输入两个数???
		for(i=0;i<m;i++)
			for(k=0;k<n;k++)
			{
				scanf("%c",&s[i][k]);  //输入字符
				if(s[i][k]=='.')    //是.的话就t++
					t++;
			}
			printf("case #%d\n",j);
			printf("%d\n",t);
	}
	return 0;
} 
假如楼主想要实现的是:输入一个字符串,统计.的个数,那么以下是参考:
[code=c]
#include<stdio.h>
void main()
{
	char str[20];
	int sum = 0;

	puts("输入一个字符串:\n");
	gets(str);

	for(int i = 0; i < 20; ++i)
	{
		if( str[i] == '.' )
			sum++;
	}

	printf("'.'的个数为%d个\n",sum);
} 
[/code]

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧