问答题已知在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 %d %4d %5d %5d/n",
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
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 SertDat() 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); 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<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);
问答题已知数据文件in55.dat中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数JsValue(),其功能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out55.dat文件中。 例如:9123,9-1-2-3>0,则该数满足条件,计算平均值pj21,且个数cnt=cnt+1。 9812,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。 注意:部分源程序已给出。 程序中已定义数组:a[300],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include int a[300], cnt=0; double pjz1=0.0,pjz2=0.0; jsValue() main() int i; readDat(); jsValue(); writeDat(); printf("cnt=%d/n满足条件的平均值pjz1=%7.2lf/n不满足条件的平均值 pjz2=%7.2lf/n",cnt,pjz1,pjz2); readDat() FILE*fp; int i; fp=fopen("in55.dat","r"); for(i=0;i<300;i++) fscanf(fp,”%d,”,&a[i]); fclose(fp); writeDat() FILE*fp; int i; fp=fopen("out55.dat","N"); fprintf(fp,"%d/n%7.2lf/n%7.2lf/n",cnt ,pjz1,pjz2); fclose(fp);
问答题有学生表(学号,姓名,年龄,性别,系名,专业名,班号),设一个系可有多个专业,每个专业可有多个班,各班班号不重复,一个学生只在一个班学习。现经常需要按“系名”和“班号”进行查询,为提高查询效率,需要为“系名”和“班号”两个列建立一个非聚集索引,建立此索引有下列两种方法:
方法1:索引列顺序为(系名,班号)。
方法2:索引列顺序为(班号,系名)。
问答题函数ReadDat()实现从文件in.dat中读取一篇英文文章存入到无符号字符串数组xx中;请编制函数ChA(),其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元xx[i][0]中(其中:i是文章中的某行)。第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存入数组单元xx[i][1]中。以此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的值,存放在原字符串对应的位置上,之后把己处理的字符串逆转后仍按行重新存入无符号字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到out.dat文件中。
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按它的ASCII值作以上处理。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
unsigned char xx[50] [80];
int maxline=0; /*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void ChA (void)
{
}
void main()
{
if (ReadDat ())
{
printf("数据文件in.dat不能打开! /n/007");
return;
}
chA();
WriteDat ();
}
/*从文件in.dat中读取一篇英文文章存入到无符号字符串数组xx中*/
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;
}
/*把结果xx输出到文件out.dat中*/
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);
}
问答题编写函数jsValue(),其功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 最后调用函数writeDat()从in.dat中读取50个数据t,分别得出结果,且把结果输出到out.dat文件中。 例如:当t=1000时,函数值为:1597。 注意:部分程序已经给出。 请勿改动主函数main()和写函数writeDat()的内容。 #include<Stdio.h> int jsValue(int t) void writeDat() FILE *in,*out; int i,n,s; in=fopen("in.dat","r"); out=fopen("out.dat","w"); for(i=0;i<50; i++) fscanf(in,"%d,",&n); S=jsValue(n); fprintf(out,"%d/n",s); fclose(in); fclose(out); main() int n; n=1000; printf("t=%d,f=%d/n",n,jsValue(n)); writeDat();
问答题在SQL Server 2008的某用户数据库中,设有T表,现要在T表的c1列和c2列上建立一个复合唯一聚集索引,其中c1列值重复率为20%,c2列为10%。请补全下列语句建立一个性能最优的索引:CREATE UNIQUE CLUSTERED INDEX Idx1 ON T(____________)
问答题下列程序的功能是:计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序排列,再计算其间隔加、减之和,即第1个素数一第2个素数+第3个素数一第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat(),把结果cnt和sum输出到OUT.DAT文件中。
注意:部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>
int cnt,sum;
void countValue()
{
}
void writeDat()
{
FIIE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n%d/n",cnt,sum);
fclose(fp);
}
void main()
{
cnt=sum=0;
countValue();
printf("素数的个数=%d/n",cnt);
printf("按要求计算的值=%d/n",sum);
writeDat();
}
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中。请编写函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat(),把结果输出到out.dat文件中。 例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。 8129,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,",&a[i]); 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=%7.2f/n不满足条件的平均值pzj2=%7.2f/n",cnt,pjz1,pjz2);
问答题已知IN2.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent及数组b中符合条件的4位数输出到OUT2.DAT文件中。 注意:部分源程序已给出。 程序中定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #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("IN2.DAT","r"); for(i=0;i<MAX;i++) fseanf(fp,"%d", fclose(fp); void main() int i; 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; rp=fopen("OUT2.DAt","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++)fprintf(fp,"%d/n",b[i]); fclose(fp);
问答题编写函数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<stdlib.h>
void ReadWrite();
int findStr(char*str, char*substr)
{
}
void main()
{
char str[81], substr[3];
int n;
system("CLS");
printf("输入原字符串: ");
gets(str);
printf("输入子字符串:");
gets(substr);
puts(str);
puts(substr);
n=findStr(str, substr);
printf("n=%d/n", n);
ReadWrite();
}
void ReadWrite()
{
char ch, str[81], substr[3];
int n, len, i=0;
FILE*rf, *wf;
rf=fopen("IN.DAT", "r");
wf=fopen("OUT.DAT", "w");
while(i<5)
{
fgets(str, 80, 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);
}
问答题现有一个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++)
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);
}
问答题不同的数据库管理系统采用的日志文件格式不完全一样,概括起来主要有以记录为单位的日志文件和以_______为单位的日志文件两种。
问答题某采购中心采购了一套商品批发查询管理系统,此系统采用SQL Server 2008数据库管理系统,该系统需要经常处理百万级以上的数据查询。同时该系统提供了第三方人员开发的SQL接口,第三方人员可以根据自己的需要开发自己的应用程序来访问数据库中的相关数据。
问答题在SQL Server 2008中,对于更新操作的触发器,系统将产生2张逻辑工作表,其中存放更新前数据的逻辑工作表是____________。
问答题已知数据文件in.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数均大于该四位数以前的连续五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数WriteDat()把结果cnt以及数组b中符合条件的四位数输出到out.dat文件中。
程序中已定义数组:a[200],b[200],已定义变量:cnt
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数WriteDat()的内容。
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt=0;
void writeDat();
void jsVal()
{
}
/*readDat()从数据文件in.dat中读取200个四位数存入数组a中*/
void readDat()
{
int i;
FILE *fp;
fp=fopen("in.dat", "r");
for(i=0; i<MAX; i++)
fscanf(fp, "%d",
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();//调用jsVal()函数, 实现题目要求的功能
printf("满足条件的数=%d/n", cnt);
for(i=0;i<cnt; i++)
printf("%d", b[i]);
printf("/n");
writeDat();
}
/*函数wdteDat()把结果cnt以及数组b中符合条件的四位数输出到out.dat文件中*/
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);
}
问答题在SQL Server 2008中,主要数据文件必须建立在____________文件组中。
问答题编写一个函数findStr(char *str,char*substr),该函数统计一个长度为2的子字符串substr在另一个字符串str中出现的次数,该次数作为函数值返回。
例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。
函数ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。
请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
void ReadWrite();
int findStr(char *str, char *substr)
{
}
main ()
{
char str[81], substr[3];
int n;
printf ("输入到原字符串:");
gets(str);
printf ("输入子字符串:");
gets(substr);
puts (str);
puts (substr);
n=findStr(str, substr);
printf("n=%d/n", n);
ReadWrite ();
}
/*从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中*/
void ReadWrite()
{
char str[81], substr[3], ch;
int n, len, i=0;
FILE *rf, *wf;
rf=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
while(i<5)
{
fgets (str, 80, rf); //从文件in.dat中读取长度为79的字符串存入到字符串str
fgets (substr, 10, rf); //从文件in.dat中读取长度为9的子字符串存入到字符串substr
len=strlen (substr)-1; //把子字符串substr的长度减1的值赋给len
ch=substr [len]; //把子字符串的最后一个字符的值赋给字符ch
if(ch == "/n" || ch == 0x1a)
substr[len]=0;
/*调用函数findStr(str, substr)返回子字符串substr在字符串str中出现的次数*/
n=findStr(str, substr);
fprintf (wf, "%d/n", n); //把计算结果n写入到文件out.dat
i++; //循环变量i加1
}
fclose(rf);
fclose(wf);
}
问答题已知在文件IN13.DAT中存有若干个(个数〈200)4位数字的正整数,函数ReadDat()的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求: (1)求出该文件中共有多少个正整数totNum; (2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT13.DAT中; 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include〈stdio.h> #include〈conio.h> #define MAXNUM 200 int xx [MAXNUM]; int totNum = 0; /* 文件IN13.DAT 中共有多少个正整数 */ int totCnt = 0; /* 符合条件的正整数的个数*/ double totPjz = 0.0; /* 平均值 */ int ReadDat (void); void Writedat(void); void CalValue(void) main ( ) int i; clrscr ( ); for(i = 0; i〈 MAXNUM; i++) xx[i] = 0; if (ReadDat ()) print f ( "数据文件 IN13.DAT 不能打开! /007/n" ); return; CalValue ( ); printf("文件IN13.DAT 中共有正整数= %d 个/n", totNum); printf("符合条件的正整数的个数 = %d 个/n", totCnt); printf("平均值=%.21f/n", totPjz); Writedat ( ); int ReadDat (void) FILE *fp; int i = 0; if((fp = fopen ("IN13.DAT", "r") == NULL) return 1; while(! feof(fp) ) fscanf(fp, "%d,", fclosefp); return 0; void WriteDat(void) FILE *fp; fp = fopen("OUT13.DAT", "w"); fprintf(fp, "%d/n%d/n%.21f/n", totNum, totCnt, totPjz); fclose(fp);
问答题已知数据文件IN23.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果4位数连续大于该4位数以前的5个数且该数是奇数,该数必须能被7整除,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT23.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("IN23.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("OUT23.DAT", "w"); fprintf(fp, "%d/n", cnt); for(i=0; i〈cnt; i++) fprintf(fp, "%d/n", b[i] ); fclose(fp);
