问答题下列程序的功能是:利用如下的简单迭代方法求方程cos(x)-x=0的一个实根。
x(n+1)=cos(xn)
迭代步骤如下:
(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()实现程序功能,最后调用函数writeDAT(),把结果输出到文件OUT.DAT中。
请勿改动主函数main()和写函数writeDAT()的内容。
[试题程序]
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
void writeDAT();
float countValue()
{
}
void main()
{
system("CLS");
printf("实根=%f/n",countValue());
printf("%f/n",cos(countValue())-
countValue());
writeDAT();
}
void writeDAT()
{
FILE* wf;
wf=fopen("OUT.DAT","w");
fprintf(wf,"%f/n",countValue());
fclose(wf);
}
问答题设某超市经营管理系统使用SQL Server 2008数据库管理系统,此数据库服务器有2颗CPU、16GB内存、2TB磁盘。上线运行1年后,用户在生成每天每个销售人员及每个收银台的总销售额报表时速度缓慢。经技术人员分析,发现速度缓慢的原因为销售单据表和销售单据明细表数据量合计已经达到60GB。已知这两个表结构如下:
销售单据表(销售单据编号,销售时间,销售人员编号,收银台编号)
销售单据明细表(销售单据编号,商品编号,单价,数量)
在进行此报表计算时数据库服务器CPU消耗非常高。为了优化此操作,某工程师建议在销售单据表中增加"付款总金额"属性,取值由触发器自动计算。请从磁盘空间使用、销售操作时对数据库服务器的影响、数据一致性以及对总销售额计算速度影响方面分析此方案优劣。请判断此方案是否可行,并从时空代价和优化效果方面分析原因。
问答题函数ReadDat()的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中。请编写函数CharConvA(),该函数的功能是:以行为单位把字符串的倒数第一个字符的ASCII码值右移4位后加倒数第二个符的ASCII码值,得到最后一个新的字符,倒数第二个字符的ASCII码值右移4位后加倒数第三个字符的ASCII码值,得到倒数第二个新的字符,依此类推,一直处理到第二个字符,第一个字符的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 WriteDat () ;
void CharConvA (void)
{
}
void main ()
{
system ("CLS") ;
if (ReadDat ())
{
printf ("数据文件 IN. DAT 无法打开! /n
007") ;
return;
}
CharConvA () ;
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) ;
}
问答题OLAP主要用于支持复杂的分析操作,侧重对决策人员和高层管理人员的数据支持。OLAP的实现方式主要有三种:MOLAP、_________和HOLAP。
问答题在OLAP的实现方式中,以多维数组作为存储结构的被称作_________OLAP。
问答题已知在IN.DAT文件中存有若干个(<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编写函数CalValue(),其功能是:(1)求出文件中的正整数个数totNum;(2)求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。 #include<stdio.h> #include<conio.h> #define MAXNUM 200 int xx[MAXNUM]; int totNum=0; /*IN.DAT文件中的正整数个数*/ int totCnt=0; /*符合条件的正整数个数*/ double totPjz=0.0; /*平均值*/ int ReadDat(void); void writeDat(void); void CalValue(void) void main() int i; for(i=0;i<MAXNUM;i++) xx[i]=0; if(ReadDat()) printf("数据文件INDAT不能打开!/007/n"); return; CalValue(); printf("IN.DAT文件中的正整数个数=%d个/n",totNum); printf("符合条件的正整数个数=%d个/n",totCnt); printf("平均值=%.2f/n",totPjz); writeDat(); int ReadDat(void) FILE *fp; int i=0; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(!feof(fp)) fscanf(fp,"%d,",&xx[i++]); fclose(fp); return 0; void writeDat(void) FILE *fp; fp=fopen("OUT.DAT","w"); fprintf(fp, "%d/n%d/n%6.2f/n",totNum,totCnt,totPjz); fclose(fp);
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是奇数,且该数必须能被7整除(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数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 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 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); void main() int i; readDat(); jsVal(); printf("满足条件的数=%d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat();
问答题在并行数据库中,最适合整表扫描操作的数据划分方法是_______。
问答题在SQL Server 2008中,登录账户的来源共有_______种。
问答题已知在IN.DAT文件中存有若干个(<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编写函数CalValue(),其功能是:(1)求出这个文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到OUT.DAT文件中。 注意:部分程序已经给出。 请勿改动主函数main()、读函数ReadDat()和写函数witeDat()的内容。 #include<stdio.h> #include<conio.h> #define MAXNUM 200 int xx[MAXNUM]; int totNum=0; int totCnt=0; double totPjz=0.0; int ReadDat(void); void writeDat(void); void CalValue(void) void main() int i; for(i=0;i<MAXNUM;i++) xx[i]=0; if(ReadDat()) printf("数据文件IN.DAT不能打开!/007/n"); return; CalValue(); printf("IN.DAT文件中的正整数个数=%d个/n",totNum); printf("符合条件的正整数个数=%d个/n",totCnt); printf("平均值=%.2f/n",totPjz); writeDat(); int ReadDat(void) FILE *fp; int i=0; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(!feof(fp)) fscanf(fp,"%d,",&xx[i++]); fclose(fp); return 0; void writeDat(void) FILE *fp; fp=fopen("OUT.DAT","w"); fprintf(fp, "%d/n%d/n%6.2f/n",totNum,totCnt,totPjz); fclose(fp);
问答题某商场商品经营管理系统使用SQL Server 2008数据库管理系统,此系统上线运行1年后,业务人员使用某统计功能(此功能每月使用一次)时发现速度很慢。该统计功能主要执行的SQL语句如下:SELECT商品号,SUM(销售数量*销售价格)销售额FROM销售明细GROUP BY商品号;该销售明细表的建表语句如下:CREATE TABLE销售明细(序列号int IDENTITY(1,1)NOT NULL,商品号int NOT NULL销售日期datetime NULL,销售数量int NOT NULL,销售价格int NOT NULL);并在销售明细表上建有如下索引:CREATE index ix_销售明细一商品号on销售明细(商品号);某技术人员提出通过执行下述语句以提高此查询的运行效率:CREATE VIEW商品销售额视图WITH SCHEMABINDINGASSELECT商品号,SUM(销售数量*销售价格)销售额,COUNT_BIG(*)cntFROM dbo.销售明细GROUP BY商品号;CREATE UNIQUE CLUSTERED INDEX ix_商品销售额ON商品销售额视图(商品号);
问答题请编写程序,从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,",&xx[i*10+j]); printf("%d",xx[i*10+j]); printf("/n"); fclose(fp); void main() int i; int cnt1,cnt2,xx[N]; long j=0; float pj; FILE *fw; 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.2fkn",cnt1,cnt2,pj); fclose(fw);
问答题删除用户自定义的函数使用_______语句来实现。
问答题在分布式数据库中,如果用户编写程序时不必了解数据分片在各个场地的分配情况,则称该分布式数据库系统具有_______透明性。
问答题设某学校选课系统使用SQL Server 2008数据库管理系统,在学生选课期间,用户反映速度缓慢,大部分时间内,学生无法正常选课(选课学生近1万人)。经技术人员分析,发现速度缓慢的原因为数据库服务器响应缓慢。在选课期间,数据库服务器CPU使用率为100%,内存使用率95%,磁盘IO占用10%,网络带宽占用20%。在进一步分析后发现,学生在选课过程中需要在每次选定课程前校验相关课程的成绩信息,而校验成绩的SQL语句在业务不繁忙时仍需要1~2分钟才能执行完成。现有服务器硬件情况如下:
CPU:两颗英特尔至强处理器E5-2640 2.50GHz
内存:128GB,主频1600MHz
磁盘:6块600GB 15000转6Gbps SAS硬盘,RAID5
网卡:千兆网卡
为了保证系统稳定运行,现有如下优化方案:
(1)将CPU更换为两颗英特尔至强处理器E5-2690 2.90GHz。
(2)将内存提高到256GB,主频1600MHz。
(3)将磁盘更换为6块800GB读取密集型MLC 6Gpbs硬盘,保持RAID5。
(4)将网卡更换为万兆网卡。
(5)优化校验成绩SQL语句并建立相关索引,校验完成时间降低到1秒。
根据题目描述,请从是否能解决选课运行速度缓慢问题的角度逐个评价以上5个方案并给出原因。
问答题为了保证正确地调度事务的并发操作,事务对数据库对象加锁、解锁需遵守加锁协议。加锁协议中两阶段加锁协议可以保证事务调度____________性。
问答题已知数据文件in.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数小于该四位数以后的连续五个数且该数是偶数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数cnt,并把这些四位数存入数组b中,而后对数组b进行升序排序,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到out.dat文件中。
程序中已定义数组:a[200],b[200],已定义变量:cnt
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
#define MAX 200 //定义宏变量MAX其值等于200
int a[MAX], b[MAX], cnt=0; //其初始值为0, 定义全局整型一维数组a[MAX], b[MAX]和变量cnt
void writeDat(); //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();
}
/*函数wnteDat()把结果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);
}
问答题下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序功能,最后调用函数writetDAT(),把结果cnt和sum输出到文件OUT.DAT中。其中的S,I,X,N,E各代表一个十进制数。
请勿改动主函数main()和写函数writeDAT()的内容。
[试题程序]
#include<stdio.h>
int cnt, sum;
void writeDAT();
void countValue()
{
}
void main()
{
cnt=sum=0;
countValue();
printf("满足条件的数的个数=%d/n", cnt);
printf("满足条件的所有SIX与NINE的和=%d/n", sum);
writeDAT();
}
void writeDAT()
{
FILE*fp;
fp=fopen("OUT.DAT", "w");
fprintf(fp, "%d/n%d/n", cnt, sum);
fclose(fp);
}
问答题在SQL Server 2008中,计算两个日期之差的函数是_________。
问答题设有如下UML图。该图是一种_______图。
