问题 问答题

已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量s1(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。
注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
[试题程序]
#include
#Include
#include
#include
#include
#define MAX 100
typedef struct
char dm[5] /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int s1; /*数量*/
long je;/*金额*/
PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()



void main()

memset(sell,0,sizeof(sell));
ReadDat();
SorrDat();
WriteDat();

void ReadDat()

FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("IN6.DAT","r");
for(i=0;i<100;i++)

fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].s1=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].s1;

fclose(fp);

void WriteDat(void)

FILE *fp;
int i;
fp=fopen("OUT6.DAT","w");
for(i=0;i<100;i++)
fprintf(fp,"%s%s%4d%5d%101d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].s1,sell[i].je);
fclose(fp);

答案

参考答案:

void SortDat()

{

int i,j;

PRO xy;

for(i=0;i<MAX-A;i++)

for(j=i+A;j<MAX;j++)

{

if(strcmp(sell[i].dm,sell[j].dm)>0) /*按代码从小到大进行排列*/

{ xy=sell[i];sell[i]=sell[j];sell[j]=xy;}

else if(strcmp(sell[i].dm,sell[j].dm)==0) /*若代码相同*/

if(sell[i].je>sell[j].je) /*则按金额从小到大进行排列*/

{ xy=sell[i];sell[i]=sell[j];sell[j]=xy;}

}

}

 

解析:

此题型考查的知识点包括以下几方面:

(1)结构体数组的排序;

(2)结构体及结构体数组的相关操作;

(3)字符型数组的比较;

(4)C语言库函数的使用(如函数strcmp())。

此题按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,相应语句为:

if(strcmp(sell[i].dm,sell[j].dm)>0)||((strcmp(sell[i].dm,sell[j].dm)==0)&&(sell[i].je>sell[j].je)))

选择题
阅读理解与欣赏

(10分)

飓风:自然的暴力

①2004年是否是飓风之年?如果你生活在美国,你的回答无疑是肯定的,因为在1个月内,佛罗里达州已经3次遭遇飓风袭击,造成上百亿美元的经济损失。由于美国人主宰着世界媒体,飓风的消息在全球引起广泛关注。现在,第4个热带风暴珍妮又袭击加勒比海局部地区,它带来的暴雨和洪水在海地造成上千人死亡或失踪,使更多人无家可归。热带风暴和飓风到底是什么系?              ?            ?

②飓风是一种热带气候,它是热带海洋上的一个强低气压区,被狂暴的旋转风包围。在北大西洋、在国际日期变更线以西的东北部太平洋以及东经160度以东的南太平洋上,它被称为台风,在印度洋上又被称为旋风。

③当热带气旋的风速达到每小时120千米,就正式称为飓风,风速在每小时120千米以下都称为热带风暴。每年,热带地区海洋上产生大约100个热带风暴,其中约50个达到飓风强度。飓风一词源于“Hudcan”,是加勒比海传说中的邪恶之神。

④飓风的形成需要精确的气象条件:海平面温度需要高于26.5℃。它们的动力是水蒸气释放的能量:温暖的热带海平面上的空气吸收海水热量后迅速旋转上升,形成一片超低压区域,成为风暴眼。

⑤飓风季节从6月1日开始,持续到11月30日结束,最具破坏力的飓风通常出现在8月中旬至10月中旬。

⑥首先,在最极端的情况下,飓风可产生最高速度每小时320千米的强风,只有最坚固的建筑才能抵挡如此强的风。其次,它们总是携带暴雨,可能引发灾难性的洪水。第三,最为可怕的是,飓风有时会引发风暴潮现象。所谓风暴潮就是狂风和超低气压携手造成的海平面上升。上升的高度最高可达到7.5米。飓风推动水位提升的海水抵达海岸可能造成洪水滔天。

⑦飓风一旦抵达陆地,由于断绝了热海水提供的热能,通常迅速偃旗息鼓。但是,如果在开阔的海洋上,则可持续两个星期,甚至1个月。

⑧科学家试图弄清楚海面温度如何影响热带风暴的形成。部分影响是直接的:海面热水相当于飓风的燃料;但是,专家相信飓风的形成并非如此简单。海面温度变化总是伴随着部分大气变化,而大气变化又会影响海洋信风的强弱和降雨量的多少。1999年9月15日,联合国发布了一份研究报告,预测在21世纪,全球气候变暖将导致更频繁、更严重的热带风暴、洪水、龙卷风。气象学家彼得森说:“我们确实知道,飓风的猛烈程度与海水温度直接相关。如果全球气候变暖的趋势持续下去,造成海水温度上升,更多、更强的飓风将接踵而至。”但除了人类的影响,各种自然循环同样影响着热带风暴的形成。比如说,当厄尔尼诺——赤道东太平洋南美沿岸海水温度激烈上升的现象——出现时,高海拔风向受到影响,这时大西洋上产生的热带气旋相对较少。飓风的形成同样与同温层风向、海洋局部区域温度、西非的降雨有关。

⑨2005年的风暴有:阿琳、布雷特、辛迪、丹尼斯、艾米丽等。造成严重损失的飓风有卡特里娜飓风、丽塔飓风,二者分别是今年大西洋上的第11次和第17次热带风暴。

小题1:有关飓风的形成条件或飓风威力的说明,不正确的一项是(   )(3分)

A.热带气旋的风速得达到每小时120千米(含120千米每小时),才能成为飓风。

B.海平面温度要高于26.5℃,借助水蒸气释放的能量作动力。

C.飓风的强风风速都在每小时320千米以上,破坏力极强。

D.飓风有时会造成海平面快速上升,携带暴雨,造成洪水滔天,引发灾难性洪水。小题2:根据原文提供的信息,以下推断正确的一项是(   )(3分)

A.每年,热带地区海洋上产生大约100个热带风暴,其中约50个形成了飓风,引发了风暴潮现象。

B.形成于海洋上的飓风抵达陆地后,失去了水蒸气释放的能量动力,立刻就会消失。

C.专家相信飓风的形成不可能只是海面温度的影响,但其猛烈程度与海面温度直接相关。

D.科学家已经弄到了海面温度影响热带风暴形成的第一手资料,弄清了海面温度影响热带风暴形成的原因。小题3:依照选文第①段加下划线句的提问形式,根据下文说明的内容,在空格处再提两个概括性问题。(4分)