33,311
社区成员
发帖
与我相关
我的任务
分享
# 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;
}
第二个问题注意吸收多余的空格。
#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]