if (thou-hun-ten-data > 0) { b[count] = a[i]; count++; } } for (i=0; i
27函数Rdata()实现从文件IN.dat中读取一篇英文文章存入到字符串数组string中,请编写函数CharLeft(),其功能是:以行为单位把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组string中,最后调用函数Wdata(),把结果string输出到文件OUT.dat中。
原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。
【答案】
void CharLeft(void) { int i, j, str; char ch; for (i=0; i
28.已知在文件IN.dat中存有若干个(<200)四位数字的正整数,函数RData()读取这若干个正整数并存入数组original中。请编写函数CalValue(),其功能要求是:①求出这个文件中共有多少个正整数totNum;②求这些数右移1位后,产生的新数是偶数的数的个数toteven,以及满足此条件的这些数(右移前的值)的算术平均值totavg。最后调用函数WData()把所求的结果输出到OUT.dat文件中。
【答案】
void CalValue(void)
{ int i, data; for (i=0; i
29.已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数spellVal(),其功能是:把千位数字和十位数字重新组成一个新的二位数ab(新二位数的十位数字是原四位数的千位数字,新二位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的二位数cd(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的百位数字),如果新组成的两个二位数ab-cd≥0且ab-cd≤10且两个数均是奇数,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。最后main()函数调用写函数WData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。
【答案】 void spellVal()
{ int i, thou, hun, ten, data, j; int ab, cd; for (i=0; i<200; i++) { thou = a[i]/1000; hun = a[i]00/100; ten = a[i]0/10; data = a[i]; if (thou==0 || data==0) continue; ab = 10*thou+ten; cd = 10*data+hun; if ((ab-cd)>=0 && (ab-cd)<=10 && ab%2==1 && cd%2==1) { b[cnt] = a[i]; cnt++; } } for (i=0; i for (j=i+1; j 已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数seVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续小于该四位数以后的5个数且该数是偶数(该四位数以后不满4个数,则不统计),则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数WData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。 注意:部分程序已经给出。程序中已定义数组a[200]、b[200],已定义变量count。请勿改动数据文件 【答案】 void seVal() { int i, j, flag = 0; for (i=0; i 31.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数RData()读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能要求:按金额从大到小进行排列, 若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中。最后调用函数WData(),把结果输出到OUT.dat文件中。 【答案】 void SortDat() { int i, j; PRO temp; for (i=0; i<99; i++) for (j=i+1; j<100; j++) if (sell[i].sum < sell[j].sum) { temp = sell[i]; sell[i] = sell[j]; sell[j] = temp; } else if (sell[i].sum == sell[j].sum) { if (strcmp(sell[i].code, sell[j].code) < 0) { temp = sell[i]; sell[i] = sell[j]; sell[j] = temp; } } } 32.请补充完整RData()函数,实现从文件IN.DET中读取1000个十进制整数到数组evennum中,请编写函数Compute()分别计算出evennum中奇数的个数odd,偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及所有偶数的方差totfc的值。最后调用函数WData(),把结果输出到OUT.dat文件中。 计算方差的公式如下: 其中:N为偶数的个数,evennum[i]为偶数,ave2为偶数的平均值。 原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于2000),并用逗号隔开。 【答案】 void Compute(void) { int i, result[MAX]; for (i=0; i<1000; i++) if (evennum[i]%2) { odd++; ave1 += evennum[i]; } else { even++; ave2 += evennum[i]; result[even-1] = evennum[i]; } ave1 /= odd; ave2 /= even; for (i=0; i 33.下列程序的功能是:将一个正整数序列{K1,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),要求编写函数NumSort()实现此功能。最后调用Wdata()函数将新序列输出到OUT.dat文件中。 说明:在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。 例如:序列{6,8,9,1,2,5,4,7,3} 经重排后成为{3,4,5,2,1,6,8,9,7} 【答案】 NumSort(int a[10][9]) { int value, i, j, k, num; for (i=0; i<10; i++) { value = a[i][0]; for (j=0; j<9; j++) if (a[i][j] < value) { num = a[i][j]; for (k=j; k>0; k--) a[i][k] = a[i][k-1]; a[i][0] = num; } } } 34.下列程序的功能是:选出100以上、1000之内所有个位数字与十位数字之和被10除所得余数恰好是百位数字的素数(如293),计算并输出上述这些素数的个数count以及这些素数值的和sum。请编写函数countValue()实现程序要求。最后调用函数WData(),把结果count和sum输出到OUT.dat文件中。 【答案】 void countValue() { int i, j, half, hun, ten, data; for (i=101; i<1000; i++) { hun = i/100; ten = i0/10; data = i; if (hun == (ten+data)) 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2011三级数据库技术上机试题题目及答案汇编100题(最新)(4)在线全文阅读。
相关推荐: