搜索
您的当前位置:首页全国计算机等级三级数据库上机题库100题

全国计算机等级三级数据库上机题库100题

来源:智榕旅游
1.已知数据文件IN1.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal( ),其功能是:如果4位数各位上的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位数按从大到小的顺序存入数组b中。最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT1.DAT文件。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i] %100/10; /*求4位数的十位数字*/ a1=a[i] %10; /*求4位数的个位数字*/

if(a4%2!=0 && a3%2!=0 && a2%2!=0 && a1%2!=0) /*如果4位数各位上的数字均是奇数*/ {

b[cnt]=a[i]; /*将满足条件的数存入数组b中*/

cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;i2.已知IN2.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数 jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat() 把结果cnt及数组b中符合条件的4位数输出到 OUT2.DAT文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=0;ifor(j=i+1;j<=i+5;j++) /*取该数后面的5个数进行比较*/ if(a[i]break; /*如果当前数不满足比后面5个数都大的条件,则跳出循环*/

if(j==i+6) /*如果当前数比后面的5个数都大*/ {

b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的总个数*/ } }

for(i=0;ifor(j=i+1;jb[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp;

} }

3. 已知在文件IN3.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++)

if(strcmp(sell[i].mc,sell[j].mc)>0) /*按产品名称从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j];

sell[j]=temp; }

else if(strcmp(sell[i].mc,sell[j].mc)==0) /*若产品名称相同*/ if(sell[i].je>sell[j].je) /*则按金额从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } }

4. 函数ReadDat()的功能是实现从文件ENG4.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS4.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryptChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/

char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256; if(ch<=32 || ch>130) continue;

/*如果计算后的值小于等于32或大130,则该字符不变*/ else

xx[i][j]=ch; /*否则将所对应的字符进行替代*/ } } }

5. 函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。

例如,原文:Adb.Bcdza abck.LLhj 结果:Aec.Bdeab bcdl.LLik

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【答案】

void ConvertCharA(void) {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串的长度*/ for(j=0;j='a' && xx[i][j]<='z') /*如果是小写字母*/ if(xx[i][j]=='z')

xx[i][j]='a'; /*如果是小写字母z,则改写成字母a*/ else

xx[i][j]+=1; /*其他的小写字母则改写为该字母的下一个字母*/ } }

6. 在文件IN6.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT6.DAT中。 例如:处理前 9012 5099 6012 7025 8088 处理后 5099 8088 7025 6012 9012 【答案】 void jsSort() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<199;i++) /*用选择法对数组进行排序*/ for(j=i+1;j<200;j++) {

if(aa[i]%1000temp=aa[i]; aa[i]=aa[j]; aa[j]=temp;

/*按照每个数的后3位大小进行降序排

}

else if(aa[i]%1000==aa[j]%1000) *如果后3位数相等*/ if(aa[i]>aa[j]) *则按原4位数的大小进行升序排序*/ {

temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } }

for(i=0;i<10;i++) /*将排序后的前10个数存入数组bb中*/ bb[i]=aa[i]; }

7. 函数ReadDat( )的功能是实现从文件IN7.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharD( ),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT7.DAT中。 例如,原文:dAe,BfC CCbbAA 结果:fedCBA, bbCCAA

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点

符号和空格。 【答案】 void SortCharD() {

int i,j,k; /*定义循环控制变量*/ int str; /*存储字符串的长度*/

char temp; /*定义数据交换时的暂存变量*/ for (i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/

for(j=0;jtemp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

8. 对10个候选人进行选举,现有一个100条记录的选票数据文件IN8.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表

示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT8.DAT中。 【答案】 void CountRs(void) {

int i,j; /*定义循环控制变量*/

int cnt; /*用来存储每张选票中选中的人数,以判断选票是否有效*/

for(i=0;i<10;i++) /*初始化数组yy*/ yy[i]=0;

for(i=0;i<100;i++) /*依次取每张选票进行统计*/ {

cnt=0; /*初始化计数器变量*/

for(j=0;j<10;j++) /*统计每张选票的选中人数cnt*/ if(xx[i][j]=='1') cnt++;

if(cnt>5) /*当cnt值大于5时为有效选票*/

{

for(j=0;j<10;j++) /*统计有效选票*/ if(xx[i][j]== '1') yy[j]++; } } }

9. 下列程序的功能是:利用以下所示的简单迭代方法求方程: cos (x) -x=0的一个实根。 xn+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( )把结果输出到文件out9.dat中。 【答案】 float countValue( ) {

float x0,x1=0.0; /*定义两个浮点型变量进行迭代*/

while(1) /*无条件循环*/ {

x0=x1; /*将x1值赋给x0*/

x1=cos(x0); /*求出新的x1值*/

if(fabs(x0-x1)<1e-6) break; /*若x0-x1的绝对值小于0.000001,则结束循环*/ }

return x1; /*返回x1的值*/ }

10. 请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。 【答案】

void countValue(int *a,int *n) {

int i; /*定义循环控制变量*/ *n=0; /*初始化计数器变量*/

for(i=1;i<=1000;i++) /*在这个范围内寻找符合条件的数*/

if((i%7==0 && i%11!=0)||(i%7!=0 && i%11==0)) /*如果当前数可以被7整除而不可以被11整除,或者可以被11整除而不可以被7整除*/ {

*a=i; /*保存符合条件的数*/

*n=*n+1; /*统计符合条件的数的个数*/ a++; } }

11. 已知在文件IN11.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat() 的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:(1)求出该文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT11.DAT中。 【答案】 void CalValue(void) {

int i; /*定义循环控制变量*/

int data; /*用于保存处理后产生的新数*/

for(i=0;i<200;i++) /*逐个取数组xx中的数进行统计*/ if(xx[i]>0) /*判断是否正整数*/ {

totNum++; /*统计正整数的个数*/ data=xx[i]>>1; /*将数右移一位*/

if(data%2==0) /*如果产生的新数是偶数*/ {

totCnt++; /*统计这些数的个数*/ totPjz+=xx[i]; /*并将满足条件的原数求和*/ } }

totPjz/=totCnt; /*求满足条件的这些数(右移前的值)的算术平均值*/ }

12. 已知数据文件IN12.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT12.DAT文件中。

例如:6712,6+2=7+1,则该数满足条件,存入数组b中,且个数cnt=cnt+1。

8129,8+9≠1+2,则该数不满足条件,忽略。 【答案】 void jsValue() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/

int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a4+a1==a3+a2) /*如果千位数加个位数等于百位数加十位数*/ {

b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数cnt*/ } }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; }

}

13. 已知数据文件IN13.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果4位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT13.DAT文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100;

/*求4位数的百位数字*/

a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a4%2==0 && a3%2==0 && a2%2==0 && a1%2==0) { /*如果各位上的数字均是0或2或4或6或8*/ b[cnt]=a[i]; /*将满足条件的数存入数组b中*/

cnt++; /*统计满足条件的数的个数cnt*/ } }

for(i=0;i14. 已知数据文件IN14.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数从大到小进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT14.DAT文件。

例如:7153,7+1=5+3,则该数满足条件,存入数组b中,且个数cnt=cnt+1。

8129,8+1 ≠2+9,则该数不满足条件,忽略。 【答案】

void jsValue() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if (a4+a3==a2+a1) /*如果千位数字加百位数字等于十位数字加个位数字*/ {

b[cnt]=a[i]; /*把满足条件的4位数依次存入数组b中*/ cnt++; /*计算满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;j{ temp=b[i]; b[i]=b[j]; b[j]=temp; } }

15. 已知数据文件in15.dat中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:若一个4位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到out15.dat文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/

a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if ((a4<=a3) && (a3<=a2) && (a2<=a1) && (a1%2==0))

/*如果该数的千位数字小于等于百位数字,百位数字小于等于十位数字,十位数字小于等

于个位数字,并且此4位数是偶数*/ {

b[cnt]=a[i]; /*则将该数存入数组b中*/ cnt++; /*并且统计出满足条件的数的个数*/ } }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } }

16. 已知数据文件IN16.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT16.DAT文件中。 例如:9123,9-1-2-3>0,则该数满足条件,存入数组b中,且个数cnt=cnt+1。

9812,9-8-1-2<0,则该数不满足条件,忽略。 【答案】 void jsValue() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; *求4位数的个位数字*/

if(a4-a3-a2-a1>0) /*如果千位数字减百位数字减十位数字减个位数

字大于零*/ {

b[cnt]=a[i]; /*则把该数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;jb[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } }

17. 已知数据文件IN17.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue( ),其功能是:求出个位数上的数减千位数上数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从大到小的顺序进行排序,最后调用函数writeDat()把数组b中的数输出到OUT17.DAT文件中。

例如:1239,9-1-2-3>0,则该数满足条件,存入数组b中,且个数cnt=cnt+1。

8129,9-8-1-2<0,则该数不满足条件,忽略。 【答案】 void jsValue() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a1-a4-a3-a2>0) /*如果个位数字减千位数字减百位数字减十位数字大于零*/ {

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;j18. 下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些4位自然数的个数cnt及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT18.DAT中。 【答案】 void countValue() {

int i; /*循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ for(i=5000;i>=1000;i--) /*依次取每一个数进行判断*/

{

a4=i/1000; /*求4位数的千位数字*/ a3=i%1000/100; /*求4位数的百位数字*/ a2=i%100/10; /*求4位数的十位数字*/ a1=i%10; /*求4位数的个位数字*/ if(a4+a3==a2+a1 && a4+a3==(a1-a4)*10)

{ /*千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍*/ cnt++; /*则统计满足条件的数的个数*/ sum+=i; /*将满足条件的数求和*/ } } }

19. 已知数据文件IN19.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把一个4位数的千位数上的值减百位数上的值再减十位数上的值最后减个位数上的值,如果得出的值大于等于零且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把结果cnt及数组b中的符合条件的4位数输出到out19.dat文件中。 【答案】

void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; *求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/ if((a4-a3-a2-a1>=0) && a1%2!=0)

/*如果千位数字减百位数字再减十位数字最后减个位数字得出的值大于等于零且此4位数是奇数*/ {

b[cnt]=a[i]; /*则将该数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;jif(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } }

20. 已知数据文件IN20.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT20.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/ if((a4+a2==a3+a1) && a[i]%2!=1)

{ /*如果千位数字加十位数字等于百位数字加个位数字,并且此数是偶数*/

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } }

21. 已知数据文件IN21.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:

如果一个4位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT21.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if((a4>=a3)&&(a3>=a2)&&(a2>=a1)&&a1%2!=0)

{ /*如果千位数字大于等于百位数字,百位数字大于等于十位数字,十位数字大于等于个位数字,并且此数是奇数*/ b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/

cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } }

22. 已知数据文件IN22.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT22.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/ if(a4+a2==a3+a1 && a1%2==0)

{ /*如果千位数字加十位数字等于百位数字加个位数字,并且此数是偶数*/

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j];

b[j]=temp; } }

23. 已知数据文件IN23.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中。请编制一函数jsVal( ),其功能是:如果一个4位数的千位数字上的值加个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的4位数输出到OUT23.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if ((a4+a1==a3+a2) && a1%2==1) /*如果千位数字加个位数字等于百位数字加十位数字,并且此数是奇数*/ {

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } }

24. 已知数据文件IN24.DAT中存有200个4位数,并已调用读函数readDat() 把这些数存入数组a中,请编制一个函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原

4位数的百位数字),如果新组成两个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT24.DAT文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/

a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a4+a2; /*把千位数字和十位数字重新组成一个新的十位数ab*/

cd=10*a1+a3; /*把个位数字和百位数字组成另一个新的十位数cd*/ if ((ab-cd)>=0 && (ab-cd)<=10 && ab%2==1 && cd%2==1 && a4!=0 &&

a1!=0) /*如果ab-cd>=0且ab-cd<=10且两个数均是奇数同时两个新十位数的十 位上的数字均不为零*/ {

b[cnt]=a[i]; /*则把满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;ib[i]=b[j]; b[j]=temp; } }

25. 已知数据文件IN25.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制一函数 jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的个位数字),把百位数字和十位数字组成另一个新的十位数(新十位数的十

位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要求计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat(),把结果cnt及数组 b中符合条件的4位数输出到 OUT25.DAT文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/

a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a4+a1; /*把千位数字和个位数字重新组成一个新的十位数*/ cd=10*a3+a2; /*把百位数字和十位数字组成另一个新的十位数*/ if (ab%2==1 && cd%2==1 && (ab%5==0 || cd%5==0)&& a4!=0 &&

a3!=0)

{ /*如果这两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新十位数的十位上的数字均不为零*/ b[cnt]=a[i]; /*则把满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的个数*/ } }

for(i=0;i26. 已知数据文件IN26.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4

位数的百位数字),如果新组成的两个十位数ab-cd≥10且ab-cd≤20且两个数均为偶数,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT26.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a4+a2; /*ab的十位数字是原4位数的千位数字,个位数字是原4位数的十位数字*/

cd=10*a1+a3; /*cd的十位数字是原4位数的个位数字,个位数字是原4位数的百位数字*/

if((ab-cd>=10)&&(ab-cd<=20)&&(ab%2==0)&&(cd%2==0)&&a4!=0&&a1!=0) /*如果ab-cd≥10且ab-cd≤20且两个数均为偶数,同时两个新十位数的十位上的数字均不为零*/ {

b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;itemp=b[i];

b[i]=b[j]; b[j]=temp; } }

27. 已知数据文件IN27.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把千位数字和十位数字重新组合成一个新的十位数 (新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数(新十位数

的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数均为素数且新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT27.DAT文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a4+a2; /*把千位数字和十位数字重新组合成一个新的十位数*/

cd=10*a1+a3; /*把个位数和百位数组成另一个新的十位数*/ if(isprime(ab)&&isprime(cd)&&a4!=0&&a1!=0)

/*如果新组成的两个十位数均为素数且新十位数的十位上的数字均不为零*/ {

b[cnt]=a[i]; /*把满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;itemp=b[i];

b[i]=b[j]; b[j]=temp; } }

28. 已知数据文件IN28.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十

位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数abint i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a4+a2; /*把千位数和十位数重新组合成一个新的十位数ab*/ cd=10*a1+a3; /*把个位数和百位数组合成另一个新的十位数cd*/ if((ab/*如果abb[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;i29. 已知数据文件IN29.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原

4位数的十位数字),如果新组成的两个数均为偶数且两个十位数中至少有一个数能被9整除,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT29.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a1+a4; /*把个位数和千位数重新组合成一个新的十位数ab*/ cd=10*a3+a2; /*把百位数和十位数组成另一个新的十位数cd*/ if((ab%9==0||cd%9==0)&&(ab%2!=1)&&(cd%2!=1)&&a1!=0&&a3!=0) /*如果新组成的两个数均为偶数且两个十位数中至少有一个数能被9

整除,同时两个新十位数的十位上的数字均不为零*/ {

b[cnt]=a[i]; /*将满足条件的4位数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;itemp=b[i];

b[i]=b[j]; b[j]=temp; } }

30. 已知数据文件IN30.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数和十位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个十位数必须是一个奇数,另一

个为偶数且两个十位数中至少有一个数能被17整除,同时两个新十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT30.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a1+a4; /*把个位数和千位数组合成一个新的十位数ab*/ cd=10*a3+a2; /*把百位数和十位数组成另一个新的十位数cd*/ if((ab%17==0||cd%17==0)&&((ab%2==0 && cd%2==1)||(ab%2==1 && cd%2==0)) && a4!=0 && a1!=0)

{ /*如果新组成的两个十位数必须是一个奇数,另一个为偶数且两个十位数中至少有一个数能被17整除,同时两个新十位数的十位上的数字均不为0*/

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;i31. 已知数据文件IN31.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位数输出到OUT31.DAT文件中。 【答案】 void jsVal( ) {

int i,j; /*定义循环控制变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i<200;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

ab=10*a4+a2; /*把千位数和十位数重新组合成一个新的十位数ab*/ cd=10*a1+a3; /*把个位数和百位数组成另一个新的十位数cd*/ if((ab>cd) && (ab%2==0 && ab%5==0) && cd%2==1 && a4!=0 && a1!=0)

/*如果ab>cd,ab是偶数且能被5整除,cd是奇数,且两个新十位数的十位上的数字 均不为0*/ {

b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } }

for(i=0;i32. 已知数据文件in32.dat中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把

结果cnt,pjz1,pjz2输出到out32.dat文件中。

例如:9123,9-1-2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。

9812,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。 【答案】 void jsValue() {

int i,n=0; /*定义循环变量和计数器变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/

a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a4-a3-a2-a1>0) /*如果千位数字减百位数字减十位数字减个位数字大于零*/ {

cnt++; /*统计满足条件的数的个数*/

pjz1+=a[i]; /*对满足条件的数求和*/ } else

{

n++; /*统计不满足条件的数的个数*/

pjz2+=a[i]; /*对不满足条件的数求和*/ } }

pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数的平均值*/ }

33. 已知数据文件in33.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于0的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out33.dat文件。

例如:1239,9-1-2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。

8129,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。 【答案】 void jsValue() {

int i,n=0; /*定义循环变量和计数器变量*/ int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/

for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a1-a4-a3-a2>0) /*如果个位数字减千位数字减百位数字减十位数字大于零*/ {

cnt++; /*则统计满足条件的数的个数*/ pjz1+=a[i]; /*对满足条件的数求和*/ } else {

n++; /*否则统计不满足条件的数的个数*/ pjz2+=a[i]; /*对不满足条件的数求和*/ } }

pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数的平均值*/ }

34. 已知数据文件in34.dat中存有300个4位数,并已调用函数

readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out34.dat文件。

例如:7153,7+1=5+3,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。

8129,8+1≠2+9,则该数不满足条件计算平均值pjz2。 【答案】 void jsValue() {

int i,n=0; /*定义循环变量和计数器变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ { a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a4+a3==a2+a1) /*如果千位数字加百位数字等于十位数字加个位数字*/ {

cnt++; /*统计满足条件的数的个数*/

pjz1+=a[i]; /*对满足条件的数求和*/ } else {

n++; /*否则统计不满足条件的数的个数*/

pjz2+=a[i]; /*对不满足条件的数求和*/ } }

pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数的平均值*/ }

35. 已知数据文件IN35.DAT中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2,输出到out35.dat文件中。

例如:6712,6+2=7+1,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。

8129,8+9≠1+2,则该数不满足条件,计算平均值pjz2。 【答案】 void jsValue()

{

int i,n=0; /*定义循环变量和计数器变量*/

int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ for(i=0;i<300;i++) /*逐个取每一个4位数*/ {

a4=a[i]/1000; /*求4位数的千位数字*/ a3=a[i]%1000/100; /*求4位数的百位数字*/ a2=a[i]%100/10; /*求4位数的十位数字*/ a1=a[i]%10; /*求4位数的个位数字*/

if(a4+a1==a3+a2) /*如果千位数字加个位数字等于百位数字加十位数字*/ {

cnt++; /*则统计满足条件的数的个数*/ pjz1+=a[i]; /*对满足条件的数求和*/ } else {

n++; /*否则统计不满足条件的数的个数*/ pjz2+=a[i]; /*对不满足条件的数求和*/ } }

pjz1/=cnt; /*求满足条件的数的平均值*/

pjz2/=n; /*求不满足条件的数的平均值*/ }

36. 已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的数个数cnt并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到文件OUT37.DAT中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=5;ifor(j=i-5;j<=i-1;j++) /*取该数前面的5个数进行比较*/ if(a[i]break; /*如果当前数不满足比前面5个数都大的条件,则跳出循环*/

if(j==i) /*如果当前数比前面的5个数都大*/

{

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;j37. 已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的数个数cnt并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到文件OUT37.DAT中。

【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=5;ifor(j=i-5;j<=i-1;j++) /*取该数前面的5个数进行比较*/ if(a[i]break; /*如果当前数不满足比前面5个数都大的条件,则跳出循环*/

if(j==i) /*如果当前数比前面的5个数都大*/ {

b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;j{ temp=b[i]; b[i]=b[j]; b[j]=temp; } }

38. 已知数据文件IN38.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果4位数连续大于该4位数以前的5个数且该数是奇数(该4位数以前不满5个数,则不统计),该数必须能被7整除,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT38.DAT文件中。 【答案】 void jsVal() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=5;iif(a[i]%2!=0 && a[i]%7==0) /*如果当前数是奇数且可以被7整除*/ {

for(j=i-5;j<=i-1;j++) /*取该数前面的5个数进行比较*/

if(a[i]break; /*如果当前数不满足比前面5个数都大的条件,则跳出循环*/

if(j==i) /*如果当前数比前面的5个数都大*/ {

b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的个数*/ } }

for(i=0;ifor(j=i+1;j39. 已知数据文件IN39.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue( ),其功能是:求出这些4位数是素数的个数cnt,再把所有满足此条件的4位数依

次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把数组b中的数输出到OUT39.DAT文件中。 例如:5591是素数,则该数满足条件,存入数组b中,且个数cnt=cnt+1。 9812是非素数,则该数不满足条件,忽略。 【答案】 void jsValue() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<300;i++) /*逐个取4位数*/

if(isP(a[i])) /*如果该数为素数,则将该数存入数组b中*/ {

b[cnt]=a[i];

cnt++; /*并统计满足条件的数的个数*/ }

for(i=0;ib[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp;

} }

40. 已知数据文件IN40.DAT中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出这些4位数是素数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2,输出到out40.dat文件中。 例如:5591是素数,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。

9812是非素数,则该数不满足条件,计算平均值pjz2。 【答案】 void jsValue() {

int i,n=0; /*定义循环控制变量和计数器变量*/ for(i=0;i<300;i++) /*逐个取4位数*/ if(isP(a[i])) /*如果该数为素数*/ {

pjz1+=a[i]; /*对满足条件的数求和*/ cnt++; /*统计满足条件的数的个数*/ } else {

pjz2+=a[i]; /*对不满足条件的数求和*/ n++; /*统计不满足条件的数的个数*/ }

pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数的平均值*/ }

41. 已知文件IN42.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT42.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++)

if (strcmp(sell[i].dm,sell[j].dm)>0) /*按产品代码从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }

else if(strcmp(sell[i].dm,sell[j].dm)==0) /*若产品代码相同,则按金额从小到大进行排列*/ if(sell[i].je>sell[j].je) {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } }

42. 已知文件IN42.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结

果输出到文件OUT42.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++)

if (strcmp(sell[i].dm,sell[j].dm)>0) /*按产品代码从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }

else if(strcmp(sell[i].dm,sell[j].dm)==0) /*若产品代码相同,则按金额从小到大进行排列*/ if(sell[i].je>sell[j].je) {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp;

} }

43. 已知文件IN43.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT43.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++)

if(strcmp(sell[i].mc,sell[j].mc)<0) /*按产品名称从大到小进行排列*/ {

temp=sell[i]; sell[i]=sell[j];

sell[j]=temp; }

else if(strcmp(sell[i].mc,sell[j].mc)==0) /*若产品名称相同,则按金额从小到大排列*/ if(sell[i].je>sell[j].je) {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } }

44. 已知在文件IN44.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat( )的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat( ),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( )把结果输出到文件OUT44.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++) {

if(strcmp(sell[i].dm,sell[j].dm)<0) /*按产品代码从大到小进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }

else if(strcmp(sell[i].dm,sell[j].dm)==0) /*若产品代码相同,则按金 额从大到小进行排列*/ if(sell[i].jetemp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } } }

45. 已知在文件in45.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat( )的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat( ),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( )把结果输出到文件out45.dat中。 【答案】 void SortDat() {

int i,j; /*定义计数器变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++) {

if (strcmp(sell[i].dm,sell[j].dm)>0) /*按产品代码从小到大进行排列*/ {

temp=sell[i];

sell[i]=sell[j]; sell[j]=temp;

}

else if (strcmp(sell[i].dm,sell[j].dm)==0) /*若产品代码相同*/ if (sell[i].jetemp=sell[i];

sell[i]=sell[j]; sell[j]=temp; } } }

46. 已知在文件IN46.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat( )的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat( ),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用写函数WriteDat( )把结果输出到文件OUT46.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++) {

if (sell[i].jetemp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }

else if (sell[i].je==sell[j].je) /*若金额相同*/

if (strcmp(sell[i].dm,sell[j].dm)<0) /*则按产品代码从大到小进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } } }

47. 已知在文件IN47.DAT中存有100个产品销售记录,每个产品销售

记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat( )的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat( ),其功能要求:按金额从大到小进行排列,若金额相同,则按产品名称从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( )把结果输出到文件OUT47.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++) {

if (sell[i].jetemp=sell[i];

sell[i]=sell[j]; sell[j]=temp; }

else if (sell[i].je==sell[j].je) /*若金额相同,则按产品名称从小到大 进行排列*/

if (strcmp(sell[i].mc,sell[j].mc)>0) {

temp=sell[i];

sell[i]=sell[j]; sell[j]=temp; } } }

48. 已知在文件IN48.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat( )的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat( ),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( )把结果输出到文件OUT48.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/

for(i=0;i<99;i++) /*利用选择法进行排序*/ for(j=i+1;j<100;j++) {

if (sell[i].je>sell[j].je) /*按金额从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }

else if (sell[i].je==sell[j].je) /*若金额相同*/

if (strcmp(sell[i].dm,sell[j].dm)<0) /*则按产品代码从大到小进行排列*/ {

temp=sell[i];

sell[i]=sell[j]; sell[j]=temp; } } }

49. 已知在文件IN49.DAT中存有100个产品销售记录,每个产品销售

记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat( )的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat( ),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从小到大进行排列,排列结果仍存入结构数组sell中,最后调用函数WriteDat( )把结果输出到文件OUT49.DAT中。 【答案】 void SortDat() {

int i,j; /*定义循环控制变量*/

PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/ for(i=0;i<99;i++) for(j=i+1;j<100;j++) {

if (sell[i].je>sell[j].je) /*按金额从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }

else if (sell[i].je==sell[j].je) /*若金额相同*/

if (strcmp(sell[i].dm,sell[j].dm)>0) /*则按产品代码从小到大进行排列*/ {

temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } } }

50. 函数ReadDat() 的功能是实现从文件ENG50.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS50.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryptChar() {

int i,j; /*定义循环控制变量*/

int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jif(ch%2==0 || ch*11%256<=32)

continue; /*如果原字符的ASCII值是偶数或计算后的值小于等于32,则该字符不变*/ else

xx[i][j]=ch*11%256; /*否则将所对应的字符进行替代*/ } } }

51. 函数ReadDat()的功能是实现从文件ENG51.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS51.DAT中。

替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryptChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256;

if(ch<=32 || (ch>='0' && ch<='9') )

continue; /*如果计算后的值小于等于32或f(p)对应的字符是数字0至9,则该字符不变*/ else

xx[i][j]=ch; /*否则按给定的替代关系进行替代*/ }

} }

52. 读函数ReadDat()实现从文件ENG52.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用写函数WriteDat()把结果xx输出到文件PS52.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryptChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256;

if ((ch>='a' && ch<='z') || ch<=32)

/*如果计算后的值小于等于32或对应的字符是小写字母*/ continue; else

xx[i][j]=ch; /*否则用新字符来替代这个字符*/ } } }

53. 函数ReadDat( )的功能是实现从文件ENG53.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat( )把结果xx输出到文件PS53.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/ for(i=0;i{

str=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256;

if((xx[i][j]>= 'A'&& xx[i][j]<='Z')|| ch<=32)

/*如果原字符是大写字母或计算后的值小于等于32*/ continue; /*则此字符不变,取下一个字符*/ else

xx[i][j]=ch; /*如果不满足条件,则用新字符替代原字符*/ } } }

54. 函数ReadDat( )的功能是实现从文件ENG54.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat( )把结果xx输出到文件PS54.DAT中。 替代关系:f(p)=p*13 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】

void encryChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *13%256; if(ch<=32 || ch%2==0)

/*如果计算后的值小于等于32或其ASCII值是偶数*/ continue; /*则该字符不变,去取下一个字符*/ else

xx[i][j]=ch*13%256; /*否则将新字符替代原字符*/ } } }

55. 函数ReadDat( )的功能是实现从文件ENG55.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置

上,最后调用函数WriteDat( )把结果xx输出到文件PS55.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256; /*依次取各行的所有字符*/ if(ch<=32 || (ch>='A' && ch<='Z'))

/*如果计算的值小于等于32或对应的字符是大写字母*/ continue; /*则不作改变*/ else

xx[i][j]=ch; /*否则用新字符取代原有字符*/

} } }

56. 函数ReadDat( )的功能是实现从文件ENG56.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat( )把结果xx输出到文件ps56.dat中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256;

if((xx[i][j]>='a' && xx[i][j]<='z') || ch<=32)

/*如果原字符是小写字母或计算后的值小于等于32*/ continue; /*则不作改变,指向下一个字符*/ else

xx[i][j]=ch; /*否则用新字符取代原有字符*/ } } }

57. 函数ReadDat( )的功能是实现从文件ENG57.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat( )把结果xx输出到文件ps57.dat中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0至9或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。 【答案】 void encryChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256;

if((xx[i][j] >=0 && xx[i][j] <=9) || ch<=32)

/*如果原字符是数字字符0至9或计算后的值小于等于32*/

continue; /*则不作改变,指向下一个字符*/ else

xx[i][j]=ch; /*否则用新字符取代原有字符*/ } } }

58. 函数ReadDat( )的功能是实现从文件ENG58.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat( )把结果xx输出到文件ps58.dat中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替

代。 【答案】 void encryChar() {

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j] *11%256; if(ch<=32 || ch%2!=0)

/*如果计算后的值小于等于32或其ASCII值是奇数*/ continue; /*则不作改变,指向下一个字符*/ else

xx[i][j]=ch*11%256; /*否则用新字符取代原有字符*/ } } }

59. 函数ReadDat( )的功能是实现从文件IN59.DAT中读取一篇英文文

章存入到字符串数组xx中。请编制函数CovertCharD( ),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母a,则改成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT59.DAT中。

例如:原文 Adb Bcdza abck LLhj

结果 Aca Bbcyz, zabj LLgi

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【答案】 void CovertCharD() {

int i,j; /*定义循环控制变量*/

int str; /*存储字符串的长度*/ for(i=0;istr=strlen(xx[i]); /*求得各行的字符长度*/ for(j=0;jif(xx[i][j]>= 'a'&& xx[i][j]<= 'z')/*如果是小写字符,只对小写字符进

行处理*/ {

if(xx[i][j]== 'a')

xx[i][j]= 'z'; /*如果是小写字母a,就改成字母z*/ else

xx[i][j]-=1; /*其余的改成该字母的上一个字母*/ } } }

60. 下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT( ),读取in60.dat中的字符串,并把结果输出到文件out60.dat中。

例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayz。 【答案】 void chg(char *s) {

while(*s) /*若当前字符不是字符串结束符,则循环一直进行*/ if(*s=='z'||*s=='Z') /*将当前字母是'z'或者'Z'*/ {

*s-=25; /*则分别将其改成'a'或'A'*/ s++; /*取下一个字母*/ }

else if(*s>='a'&& *s<='y') /*若是小写字母,则改成该字母的下一个字母*/ { *s+=1;

s++; /*取下一个字母*/ }

else if(*s>='A'&& *s<='Y') /*若是大写字母,则改成该字母的下一个字母*/ { *s+=1;

s++; /*取下一个字母*/ }

else s++; /*取下一个字母*/ }

61. 下列程序的功能是:把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char *s)实现程序要求,最后调用函数readwriteDat( )把结果输出到out61.dat文件中。 例如:s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。

【答案】 void chg(char *s) {

int i,str; /*定义变量,保存字符串长度*/ char ch; /*定义字符暂存变量*/ str=strlen(s); /*求字符串的长度*/ ch=*s; /*将第一个字符暂赋给ch*/ for(i=0;i*(s+str-1)=ch; /*将第一个字符移到最后*/ }

62. 函数ReadDat() 的功能是实现从文件IN62.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrCharJP(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCII值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。最后把已处理的字符串按行重新存入字符串数组xx中,并调用函数WriteDat()把结果xx输出到文件OUT62.DAT中。

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【答案】

void StrCharJR(void)

{

int i,j; /*定义循环控制变量*/ int str; /*存储字符串的长度*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;j>4;

/*字符的ASCII值右移4位再加上原字符的ASCII值,得到新字符*/ } }

63. 函数ReadDat( )的功能是实现从文件IN63.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrCharJL( ),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到的新字符仍存入到原字符串对应的位置。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT63.DAT中。 【答案】

void StrCharJL(void) {

int i,j; /*定义循环控制变量*/

int str; /*用来存储每行字符串的长度*/ char ch; /*保存当前取得的字符*/

for(i=0;istr=strlen(xx[i]);/*求得当前行的字符串长度*/ for(j=0;jch=xx[i][j]; /*获取当前字符*/

if(ch<<4 <=32 || ch<<4 >100) continue;

/*如果左移4位后字符的ASCII值小于等于32或大于100,则原字符保持不变*/ else

xx[i][j]+=ch<<4; /*否则把左移后的字符ASCII值加上原字符的ASCII值*/ } } }

64. 函数ReadDat( )的功能是实现从文件IN64.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数CharConvA( ),该函数的功能

是:以行为单位把字符串的最后一个字符ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,以此类推一直处理到第二个字符,第一个字符的ASCII值加最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上,把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT64.DAT中。 【答案】

void CharConvA(void) {

int i,j,k; /*定义循环控制变量*/ int str; /*存储字符串长度*/ char ch; /*暂存最后一个字符*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/ ch=xx[i][str-1]; /*将最后一个字符暂存入ch*/

for(j=str-1;j>0;j--) /*从最后一个字符开始,直到第二个字符*/ xx[i][j]=(xx[i][j]>>4)+xx[i][j-1];

/*当前字符ASCII值右移4位加前一个字符的ASCII值,得到新的当前字符*/

xx[i][0]+=ch;

/*第一个字符的ASCII值加最后一个字符的ASCII值,得到新的第一个字符*/ } }

65. 函数ReadDat( )的功能是实现从文件IN65.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ChA( ),该函数的功能是:以行为单位把字符串的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的字符,以此类推一直处理到倒数第二个字符,最后一个字符的ASCII值加第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后仍按行重新存入字符串数组xx中,并调用函数WriteDat( )把结果xx输出到文件OUT65.DAT中。 【答案】 void ChA(void) {

int i,j,k; /*定义循环控制变量*/

int str; /*存储字符串的长度*/ char ch,temp; /*定义字符暂存变量*/

for(i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/

ch=xx[i][0]; /*将第一个字符暂存入ch*/ for(j=0;j/*将该字符的ASCII值与下一个字符的ASCII值相加,得到新的字符*/

xx[i][j]+=xx[i][j+1]; xx[i][str-1]+=ch;

/*将最后一个字符的ASCII值与第一个字符的ASCII值相加,得到最后一个新的字符*/

for(j=0,k=str-1;jtemp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

66. 函数ReadDat( )的功能是实现从文件IN66.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrOR( ),该函数的功能是:以行为单位把字符串中所有小写字母o左边的字符串内容移至该串

的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组xx中。最后调用函数WriteDat( )把结果输出到文件OUT66.DAT中。 例如,原文:You can create an index on any field you have the correct record

结果:n any field Yu can create an index rd yu have the crrect rec

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【答案】 void StrOR(void) {

int i,j,k; /*定义循环控制变量*/ int index,str; /*定义变量*/ char ch; /*定义暂存变量*/

for(i=0;istr=strlen(xx[i]); /*求各行的长度*/ index=str; for(j=0;j/*将一行中所有小写字母o右边的字符依次向左移一位,并删除字母o*/

if(xx[i][j]=='o') {

for(k=j;kindex=j; /*记录下最后一个o所在的位置*/ }

for(j=str-1;j>=index;j--) /*最后一个o右侧的所有字符都移到已处理字符串的左边*/ {

ch=xx[i][str-1]; for(k=str-1;k>0;k--) xx[i][k]=xx[i][k-1]; xx[i][0]=ch; } } }

67. 函数ReadDat()的功能是实现从文件IN67.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT67.DAT中。

例如,原文:You He Me I am a student. 结果:Me He You student a am I

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【答案】 void StrOL(void) {

int i,j,k; /*定义数组下标变量*/

char t[80],t1[80]; /*定义数组暂存取得的单词*/ for(i=0;ij=k=strlen(xx[i])-1; /*将每行末尾字符的下标保存在j和k中*/ t[0]=t1[0]='\\0'; /*初始化两个字符数组*/

while(1) /*无条件循环,循环体内有结束循环的语句*/ {

while(isalpha(xx[i][j])==0&&j>=0)

/*若以j为下标的字符不是字母并且还在数组xx之内*/ k=--j;

while(isalpha(xx[i][j])&&j>=0)

/*若以j为下标的字符是字母并且还在数组xx之内*/

j--;

/*当退出这个循环时,xx[i][j+1]和xx[i][k]分别是同一个单词的第一个和最后一个字母*/

memcpy(t1,&xx[i][j+1],k-j); /*将该单词保存到字符数组t1*/ t1[k-j]='\\0'; /*为t1中的单词添加字符串结束标志*/ strcat(t,t1); /*将单词保存到数组t中*/ strcat(t,\" \"); /*单词之间用空格分隔*/

if(j<0) /*如果以j为下标的字符不在数组xx中*/ break; /*则退出外层while循环*/ }

strcpy(xx[i],t); /*按行将处理完了字符串重新保存到数组xx中*/ } }

68. 编写一个函数findStr( ),该函数统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为\"asd asasdfg asd as zx67 asd mklo\",子字符串为\"as\",函数返回值是6。

函数ReadWrite( )的功能是实现从文件in68.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out68.dat中。 【答案】

int findStr(char *str,char *substr) {

int n=0; /*定义计数器变量,统计出现次数*/

char *p,*r; /*定义指针变量来分别指向两个字符串*/ while(*str) /*如果字符串没有结束,则一直循环下去*/ {

p=str; /*指针p指向字符串首地址*/ r=substr; /*指针r指向子字符串首地址*/ while(*r) /*若子字符串没有结束,则循环继续*/ if(*r==*p)

/*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/ { r++; p++; } else

break; /*否则退出循环*/

if(*r=='\\0') /*如果子字符串在字符串中出现了一次*/ n++; /*则n加1,进行统计*/ str++; /*指向字符串中的下一个字符*/ }

return n; /*返回统计结果n*/ }

69. 在文件in69.dat中有200个正整数,且每个正整数均在1000至

9999之间。函数readDat()的功能是读取这200个数并存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按照每个数的后3位的大小进行升序排列,将排序后的前10个数存入数组bb中,如果数组bb中出现后3位相等的数,则对这些数按原始4位数据进行降序排列。最后调用函数writeDat( )把结果bb输出到文件out69.dat中。 例如:处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 【答案】 void jsSort() {

int i,j; /*定义循环控制变量*/

int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<199;i++) /*用选择法对数组进行排序*/ for(j=i+1;j<200;j++) {

if(aa[i]%1000>aa[j]%1000) /*按照每个数的后3位的大小进行升序排列*/ { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; }

else if(aa[i]%1000==aa[j]%1000) /*如果后3位数值相等*/ if(aa[i]temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } }

for(i=0;i<10;i++) /*将排好序的前十个数存入数组bb中*/ bb[i]=aa[i]; }

70. 在文件IN70.DAT中有200组数据,每组有3个数,每个数均是3位数。函数readDat()是读取这200组数据存放到结构数组aa中。请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第二个数大于第一个数加第三个数之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对结构数组bb中的数据按照每组数据的第二个数加第三个数之和的大小进行降序排列,排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到文件OUT70.DAT中。 【答案】 int jsSort() {

int i,j; /*定义循环控制变量*/ int cnt=0; /*定义计数器变量*/

Data temp; /*定义数据交换时的暂存变量,这里是一个Data类型的结构体变量*/ for(i=0;i<200;i++)

if(aa[i].x2>aa[i].x1+aa[i].x3) /*如果第二个数大于第一个数加第三个数 之和*/ {

bb[cnt]=aa[i]; /*则把该组数据存入结构数组bb中*/ cnt++; /*同时统计满足条件的数据的个数*/ }

for(i=0;i/*对结构数组bb中的数据按照每组数据的第二个数加第三个数之和的大小进行降序排列*/ for(j=i+1;jif(bb[i].x2+bb[i].x3temp=bb[i]; bb[i]=bb[j]; bb[j]=temp; }

return cnt; /*返回满足条件的数据的组数*/

}

71. 在文件in71.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDat()是读取这200组数存放到结构数组aa中。请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中。最后调用函数writeDat()把结果bb输出到文件out71.dat。 【答案】 int jsSort() {

int i,j; /*定义循环控制变量*/

int cnt=0; /*定义计数器变量,并对其初始化*/

Data temp; /*数据交换时的暂存变量,这里是一个Data类型的结构体变量*/ for(i=0;i<200;i++)

if(aa[i].x1>aa[i].x2+aa[i].x3) /*如果每组数据中的第一个数大于第二个数加第三个数之和*/ {

bb[cnt]=aa[i]; /*把满足条件的数据存入结构体数组bb中*/

cnt++; /*同时统计满足条件的数据的个数*/ }

for(i=0;iif(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) {

temp=bb[i]; bb[i]=bb[j]; bb[j]=temp; }

return cnt; /*返回满足条件的数据的组数*/ }

72. 下列程序的功能是:将一正整数序列{K1,K2,…,K9}重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描。要求编写函数jsValue()实现此功能,最后调用函数writeDat()把新序列输出到文件out72.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}

【答案】

void jsValue(int a[10][9]) {

int i,j,k; /*定义循环控制变量*/ int num,temp; /*定义暂存变量*/ for(i=0;i<10;i++) /*逐行取数进行处理*/ {

num=a[i][0]; /*暂存每行的第一个元素*/ for(j=0;j<9;j++) /*取每行的所有元素*/

if(a[i][j]temp=a[i][j]; /*则把这个数取出,赋给temp*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ {

a[i][k]=a[i][k-1]; }

a[i][0]=temp; /*再将这个数放在最左侧*/ } } }

73. 函数ReadDat( )的功能是实现从文件IN73.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharA( ),该函数的功能

是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数WriteDat( )把结果xx输出到文件OUT73.DAT中。 例如,原文:dAe,BfC CCbbAA 结果:ABCdef AACCbb

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【答案】 void SortCharA() {

int i,j,k; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char temp; /*数据交换时的暂存变量*/ for (i=0;istr=strlen(xx[i]); /*求得当前行的字符串长度*/

for(j=0;jxx[i][k]) {

temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

74. 函数readDat()的功能是从文件in74.dat中读取20行数据存放到字符串数组xx中(每行字符串的长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串变量的下标为奇数位置上的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件out74.dat中。

例如: 位置 0 1 2 3 4 5 6 7 源字符串 h g f e d c b a 则处理后字符串 h a f c d e b g。 【答案】 void jsSort() {

int i,j,k; /*定义循环控制变量*/

int str; /*定义存储字符串长度的变量*/ char temp; /*定义数据交换时的暂存变量*/ for(i=0;i<20;i++) /*逐行对数据进行处理*/

{

str=strlen(xx[i]); /*求各行字符串的长度*/

for(j=1;j/*将下标为奇数的字符按其ASCII值从小到大的顺序进行排序*/ for(k=j+2;kxx[i][k]) {

temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

75. 函数readDat()的功能是从文件IN75.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT75.DAT中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 例如, 位置 0 1 2 3 4 5 6 7 8

源字符串 a b c d h g f e

2 3 4 9 8 7 6 5 则处理后字符串 h g f e d c b a 8 7 6 5 9 4 3 2 【答案】 void jsSort() {

int i,j,k; /*定义计数器变量*/

int str,half; /*定义存储字符串长度的变量*/ char temp; /*定义数据交换时的暂存变量*/ for(i=0;i<20;i++) /*逐行对数据进行处理*/ {

str=strlen(xx[i]); /*求字符串的长度*/

half=str/2; /*通过变量half将字符串分为左右两部分*/ for(j=0;jfor(k=j+1;ktemp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp;

}

for(j=half-1,k=str-1;j>=0;j--,k--) /*将左边部分和右边部分的对应字符交换*/ {

temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

76. 读函数readDat()的功能是从文件IN76.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用写函数writeDat()把结果xx输出到文件OUT76.DAT中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 例如: 位置 0 1 2 3 4 5 6 7 8 源字符串 d c b a h g f e 4 3 2 1 9 8 7 6

处理后字符串 h g f e a b c d

9 8 7 6 1 2 3 4 【答案】 void jsSort() {

int i,j,k; /*定义计数器变量*/

int str,half; /*定义存储字符串长度的变量*/ char temp; /*定义数据交换时的暂存变量*/ for(i=0;i<20;i++) /*逐行对数据进行处理*/ {

str=strlen(xx[i]); /*求字符串的长度*/

half=str/2; /*确定各行中字符串的中间位置*/

for(j=0;jxx[i][k]) {

temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; }

for(j=half-1,k=str-1;j>=0;j--,k--) /*将左边部分与右边部分对应的字符进行交换*/ {

temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

77. 函数readDat()是从文件in77.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数writeDat()把结果xx输出到文件out77.dat中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的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

处理后的字符串 d c b a e f g h 4 3 2 1 9 5 6 7 8 【答案】 void jsSort() {

int i,j,k; /*定义循环控制变量*/

int str,half; /*定义存储字符串长度的变量*/ char temp; /*定义数据交换时的暂存变量*/ for(i=0;i<20;i++) /*逐行对数据进行处理*/ {

str=strlen(xx[i]); /*求各行字符串的总长度*/ half=str/2; /*求总长度的一半*/

for(j=0;jtemp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; }

if(str%2==1)

/*如果原字符串长度为奇数,则跳过最中间的字符,使之不参加排序*/ half++;

for(j=half;j/*右边部分按字符的ASCII值升序排序*/ for(k=j+1;kif(xx[i][j]>xx[i][k]) {

temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } }

78. 对10个候选人进行选举,现有一个100条记录的选票文件ENG78.IN,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选中,全选或全不选(空选票)均为无效的选票。给定函数ReadDat( )的功能是把选票记录读入到字符串数组xx中。请编制函数CoutRs( )来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat( )把结果yy输出到文件OUT78.DAT中。 【答案】 void CountRs(void) {

int i,j; /*定义计数器变量*/

int count; /*存储每张选票的选中人数,以判断选票是否有效*/ for(i=0;i<10;i++) /*初始化数组yy*/

yy[i]=0;

for(i=0;i<100;i++) /*依次取每张选票进行统计*/ { count=0;

for(j=0;j<10;j++) /*统计每张选票的选中人数count*/ if(xx[i][j]=='1') count++;

if(count!=0 && count!=10) /*如果既不是全选也不是空票,则为有效票*/

for(j=0;j<10;j++) if(xx[i][j]== '1') yy[j]++; } }

79. 对10个候选人进行选举,现有一个100条记录的选票文件IN79.DAT,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数大于5个人时被认为无效的选票。给定函数ReadDat( )的功能是把选票数据读入到字符串数组xx中。请编制函数CoutRs( )来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat( )把结果yy输出到文件OUT79.DAT

中。 【答案】 void CountRs(void) {

int i,j; /*定义计数器变量*/

int count; /*存储每张选票的选中人数,以判断选票是否有效*/

for(i=0;i<10;i++) /*初始化数组yy*/ yy[i]=0;

for(i=0;i<100;i++) /*依次取每张选票进行统计*/ { count=0;

for(j=0;j<10;j++) /*统计每张选票的选中人数count*/ if(xx[i][j]=='1') count++;

if(count<=5) /*当count值小于等于5时为有效选票*/ for(j=0;j<10;j++) /*统计有效选票*/ if(xx[i][j]=='1') yy[j]++; } }

80. 编写函数jsValue(),它的功能是求Fibonacci数列中大于t的最小

的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2)

最后调用函数writeDat(),把结果输出到文件OUT80.DAT中。 例如:当t = 1000时,函数值为1597。 【答案】 int jsValue(int t) {

int f1=0,f2=1,fn; /*定义变量存储Fibonacci数,初始化数列的前两项*/

fn=f1+f2; /*计算下一个Fibonacci数*/

while(fn<=t) /*如果当前的Fibonacci数不大于t,则继续计算下一个Fibonacci数*/ { f1=f2; f2=fn; fn=f1+f2; }

return fn; /*返回Fibonacci数列中大于t的最小的一个数*/ }

81. 某级数的前两项A1=1,A2=1,以后各项具有如下关系: An=An-2+2An-1

下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Snint n=1; /*定义计数器变量,保存求得的项数*/

int a1=1,a2=1,an; /*用来保存级数的值*/ int sum0,sum; /*用来存储级数的和的变量*/ sum0=a1+a2; /*计算前两项的级数和*/

while(1) /*无条件循环,循环体内有控制是否结束循环的语句*/ {

an=a1+a2*2; /*求下一个级数*/

sum=sum0+an; /*求级数和*/ a1=a2; /*将a2赋给a1*/ a2=an; /*将an赋给a2*/ n++; /**/

if(sum0<100 && sum>=100) /*如果满足Sn<100且sn+1>=100*/ b[0]=n; /*则将n存入数组单元b[0]中*/

if(sum0<1000 && sum>=1000) /*如果满足Sn<1000且sn+1>=1000*/

b[1]=n; /*则将n存入数组单元b[1]中*/

if(sum0<10000 && sum>=10000) /*如果满足Sn<10000且sn+1>=10000*/ {

b[2]=n; /*则将n存入数组单元b[2]中*/

break; /*并强行退出循环*/ }

sum0=sum; /*将sum赋给sum0,为下一次循环的求和作准备*/ } }

82. 下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT82.DAT中。其中的S,I,X,N,E各代表一个十进制数字。 【答案】 void countValue() {

int i=100,j; /*定义变量分别存储SIX(i)和NINE(j)*/ j=3*i/2; /*计算满足条件的数*/ for(i=100;i<=999&&j<=9999;i++)

/*当i为三位数,并且j没有增加到5位数时,循环继续*/

if(3*i%2==0 && j>=1000 && j<=9999) /*如果满足条件SIX+SIX+SIX=NINE+NINE*/

{ /*即一个3位数乘3再除以2余数为0,且所得的数为4位数*/ cnt++; /*统计满足条件的数的个数*/

sum+=i+j; /*求满足此条件的所有SIX与NINE的和*/ } }

83. 函数ReadDat( )实现从文件IN83.DAT中读取1000个十进制整数到数组xx中。请编制函数Compute( )分别计算出xx中偶数的个数even、奇数的平均值ave1、偶数的平均值ave2及所有偶数的方差totfc的值,最后调用函数WriteDat( )把结果输出到OUT83.DAT文件中。 计算方差的公式如下:

设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。

原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。 【答案】

void Compute(void) {

int i,tt[MAX]; /*定义数组tt计算总和*/ for(i=0;i<1000;i++)

if(xx[i]%2!=0) /*判断当前数的奇偶性*/

{

odd++; /*统计奇数的个数*/ ave1+=xx[i]; /*求奇数的总和*/ } else {

even++; /*统计偶数的个数*/ ave2+=xx[i]; /*求偶数的总和*/ tt[even-1]=xx[i]; /*将偶数存入数组tt中*/ }

ave1/=odd; /*求奇数的平均数*/ ave2/=even; /*求偶数的平均数*/ for(i=0;i84. 请编制函数ReadDat( )实现从文件IN84.DAT中读取1000个十进制整数到数组xx中。请编制函数Compute( )分别计算出xx中奇数的个数odd、奇数的平均值ave1、偶数的平均值ave2及所有奇数的方差totfc的值。最后调用函数WriteDat( )把结果输出到OUT84.DAT文件中。 计算方差的公式如下:

设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。

原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。 【答案】 int ReadDat(void) { FILE *fp;

int i,j; /*定义计数器变量*/

if((fp=fopen(\"IN83.DAT\ return 1;

for(i=0;i<100;i++) /*依次读取整型数据放入数组xx中*/ {

for(j=0;j<10;j++)

fscanf(fp,\"%d,\fscanf(fp,\"\\n\");

if(feof(fp)) break; /*文件读取结束,则退出*/ } fclose(fp); return 0; }

void Compute(void) {

int i; /*定义循环控制变量*/ int tt[MAX]; /*定义数组保存奇数*/ for(i=0;i<1000;i++) if(xx[i]%2!=0) {

odd++; /*计算出xx中奇数的个数odd*/ ave1+=xx[i]; /*求奇数的和*/

tt[odd-1]=xx[i]; /*将奇数存入数组tt中*/ } else {

even++; /*计算出xx中偶数的个数even*/ ave2+=xx[i]; /*求偶数的和*/ }

ave1/=odd; /*求奇数的平均值*/ ave2/=even; /*求偶数的平均值*/ for(i=0;itotfc+=(tt[i]-ave1)*(tt[i]-ave1)/odd; /*求所有奇数的方差*/ }

85. 请编制函数ReadDat( )实现从文件IN85.DAT中读取1000个十进制整数到数组xx中。请编制函数Compute( )分别计算出xx中奇数的个数odd、偶数的个数even、平均值aver及方差totfc的值,最后调用

函数WriteDat( )把结果输出到OUT85.DAT文件中。 计算方差的公式如下:

原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。 【答案】 int ReadDat(void) { FILE *fp;

int i,j; /*计数器变量*/

if((fp=fopen(\"IN93.DAT\ return 1;

for(i=0;i<100;i++) /*依次读取整型数据放入数组xx中*/ {

for(j=0;j<10;j++)

fscanf(fp,\"%d,\fscanf(fp,\"\\n\");

if(feof(fp)) break; /*文件读取结束,则退出*/ } fclose(fp); return 0; }

void Compute(void) {

int i; /*循环控制变量*/

for(i=0;i<1000;i++) /*依次取每个数*/ {

if(xx[i]%2!=0)

odd++; /*求出xx中奇数的个数odd*/ else

even++; /*求出xx中偶数的个数even*/ aver+=xx[i]; /*求出xx中元素的总和*/ }

aver/=MAX; /*求出xx中元素的平均值*/ for(i=0;i<1000;i++)

totfc+=(xx[i]-aver)*(xx[i]-aver)/MAX; }

86. 设有n个人坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始从1到m报数,如此进行下去直到所有的人都出圈为止。先要求按出圈次序,每10个人为一组,给出这n个人的顺序表。请编制函数Josegh()实现此功能并调用函数WriteDat()把编号按照出圈顺序输出到文件OUT86.DAT中。

设n=100,s=1,m=10进行编程。 【答案】 void Josegh(void) {

int i,j; /*定义循环控制变量*/

int s1,w; /*存储开始报数的人的编号*/ s1=s; /*第一个报数的人的编号*/ for(i=1;i<=n;i++) /*给n个人从1到n编号*/ p[i-1]=i;

for(i=n;i>=2;i--) /*当人数少于2时,停止报数*/ {

s1=(s1+m-1)%i; /*下一个开始报数的人的编号是(s1+m-1)%i*/ if(s1==0) /*若s1为0,则说明要开始报数的是最后一个人*/ s1=i;

w=p[s1-1]; /*将要出圈的人移至数组的最后*/ for(j=s1;j<=i-1;j++) p[j-1]=p[j]; p[i-1]=w; } }

87. 请编写函数countValue(),它的功能是:求n以内(不包括n)同

时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件OUT87.DAT中。

例如,若n为1000时,函数值应为s=153.909064。 【答案】

double countValue(int n) {

int i; /*定义循环控制变量*/

double sum=0.0; /*存储满足条件的自然数之和,继而求出平方根*/

for(i=1;iif(i%3==0 && i%7==0) sum+=i;

sum=sqrt((double)sum); /*再对总和求平方根*/ return sum; }

88. 下列程序的功能是:在3位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。

请编制函数int jsValue(int bb[])实现此功能,满足该条件的整数的个数通过所编制的函数返回。

最后调用函数writeDat()把结果输出到文件OUT88.DAT中。

【答案】 int jsValue(int bb[ ]) {

int i,j; /*定义循环控制变量*/ int cnt=0; /*定义计数器变量*/

int a3,a2,a1; /*定义变量存储3位数每位的数字*/ for(i=100;i<=999;i++) /*在该范围中找符合条件的数*/ for(j=10;j<=sqrt(i);j++)

if(i==j*j) /*如果该数是完全平方数*/ {

a3=i/100; /*求该数的百位数字*/ a2=i%100/10; /*求该数的十位数字*/ a1=i%10; /*求该数的个位数字*/

if(a3==a2 || a3==a1 || a2==a1) /*若有两位数字相同*/ {

bb[cnt]=i; /*则把该数存入数组bb中*/ cnt++; /*统计满足条件的数的个数*/ } } }

return cnt; /*返回满足该条件的整数的个数*/ }

89. 下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum输出到文件OUT89.DAT中。 【答案】 void countValue() {

int i,j; /*定义循环控制变量*/

int half; /*判断素数时所需值的存储变量*/ int xx[100]; /*定义整型数组,用来保存素数*/ for(i=500;i<800;i++) /*在这个范围内进行筛选*/ {

half=i/2;

for(j=2;j<=half;j++) /*判断是否素数*/

if(i%j==0) break; /*如果该数不是素数,则退出此层循环*/ if(j>=half) /*如果该数是素数,则将该数存入数组yy中*/ {

xx[cnt]=i;

cnt++; /*统计素数的个数*/ } }

for(i=0,j=-1;ij*=-1; /*用变量j来控制间隔的加减号*/

sum+=j*xx[i]; } }

90. 下列程序的功能是:选出100~1000间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt,以及这些素数值的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT90.DAT中。 【答案】 void countValue() {

int i,j; /*定义循环控制变量*/

int a3,a2,a1; /*定义变量存储3位数每位的数字*/ int half;

for(i=101;i<1000;i++) /*在该范围内寻找符合条件的数*/ {

a3=i/100; /*求百位数字*/ a2=i%100/10; /*求十位数字*/ a1=i%10; /*求个位数字*/

if(a3==(a2+a1)%10) /*如果个位数字与十位数字之和被10除所得余数恰是百位数字*/ { half=i/2;

for(j=2;j<=half;j++) /*进一步判断该数是否为素数*/

if(i%j==0) break; /*如果不是素数,则跳出循环,接着判断下一个数*/ if(j>half) /*如果是素数*/ {

cnt++; /*计算这些素数的个数cnt*/ sum+=i; /*计算这些素数的和值sum*/ } } } }

91. 下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也是在100以内)的个数cnt,以及这些I之和sum。请编制函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件out91.dat中(数值1不是素数)。 【答案】 void countValue() {

int i; /*定义循环控制变量*/ cnt=0;

sum=0; /*初始化变量*/ for(i=2;i<90;i++) /*范围为100以内*/ if(isPrime(i) && isPrime(i+4)&&isPrime(i+10)) {

cnt++; /*统计满足条件的数的个数*/ sum+=i; /*将满足条件的数求和*/ } }

92. 下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[ ])实现程序的要求,最后调用函数readwriteDAT( )把结果输出到out92.dat文件中。 例如,若输入17,5,则应输出19,23,29,31,37。 【答案】

void num(int m,int k,int xx[]) {

int i,half,cnt=0; /*定义变量cnt来统计已经取得的素数个数*/ int data=m+1; /*从大于整数m的数开始找*/

while(1) /*循环条件始终为真,所以是无条件循环*/ {

half=data/2; /*求出当前数的一半,判断素数*/

for(i=2;i<=half;i++)

/*如果该数依次除以从2到其一半的整数,余数都不是0,则该数是素数*/

if(data%i==0) /*如果余数为0*/

break; /*则退出循环,取下一个数判断*/ if(i>half) {

xx[cnt]=data; cnt++; /*确定该数为素数后,将该数存入数组xx中,并累计素数的个数*/ }

if(cnt>=k) break; /*如果累计素数的个数超过了要求的个数,则退出循环*/

data++; /*如果累计素数的个数小于要求的个数,则继续取下一个数*/ } }

93. 下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int jsValue(long n)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out93.dat中。

【答案】 int jsValue(long n) {

int i; /*定义循环控制变量*/ int str,half; /*存储字符串的长度*/

char ch[20]; /*字符数组,存储每个数的字符串形式*/ ltoa(n,ch,10);

/*将长整数n转换成与其等价的字符串存入xy指向的字符串中,输出串为十进制*/

str=strlen(ch); /*求字符串的长度*/ half=str/2; for(i=0;iif(ch[i]!=ch[--str]) /*判断字符串是否左右对称*/ break; /*不对称则跳出循环,判断下一个数*/ if(i>=half) /*如果字符串是回文*/ return 1; /*则返回1*/ else

return 0; /*否则返回0*/ }

94. 已知在文件IN94.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat() 的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:(1)求出这文件中共有多少个

正整数totNum; (2)求出这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT94.DAT中。 【答案】 void CalValue() {

int i; /*定义循环控制变量*/

int a4,a3,a2,a1; /*用来存储正整数的每一位的数字*/ for(i=0;i<200;i++) /*逐个取数组中的数进行统计*/ if(xx[i]>0) /*判断是否正整数*/ {

totNum++; /*统计正整数的个数*/ a4=xx[i]/1000; /*求正整数的千位数*/ a3=xx[i]%1000/100; /*求正整数的百位数*/ a2=xx[i]%100/10; /*求正整数的十位数*/ a1=xx[i]%10; /*求正整数的个位数*/

if((a4+a3+a2+a1)%2==0) /*如果各位数字之和是偶数*/ { /*计算满足条件的数的个数totCnt和这些数的总和sum*/ totCnt++; totPjz+=xx[i]; } }

totPjz/=totCnt; /*求这些数的算术平均值totPjz*/ }

95. 已知在文件IN95.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求出这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz。最后调用函数WriteDat()把所有结果输出到文件OUT95.DAT中。 【答案】 void CalValue() {

int i; /*定义循环控制变量*/

int a1,a2,a3,a4; /*用来存储正整数的每一位数字*/ for(i=0;i<200;i++) /*逐个取数组中的数进行统计*/ if(xx[i]>0) /*判断是否正整数*/ {

totNum++; /*统计正整数的个数*/ a4=xx[i]/1000; /*求正整数的千位数*/ a3=xx[i]%1000/100; /*求正整数的百位数*/ a2=xx[i]%100/10; /*求正整数的十位数*/ a1=xx[i]%10; /*求正整数的个位数*/

if((a4+a3+a2+a1)%2==1) /*如果各位数字之和是奇数*/

{ /*计算满足条件的数的个数totCnt和这些数的总和sum*/ totCnt++; totPjz+=xx[i]; } }

totPjz/=totCnt; /*求这些数的算术平均值totPjz*/ }

96. 已知在文件in96.dat中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求这些数右移一位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz。最后调用函数WriteDat()把所有结果输出到文件out96.dat中。 【答案】 void CalValue(void) {

int i; /*定义循环控制变量*/

int data; /*用于保存处理后产生的新数*/

for(i=0;i<200;i++) /*逐个取数组xx中的数进行统计*/ if(xx[i]>0) /*判断是否正整数*/ {

totNum++; /*统计正整数的个数*/

data=xx[i]>>1; /*将数右移一位*/

if(data%2==1) /*如果产生的新数是奇数*/ {

totCnt++; totPjz+=xx[i]; }

} /*则统计这些数的个数,并将满足条件的原数求和*/ totPjz/=totCnt; /*求满足条件的这些数(右移前的值)的算术平均值*/ }

97. 请编制程序,要求:将文件IN97.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数),结果cnt1,cnt2,pj输出到out97.dat中。

部分程序、读函数read_dat(int xx[200])及输出格式已给出。 【答案】 void main() {

int cnt1,cnt2,xx[N]; float pj; FILE *fw; int i,k=0;

long j; clrscr();

fw=fopen(\"out91.dat\read_dat(xx);

for(i=0,j=0,cnt1=0,cnt2=0;i/*初始化计数器变量,依次取数组中的数进行统计*/ {

if(xx[i]%2!=0) /*如果是奇数*/

cnt1++; /*统计数组xx中奇数的个数cnt1*/ else /*如果是偶数*/ cnt2++; /*统计偶数的个数cnt2*/ if(i%2==0) /*如果下标是偶数*/ {

j+=xx[i]; /*求数组xx中下标为偶数的元素值的总和*/ k++; /*统计下标为偶数的元素的个数,以进一步求平均值*/ } }

pj=(float)(j*100/k)/100; /*求数组xx下标为偶数的元素值的算术平均值pj*/

printf(\"\\n\\ncnt1=%d,cnt2=%d,pj=%6.2f\\n\fprintf(fw,\"%d\\n%d\\n%6.2f\\n\fclose(fw);

}

98. 请编制程序,要求:将文件IN98.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out98.dat中。

部分程序、读函数read_dat(int xx[200])及输出格式已给出。 【答案】 void main() {

int i,k,cnt,xx[N],max; float pj; FILE *fw; long j=0; clrscr();

fw=fopen(\"out92.dat\read_dat(xx); max=xx[0]; for(i=1,k=0;iif(xx[i]>max)

max=xx[i]; /*求出数组xx中最大数max*/ if(xx[i]%3==0 ||xx[i]%7==0)

{

j+=xx[i]; /*求出数组xx中值能被3整除或能被7整除的数的总和*/ k++; } }

for(i=0,cnt=0;icnt++; /*求出数组xx中最大数max的个数*/ pj=(float)(j*100/k)/100;

/*求出数组xx中值能被3整除或能被7整除的数的平均值*/ printf(\"\\n\\nmax=%d,cnt=%d,pj=%6.2f\\n\fprintf(fw,\"%d\\n%d\\n%6.2f\\n\fclose(fw); }

99. 请编制程序,要求:将文件IN99.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为奇数的元素值的算术平均值pj(保留两位小数),结果cnt1,cnt2,pj输出到OUT99.DAT中。

部分程序、读函数read_dat(int xx[200])及输出格式已给出。 【答案】 void main() {

int cnt1,cnt2,xx[N]; float pj; FILE *fw; int i,k=0; long j=0; cnt1=0; cnt2=0; pj=0.0; clrscr();

fw=fopen(\"out94.dat\read_dat(xx); for(i=0;iif(xx[i]%2)

cnt1++; /*求出数组xx中奇数的个数cnt1*/ else

cnt2++; /*求出数组xx中偶数的个数cnt2*/ if(i%2==1) {

j+=xx[i]; /*求数组xx下标为奇数的元素值的总和*/ k++; }

}

pj=(float)(j*100/k)/100; /*求数组xx下标为奇数的元素值的算术平均值pj*/

printf(\"\\n\\ncnt1=%d,cnt2=%d,pj=%6.2f\\n\fprintf(fw,\"%d\\n%d\\n%6.2f\\n\fclose(fw); }

100. 已知在文件IN100.DAT中存有N个实数(N<200),函数ReadDat( )读取这N个实数并存入数组xx中。请编制程序CalValue( ),其功能要求:

(1)求出这N个实数的平均值aver。

(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat( )把所求的结果输出到文件OUT100.DAT中。

注意:部分源程序已给出。

请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。 【答案】 void CalValue( ) {

int i; /*定义循环控制变量*/

double sum=0.0; /*定义存储所有数的和值的变量*/

for(i=0;isumint+=(int)xx[i]; /*求整数部分之和*/

sumdec+=(xx[i]-(int)xx[i]); /*求小数部分之和*/ sum=sum+xx[i]; /*求N个数之和*/ }

aver=sum/N; /*求N个数的平均数*/ }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top