问答题在SQL Server 2008中,现要将T1表的C1列(int类型)定义为标识列,初值和增量值均为1。请补全下列语句:CREATE TABLE T1 (C1 int ____________ (1,1),…)
问答题对10个候选人进行选举,现有一个100条记录的选票数据文件IN29.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数 CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT29.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include 〈stdio.h> char xx[100] [11]; int yy[10]; int ReadDat (void); void WriteDat(void); void CountRs(void) main ( ) int i; for (i=0; i〈10; i++) yy[i] = 0; if (ReadDat ( ) ) print f ("选票数据文件IN29. DAT不能打开! /007 /n"); return; CountRs ( ); WriteDat (); int ReadDat (void) FILE *fp; int i; char tt[13]; if((fp = fopen("IN29.DAT", "r")) == NULL) return 1; for (i = 0; i 〈 100; i++) if(fgets(tt, 13, fp) == NULL) return 1; memcpy(xx[i], tt, 10); fclose (fp); return 0; void WriteDat(void) FILE *fp; int i; fp = fopen("OUT29.DAT", "w"); for(i = 0; i 〈 10; i++) fprintf(fp, "%dkn", yy[i]); printf("第%d个人的选票数=%d/n", i+1, yy[i]); fclose(fp);
问答题在衡量数据库应用系统的性能指标中,____________指的是系统在单位时间内可以完成的数据库事务数量。
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后main()函数调用写函数writeDat()把数组b中的数输出到out.dat文件中。 例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。 9812是非素数,则该数不满足条件忽略。 注意:部分源程序存在test.c文件中。 程序中已定义数组:a[300],b[300],已定义变量:cnt 请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include <stdio.h> //include语句说明各程序中包含vc6.0中的标准输入输出库函数stdio.h int a[300],b[300],cnt=0; //定义全局数组a[300],b[300]和变量cnt,并且对变量cnt赋初值0 void readDat(); //函数readDat()说明语句 void writeDat(); //函数writeDat()说明语句 void jsValue(); //函数jsValue()说明语句 int isP (int m) //函数isP(m)判断m是否为素数,如果是素数,返回1,否则返回0 int i; //定义变量i for (i=2; i<m; i++) //循环变量i从2依次递增,直到i等于或大于m退出循环 if (m%i==0) return 0; //如果m能被i整除,返回0 return 1; //否则返回1 void jsValue() void main() int i; //定义变量i readDat(); //调用readDat()函数从数据文件in.dat中读取300个四位数存入数组a中 jsValue(); //调用函数jsValue()实现题目所要求的功能 writeDat(); //调用writeDat()函数把计算结果写入到数组b中的数输出到out.dat文件 printf("cnt=%d/n",cnt); //在屏幕上显示素数的个数 for (i=0; i<cnt; i++) printf("b[%d]=%d/n",i,b[i]); //在屏幕上显示数组b中的所有元素 void readDat() FILE *fp; //定义文件指针变量fp int i; //定义整型变量i fp=fopen("in.dat","r"); //以只读的方式打开文件in.dat,并用fp指向这个文件 for (i=0; i<300; i++) fscanf( fp,"%d,",%a[i]); //从文件in.dat中读取300个四位数到数组a中 fclose(fp); //关闭文件in.dat void writeDat() FILE *fp; //定义文件指针变量fp int i; //定义整型变量i fp=fopen("out.dat","w"); //以只写的方式打开文件out.dat,并用fp指向这个文件 fprintf(fp, "%d/n",cnt); //把素数的个数写入到文件out.dat for (i=0; i<cnt; i++) fprintf(fp,"%d/n",b[i]); //把数组b中的所有元素写入到文件out.dat fclose (fp); //关闭文件out.dat
问答题在in.dat文件中有200个正整数,且每个数均在1000~9999之间。函数ReadDat()读取这200个数并存放到数组aa中。请编写函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat(),把结果bb输出到out.dat文件中。
例如:处理前6012 5099 9012 7025 8088
处理后9012 6012 7025 8088 5099
注意:部分程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int aa[200],bb[10];
void jsSort()
{
}
void ReadDat()
{
FILE *in;
int i;
in=fopen("in.dat","r");
for(i=0;i<200;i++)
fscanf(in,"%d,",
fclose(in);
}
void WriteDat()
{
FILE *out;
int i;
out=fopen("out.dat","w");
for(i=0;i<10;i++)
{
printf("%d",bb[i]);
fprintf(out,"%d/n",bb[i]);
}
fclose(out);
}
void main()
{
ReadDat();
jsSort();
WriteDat();
}
问答题函数ReadDat()的功能是从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中。请编写函数encryChar(),按给定的替代关系对数组xx中所有字符进行替换,替换后的字符仍存入数组xx的对应的位置上,最后调用函数WriteDat(),把结果xx输出到文件PS.DAT中。
替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII码值,f(p)是计算后新字符的ASCII码值),如果计算后f(p)的值小于等于32或其ASCII码值是奇数,则该字符不变,否则,将f(p)所对应的字符进行替换。
注意:原始数据文件的存放格式是每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
【试题程序】
#include < stdlib.h >
#include < stdio.h >
#include < string.h >
#include < ctype.h >
unsigned char xx[50] [80] ;
int maxline =0 ;
int ReadDat (void) ;
void WriteDat (void) ;
void encryChar ()
{
}
void main ()
{
system ("CLS") ;
if (ReadDat ())
{
printf ("数据文件 ENG. IN 无法打开!
/n/007") ;
return;
}
encryChar () ;
WriteDat () ;
}
int ReadDat (void)
{
FILE * fp;
int i =0;
unsigned char * p;
if ( (fp = fopen ("ENG. IN", "r") ) ==NULL)
return 1 ;
while (fgets (xx[i] ,80, fp) ! =NULL)
{
p =strchr (xx[i],"/n") ;
if (p)
* p=0;
i++;
}
maxl ine = i ;
fclose (fp) ;
return 0 ;
}
void WriteDat()
{
FILE * fp;
int i;
fp = fopen ("ps .dat", "w") ;
for (i =0;i <maxline;i ++)
{
printf("%s/n",xx[i]);
fprintf(fp,"%s/n",xx[i]);
}
fclose(fp);
}
问答题数据仓库是面向主题的、_________的、非易失的、随时间变化的数据集合,用来支持管理人员的决策。
问答题已知在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<MAX;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(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<MAX;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,seii[i].sl,sell[i].je); fclose(fp);
问答题下列程序的功能是:将一正整数序列K1,K2,…,K91重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比KI大的数都在K1的右面(后续的再向右存放),从K1向右扫描。要求编写函数JsValue()实现此功能,最后调用函数writeDat()把新序列输出到文件out90.dat中。 说明:在程序中已给出了.10个序列,每个序列中有9个正整数,并存入数组a[10][9]中,分别求出这 10个新序列。 例如: 序列排序前 6,8,9,1,2,5,4,7,3 序列排序后 3,4,5,2,1,6,8,9,7 注意:部分源程序已给出。 请勿改动主函数main()和写函数writeDat()的内容。 试题程序: #include jsValue(int a[lO] [9]) main() int a[10] [9]=6,8,9,1,2,5,4,7,3, 3,5,8,9,1,2,6,4,7, 8,2,1,9,3,5,4,6,7, 3,5,1,2,9,8,6,7,4, 4,7,8,9,1,2,5,3,6, 4,7,3,5,1,2,6,8,9, 9,1,3,5,8,62,4,7 2,6,1,9,8,35,7,4 5,3,7,9,1,82,6,4 7,1,3,2,5,89,4,6 ; int i,j; jsValue(a); for(i=0;i<10;i++) for(j=0;j printf("%d",a[i] [j]); if(j<=7) printf(","); printf("/n"); writeDat(a); writeDat(int ail0] [9]) FILE *fp; int i,j; fp=fopen("outg0.dat","w"); for(i=0;i<10;i++) for(j=0;j<9;j++) fprintf(fp,"%d",a[i] [j]); if(j<=7) fprintf(fp,","); fprintf(fp,"/n"); fclose(fp);
问答题设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请编写函数Josegh()实现此功能,并调用函数WriteDat(),把结果p输出到OUT.DAT文件中。
设n=100,s=1,m=10。
(1)将1到n个人的序号存入一维数组p中;
(2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
(3)重复第(2)步直至圈中只剩下p[1]为止。
注意:部分源程序已经给出。
请勿改动主函数main()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#define N 100
#define S 1
#define M 10
int p[100],n,s,m;
void WriteDat(void);
void Josegh(void)
{
}
void main()
{
m=M;
n=N;
s=S;
Josegh();
WriteDat();
}
void WriteDat(void)
{
int i;
FILE *fp;
fp=fopen("OUT.DAT","w");
for(i=N-1;i>=0;i--)
{
printf("%4d",p[i]);
fprintf(fp,"%d",p[i]);
if(i%10==0)
{
printf("/n");
fprintf(fp,"/n");
}
}
fclose(fp);
}
问答题已知在文件IN2.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量s1(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这 100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.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; RO sell[MAXI; 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("IN2.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(void) FILE *fp; int i; fp=fopen("OUT2.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);
问答题文件IN.DAT中存有200个4位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是:求出千位数字上的值加十位数字上的值等于百位数字上的值减上个位数字上的值,并且此4位数是偶数的数,用count记录下符合条件的数的个数并按照从小到大的顺序存入数组outBuf[]中。函数WriteData()负责将outBuf[]中的数输出到文件OUT.DAT中并且在屏幕上显示出来。 注意:部分源程序已给出。 程序中已定义数组:inBuf[200],outBuf[200],已定义变量:count。 请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。 试题程序: #include<stdio.h> #define NUM 200 int inBuf[NUM],outBuf[NUM],count=0; void readData(); void writeData(); void findValue() void main() int i: readData(); findValue(); writeData(); printf("count=%d/n",count); for(i=0;i<count;i++) printf("outBuf[%d]=%d/n",i,outBuf[i]); void readData( ) FILE*fp; int i; fp=fopen("IN.DAT","r"); for(i=0;i<NUM;i++) fscanf(fp,"%d,",&inBuf[i]); fclose(fp); void writeData() FILE*fp; int i: fp=fopen("OUT.DAT","w"): fprintf(fp,"count=%d/n",count); for(i=0;i<count;i++) fprintf(fp,"%d,/n",outBuf[i]); fclose(fp);
问答题设有商场经营管理系统,系统中的部分数据表和视图的相关信息如下表所示。
表或视图
访问频率
数据源
表T1(商品标识,时间,销售柜台,数量,单价,金额)
10000次/天
原始数据
表T2(商品标识,时间,商店标识,总数量,总金额)
1000次/天
T1
表T3(商品标识,日期,商店标识,总数量,总金额)
5000次/天
T2
表T4(商品标识,月份,商店标识,总数量,总金额)
100次/天
T3
视图V1(商品标识,季度,商店标识,总数量,总金额
3000次/天
T3
表中T4的数据额是T3表明T4中的数据是根据T1的数据汇总计算而来的,并假定各个表的数据都得到了及时计算,现需对系统进行优化。以提高与视图V1有关的查询频率,设有如下优化方案:
Ⅰ为V1建立主索引
Ⅱ为T2建立主索引
Ⅲ为T3建立主索引
Ⅳ重写视图V1,将其数据源调整为T4,并为T4建立主索引
Ⅴ重写视图V1,将其数据源调整为T2,并为T2建立主索引
请针对每一个优化方案,说明该优化方案对实现目标是否有效,并简要说明原因。
问答题已知在IN.DAT文件中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价由(整型)、数量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()
{
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);
}
问答题不同的数据库管理系统采用的日志文件格式不完全一样,概括起来主要有以记录为单位的日志文件和以____________为单位的日志文件两种。
问答题设有图书管理数据库,包含三张表:图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价);读者表(借书证号,姓名,系别,办证日期);借出信息表(借出编号,借书证号,图书编号,借书日期);完成下列操作:定义一个多语句表值函数,用于查询学生借书情况,只需提供参数:借书证号,就可以通过调用函数返回此学生的借书情况,若有借书籍,则返回所借书籍的编号、书籍名称、定价和借书日期;若没有在借书籍,则返回记录为空。设函数名为:f_BorrowBook(@jszh char(20))。
问答题在一个数据库中,相关表的建表语句如下
create table T1(
a1 int primary key,
a2 int,
a3 int foreign key references T2(a3));
create table T2(
a3 int primary key,
a4 int,
a5 int foreign key references T2(a3));
create table T3(
a6 int primary key,
a7 int);
create table T4(
a1 int foreign key references T1(a1),
a3 int foreign key references T2(a3),
a6 int foreign key references T3(a6),
a8 int,
primary key(a1,a3,a6));
请画出相应的ER图,使得可以从该ER图推导出上述表定义,其中实体和联系的名称可以自定。
问答题删除用户自定义的函数使用____________语句来实现。
问答题已知数据文件IN72.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab (新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个数均为偶数且两个十位数中至少有一个数能被9整除,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT72.DAT文件中。 注意;部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序; # include <stdio.h> # define MAX 200 int a [MAX],b [MAX], cnt=0; void jsVal( ) void readDat( ) int i; FILE *fp; fp=fopen("IN72.DAT","r"); for(i=0;i<MAX;i++) fscanf (fp, "%d", fclose (fp); main() int i; readDat (); jsVal (); print f ( "满足条件的数=%d/n", cnt); for(i=0;i<cnt;i++) printf("%d/n" ,b[i]); printf("/n"); writeDat ( ); writeDat ( ) FILE *fp; int i; fp=fopen ("OUT72.DAT","w"); fprintf( fp, "%d/n" , cnt); for(i=0;i<cnt; i++) fprintf( fp, "%d/n" ,b[i]); fclose(fp);
问答题下列程序的功能是:在3位整数(100至999)小寻找符合下面条件的整数,并依次从小到大存入数组 b中:它既是完全平方数,又有两位数字相同,例如144,676等。 请编制函数int js Value(int bb[]实现此功能,满足该条件的整数的个数通过所编制的函数返回。 最后调用函数writeDat()把结果输出到文件OUT12.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()和写函数writeDat()的内容。 试题程序: #include <stdio.h> int jsValue(int bb[] ) main ( ) int b[20], num; num = jsValue (b); writeDat (num, b); writeDat int num, int b[] ) FILE *out; int i; out = fopen("OUT12.DAT", "w"); fprintf(out, "%d/n", num); for(i = 0; i < num; i++) fprintf(out, "%d/n", b[i] ); fclese(out);
