使用数组和指针实现信息统计,c语言。程序说明

我需要对程序详细的说明,设计思路,越详细越好字数越多越好,但内容不要冗余,下列是程序。
数组方法
#include <stdio.h>
#include <string.h>
void main()
{
int i,sum=0,min=100;
int a[8]={2,100,20,75,85,5};
char *MeanLow[4]={"国家数量","平均人数","参赛人数最少的国家","最少国家的人数"};
char name[6][5]={"日本","中国","美国","法国","瑞士"};
printf("原始信息如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]);
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]);
}
printf("%s:\n",MeanLow[i]);
//计算
for(i=0;i<5;i++)
{
sum=sum+a[i];
if(min>a[i]) min=a[i];
}
a[6]=sum/5;
a[7]=min;
for(i=0;i<5;i++)
if(min==a[i])
{
strcpy(name[5],name[i]);
break;
}
printf("\n参赛国家平均人数如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]);
printf("\n统计结果如下:\n");
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]);
}
printf("%s:%s\n",MeanLow[3],name[5]);
}

指针方法
#include <stdio.h>
#include <string.h>
void main()
{
int i,*p,sum=0,min=100;
int a[8]={75,80,83,87,89,30};
char *MeanLow[4]={"国家数量","平均人数","参赛人数最少的国家","最少国家的人数"};
char name[6][5]={"日本","中国","美国","法国","瑞士"};
printf("原始信息如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]);
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]);
}
printf("%s:\n",MeanLow[i]);
//计算,复用p
p=a;
for(i=0;i<5;i++)
{
sum=sum+p[i];
if(min>a[i]) min=p[i];
}
a[6]=sum/5;
a[7]=min;
//分配内存地址
p=(int*)malloc(8*sizeof(int));
if(p==NULL)
{
printf("内存分配错误");
exit(1);
}
//存储
for(i=0;i<8;i++)
*(p+i)=a[i];
//填写最低分数的科目名称
for(i=0;i<5;i++)
if(min==*(p+i))
{
strcpy(name[5],name[i]);
break;
}
printf("\n参赛国家平均人数如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],*(p+i));
printf("\n统计结果如下:\n");
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],*(p+i+5));
}
printf("%s:%s\n",MeanLow[3],name[5]);
free(p);
}
要汉语说明,不要程序

两个程序是一个问题的两种做法
功能是根据a中国家人数,计算出这几个国家的平均人数,最小人数的国际,以及该国家的人数,打印输出

其中
数组a[]中a[0]-a[4]存放5个国家参赛人数;a[5]存放国家数量,a[6]存放人数平均值,a[7]存放最小值
char *MeanLow[4]指针数组,存放字符串]{"国家数量","平均人数","参赛人数最少的国家","最少国家的人数"}

char name[6][5]={"日本","中国","美国","法国","瑞士"};
这是一个字符串数组,一个汉字两个字符,正好每行存储两个汉字和终结符“\0”。最后一个name[5]存放最少的国家人数

注释如下:
数组方法
#include <stdio.h>
#include <string.h>
void main()
{
int i,sum=0,min=100;
int a[8]={2,100,20,75,85,5};
//指针数组,四个指针指向四个字符串
char *MeanLow[4]={"国家数量","平均人数","参赛人数最少的国家","最少国家的人数"};
//字符串数组,一个汉字两个字符,正好每行存储两个汉字和终结符“\0”
char name[6][5]={"日本","中国","美国","法国","瑞士"};

printf("原始信息如下:\n");
//name[i]指向第i行字符串,打印出国家名和a[i]
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]);

//打印出
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]);
}
printf("%s:\n",MeanLow[i]);
//计算
for(i=0;i<5;i++)
{
//求a[0]-a[4]的和sum,a[0]-a[4]的最小值min
sum=sum+a[i];
if(min>a[i]) min=a[i];
}

//平均值
a[6]=sum/5;
//最小值
a[7]=min;

//name[5]存放五个国家中对应的a[]的最小值
for(i=0;i<5;i++)
if(min==a[i])
{
strcpy(name[5],name[i]);
break;
}

//打印国家名和对应的a[]
printf("\n参赛国家平均人数如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]);

printf("\n统计结果如下:\n");

//国家数量","平均人数","参赛人数最少的国家对应的数量
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]);
}

//最少国家的人数
printf("%s:%s\n",MeanLow[3],name[5]);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-06
#include <stdio.h>
#include <string.h> /*调用库函数*/
void main()
{
int i,sum=0,min=100;
int a[8]={2,100,20,75,85,5}; /*给数组赋值*/
char *MeanLow[4]={"国家数量","平均人数","参赛人数最少的国家","最少国家的人数"}; /*运用指针*/
char name[6][5]={"日本","中国","美国","法国","瑞士"};
printf("原始信息如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]); /*此处相当于char name[i]:a[i]*/
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]); /*和上一句形式一样*/
}
printf("%s:\n",MeanLow[i]);
//计算
for(i=0;i<5;i++)
{
sum=sum+a[i];
if(min>a[i]) min=a[i];
}
a[6]=sum/5;
a[7]=min;
for(i=0;i<5;i++)
if(min==a[i])
{
strcpy(name[5],name[i]);
break;
}
printf("\n参赛国家平均人数如下:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name[i],a[i]);
printf("\n统计结果如下:\n");
for(i=0;i<3;i++)
{
printf("%s:%d\n",MeanLow[i],a[i+5]);
}
printf("%s:%s\n",MeanLow[3],name[5]);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网