问答题数据库管理系统为三级模式结构提供了两层映像机制,其中模式/内模式映像提供了_________独立性。
问答题已知数据文件IN24.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT24.DAT文件中。 例如:6712,6+2=7+1,则该数满足条件,存入数组b中,且个数cnt=cnt+1。 8129,8+9≠1+2,则该数不满足条件,忽略。 注意:部分源程序已给出。 程序中已定义数组:a[300],b[300],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include〈stdio.h> int a[300], bi300], cnt=0; void 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("IN24.DAT", "r"); for(i=0; i〈300; i++) fscanf(fp, "%d,", fclose(fp); writeDat() FILE *fp; int i; fp = fopen("OUT24.DAT", "w"); fprintf (fp, "%d/n",cnt); for(i=0; i〈cnt; i++) fprintf(fp, "%d,/n", b[i]); fclose(fp);
问答题现有系表(系号,系名,联系电话)和教师表(教师号,教师名,职称,工资,系号)。目前某些系还没有招聘到教授,如果要用一个查询语句列出没有招聘到教授的系的系号和系名,用_________连接操作可以实现这个查询。
问答题文件IN.DAT中存放有100条对10个候选人进行选举的记录,数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。函数ReadData()负责将IN.DAT中的内容读人数组inBuf[]中。请编制函数calculate()来统计每个人的选票数并把得票数依次存入outBuf[0]outBuf[9]中,最后写函数WriteData()把结果outBuf[]输出到文件OUT.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。 试题程序: #include<stdio.h> #include<memory.h> #define LINE 100 #define COL 10 #define THR 5 char inBuf[LINE][COL]; int outBuf[COL]; int readData(void); void writeData(void); void calculate(void) void main() int i: for(i=0;i<10;i++)outBuf[i]=0; if(readData()) printf("IN.DAT can't be opened"); return; calculate(); writeData(); int readData(void) FILE*fp; int i; char tt[COL+1]; if((fp=fopen("IN.DAT","r"))==NULL) return 1; for(i=0;i<LINE;i++) if(fgets(tt,COL+2,fp)==NULL) return 1; memcpy(inBuf[i],tt,COL); fclose(fp); return 0; void writeData(void) FILE*fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<10;i++) fprintf(fp,"%d",outBuf[i]); printf("the amounts of number%d's votes%d",i+1,outBuf[i]); fclose(fp);)
问答题已知在文件IN.DAT中存有100条产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)和金额je(长整型)5部分组成。其中:金额=单价X数量。函数ReadDat()的功能是读取这100条销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按产品名称从小到大顺序排列,若产品名称相同,则按金额从小到大顺序排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到文件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;
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(oh, 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;
}
fcloae(fp);
}
void WriteDat()
{
FILE*fp;
int i;
fp=fopen("OUT.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个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中下标为奇数的元素的算术平均值pj(保留2位小数)。结果cnt1、cnt2、pj输出到out.dat文件中。
注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include <conio.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("ood",xx[i*10+j]);
}
printf("/n");
}
fclose(fp);
void main()
{
int i,j;
long k;
int cnt1,cnt2,xx[N];
float pj;
fw=fopen("out.dat","w");
read_dat(xx);
printf("/n/ncnt1=%d,cnt2=%d,pj=%6.2f/n",cnt1,cnt2,pj);
fprintf(fw,"%d/n%d/n%6.2f/n",cnt1,cnt2,pj);
fclose(fw);
问答题设在SQL Server 2008某数据库中,有图书表(书号,书名,单价)和销售表(书号,销售时间,销售数量),假设单价和销售数量均为int类型,书号和书名均为varchar(50)类型,销售时间为datetime类型。请给出创建满足如下要求的多语句表值函数,该函数统计指定年份中每本书的销售总额。设函数名为:f_BookProfit(@year int),函数的返回结果格式如下:
书号 销售总额
B001 60000
问答题已知数据文件IN78.DAT中存有200个4位数,并己调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果一个4位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT78.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("IN78.DAT","r"); for(i=0;i<MAX ;i++) fscanf(fp, "%d" , fclose(fp); main() int i; readDat ( ); jsVal (); printf ("满足条件的数=%d/n", cnt); for(i=0;i<cnt ;i++) printf("%d" ,b[i]); printf("/n"); writeDat (); writeDat () FILE *fp; int i; fp=fopen("OUT78.DAT","w"); fprintf(fp, "%d/n" ,cnt); for(i=0;i<cnt ;i++) fprintf(fp, "%d/n" ,b[i]); fclose(fp);
问答题请编写函数ReadDat(),从文件IN.DAT中读取1000个十进制整数到数组xx中。请编写函数Compute(),分别计算出xx中奇数的个数odd、偶数的个数even、平均值aver及方差totfc的值,最后调用函数WriteDat(),把结果输出到OUT.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("IN.DAT","r"))==NULL)return1;fclose(fp);return0;}voidCompute(void){}voidmain(){inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat()){printf("数据文件IN.DAT不能打开!\007\n");return;}Compute();printf("ODD=%d\nEVEN=%d\nAVER=%lf\nTOTFC=%lf\n",odd,even,aver,totfc);WriteDat();}voidWriteDat(void){FILE*fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d\n%d\n%lf\n%lf\n",odd,even,aver,totfc);fclose(fp);}
问答题在文件in33.dat中有200个正整数,且每个正整数均在1000至9999之间。函数readDat()的功能是读取这200个数并存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按照每个数的后3位的大小进行升序排列,将排序后的前10个数存入数组bb中,如果数组bb中出现后3位相等的数,则对这些数按原始 4位数据进行降序排列,最后调用函数writeDat()把结果bb输出到文件out33.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 readDat (); void writeDat(); void jsSort() void main ( ) readDat ( ); jsSort ( ); writeDat ( ); void readDat () FILE *in; int i; in=fopen ("in33 .dat" , "r" ); for(i=0;i<200;i++) fscanf (in, "%d ". fclose (in); void writeDat () FILE *out; int i; clrscr ( ); out =fopen ("out33 .dar" , "w" ); for (i=0; i<10; i++) printf ("i=%d, %d/n", i+1, bb[i] ; fprintf (out, "%d/n" ,bb[i] ); 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 (@lb char(10)) ______ @ProfitTable ______ (
商品号 char(10),
总利润 int )
AS
BEGIN
INSERT INTO @ProfitTable
______
______
END
问答题设某数据库服务器中有3块146G的SAS硬盘,为了保证数据的安全性,数据库管理员利用硬件RAID卡将三块硬盘做成RAID5,则服务器可使用磁盘空间为_______GB。
问答题设在SQL Server 2008某数据库中建有图书表和销售表,两个表的定义如下: CREATE TABLE图书表( 书号char(10)PRIMARY KEY,书名varchar(40), 图书类别varchar(20), 进价int); CREATE TABLE销售表( 书号char(10)REFER.ENCES图书表(书号), 销售时间datetime, 销售数量int, 售价int, PRIMARY KEY(书号,销售时间)); 现要创建一个存储过程:查询指定类别的每种图书在当前年累计销售总数量。请补全下列代码。 CRE ATE PROC p_TotalSales @lb varchar(20) AS SELECT书名, ( SEIJECT _______ FROM销售表t1 wHERE_______and year(销售时间)=year(_______) )AS销售总数量 FROM图书表t2 WHERE _______
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入到字符串数组xx中。请编写函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代后,仍存入数组xx的对应位置上,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。 替代关系:f(p)=p*17 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是奇数,则该字符不变,否则将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);
问答题程序test.c的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代公式:x
n+1
=cos(x
n
)(n是迭代次数)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
请编写函数countValue()实现程序的功能,最后main()函数调用函数writeDAT()把结果输出到文件out.dat中。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
#include <math.h> //表示这个程序中要引用vc6.0的数学库函数
#include <stdio.h> //表示这个程序要引用vc6.0的标准输入输出函数
void writeDAT(); //writeDAT()函数的说明语句
double countValue()
{
}
main ()
{
printf ("实根=%f/n", countValue ()); //在屏幕上显示方程的一个实根
printf (" %f/n", cos (countValue ()) -countValue ()); //在屏幕显示求得这个实根的精度
writeDAT (); //把结果输出到文件out.dat中
}
/ *函数writeDAT()把结果输出到文件out.dat中* /
void writeDAT()
{
FILE *wf; //定义文件指针变量wf
wf=fopen ( "out.dat", "w" ); //以只写的方式打开out.dat,并使wf指向这个文件
fprintf(wf, "%fkn", countValue()); //把求得的实根写入到文件out.dat
fclose (wf); //关闭文件out.dat
}
问答题已知数据文件IN.DAT中存有200个4位数,并已调用读函数readDat(),把这些数存入数组a中,请编写函数jsval(),其功能是:用数组a中数的千位数字和十位数字重新组合成一个新的2位数ab(新2位数的十位数字是原4位数的千位数字,新2位数的个位数字是原4位数的十位数字),并用其个位数和百位数组成另一个新的2位数cd(新2位数的十位数字是原4位数的个位数字,新2位数的个位数字是原4位数的百位数字)。如果新组成的两个2位数ab-cd≥10且ab-cd≤20且两个数均为偶数,同时这两个数的新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中。并计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat(),把结果cnt及数组b中符合条件的4位数输出到OUT.DAT文件中。
程序中已定义数组a[200],b[200],已定义变量cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
[试题程序]
#include<stdio.h>
#define MAX 200
int a[mx],b[MAX],cnt=0;
void writeDat();
void jsVal()
{
}
void readDat()
{
int i;
FILE*fp;
fp=fopen("IN.DAT","r");
for(i=0;i<MAX;i++)
fscanf(fp."%d",&a[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数的个数=%d/n",cnt);
for(i=0;i<cnt;i++)
printf("%d/n",b[i]);
printf("/n");
writeDat();
}
void writeDat()
{
FILE*fp;
int i;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp,"%d/n",b[i]);
fclose(fp);
}
问答题已知在IN.DAT文件中存有N个(N<200)实数,函数ReadDat()读取这N个实数并存入数组xx中。请编写函数CalValue(),其功能是:(1)求出这N个实数的平均值aver;(2)分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到OUT.DAT文件中。
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat0和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <conio.h>
#define MAXNUM 200
float xx[MAXNUM];
double aver=0.0;
long sumint=0;
double sumdec=0.0;
int ReadDat(void);
void WriteDat(void);
void CalValue(void)
{
}
void main()
{
int i;
for(i=0;i<MAXNUM;i++)
if (ReadDat()
{
printf("数据文件IN.DAT不能打开!/007/n");
return;
}
CalValue();
printf("平均值=%.21f/n",aver);
printf("整数部分之和=%ld/n",sumint);
printf("小数部分之和=%.21f/n",sumdec);
WriteDat();
int ReadDat(void)
{
FILE *fp;
int i=0;
if((fp=fopen("IN.DAT","r"))==NULL)
return 1;
while(!feof(fp)
fscanf(fp,"%f,",
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%.21f/n%ld/n%.21f/n",aver,sumint,sumdec);
fclose(fp);
}
问答题函数readDat()的功能是从文件in52.dat中读取20行数据存放到字符串数组xx中(每行字符串的长度均小于80)。请编制函数JsSort(),该函数的功能是:以行为单位对字符串变量的下标为奇数位置上的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数 wfiteDat()把结果xx输出到文件out52.dat中。 例如: 位置 0 1 2 3 4 5 6 7 源字符串 h S f e d c b a 则处理后字符串 h a f c d e b g。 注意:部分源程序已给出。 请勿改动主函数main()、读函数readDat()和写.函数writeD6L()的内容。 试题程序: #include #include #include char XX[20][80]; void isSort() void main() readDat(); jsSort(); writeDat(); readDat() FILE *in; int i=0; char *p; in=fopen("in52.dat","r"); while(i<20 if(p) ap=0; i++; fclose(in); writeDat ( ) FILE *out; int i; out=fopen("out52.dat","w"); clrscr(); for(i=0;i<20;i++) printf("%s/n",xx[i]); fprintf(out,"%s/n",xx[i]); fclose(out);
问答题现有论文和作者两个实体,论文实体的属性包括题目、期刊名称、年份、期刊号;作者实体的属性包括姓名、单位、地址;一篇论文可以有多个作者,且每一位作者写过多篇论文,在每一篇论文中有作者的顺序号。请完成以下操作:
问答题请编写程序,从IN.DAT文件中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。结果max、cnt、pj输出到OUT.DAT文件中。
注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include <conio.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 cnt,xx[N],max;
float pj;
FILE *fw;
int i,k;
long j=0;
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);
}
