问答题设在SQL Server 2008某数据库中有商品表和销售表,两个表的定义如下:
CREATE TABLE商品表(
商品号char(10) PRIMARY KEY,
商品名varchar(40),
类别varchar(20),
进货单价int)
CREATE TABLE销售表(
商品号char(10) REFERENCES商品表(商品号),
销售时间datetime,
销售数量int,
销售单价int,
PRIMARY KEY(商品号,销售时间))
现要创建一个存储过程:查询指定类别的每种商品去年的累计销售总数量。请补全下列代码。
CREATE PROC p_TotalSales
@lb varchar(20)
AS
SELECT t1.商品号,商品名,______ AS销售总数量
FROM商品表t1.JOIN销售表t2
ON t1.商品号=______
WHERE year(销售时间)=year(______(year,-1,getdate()))
and类别=@lb
______ t1.商品号,商品名
问答题有表SCORE(Sno,Cno,Degree),查询该表中最高分的学生学号和课程号:SELECT_________FROM SCOREWHERE Degree=_________;
问答题已知在文件IN1.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【试题程序】 #include <stdio.h> #include <memory.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() main () memset(sell, 0, sizeof(sell)); ReadDat (); SortDat (); WriteDat (); void ReadDat ( FILE *fp; char str[80],ch[11]; int i; fp=fopen("IN1.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("OUT1.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);
问答题设要为某工厂设计一个数据库,需要记录如下信息(有下划线的信息可作为唯一标识):.产品有产品名、规格;.每种产品拥有多道加工工序,每道加工工序只适用于一种产品;.每道工序需要记录相关的工序编号、所需材料、加工要求;.每道工序可以有多道上游工序,每道工序最多有一道下游工序;.职工有职工名、性别、工资;.每个职工只负责加工一道工序,每道工序可有多个职工负责加工,需要记录每个职工的加工时间;根据以上描述,试画出相应的ER图。将上面的ER图转换为相应的关系模式,并指出各关系模式的主码。
问答题已知数据文件IN58.DAT中存有300个4位数,并己调用读函数readDat()把这些数存入数组a中,请编制一函数isValue(),其功能是:求出这些4位数是素数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把数组b中的数输出到OUT58.DAT文件中。 例如:5591是素数,则该数满足条件,存入数组b中,且个数cnt=cnt+1。 9812是非素数,则该数不满足条件,忽略。 注意:部分源程序已给出。 程序中已定义数组:a[300],b[300],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include<stdio.h> int a[300],b[300],cnt=0; int isP(int m) int i; for(i=2;i<m;i++) if(m%i==0) return 0; return 1; jsValue() main() int i; readDat(); jsValue(); writeDat(); printf("cnt=%d/n",cnt); for(i=0;i<cnt;i++) printf("b[%d]=%d/n",i,b[i]); readDat ( ) FILE *fp; int i; fp= fopen ( "IN58. DAT", "r" ); for (i=0; i<300; i++) fscanf(fp,"%d,", writeDat ( ) FILE *fp; int i; fp=fopen ( "OUT58. DAT", "w" ); fprintf(fp,"%d/n",cnt); for (i=0; i<cnt; i++) fprintf (fp, "%d/n", b[i] fclose(fp);
问答题设某全国性的运输企业建立了大型0LTP系统,并在该系统之上建立了数据仓库。0LTP系统和数据仓库中有如下数据表:运输明细表(运输单ID,发送站ID,终到站ID,货物ID,货物重量,运输价格,发货日期)汇总表1(发送站ID,终到站ID,货物ID,发货日期,总重,总运价)汇总表2(发送站ID,终到地区ID,货物ID,发货日期,总重,总运价)汇总表3(发送站ID,终到站ID,货物ID,发货月份,总重,总运价)汇总表4(发送地区ID,终到地区ID,货物类别ID,发货日期,总重,总运价)该企业管理的货运站约有100个,货物约有500种共10类,各汇总表都建有主码,且各表有合理的维护策略,在每次维护后数据能保持一致。设有视图V,该视图的访问频率很高,其查询结果模式为(发送地区ID,终到站ID,发货月份,总重,总运价),该视图现以汇总表1为计算数据源。经监控发现,汇总表1的被访问频率过高,导致系统整体性能下降,而其它汇总表被访问频率较低。在不增加汇总表和索引的情况下,请给出一个改善系统服务性能的优化方案,并简要说明理由。
问答题在T—SQL语言中,如果要将T1表中的全部数据复制到T2表中,T2表目前还不存在,可使用语句:SELECT*_______T2 FROM T1
问答题请编写程序,要求:将文件IN.DAT中的200个整数读入数组xx中,求出数组xx中的最大数max及最大数的个数cnt和数组xx中能被3或7整除的数的算术平均值pj(保留两位小数),并将结果max,cnt,pj输出到OUT.DAT中。
勿改动主函数main()、读函数read_dat()的内容。读函数read_dat(int xx[200])及输出格式已给出。
[试题程序]
#include<stdlib.h>
#include<stdio.h>
#define N 200
void read dat(int xx[N])
{
int i, j;
FILE*fp;
fp=fopen{"IN.DAT", "r");
for(i=0; i<20; i++)
{
for(j=0; j<10; j++)
{
fscanf(fp, "%d,",
printf("%d", xx[i*10+j]);
}
printf("/n");
}
fclose(fp);
}
void main()
{
int i, k, cnt, xx[N], max;
float pj;
FILE*fw;
long j=0;
system("CLS");
fw=fopen("OUT.DAT", "w");
read_dat(xx);
printf("/n/nmax=%d, cnt=%d, pj=%6.2f/n", max, cnt, pj);
fprintf(fw, "%d/n%d/n%6.2f/n", max, cnt, pj);
fclose(fw);
}
问答题函数ReadDat()的功能是实现从文件IN32.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrOR(),该函数的功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移至该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组xx中。最后调用函数WriteDat()把结果输出到文件OUT32.DAT中。 例如,原文:You can create an index on any field you have the correct record 结果:n any field Yu can create an index rd yu have the crrect rec 原始数据文件存放的格式是:每行的宽度均小于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 StrOR (void) void main () clrscr ( ); if (ReadDat ( ) ) printf ("数据文件IN32.DAT不能打开! /n/007"); return; StrOR ( ); WriteDat ( ); int ReadDat (void) FILE *fp; int i=0; char *p; if ( (fp= fopen ( "IN32. 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; ctrscr ( ); fp=fopen ("OUT32 .DAT", "w"); for (i=0; i<maxline; i++) printf("%s/n",xx[i]); fprint f (fp, "%s/n", xx [i]); fclose(fp);
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中。请编写函数jsValue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat(),把结果输出到out.dat文件中。
例如:9123,9-2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。
9812,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。
注意:部分源程序已经给出。
程序中已定义数组:a[300];已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include <stdio.h>
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;
void jsValue()
{
}
void ReadDat()
{
FILE *fp;
int i;
fp=fopen("in.dat","r");
for(i=0;i<300;i++)
fscanf(fp,"%d,",
fclose(fp);
}
void writeDat()
{
FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d/n%7.2f/n%7.2f/n",cnt,pjz1,pjz2);
fclose(fp);
}
main()
{
ReadDat();
jsValue();
writeDat();
printf("cnt=%d/n满足条件的平均值pzj1=007.2f/n不满足条件的平均值pzj2=007.2f/n"
,cnt,pjz1,pjz2);
}
问答题知识发现主要由三个步骤组成,它们是____________、数据挖掘、结果的解释评估。
问答题程序test.c的功能是:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a,字母Z改写成字母A,其他字符不做改变。
请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()把结果输出到文件out.dat中。
例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz。
请勿改动数据文件in.dat中的任何数据、主函数main()和输出数据函数readwriteDAT()的内容。
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#define N 81
void readwriteDAT();
void chg(char *s)
{
}
main ()
{
char a [N];
printf ("Enter a string:"); gets (a);
printf("The original string is: "); puts(a);
chg (a);
printf ("The string after modified: ");
puts (a);
readwriteDAT ();
}
/*从文件in.dat中读入字符串赋给字符串变量a,调用函数chg(a)对字符串按照题目的要求进行处理,并把处理结果写入到文件out.dat中*/
void readwriteDAT()
{
int i;
char a [N];
FILE *rf, *wf;
rf=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
for(i=0; i<10; i++)
{
fscanf(rf, "%s", a);
chg (a);
fprintf(wf, "%s/n", a);
}
fclose(rf);
fclose(wf);
}
问答题设某数据库中有旅客表A(旅客编号,城市)和旅客表B(旅客编号,城市),现将所有旅客的数据存储这两张表中。请补全如下查询语句,使得该查询语句能查询所有旅客所在的全部的不重复的城市。SELECT 城市 FROM 旅客表A____________SELECT 城市 FROM 旅客表B
问答题已知文件IN.DAT中存有100条产品销售记录,每条产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)和金额je(长整型)5部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:将这些产品记录按产品名称从大到小的顺序排列,若产品名称相同,则按金额从大到小的顺序排列,最终排列结果仍存入结构数组sell中,最后调用函数WritDat(),把结果输出到文件OUT.DAT中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat)的内容。
[试题程序]
#include<stdio.h>
#include<memory.h>
#include<string.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;
chat 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);
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("OUT.DAT","w");
for(i=0;i<100; i++)
{
fprintf(fp,"%s%s%4d%5d%10ld/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
fclose(fp);
问答题某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采用了一套新的经营管理系统,此系统使用SQL Server 2008数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用SQL Server 2000,数据结构与新系统不完全一致。因此需要把数据从SQL Server 2000导入到SQL Server 2008中,为了保证数据一致性,数据导入过程中要求暂停业务且必须在3小时内完成。
问答题设在采用SQLServer2008数据库的图书馆应用系统中有三个基本表,表结构如下所示,请用SQL语句完成下列两个查询:
问答题函数ReadDat()的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中。请编写函数StrCharJL(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII码值左移4位,如果左移后,其字符的ASCII码值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII码值再加上原字符的ASCII码值,得到的新字符仍存入到原字符串对应的位置。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到文件OUT.DAT中。
原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
[试题程序]
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void StrCharJL(void)
{
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件IN.DAT无法打开/n/007");
return;
}
StrCharJL();
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;
system("CLS");
fp=fopen("OUT.DAT", "w");
for(i=0; i<maxline; i++)
{
printf("%s/n", xx[i]);
fprintf(fp, "%s/n", xx[i]);
}
fclose(fp);
}
问答题在in.dat文件中有200个正整数,且每个数均在1000~9999之间。函数ReadDat()读取这200个数并存放到数组aa中。请编写函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat(),把结果bb输出到out.dat文件中。
例如: 处理前9012 5099 6012 7025 8088
处理后5099 8088 7025 6012 9012
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int aa[200].bb[10];
void jsSort()
{
}
void ReadDat()
{
FIIE *in;
int i;
in=fopen("in.dat","r");
for(i=0;i<200;i++)
fscanf(in,"%d,",
fclose(in);
}
void WriteDat()
{
FIIE *out;
int i;
out=fopen("out.dat","w");
for(i=0;i<10;i++)
{
printf("i=%d,%d/n",i+1,bb[i]);
fprintf(out,"%d/n",bb[i]);
fclose(out);
}
void main ()
{
ReadDat();
jsSort();
WriteDat();
问答题函数ReadDat()的功能是实现从文件IN74.DAT中读取一篇英文文章存入到字符串数组xx中。请编制 6数StrCharJL(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后, (字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到的新字符仍存入到原字符中对应的位置。最后把已处理的字符串仍按行重新存入了符串数组xx中,最后调用函数WritcDat()把结果n输出到文件OUT74.DAT中。 注意:部分源程序已给出。 原始数据文件存放的格式是:每行的宽度均小于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 StrCharfL(void) void main() Clrscr(); if(ReadDat()) printf (“数据文件IN74.DAT不能打开/n/007”); return; StrCharJL(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen(“IN74.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; clrscr(); fp=fopen("OUT74.DAt","w"); for(i=0;i<maxline;i++) printf(”%s/n”,xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。最后main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到out.dat文件。
例如:
9123,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
9812,9-8-1-2<0,则该数不满足条件计算平均值pjz2。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2。
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
int a[300], cnt=0;
double pjz1=0.0, pjz2=0.0;
void readDat();
void writeDat();
void jsValue()
{
}
main()
{
readDat();
jsValue();
writeDat();
printf("cnt=%d/n满足条件的平均值pzj1=%7.21f/n不满足条件的平均值pzj2=%7.21f/n", cnt, pjz1, pjz2);
}
void readDat()
{
FILE *fp;
int i;
fp=fopen("in.dat", "r");
for(i=0;i<300; i++)
fscanf(fp, "%d,",
fclose(fp);
}
void writeDat()
{
FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp, "%d/n%7.21f/n%7.21f/n", cnt, pjz1, pjz2);
fclose(fp);
}