问答题已知在IN.DAT文件中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。
注意:部分源程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 100
typedef struct
{
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
) PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
void main()
{
memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
WriteDat();
}
void ReadDat()
{
char str[80],ch[11];
int i;
fp=fopen("IN.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);
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;
}
fclose(fp);
void WriteDat()
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
for(i=0;i<100;i++)
{
printf("%s %s %4d %5d %5d/n",
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fprintf(fp,"%s %s %4d %5d %5d/n",
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
fclose(fp);
}
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代后,仍存入数组xx的对应位置上,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。 替代关系:f(p)=p*11mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。 原始数据文件存放的格式是:每行的宽度均小于80个字符。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> #include<ctype.h> unsigned char xx[50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void encryptChar() void main() if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; encryptChar(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; unsigned char *p; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数SonCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WfiteDat(),把结果xx输出到OUT.DAT文件中。 例如,原文:dAeBfC. CCbbAA 结果:fedCBA. bbCCAA 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 注意:部分程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<Stdio.h> #include<string.h> #include<conio.h> char xx[50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void SortCharD(void) void main() if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; SortCharD(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","W"); for(i=0;i<maxline; i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
问答题现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,以此类推;内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编写函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> char xx[100][11]; int yy[10]; int ReadDat(void); void WriteDat(void); void CountRs(void) void main() int i; for(i=0;i<10;i++) yy[i]=0; if(ReadDat()) printf("选票数据文件IN.DAT不能打开!/n/007"); return; CountRs(); WriteDat(); int ReadDat(void) FILE *fp; int i; if((fp=fopen("IN.DAT","r"))==NULL) return 1; for(i=0; i<100; i++) if(fgets(xx[i],12,fp)==NULL) return 1; xx[i][10]='/0'; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0; i<10; i++) fprintf(fp,"%d/n",yy[i]); printf("第%d个人的选票数=%d/n",i+1,yy[i]); fclose(fp);
问答题已知数据文件IN.dat中存有200个四位数,并己调用读函数rData()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的二位数(新二位数的十位数字是原四位数的百位数字,新二位数的个位数字是原四位数的十位数字),如果新组成的两个二位数一个是奇数,另一个为偶数,并且两个二位数中至少有一个数能被17整除,同时两个新数的十位数字均不为 0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。最后main()函数调用写函数wData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。
注意:部分源程序已经给出。程序中已定义数组a[200]、b[200],己定义变量count。请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数rData()和写函数wData()的内容。
#include <stdio. h>
#define MAX 200
int a[MAX], b[MAX], count = 0;
void spellNum ()
{
}
void rData()
{ int i;
FILE *fp;
fp = fopen("IN.dat", "r");
for (i=0; i<MAX; i++)
fscanf(fp, "%d,",
fclose (fp);
}
void wData ()
{ FILE *fp;
int i;
fp = fopen("OUT.dat", "w");
fprintf(fp, "%d/n", count);
for (i=0; i<count; i++)
fprintf(fp, "%d/n", b[i]);
fclose (fp);
}
void main ()
{ int i;
rData ();
spellNum ();
printf ("满足条件的数=%d/n", count);
for (i=0; i<count; i++)
printf("%d ", b[i]);
printf ("/n");
wData ();
}
问答题编写函数findStr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值为6。
函数ReadWrite()实现从in.dat文件中读取两个字符串,并调用函数findStr(),最后,把结果输出到out.dat文件中。
注意:部分程序已经给出。
请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int findStr (char *str,char *substr)
{
}
void ReadWrite()
{
char str[81],substr[10],ch;
int n,len,i=0;
FILE *rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
while(i<25)
{
fgets(strt 81,rf);
fgets(substr,10,rf);
len=strlen(substr)-1;
ch=substr[len];
if (ch=='/n'||ch==0x1a)
substr[len]=0;
n=findStr(str,substr);
fprintf(wf,"%d/n",n);
i++;
}
fclose(rf);
fclose(wf);
}
main ()
{
char str[81],substr[10];
int n;
gets(str);
gets(substr);
puts(str);
puts(substr);
n=findStr(str,substr);
printf("n=%d/n",n);
ReadWrite();
问答题用例模型通过对系统参与者及其重要行为的描述,表达系统的______需求。
问答题请编写函数countValue(),其功能是:求出1~1000之内能被7或11整除但不能同时被7或11整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。
主函数最后调用函数writeDAT()把计算结果输出到out.dat文件中。
注意:部分源程序已经给出。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
#include <conio.h>
#include <stdio.h>
void countValue(int *a,int *n)
{
}
void writeDAT()
{
int aa[1000],n,k;
FIIE *fp;
fp=fopen("out.dat","w");
countValue(aa,
for (k=0;k<n;k++)
if ((k+1)%10==0)
fprintf(fp,"%5d/n",aa[k]);
else
fprintf(fp,"%5d",aa[k]);
fprintf(fp,"/n");
fclose(fp);
}
main()
{
int aa[1000],n,k;
countValue(aa,
for (k=0;k<n;k++)
if ((k+1)%10==0)
printf("%5d/n",aa[k]);
else
printf("%5d",aa[k]);
writeDAT();
}
问答题已知在IN.DAT文件中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。
注意:部分程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 100
typedef struct
{
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*余额*/
} PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
void main()
{
memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
WriteDat();
void ReadDat()
{
FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("IN.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);
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;
}
fclose(fp);
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
for(i=0;i<100;i++)
{
printf("%s %s %4d %5d %5d/n",
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fprintf(fp,"%s %s %4d %5d %5d/n",
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
fclose(fp);
}
问答题已知IN7.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇牧,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函牧writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT7.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数wfiteDat()的内容。 试题程序: #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void writeDat(); void jsVal() void readDat() int i; FILE * fp; fp=fopen("IN7.DAT","r"); for(i = 0; i < MAX; i++) fscanf(fp,"%d", readDat(); jsVal(); printf("满足条件的数=%d/n", cnt); for(i=0; i < cnt; i++ printf("%d ", b[i]); printf("/n"); writeDat() void writeDat ) FILE * fp; int i; fp = fopen("OUT7.DAT", "w"); fprintf(fp, "%d/n", cnt); for(i = 0; i < cnt; i++) fprintf(fp, "%d/n", b[i]); fclose(fp);
问答题下列程序的功能是;把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char*s)实现程序要求,最后调用函数readwriteDat()把结果输出到out63.dat文件中。 例如;s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。 注意:部分源程序已给出。 请勿改动主函数main()和输入输出函数readwriteDAT()的内容。 试题程序: #include<conio.h> #include<stdio.h> #define N 81 void readwriteDAT(); void chg(char *s) main ( ) char a [N]; clrscr ( ); printf("Enter a string :"); gets (a); printf("The original string is :"); puts (a); chg (a); printf("The string after modified :"); puts (a); readwriteDAT ( ) void readwriteDAT () int i; char a [N]; unsigned char *p; FILE *rf,*wf; rf=fopen("in63.dat","r"); wf=fopen("out63.dat","w"); for(i=0;i<10;i++) fgets(a,80,rf); p=strchr(a,'/n'); if(p) *p=0; chg(a); fprintf(wf,"%s/n",a); fclose(rf); fclose(wf);
问答题设某数据库中作者表(作者号、城市)和出版商表(出版商号,城市)。请补全如下查询语句,使该查询语句能查询出在作者表里而不在出版商表中的城市。SELECT城市FROM作者表作者_________ (SELECT城市FROM出版商表)
问答题请编制函数ReadDat(),实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute(),分别计算出XX中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意:部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。试题程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleave1=0.0,ave2=0.0,totfe=0.0;voidWriteDat(void);intReadDat(void)inti;FILE*fp;if((fp=fopen("IN.DAT","r"))==NULL)return1;/***编制函数ReadDat()的部分***//******************/fclose(fp);return0;voidCompute(void)inti,yy[MAX];for(i=0;i<MAX;i++)yy[i]=0;for(i=0;i<MAX;i++)if(xx[i]%2==0)//测试结点i是否是偶数)yy[even++]=xx[i];//将结点i存入数组yy中ave2+=xx[i];//将结点i累加存入ave2中else//如果结点i不是偶数odd++;//累加变量odd记录奇数的个数ave1+=xx[i];)//将xx[i]累加存入ave1中if(odd==O)ave1=0:elseave1/=odd;//计算奇数的平均数if(even==0)ave2=0;elseave2/=even;//计算偶数的平均数for(i=0;i<even;i++)totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;voidmain()inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat())printf("数据文件IN.DAT不能打开!");return:Compute();printf("EVEN=%dAVE1=%fAVER2=%fTOTFC=%f"f,even,ave1,ave2,totfc):WriteDat();voidWriteDat(void)FILE*fp:inti;fp=fopen("OUT.DAT","w"):fprintf(fp,"%d%f%f%f",even,ave1,ave2,totfc);fclose(fp);
问答题现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是:每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,以此类推;内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编写函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到OUT.DAT文件中。
注意:部分源程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
char xx[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CountRs(void)
{
}
void main()
{
int i;
for (i=0;i<10;i++)
yy[i]=0;
if (ReadDat())
{
printf("选票数据文件IN.DAT不能打开! /n/007");
return;
}
CountRs();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i;
if ((fp=fopen("IN.DAT","r"))==NULL)
return 1;
for(i=0;i<100;i++)
{
if(fgets(xx[i],12,fp)==NULL)
return 1;
fclose(fp);
return 0;
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
for(i=0;i<10;i++)
{
fprintf(fp,"%d/n",yy[i]);
printf("第%d个人的选票数=%d/n",i+1,yy[i]);
}
fclose(fp);
}
问答题请编制函数ReadDat()实现从文件IN93.DAT中读取1000个十进制整数到数组xx中。请编制函数Compute()分别计算出xx中奇数的个数odd、偶数的个数even、平均值aver及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT93.DAT文件中。计算方差的公式如下:原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意:部分源程序已给出。请勿改动主函数main()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleaver=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void)FILE*fp;if((fp=fopen("IN93.DAT","r"))==NULLreturn1;fclose(fp);returnO;voidCompute(void)voidmain()inti;for(i=O;i<MAX;i++)xx[i]=0;if(ReadDat())printf("数据文件IN93.DAT不能打开!/007/n");return;Compute();printf("ODD=%d/nEVEN=%d/nAVER=%lf/nTOTFC=%lf/n",odd,even,aver,totfc);WriteDat();voidWriteDat(void)FILE*fp;inti;fp=fopen("OUT93.DAT","w");fprintf(fp,"%dln%dln%lf/n%lfkn",odd,even,aver,totfc);fclose(fp);
问答题数据库管理系统为用户和应用程序提供了_________语言,用此语言可以定义数据库的模式结构,但此语言执行后的结果不能回滚。
问答题已知文件IN19.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数 SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT19.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include〈stdio.h> #include〈mem.h> #include〈string.h> #include〈conio.h> #include〈stdlib.h> #define MAX 100 typedef struct char dm[5]; /* 产品代码 */ char mc[il]; /* 产品名称 */ int dj; /* 单价 */ int sl; /* 数量 */ long je; /* 金额 */ PRO; PRO sell [MAX]; void ReadDat ( ; void WriteDat ); void SortDat( main ( ) memset(sell, 0, sizeof(sell)); ReadDat ( ); SortDat (); WriteDat ( ); void ReadDat() FILE *fp; char str[80], ch[11]; int i; fp = fopen("IN19.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] .sl = atoi(ch); sell[i] .je = (long)sell[i] .dj * sell[i] .sl; fclose(fp); void WriteDat() FILE *fp; int i; fp = fopen("OUT19.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].sl, sell[i].je); fclose(fp);
问答题在文件in75.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDat()是读取这200组数存放到结构数组aa中。请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组比中。最后调用函数writeDat()把结果bb输出到文件out75.dat。 注意:部分源程序已给出。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include<stdio.h> #include<string.h> #include<conio.h> typedef struct int x1,x2,x3; Data; Data aa[200],bb[200]; int jsSort () void main ( ) int count; readDat(); count=jsSort(); writeDat(count); readDat() FILE *in; int i; in=fopen("in75.dat","r"); for(i=0;i<200;i++) fscanf(in, "%d %d %d", fclose(in); writeDat(int count) FILE *out; int i; clrscr(); out=fopen("out75.dat","w"); for(i=0;i<count ;i++) print f ( "%d, %d, %d 第一个数+第三个数 =%d/n", bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3); fprintf(out,, %d,% d,% d /n" ,bb[i].x1,bb[i].x2,bb[i].x3); fclose(out);
问答题设在SQL Server 2008某数据库中有商品表和销售表,两个表的定义如下:CREATE TABLE商品表(商品号char(10)PRIMARY KEY,商品名varchar(40),类别varchar(20),进货单价int)CREATE TABLE销售表(商品号char(10),销售时间datetime,销售数量int,销售单价int,PRIMARY KEY(商品号,销售时间))下面是一个用户定义的多语句表值函数,它接受类别作为输入参数,返回该类别下的每种商品在2012年的销售总利润,并将结果按照销售总利润的降序输出。请补全该函数定义代码。CREATE FUNCTION f_Profit(@1b char(10)) _________@ProfitTable_________ (商品号char(10),总利润int)ASBEGININSERT INTO @ProfitTable__________________END
问答题已知在文件IN. dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数Rdata()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后调用函数Wdata(),把结果输出到OUT. dat文件中。 注意:部分源程序已经给出。请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。#include <stdio. h>#include <string. h>#include <conio. h>#include <stdlib. h>#define MAX 100typedef struct char code[5]; /* 产品代码 */ char name[11]; /* 产品名称 */ int uprice; /* 单价 */ int amount; /* 数量 */ long sum; /* 金额 */ PRO;PRO sell [MAX];void Rdata();void Wdata();void SortDat()void main () memset(sell, 0, sizeof(sell) Rdata(); SortDat(); Wdata();void Rdata() FILE *fp; char str[80], ch[11]; int i; fp = fopen("IN. dat", "r"); for (i=0; i<100; i++) fgets(str, 80, fp); memcpy(sell[i].code, str, 4); memcpy(sell[i].name, str+4, 10); memcpy(ch, str+14, 4); ch[4] = 0; sell[i].uprice = atoi(ch); memcpy(ch, str+18, 5); ch[5] = 0; sell[i]. amount = atoi(ch); sell[i].sum = (long)sell[i]. uprice * sell[i]. amount; fclose(fp);void Wdata() FILE *fp; int i; fp = fopen("OUT. dat", "w"); for (i=0; i<100; i++) printf("%s %s %4d %5d %5d/n", sell[i]. code, sell[i].name,sell[i].uprice, sell[i]. amount, sell[i]. sum); fprintf(fp, "%s %s %4d %5d %5d/n", sell[i]. code,sell[i]. name, sell[i]. uprice, sell[i]. amount, sell[i]. sum); fclose(fp);
