问答题程序PROG1.G的功能是:寻找并输出11至999之间的数m,它满足m、m
2
和m
3
均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m
2
=121,m
3
=1331皆为回文数。请考生编制函数int JsValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。
请勿改动主函数main()。
#include <stdio.h>
int jsValue(long m)
{
}
main ()
{
long m;
FILE *out;
out=fopen("out.dat", "w"); //以只写的方式打开文件out.dat,并使文件指针out指向此文件
/*对在11至999之间的数m进行扫描,调用函数jsValue()进行判断,如果m, m2, m3都是回文,则把这三个数输出到屏幕上并输出到文件out.dat中*/
for(m=11; m<1000; m++)
{
if(jsValue(m)
fprintf(out, "m=%41d,m*m=%61d, m*m*m=%81d/n", m, m*m, m*m*m);
}
}
fclose (out); //关闭out.dat文件
}
问答题有如下2个关系表:
Emp(eid,ename,age,did,salary),其各列含义为:职工号,姓名.年龄,部门号,工资Dept(did,dname,mgr_jd),其各列含义为:部门号,部门名称,部门经理职工号写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。
问答题在某数据库中,相关表的建表语句如下:
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(
a1 int,
a3 int,
a6 int,
PRIMARY KEY(a1,a3),
a1 FOREIGN KEY REFERENCES T1(a1),
a3 FOREIGN KEY REFERENCES T2(a3));
请画出相应的ER图,使得可以从该ER图推导出上述表定义,其中实体和联系的名称可以自定,实体的主码属性请使用下划线标明。
问答题已知数据文件IN.dat中存有200个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数NumCal(),其功能是:把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数Wdata(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。 注意:部分源程序已经给出。程序中已定义数组a[200] b[200],已定义变量count。请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数Rdata()和写函数Wdata()的内容。#include <stdio.h>#define MAX 200int a[MAX], b[MAX], count = 0;void NumCal ()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 (); NumCal (); printf("满足条件的数=%d/n", count); for (i=0; i<count; i++) printf("%d ", b[i]); printf ("/n"); Wdata ();
问答题在分割表的调优方法中,_______分割会给应用增加复杂度,特别是在查询所有数据时需要u-nion操作。
问答题函数ReadDat()的功能是实现从文件ENG9.IN中读取一篇英文文章,存入到字符串数组xx中。请编钊函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS9.DAT中。 替代关系:f(p)=p*11 mod 256 (p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)的值小于等于32,则该字符不变,否则将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() main ( ) clrscr ( ); if (ReadDat ( ) ) printf ("数据文件ENG9.IN不能打开! /n/007"); return; encryptChar ( ); WriteDat (); int ReadDat (void) FILE *fp; int i= 0; unsigned char *p; if ( (fp = fopen("ENG9.IN .... 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("PS9.DAT", "w" ); for(i = 0; i < maxline; i++) print f ( "%s/n" , xx[i] ); fprintf(fp, "%s/n", xx[i]); fclose(fp);
问答题在SQL Server 2008中,若要删除U1架构,使用的语句是:________SCHEMA U1
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后main()函数调用写函数writeDat()把数组b中的数输出到文件out.dat中。
例如:6712,6+2=7+1,则该数满足条件存入数组b中,且个数cnt=cnt+1。
8129,8+9!=1+2,则该数不满足条件忽略。
程序中已定义数组:a[300],b[300],已定义变量:cnt
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
int a[300], b[300], cnt=0;
void writeDat();
void readDat();
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]);
}
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;
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);
}
问答题已知数据文件IN86.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数JsVal(),其功能是;把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字;),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT86.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDa(()和写函数writeDat()的内容。 试题程序: #inc lude<stdio. h> #define MAX 200 int a [MAX], b [MAX] , cnt=0; void jsVal( ) void readDat( ) int i; FILE *fp; fp=fopen("IN86.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++) print f ( "%d" ,b Iii ; printf ( "/n" ); writeDat ( ); writeDat ( ) FILE *fp; int i; fp=fopen("OUT86.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i fprintf(fp, "%d/n",b[i]); fclose(fp);
问答题在SQL Server 2008中,主要数据文件必须建立在_______文件组中。
问答题设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C为课程,P为老师,S为学生,G为成绩,T为时间,R为教室,根据定义有如下的函数依赖集:F:{C→G,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R}W的规范程度可高达_________。若将关系模式W分解为3个关系模式W1(C,P),W2(S,C,G),W3(S,T,R,C)则Wl的规范化程度最高可达到_________,W2的规范化程度最高可达到_________,W3的规范化程度最高可到达_________。
问答题函数readDat()是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果XX输出到文件out.dat中。
条件:字符串从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分不作处理,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8
源字符串 a b c d h g f e
1 2 3 4 9 8 7 6 5
则处理后字符串 h g f e d c b a
8 7 6 5 9 4 3 2 1
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
#include <string.h>
char xx[20] [80];
void readDat();
void writeDat();
void jsSort()
{
}
void main()
{
readDat ();
jsSort ();
writeDat ();
}
/*从文件in.dat中读取20行数据存放到字符串数组xx中*/
void readDat()
{
FILE *in;
int i=0;
char *p;
in=fopen("in.dat", "r");
while(i<20
if(p) *p=0;
i++;
}
fclose (in);
}
/ *把结果xx输出到文件out.dat中* /
void writeDat()
{
FILE *out;
int i;
out=fopen("out.dat", "w");
for(i=0; i<20; i++)
{
printf("%s/n", xx[i]);
fprintf(out, "%s/n", xx[i]);
}
fclose (out);
}
问答题在动态转储中,利用转储文件只能将数据库恢复到转储过程的某个状态,且转储文件中的数据可能不一致,只有和_________文件综合起来使用,才能使数据库恢复到一致状态。
问答题已知数据文件IN45.DAT中存有200个4位数;并已调用读函数readDat()把这些数存入数组a中,请编制一函jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab-cd≥10且ab-cd≤20且两个数均为偶数,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数waiteDat( )把结果cnt及数组b中符合条件的4位数输出到OUT45.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("IN45.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]); print f ( "In" ); writeDat ( ); writeDat ( ) FILE *fp; int i; fp=fopen ("OUT45 .DAT", "w" ); fprintf (fp, "%d/n" , cnt); for (i=0; i<cnt; i++) fprintf(fp, "%d/n",b[i]); fclose (fp);
问答题某书店采用了SQL Server 2008数据库管理系统,该书店有一个需求,需要统计指定年份中每一本书的销售总额,例如:查询2012年所有书的销售总额。已知图书结构如下:图书表(书号BOOK_ID,书名BOOK_NAME,单价BOOK_PRICE)销售表(书号BOOK_ID,销售时间SALE_TIME,销售数量SALE_NUM)。假设单价和销售数量均为int型,书号和书名均为varchar(50)类型,销售时间为datetime型。请给出满足如下要求的多语句表值函数,该函数统计指定年份中每本书的销售总额。设函数名为:BOOK_PROFIT(@year int),函数的返回结果格式如下:书号销售总额B001 60000A004 50000……
问答题已知在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 ()
{
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);
}
问答题将文件in.dat中的200个整数读至数组xx中。请编制jsValue()函数,要求:求出数组xx中的数值为奇数的个数cnt1和数值为偶数的个数cnt2以及数组xx下标为奇数的元素值的算术平均值pj。
结果cnt1,cnt2,pj输出到out.dat中。
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数read_Dat()和输出函数writeDat()的内容。
#include <stdio.h>
#define N 200
int cnt1, cnt2, xx[N];
float pj; //平均值
void writeDat();
void jsValue()
{
}
/*read_dat(int xx[N])函数将文件in.dat中的200个整数读至数组xx中*/
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, ", //从文件in.dat中读取一个整数存入数组元素xx[i*10+j]中
printf("%d", xx[i*10+j]);
}
printf("/n");
}
fclose(fp);
}
void main()
{
read_dat(xx);
jsValue();
printf("/n/ncnt1=%d, cnt2=%d, pj=%6.2f/n", cnt1, cnt2, pj);
writeDat();
}
/*将计算结果cnt1, cnt2, pj输出到out.dat中*/
void writeDat()
{
FILE *fw;
fw=fopen("out.dat", "w");
fprintf(fw, "%d/n%d/n%6.2f/n", cnt1, cnt2, pj);//cnt1, cnt2, pj写入到out.dat中
fclose(fw);
}
问答题设有商品表(商品号,商品名,商品类别),其中商品号为主码,商品名和商品类别不为空。现要统计商品数量最多的前3类商品(包括并列情况),希望列出商品类别和商品数量。请补全下列语句: SELECT_______商品类别,COUNT(*)As商品数量 FROM商品表 GROUP BY商品类别 ORDER BY COUNT(*)DESC
问答题已知数据文件IN15.DAT中存有200个4位数,并已调用读函数readDat() 把这些数存入数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT15.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
}
void readDat()
{
int i;
FILE *fp;
fp = fopen("IN15.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("OUT15.DAT", "w");
fprintf(fp, "%d/n", cnt);
for(i = 0; i < cnt; i++)
fprintf(fp, "%d/n", b[i]);
fclose(fp);
}
问答题函数ReadDat()的功能是从文件IN.DAT中读取一篇英文文章,存入字符串数组xx中。请编写函数SortCharD(),该函数的功能是:以行为单位按从大到小的顺序对xx中的字符进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到文件OUT.DAT中。
例如,原文:dAe,BfC
CCbbAA
结果:fedCBA,
bbCCAA
原始数据文件存放的格式是:每行的宽度均小于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 SortCharD()
{
}
void main()
{
system("CLS");
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()
{
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);
}