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;i int i,j; /*定义循环控制变量*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i if(j==i+6) /*如果当前数比后面的5个数都大*/ { b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的总个数*/ } } for(i=0;i } } 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;i /*如果计算后的值小于等于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;i 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]%1000 /*按照每个数的后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;i for(j=0;j 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;i } 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;i 例如: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;i 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;i 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;i 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;i 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;i 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;i 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;i 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;i 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;i 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;i 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;i 位数的百位数字),如果新组成的两个十位数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;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;i b[i]=b[j]; b[j]=temp; } } 28. 已知数据文件IN28.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十 位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab 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 for(i=0;i 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;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;i 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;i 结果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;i if(j==i) /*如果当前数比前面的5个数都大*/ { b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的个数*/ } } for(i=0;i 【答案】 void jsVal() { int i,j; /*定义循环控制变量*/ int temp; /*定义数据交换时的暂存变量*/ for(i=5;i if(j==i) /*如果当前数比前面的5个数都大*/ { b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/ cnt++; /*并统计满足条件的数的个数*/ } }