三级网络技术机试100套_第1页
三级网络技术机试100套_第2页
三级网络技术机试100套_第3页
三级网络技术机试100套_第4页
三级网络技术机试100套_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.已知数据文件IN1.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果4位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT1.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a200,b200,已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include <stdio.h>

2、#define MAX 200int aMAX, bMAX, cnt = 0;void jsVal()void readDat()int i;FILE *fp;fp = fopen("IN1.DAT", "r");for(i = 0; i <MAX; i+) fscanf(fp, "%d", &ai);fclose(fp);main()int i;readDat();jsVal();printf("满足条件的数=%dn", cnt);for(i = 0; i < cnt; i+) printf(

3、"%d ", bi);printf("n");writeDat();writeDat()FILE *fp;int i;fp = fopen("OUT1.DAT", "w");fprintf(fp, "%dn", cnt);for(i = 0; i < cnt; i+) fprintf(fp, "%dn", bi);fclose(fp);1【答案】void jsVal()int bb4;int i,j,k,flag;for (i=0;i<200;i+)bb0=ai/

4、1000; /*求四位数的千位数字*/bb1=ai%1000/100; /*求四位数的百位数字*/bb2=ai%100/10; /*求四位数的十位数字*/bb3=ai%10; /*求四位数的个位数字*/for (j=0;j<4;j+)if (bbj%2=0) /*如果各位上的数字均是0或2或4或6或8*/flag=1; /*则置标志位flag为1*/elseflag=0;break; /*否则置flag为0,退出循环*/if (flag=1) /*将满足条件的数存入数组b中,并统计满足条件的个数cnt*/ bcnt=ai;cnt+;for(i=0;i<cnt-1;i+) /*把数组

5、b中的数按从大到小的顺序排序*/for(j=i+1;j<cnt;j+)if (bi<bj)k=bi; bi=bj;bj=k;2函数ReadDat()的功能是实现从文件IN2.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT2.DAT中。例如,原文:You He MeI am a student.结果:Me He Youstudent a am I原始数据文件

6、存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include <stdio.h>#include <string.h>#include <conio.h>#include <ctype.h>char xx5080;int maxline = 0;/* 文章的总行数 */int ReadDat(void);void WriteDat(void);void StrOL(void)main()clrscr();if

7、(ReadDat () printf("数据文件 IN2.DAT不能打开!n007");return;StrOL();WriteDat();int ReadDat(void)FILE *fp;int i = 0;char *p;if(fp = fopen("IN2.DAT", "r") = NULL) return 1;while(fgets(xxi, 80, fp) != NULL) p = strchr(xx i, 'n');if(p) *p = 0;i+;maxline = i;fclose(fp);return

8、 0;void WriteDat(void)FILE*fp;int i;clrscr();fp = fopen("OUT2.DAT", "w");for(i = 0; i < maxline; i+) printf("%sn", xxi);fprintf(fp, "%sn", xxi);fclose(fp);2【答案】void StrOL(void)int i,j,k,str1,l;char c;for(i=0;i<maxline;i+) /*把各行中多余的标点符号去掉*/for(j=0;j<st

9、rlen(xxi);j+)c=xxij;if (c>='A' && c<='Z') | (c>='a' && c<='z') | c=' '|(c>='0' && c<='9');else xxij=' 'for(l=0;l<maxline;l+) char ch80=0;char pp80=0;str1=strlen(xxl);i=str1-1;k=1;while(1)whil

10、e (xxli>='a' && xxli<='z') | (xxli>='A' && xxli<='Z') | (xxli>='0' && xxli<='9') && i>=0) /*处理字母和数字*/ for(j=k;j>=0;j-)/*从当前行的最后一个字符开始取字符,直到遇到空格*/ppj+1=ppj;pp0=xxli;k+;i-;strcat(ch,pp); /*把该单词存放到数组

11、ch中*/strcpy(pp, ""); /*清空数组pp*/k=1;if(i=-1)break; /*如果处理完了一行,则退出循环*/while(xxli<'0'|(xxli>'9'&&xxli<'A') | xxli>'z') && i>=0) /*处理空格*/for(j=k;j>=0;j-)ppj+1=ppj;pp0=xxli;k+;i-;strcat(ch,pp); /*把空格加到数组ch中*/strcpy(pp,""

12、;); /*清空数组pp*/k=0;if(i=-1)break; /*如果处理完了一行,则退出循环*/strcpy(xxl,ch); /*把已处理的字符串仍按行重新存入字符串数组xx中*/3在文件IN3.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT3.DAT中。例如:处理

13、前 9012 5099 6012 7025 8088处理后 5099 8088 7025 6012 9012注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include <stdio.h>#include <string.h>#include <conio.h>int aa200, bb10;void jsSort()main()readDat();jsSort();writeDat();readDat()FILE *in;int i;in = fopen("IN3.DA

14、T", "r");for(i = 0; i < 200; i+) fscanf(in, "%d,", &aai);fclose(in);writeDat()FILE *out;int i; out = fopen("OUT3.DAT", "w");clrscr();for (i = 0; i < 10; i+)printf("i=%d,%dn", i + 1, bbi);fprintf(out, "%dn", bbi);fclose(out);3

15、【答案】void jsSort()int i,j,data;for(i=0;i<199;i+) /*对数组中的4位数按后3位进行从大到小的排序*/for(j=i+1;j<200;j+) if (aai%1000<aaj%1000) /*比较每个数的后3位*/ data=aai;aai=aaj; aaj=data;else if(aai%1000=aaj%1000) /*若后3位数相等*/ if (aai>aaj) /*则要按原4位数的值进行从小到大的排序*/ data=aai;aai=aaj;aaj=data; for(i=0;i<10;i+) /*将排序后的前1

16、0个数存入数组b中*/ bbi=aai;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)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是

17、:每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include <stdio.h>#include <string.h>#include <conio.h>#include <ctype.h>unsigned char xx5080;int maxline = 0;/* 文章的总行数 */int ReadDat(void);void WriteDat(void);void encryptChar()main()clrscr();if(ReadDat()printf(

18、"数据文件ENG4.IN不能打开!n007");return;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i = 0;unsigned char *p;if(fp = fopen("ENG4.IN", "r") =NULL) return 1;while(fgets(xxi, 80, fp) !=NULL)p = strchr(xxi, 'n ');if(p) *p = 0;i+; maxline = i;fclose(fp);return 0;void

19、 WriteDat(void)FILE *fp;int i;fp = fopen("PS4.DAT", "w");for(i = 0; i < maxline; i+) printf("%sn", xxi);fprintf(fp, "%sn", xxi);fclose(fp);4【答案】void encryptChar()int i;char *pf;for(i=0;i<maxline;i+)pf=xxi; /*指针pf指向各行的首地址*/while(*pf!=0) if(*pf*11%256>1

20、30 | *pf*11%256<=32) /*如果计算后的值小于等于32或大于130*/ ; /*则该字符不变*/else *pf=*pf*11%256; /*否则将所对应的字符进行替代*/pf+; /*指针pf指向下一个字符*/5函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数W

21、riteDat()把结果xx输出到文件OUT5.DAT中。例如,原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include <stdio.h>#include <string.h>#include <conio.h>char xx5080;int maxline = 0;/* 文章的总行数 */int ReadDat(void

22、);void WriteDat(void);void ConvertCharA(void)main()clrscr();if(ReadDat()printf("数据文件IN5.DAT不能打开!n007");return;ConvertCharA();WriteDat();int ReadDat(void)FILE *fp;int i =0;char *p;if(fp = fopen("IN5.DAT", "r") = NULL) return 1;while(fgets(xxi, 80, fp) !=NULL)p = strchr(x

23、xi, 'n');if(p) *p = 0;i+;maxline = i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;clrscr();fp = fopen("OUT5.DAT", "w");for(i = 0; i < maxline; i+) printf("%sn", xxi);fprintf(fp, "%sn", xxi);fclose(fp);5【答案】void ConvertCharA(void)int i,j,str

24、;for(i=0;i<maxline;i+) str=strlen(xxi); /*求得当前行的字符串的长度*/for(j=0;j<str;j+)if(xxij='z') xxij='a' /*如果遇到的字符是小写字母z则改写成小写字母a*/else if(xxij>='a' && xxij<='y') xxij+=1; /*如果该字符是从a到y的小写字母则改写为该字母的下一个字母*/ 6已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名

25、称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include <stdio.h>#incl

26、ude <mem.h>#include <string.h>#include <conio.h>#include <stdlib.h>#define MAX 100typedef struct char dm5; /*产品代码 */char mc11;/* 产品名称 */int dj; /* 单价 */int sl; /* 数量 */long je; /* 金额*/ PRO;PRO sell MAX;void ReadDat();void WriteDat();void SortDat()main()memset(sell, 0, sizeof(

27、sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE *fp;char str80, ch11;int i;fp = fopen("IN6.DAT", "r");for (i = 0; i < 100; i+)fgets(str, 80, fp);memcpy(selli.dm, str, 4);memcpy(selli.mc, str + 4, 10);memcpy(ch, str + 14, 4); ch4 = 0;selli.dj = atoi(ch);memcpy(ch, str +

28、18, 5); ch5 = 0;selli.sl = atoi(ch);selli.je = (long)selli.dj * selli.sl;fclose(fp);void WriteDat()FILE *fp;int i;fp = fopen("OUT6.DAT", "w");for(i = 0; i < 100; i+)fprintf(fp, "%s %s %4d %5d %10ldn", selli.dm, selli.mc, selli.dj,selli.sl, selli.je);fclose(fp);6【答案】v

29、oid SortDat()int i,j;PRO xy;for(i=0;i<99;i+)for(j=i+1;j<100;j+)if(strcmp(selli.mc,sellj.mc)>0) /*按产品名称从小到大进行排列*/xy=selli;sell i=sellj;sellj=xy;else if(strcmp(selli.mc,sellj.mc)=0) /*若产品名称相同*/if(selli.je>sellj.je) /*则按金额从小到大进行排列*/xy=selli;selli=sellj;sellj=xy;7已知IN7.DAT中存有200个4位数,并已调用读函数r

30、eadDat()把这些数存入数组a中,请编制一函数 jsVal(),其功能是:依次从数组 a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat() 把结果cnt及数组 b中符合条件的4位数输出到 OUT7.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a200,b200,已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include <stdio.h>#define MAX

31、 200int aMAX, bMAX, cnt = 0;void writeDat();void jsVal()void readDat()int i;FILE *fp;fp = fopen("IN7.DAT", "r");for(i = 0; i < MAX; i+) fscanf(fp, "%d", &ai);close(fp);main()int i;readDat();jsVal();printf("满足条件的数=%dn", cnt);for(i = 0; i < cnt; i+) pr

32、intf("%d ", bi);printf("n");writeDat();void writeDat()FILE *fp;int i;fp = fopen("OUT7.DAT", "w");fprintf(fp, "%dn", cnt);for(i = 0; i < cnt; i+) fprintf(fp, "%dn", bi);fclose(fp);7【答案】void jsVal()int i,j,flag=0;int k;for(i=0;i<MAX-5;i

33、+)for(j=i+1;j<=i+5;j+) /*如果当前数比后面的5个数都大,则给标志变量flag赋值1*/ if (ai>aj) flag=1;else flag=0;break; /*否则给标志变量flag赋值0并退出循环*/ if(ai%2=0) /*如果该数是偶数,也给标志变量flag赋值0*/ flag=0; if (flag=1) /*将满足条件的数存入数组b中,并统计满足条件的数的个数*/ bcnt=ai;cnt+; for(i=0;i<cnt-1;i+) /*利用选择法对b数组中的元素进行从小到大的排序*/for(j=i+1;j<cnt;j+)if (

34、bi>bj) k=bi;bi=bj;bj=k;8函数ReadDat() 的功能是实现从文件IN8.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrCharJP(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCII值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。最后把已处理的字符串按行重新存入字符串数组xx中,并调用函数WriteDat()把结果xx输出到文件OUT8.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main()

35、、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>char xx5080;int maxline = 0; /* 文章的总行数 */int ReadDat(void);void WriteDat(void);void StrCharJR(void)main()clrscr();if(ReadDat()printf("数据文件IN8.DAT不能打开!n007");return; StrCharJR();WriteDa

36、t();int ReadDat(void)FILE *fp;int i= 0;char *p;if (fp = fopen("IN8.DAT","r") =NULL) return 1;while(fgets(xxi, 80, fp) !=NULL) p = strchr(xxi, 'n');if(p) *p = 0;i+;maxline = i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;clrscr();fp = fopen("OUT8.DAT", &

37、quot;w");for(i = 0; i < maxline; i+) printf("%sn", xxi); fprintf(fp, "%sn", xxi); fclose(fp);8【答案】void StrCharJR(void)int i,j,str1;for(i=0;i<maxline;i+)str1=strlen(xxi); /*计算各行字符串的长度*/for(j=0;j<str1;j+) xxij+=xxij>>4;/*字符的ASCII值右移4位再加上原字符的ASCII值,得到新字符*/ 9函数Rea

38、dDat() 的功能是实现从文件ENG9.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS9.DAT中。替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出,原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改

39、动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include <stdio.h>#include <string.h>#include <conio.h>#include <ctype.h>unsigned char xx5080;int maxline = 0; /* 文章的总行数 */int ReadDat(void);void WriteDat(void);void encryptChar()main()clrscr();if(ReadDat()printf("数据文件ENG9.IN

40、不能打开!n007");return;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i= 0;unsigned char *p;if (fp = fopen("ENG9.IN","r") =NULL) return 1;while(fgets(xxi, 80, fp) !=NULL) p = strchr(xxi, 'n');if(p) *p = 0;i+;maxline = i;fclose(fp);return 0;void WriteDat(void)FILE

41、 *fp;int i;fp = fopen("PS9.DAT", "w");for(i = 0; i < maxline; i+) printf("%sn", xxi); fprintf(fp, "%sn", xxi); fclose(fp);9答案:void encryptChar()int i; char *pf; for(i=0;i<maxline;i+) pf=xxi; /*指针pf指向当前行的首地址*/ while(*pf!=0) if(*pf%2=0 | *pf*11%256<=32)

42、 ; /*如果原字符的ASCII值是偶数或计算后的值小于等于32,则该字符不变*/ else *pf=*pf*11%256; /*否则将所对应的字符进行替代*/ pf+; /*指针pf指向下一个字符*/ 【解析】本题主要考查用指针变量来控制字符数组,由于要对已有二维字符数组的所有元素逐个处理,因此,需要定义一个字符指针变量来控制原二维数组的各行。当前行如果确定下来,用指针的移动就可以依次扫描该行的所有字符元素,每得到一个字符就对它进行条件判断。根据题意,条件用"if(*pf%2=0 | *pf*11%256<=32)"来实现,如果该字符不满足上述条件,就用一个新的字符

43、来替代,新的字符是当前字符乘以11的结果再去与256求余数,处理完毕后,指针去取下一个字符。如果该字符满足所给条件,将不做任何操作,指针直接下移,去取下一个字符,对下一个字符进行处理。10编写函数jsValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)最后调用函数writeDat(),把结果输出到文件OUT10.DAT中。例如:当t = 1000时,函数值为1597。注意:部分源程序已给出。请勿改动主函数main()和写函数WriteDat()的内容。

44、试题程序:#include <stdio.h>int jsValue(int t) main()int n;n=1000;printf("n=%d, f=%dn", n, jsValue(n);writeDat();writeDat()FILE *in, *out;int n,s;out = fopen("OUT10.DAT", "w");s = jsValue(1000); printf("%d",s);fprintf(out, "%dn", s);fclose(out);10答案

45、int jsValue(int t) int f1=0,f2=1,fn; fn=f1+f2; while(fn<=t) f1=f2;f2=fn;fn=f1+f2; /*如果当前的Fibonacci数不大于t,则计算下一个Fibonacci数*/ return fn; /*返回Fibonacci数列中大于t的最小的一个数*/【解析】解答本题的关键是要充分理解题意,只有理解了题意本身的数学过程,才能把数学过程转化为程序逻辑。根据已知数列,我们不难发现:Fibonacci数列中,从第三项开始,每一项都可以拆分为前两项之和。本题要求找到该数列中“大于t的最小的一个数”。这里可以借助一个while

46、循环来依次取数列中的数,直到出现某一项的值大于t,那么这一项就是“大于t的最小的一个数”。注意:在循环体内部,我们用变量f1始终来表示第n项的前面第二项,用变量f2来始终表示第n项的前面第一项。这就实现了变量的活用与巧用。11请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件OUT11.DAT中。例如,若n为1000时,函数值应为s=153.909064。注意:部分源程序已给出。请勿改动主函数main()和输入输出函数progReadWrite()的内容。试题程序:#include<co

47、nio.h>#include<math.h>#include<stdio.h>double countValue(int n) main()clrscr();printf("自然数之和的平方根=%fn", countValue(1000);progReadWrite();progReadWrite()FILE *wf;int i, n;float s;wf = fopen("OUT11.DAT", "w");s = countValue(1000);fprintf(wf, "%fn",

48、 s);fclose(wf);11答案double countValue(int n) double xy=0.0;int i;for(i=1;i<n;i+)if(i%3=0 && i%7=0) xy+=i; /*求n以内(不包括n)同时能被3与7整除的所有自然数之和*/xy=sqrt(double)xy); /*再对总和求平方根*/return xy;【解析】本题的解题思路是:利用一个for循环依次从n个自然数当中取数,对当前取出的数进行条件判断。判断条件为:既能被3整除同时也能被7整除,因此,用“&&”运算符来连接两个条件表达式,当某数满足判断条件时,

49、就把该数累加到变量xy中(xy的初始值为0.0),当所有满足条件的数都被找完后,对累加求得的变量xy的值进行求平方根的计算,并把所求得的结果作为函数值返回。12下列程序的功能是:在3位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。请编制函数int jsValue(int bb)实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDat()把结果输出到文件OUT12.DAT中。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。试题程序:#inclu

50、de <stdio.h>int jsValue(int bb ) main()int b20, num;num = jsValue(b);writeDat(num, b);writeDat(int num, int b)FILE *out;int i;out = fopen("OUT12.DAT", "w");fprintf(out, "%dn", num);for(i = 0; i < num; i+) fprintf(out, "%dn", bi);fclose(out);12【答案】int

51、jsValue(int bb ) int i,j,k=0;int hun,ten,data;for(i=100;i<=999;i+) j=10;while(j*j<=i)if (i=j*j) /*如果该数是完全平方数*/hun=i/100; /*求该数的百位数字*/data=i-hun*100; /*得到后两位数*/ten=data/10; /*求该数的十位数字*/data=data-ten*10; /*求该数的个位数字*/if(hun=ten | hun=data | ten=data) /*有两位数字相同*/bbk=i; /*则把该数存入数组bb中*/k+; /*统计满足条件的

52、数的个数*/j+; return k; /*返回满足该条件的整数的个数*/【解析】解答本题,首先应该考虑用一个for循环来依次取得100到999之间的各个数,并对当前所取得的数进行两个条件判断:一是判断该数是否是完全平方数;二是判断该数是否有两位数字相同。如果以上两个条件同时满足,则把该数存放到b数组中,尽管题目要求所存的数必须从小到大,但我们取数的过程本身就是从小到大取得,因此,排序工作是没有必要做的,按照取数的顺序,把满足条件的数值存放到数组b中就可以了。判断某个数是否是完全平方数的方法是看该数是否可以拆成完全相同的两个数的积(当然要拆成的两个数一定是两位数),因此,我们再利用一个循环用1

53、0以上的两位数逐个去拆被判断的数,如果被判断的数恰好可以被完全拆分,则第一个条件成立,接着就开始依次取得被判断的数的百位、十位、个位上的数字值,看是否有两位数字相同。取得每一位上的数字值可以用“hun=i/100;data=i-hun*100;ten=data/10;data=data-ten*10;”几条语句来实现,hun 变量得到的是百位上的数字,ten变量得到的是十位上的数字, data变量得到的是个位上的数字。13已知在文件IN13.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat() 的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(

54、),其功能要求:(1)求出该文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT13.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include <stdio.h>#include <conio.h>#define MAXNUM 200int xxMAXNUM;int totNum = 0; /* 文件IN13.DAT中共有多少个正整数 */int totCnt = 0; /* 符合条件的正整数的个数 */double totPjz = 0.0; /* 平均值 */int ReadDat(void);void Writedat(void);void CalValue(void) main()int i;clrscr();for(i = 0; i < MAXNUM; i+) x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论