2011三级数据库技术上机试题题目及答案汇编
1.调用函数rwdata(),从IN.dat文件中读取10组数据(m和k值),并嵌套调用primenum函数分别得出array[]数组。请编写函数primenum(int m,int k,int array[]),该函数的功能是:将紧靠m的k个素数存入数组array并在屏幕上显示。最后把结果输出到文件OUT.dat中。 例如,若输入3 9,则应输出5 7 11 13 17 19 23 29 31。
注意:部分程序已经给出。请勿改动主函数main()和输出数据函数rwdata()的内容。
【答案】
void primenum(int m, int k, int array[]) { int value = m+1; int half, n = 0, i; while(1) { half = value/2; for (i=2; i<=half; i++) if (value%i == 0) break; if (i > half) { array[n] = value; n++; } if (n >= k) break; value++; } }
2.在文件IN.dat中有200个正整数,且每个数均在1000~9999之间。函数RData()读取这200个数存放到数组original中。请编写函数numAscend(),其功能是:要求按每个数的后3位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组result中,如果后3位的数值相等,则按原先的数值进行降序排列。最后调用函数WData(),把结果result输出到文件OUT.dat中。
例如,处理前:6012 5099 9012 7025 8088 处理后:9012 6012 7025 8088 5099
【答案】
void numascend() { int i, j, data;
for (i=0; i<199; i++) for (j=i+1; j<200; j++) { if (original[i]00 > original[j]00) { data = original[i]; original[i] = original[j]; original[j] = data; } else if (original[i]00 == original[j]00) { if (original[i] < original[j]) { data = original[i]; original[i] = original[j]; original[j] = data; } } } for (i=0; i<10; i++) result[i] = original[i]; }
3.已知文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数RData()读取这100个销售记录并存入结构数组sell中。请编写函数DescSort(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WData(),把结果输出到文件OUT.dat中。
【答案】
void DescSort() { int i, j; PRO temp; for (i=0; i<99; i++) for (j=i+1; j<100; j++) if (strcmp(sell[i].code, sell[j].code) < 0) { temp = sell[i]; sell[i] = sell[j]; sell[j] = temp;
} else if (strcmp(sell[i].code, sell[j].code) == 0) { if (sell[i].sum < sell[j].sum) { temp = sell[i]; sell[i] = sell[j]; sell[j] = temp; } } }
4.函数RData()实现从文件IN.dat中读取一篇英文文章,存入到字符串数组str中;请编写encryptChar()函数,其功能是:按给定的替代关系对数组str中的所有字符进行替代,仍存入数组str对应的位置上,最后调用函数WData(),把结果str输出到文件OUT.dat中。 替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于1等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。
原始数据文件存放的格式是:每行的宽度均小于80个字符。
【答案】
void encryptChar() { int i; char *pf; for (i=0; i
5.函数RData()实现从文件IN.dat中读取一篇英文文章存入到字符串数组str中,请编写函数DescSort(),其功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组str中,最后调用函数WData(),把结果str输出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 例如,原文:dAeBfC. CcbbAA
结果:fedCBA. cbbCAA
【答案】
void DescSort(void) { int i, j, k, strl; char ch; for (i=0; i 6函数RData()实现从文件IN.dat中读取一篇英文文章存入字符串数组original中,请编写StrCharMove()函数,其功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组original中。最后调用函数WData(),把结果original输出到文件OUT.dat中。 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 【答案】 void StrCharMove(void) { int i, j, strl; for (i=0; i 7.编写函数findStr(),其功能是:统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为\,子字符串为\,函数返回值是6。 函数ReadWrite()实现从文件IN.dat中读取两个字符串,并调用函数findStr(),最后,把结果输出到文件OUT.dat中。 【答案】 int findStr(char *str, char *substr) { int n; char *p, *r; n = 0; while (*str) { p = str; r = substr; while (*r) if (*r == *p) { r++; p++; } else { break; } if (*r == '\\0') n++; str++; } return n; } 8.请编写函数CountValue(),它的功能是:求n以内(不包括n),同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。 主函数最后调用函数progReadWrite()从IN.dat文件中读取10组数据,分别得出结果,且把结果输出到文件OUT.dat中。 例如,若n为1000时,函数值应为:s=153.909064。 【答案】 double countValue(int n) { double xy = 0.0; int i; for (i=1; i 9已知在文件IN.dat中存有N个(N<200)实数,函数RData()读取这N个实数并存入数组original中。请编写函数CalValue(),要求实现的功能有:①求出这N个实数的平均值(aver);②分别求出这N个实数的整数部分之和(sumint)以及小数部分之和(sumdec),最后调用函数WData()把所求的结果输出到文件OUT.dat中。 【答案】 void CalValue(void) { int i; double x, sum = 0; for (i=0; i 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2011三级数据库技术上机试题题目及答案汇编100题(最新)在线全文阅读。
相关推荐: