南开100题终极无错2.0版

导读:if((qw+bw+sw+gw)%2){totCnt++;totPjz+=xx[i];}}if(totCnt==0)totPjz=0;elsetotPjz/=totCnt;}voidmain(){inti;clrscr();for(i=0;i

南开100题终极无错2.0版

if((qw+bw+sw+gw)%2) { totCnt++; totPjz+=xx[i];} }

if(totCnt==0) totPjz=0; else totPjz/=totCnt; }

void main() {

int i; clrscr();

for(i=0;i

printf(\数据文件IN.DAT不能打开!\\007\\n\ return; }

CalValue();

printf(\文件IN.DAT中共有正整数=%d个\\n\ printf(\符合条件的正整数的个数=%d个\\n\ printf(\平均值=%.2f\\n\ writeDat(); }

int ReadDat(void) {

FILE *fp; int i=0;

if((fp=fopen(\ while(!feof(fp)){

fscanf(fp,\ }

fclose(fp); return 0; }

void writeDat(void) {

FILE *fp;

fp=fopen(\

fprintf(fp,\fclose(fp); }

***************************************** ★☆题目66(无忧id 47 素数题)

下列程序prog1.c的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数...的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT11.DAT中。 部分源程序已给出。

请勿改动主函数main()和输出数据函数writeDat()的内容。 #include int cnt,sum;

void countValue() {int i,j,k=1;

for(i=800;i>500;i--) { for(j=2;j

if(j==i) { cnt++; sum=sum+k*i; k=k*(-1); } } }

void main() {

cnt=sum=0;

countValue();

printf(\素数的个数=%d\\n\

printf(\按要求计算的值=%d\\n\ writeDat(); }

writeDat() {

FILE *fp;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

***************************************** 题目67(无忧id 49 整数各位数字运算题)

下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT13.DAT中。

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDat()的内容。 #include int cnt,sum;

void countValue()

{int i,thou,hun,ten,data; for(i=1000;i<5000;i++)

{ thou=i/1000; hun=i00/100; ten=i0/10; data=i;

if(thou+hun==ten+data&&thou+hun==(data-thou)*10) {cnt++;sum+=i;} } }

void main() {

cnt=sum=0;

countValue();

printf(\满足条件的自然数的个数=%d\\n\

printf(\满足条件的自然数的个数之和=%d\\n\ writeDat(); }

writeDat() {

FILE *fp;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

*****************************************

★☆题目68(无忧id 142 整数各位数字统计运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data; for(i=0;i<200;i++)

{thou=a[i]/1000; hun=a[i]00/100; ten=a[i]0/10; data=a[i];

if(thou&&thou%2&&hun%2&&ten%2&&data%2) b[cnt++]=a[i]; }

for(i=0;i

if(b[i]

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ;

readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** ☆题目69(无忧id 145 整数统计运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data; for(i=0;i<200;i++)

{thou=a[i]/1000; hun=a[i]00/100; ten=a[i]0/10; data=a[i];

if(thou-hun-ten-data>=0&&a[i]%2) b[cnt++]=a[i]; }

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

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ; readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** ★题目70(无忧id 41 整数统计运算题)

已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 部分源程序存在文件prog1.c中。

请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

#include #include #define MAXNUM 200

int xx[MAXNUM];

int totNum=0; /*文件IN.DAT中共有多少个正整数*/ int totCnt=0; /*符合条件的正整数的个数*/ double totPjz=0.0; /*平均值*/

int ReadDat(void); void writeDat(void);

void CalValue(void) {int i,data;

for(i=0;i0)

{ totNum++;

data=xx[i]>>1;

if(data%2){totCnt++;totPjz+=xx[i];} }

if(totCnt==0) totPjz=0; else totPjz/=totCnt; }

void main() {

int i; clrscr();

for(i=0;i

printf(\数据文件IN.DAT不能打开!\\007\\n\ return; }

CalValue();

printf(\文件IN.DAT中共有正整数=%d个\\n\ printf(\符合条件的正整数的个数=%d个\\n\ printf(\平均值=%.2f\\n\ writeDat(); }

int ReadDat(void) {

FILE *fp; int i=0;

if((fp=fopen(\ while(!feof(fp)){

fscanf(fp,\ }

fclose(fp); return 0; }

void writeDat(void) {

FILE *fp;

fp=fopen(\

fprintf(fp,\fclose(fp); }

***************************************** ☆题目71(无忧id 6 字符串左右排序题)

函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.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 部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include

char xx[20][80];

void jsSort()

{int i,j,k,strl,half; char ch;

for(i=0;i<20;i++)

{ strl=strlen(xx[i]); half=strl/2;

for(j=0;j

{ ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;} if(strl%2) half++;

for(j=half;jxx[i][k])

{ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;} } }

void main() {

readDat(); jsSort(); writeDat(); }

readDat() {

FILE *in; int i=0; char *p;

in=fopen(\

while(i<20&&fgets(xx[i],80,in)!=NULL){ p=strchr(xx[i],'\\n'); if(p)*p=0; i++; }

fclose(in); }

writeDat() {

FILE *out; int i;

clrscr();

out=fopen(\ for(i=0;i<20;i++){

printf(\

fprintf(out,\ }

fclose(out); }

*****************************************

★☆题目72(无忧id 136 整数各位打散组合运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data,ab,cd; for(i=0;i<200;i++)

{thou=a[i]/1000; hun=a[i]/100; ten=a[i]0/10; data=a[i]; ab=10*data+thou; cd=10*hun+ten;

if((ab%9==0||cd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0) {b[cnt]=a[i];cnt++;} }

for(i=0;i

if(b[i]

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ;

readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** ★题目73(无忧id 26 字符替换题)

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其它字符不变。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT4.DAT中。 例:原文:Adb.Bcdza abck.LLhj 结果:Aca.Bbcyz zabj.LLgi

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

部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include #include #include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void); void WriteDat(void);

void ConvertCharD(void) { int i,j;

for(i=0;i

{ for(j=0;j

else if(xx[i][j]>='b'&&xx[i][j]<='z') xx[i][j]-=1; } }

void main() {

clrscr();

if(ReadDat()){

printf(\数据文件IN.DAT不能打开!\\n\\007\ return; }

ConvertCharD(); WriteDat(); }

int ReadDat(void) {

FILE *fp; int i=0; char *p;

if((fp=fopen(\ while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],'\\n'); if(p)*p=0; i++; }

maxline=i; fclose(fp); return 0; }

void WriteDat(void) {

FILE *fp; int i;

clrscr();

fp=fopen(\ for(i=0;i

fclose(fp); }

***************************************** 题目74(无忧id 70 字符ASCII值移位替换题)

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT7.DAT中。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include #include #include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void); void WriteDat(void);

void StrCharJL(void) { int i,j; char c;

for(i=0;i

for(j=0;j

if(!(c<=32||c>100)) xx[i][j]+=c; } }

void main() {

clrscr();

if(ReadDat()){

printf(\数据文件IN.DAT不能打开!\\n\\007\ return; }

StrCharJL(); WriteDat(); }

int ReadDat(void) {

FILE *fp; int i=0; char *p;

if((fp=fopen(\ while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],'\\n'); if(p)*p=0; i++; }

maxline=i; fclose(fp); return 0; }

void WriteDat(void) {

FILE *fp; int i;

clrscr();

fp=fopen(\ for(i=0;i

fprintf(fp,\ }

fclose(fp); }

*****************************************

★☆题目75 (无忧ID 10 整数各位数运算及排序题)

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

部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include

typedef struct{ int x1,x2,x3; }data;

data aa[200],bb[200];

int jsSort()

{ int i,j,cnt=0; data xy;

for(i=0;i<200;i++)

if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i]; for(i=0;i

if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;} return cnt; }

void main() {

int count;

readDat();

count=jsSort(); /*返回满足条件的个数*/ writeDat(count); }

readDat() {

FILE *in; int i;

in=fopen(\ for(i=0; i<200; i++)

fscanf(in,\ fclose(in); }

writeDat(int count) {

FILE *out; int i;

clrscr();

out=fopen(\ for(i=0; i

printf(\第一个数+第三个数=%d\\n\ fprintf(out,\ }

fclose(out); }

*****************************************

★☆题目76(无忧id 137 整数各位打散组合运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到 OUT.DAT文件中。

注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data,ab,cd; for(i=0;i

{thou=a[i]/1000; hun=a[i]/100; ten=a[i]0/10; data=a[i]; ab=10*data+thou; cd=10*hun+ten;

if((ab%2!=cd%2)&&((ab==0||cd==0)&&ab>=10&&cd>=10)) b[cnt++]=a[i]; }

for(i=0;i

if(b[i]

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ; readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** 题目77(无忧id 148 整数各位运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data,ab,cd; for(i=0;i

{thou=a[i]/1000; hun=a[i]/100; ten=a[i]0/10; data=a[i];

if((thou+ten==hun+data)&&a[i]%2==0) b[cnt++]=a[i]; }

for(i=0;i

if(b[i]>b[j]) {thou=b[i];b[i]=b[j];b[j]=thou;} }

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ;

readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** ☆题目78(无忧id 149 整数各位统计排序题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data,ab,cd; for(i=0;i

{thou=a[i]/1000; hun=a[i]/100; ten=a[i]0/10; data=a[i];

if(thou>=hun&&hun>=ten&&ten>=data&&a[i]%2) b[cnt++]=a[i]; }

for(i=0;i

if(b[i]>b[j]) {thou=b[i];b[i]=b[j];b[j]=thou;} }

void readDat() {

int i ; FILE *fp ;

fp = fopen(\ for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ; readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** ★☆题目79(无忧id 55 数字运算题)

请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。 部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDAT()的内容。 #include #include

void countValue(int *a,int *n) { int i; *n=0;

for(i=1;i<=1000;i++)

if(i%7==0&&i||i%7&&i==0) a[(*n)++]=i; }

main() {

int aa[1000],n,k;

clrscr();

countValue(aa,&n); for(k=0;k

if((k+1)==0)printf(\ else printf(\ writeDAT(); }

writeDAT() {

int aa[1000],n,k; FILE *fp;

fp=fopen(\ countValue(aa,&n); for(k=0;k

if((k+1)==0) fprintf(fp,\ else fprintf(fp,\fprintf(fp,\ fclose(fp); }

***************************************** ☆题目80(无忧id 62 整数各位数运算题) 已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。

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

8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。 部分源程序存在文件prog1.c中。

程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2

请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

#include int a[300],cnt=0;

double pjz1=0.0,pjz2=0.0;

jsValue()

{int i,j,thou,hun,ten,data,n=0; for(i=0;i<300;i++)

{thou=a[i]/1000; hun=a[i]/100; ten=a[i]0/10; data=a[i];

if(data-thou-hun-ten>0) { cnt++; pjz1+=a[i];} else { n++; pjz2+=a[i];} }

if(cnt==0) pjz1=0; else pjz1/=cnt; if(n==0) pjz2=0; else pjz2/=n; }

main() {

int i;

readDat(); jsValue(); writeDat();

printf(\满足条件的平均值pzj1=%7.2f\\n不满足条件的平均值pzj2=%7.2f\\n\}

readDat() {

FILE *fp; int i;

fp=fopen(\

for(i=0;i<300;i++)fscanf(fp,\ fclose(fp); }

writeDat() {

FILE *fp; int i;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

***************************************** ★☆题目81(无忧id 32 整数各位数运算题) 已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。

例如:7153,7+1=5+3,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+1<>2+9,则该数不满足条件计算平均值pjz2。 部分源程序存在文件prog1.c中。

程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2。 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

#include int a[300],cnt=0;

double pjz1=0.0,pjz2=0.0;

jsValue()

{int i,thou,hun,ten,data,n=0; for(i=0;i<300;i++)

{thou=a[i]/1000; hun=a[i]00/100; ten=a[i]0/10; data=a[i];

if(thou+hun==ten+data) {cnt++;pjz1+=a[i];} else {n++;pjz2+=a[i];} }

if(cnt==0) pjz1=0; else pjz1/=cnt; if(n==0) pjz2=0; else pjz2/=n; }

main() {

int i;

readDat(); jsValue(); writeDat();

printf(\满足条件的平均值pzj1=%7.2f\\n不满足条件的平均值pzj2=%7.2f\\n\}

readDat() {

FILE *fp; int i;

fp=fopen(\

for(i=0;i<300;i++)fscanf(fp,\ fclose(fp); }

writeDat() {

FILE *fp; int i;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

***************************************** 题目82(无忧id 64 素数题)

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果cnt,pjz1,pjz2输 出到out.dat文件。

例如:5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。

9812是非素数,则该数不满足条件计算平均值pjz2。 部分源程序存在文件prog1.c中。

程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2

请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

#include int a[300],cnt=0;

double pjz1=0.0,pjz2=0.0;

int isP(int m) {int i;

for(i=2;i

if(m%i==0)return 0; return 1; }

jsValue() {int i;

for(i=0;i<300;i++)

if(isP(a[i])) {pjz1+=a[i];cnt++;} else pjz2+=a[i]; if(cnt==0) pjz1=0; else pjz1/=cnt;

if(300-cnt==0) pjz2=0; else pjz2/=(300-cnt); }

main() {

int i;

readDat(); jsValue(); writeDat();

printf(\满足条件的平均值pzj1=%7.2f\\n不满足条件的平均值pzj2=%7.2f\\n\}

readDat() {

FILE *fp; int i;

fp=fopen(\

for(i=0;i<300;i++)fscanf(fp,\ fclose(fp); }

writeDat() {

FILE *fp; int i;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

***************************************** 题目83(无忧id 34 方差运算题)

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

totfc=1/N ∑ (xx[i]-ave1) i=1

设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDat()的内容。 #include #include #include #define MAX 1000

int xx[MAX],odd=0,even=0;

double ave1=0.0,ave2=0.0,totfc=0.0; void WriteDat(void);

int ReadDat(void) {

int i; FILE *fp;

if((fp=fopen(\

/*********编制函数ReadDat()的部分************/ for(i=0;i

{fscanf(fp,\ if((i+1)==0) fscanf(fp,\ }

/*******************************************/

fclose(fp); return 0; }

void Compute(void) { int i,yy[MAX];

for(i=0;i

for(i=0;i

if(xx[i]%2) { yy[odd++]=xx[i]; ave1+=xx[i];} else { even++; ave2+=xx[i];} if(odd==0) ave1=0; else ave1/=odd;

if(even==0) ave2=0; else ave2/=even; for(i=0;i

totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd; } void main() {

int i;

for(i=0;i

printf(\数据文件IN.DAT不能打开!\\007\\n\ return; }

Compute();

printf(\otfc);

WriteDat(); }

void WriteDat(void) {

FILE *fp; int i;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

***************************************** ★题目84(无忧id 65 选票问题)

现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。 部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include

char xx[100][11]; int yy[10];

int ReadDat(void); void WriteDat(void);

void CountRs(void) { int i,j,count; for(i=0;i<100;i++) { count=0;

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

if(xx[i][j]=='1') count++; if(count>5) continue; for(j=0;j<10;j++)

if(xx[i][j]=='1') yy[j]++; } }

void main() {

int i;

for(i=0;i<10;i++)yy[i]=0; if(ReadDat()){

printf(\选票数据文件IN.DAT不能打开!\\n\\007\ return; }

CountRs(); WriteDat(); }

int ReadDat(void) {

FILE *fp; int i;

if((fp=fopen(\ for(i=0;i<100;i++){

if(fgets(xx[i],12,fp)==NULL)return 1; xx[i][10]='\\0'; }

fclose(fp); return 0; }

void WriteDat(void) {

FILE *fp; int i;

fp=fopen(\ for(i=0;i<10;i++){

fprintf(fp,\

printf(\第%d个人的选票数=%d\\n\ }

fclose(fp); }

***************************************** ★题目85(无忧id 146 整数各位数运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶

数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

#include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data,ab,cd; for(i=0;i

{thou=a[i]/1000; hun=a[i]/100; ten=a[i]0/10; data=a[i];

if(data-thou-hun-ten>=0&&a[i]%2==0) b[cnt++]=a[i]; }

for(i=0;i

if(b[i]>b[j]) {thou=b[i];b[i]=b[j];b[j]=thou;} }

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ; readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

*****************************************

★☆题目86(无忧id 140 整数各位打散组合运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{int i,j,thou,hun,ten,data; int ab,cd;

for(i=0;i

{thou=a[i]/1000; hun=a[i]00/100; ten=a[i]0/10; data=a[i]; ab=10*thou+ten; cd=10*data+hun;

if((ab-cd)>0&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab>=10&&cd>=10) {b[cnt]=a[i];cnt++;} }

for(i=0;i

if(b[i]

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ; readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

fp = fopen(\ fprintf(fp, \

for(i = 0 ; i < cnt ; i++) fprintf(fp, \ fclose(fp) ; }

***************************************** ★☆题目87(无忧id 30 整数各位运算统计题) 已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到out.dat文件。

例如:6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+9<>1+2,则该数不满足条件计算平均值pjz2。 部分源程序存在文件prog1.c中。

程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2。 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

#include int a[300],cnt=0;

double pjz1=0.0,pjz2=0.0;

jsValue()

{ int i,gw,sw,bw,qw,cnt2=0; for(i=0;i<300;i++)

{gw=a[i]; sw=a[i]/10; bw=a[i]/100; qw=a[i]/1000;

if((qw+gw)==(sw+bw)) { cnt++;pjz1+=a[i]; } else { cnt2++;pjz2+=a[i]; } }

if(cnt==0) pjz1=0; else pjz1/=cnt;

if(cnt2==0) pjz2=0; else pjz2/=cnt2; }

main() {

int i;

readDat(); jsValue(); writeDat();

printf(\满足条件的平均值pzjl=%7.2f\\n不满足条件的平均值pzj2=%7.2f\\n\}

readDat() {

FILE *fp; int i;

fp=fopen(\

for(i=0;i<300;i++)fscanf(fp,\ fclose(fp); }

writeDat() {

FILE *fp; int i;

fp=fopen(\

fprintf(fp,\ fclose(fp); }

***************************************** 题目88(无忧id 66 字符串排序题)

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharA(),其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT1.DAT中。

例:原文:dAe,BfC. CCbbAA 结果:,.ABCdef AACCbb

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

部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include #include #include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void); void WriteDat(void);

void SortCharA(void) {int i,j,k,strl; char ch; for(i=0;ixx[i][k])

{ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=ch;} } }

void main() {

clrscr();

if(ReadDat()){

printf(\数据文件IN.DAT不能打开!\\n\\007\ return; }

SortCharA(); WriteDat(); }

int ReadDat(void) {

FILE *fp; int i=0; char *p;

if((fp=fopen(\ while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],'\\n'); if(p)*p=0; i++; }

maxline=i; fclose(fp); return 0; }

void WriteDat(void) {

FILE *fp; int i;

clrscr();

fp=fopen(\ for(i=0;i

fprintf(fp,\ }

fclose(fp); }

***************************************** ☆题目89(无忧id 147 整数统计排序题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

注意:部分源程序存在文件prog1.c中。

程序中已定义数组:a[200],b[200],已定义变量:cnt

请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal() {

int i,j,gw,sw,bw,qw; for(i=0;i

{gw=a[i]; sw=a[i]/10; bw=a[i]/100; qw=a[i]/1000;

if((qw+gw)==(sw+bw)&&a[i]%2) b[cnt++]=a[i]; }

for(i=0;i

if(b[i]>b[j]) { qw=b[i]; b[i]=b[j]; b[j]=qw;} }

void readDat() {

int i ; FILE *fp ;

fp = fopen(\

for(i = 0 ; i < MAX ; i++) fscanf(fp, \ fclose(fp) ; }

void main() {

int i ; readDat() ; jsVal() ;

printf(\满足条件的数=%d\\n\

for(i = 0 ; i < cnt ; i++) printf(\ printf(\ writeDat() ; }

writeDat() {

FILE *fp ; int i ;

五星文库wxphp.com包含总结汇报、外语学习、IT计算机、专业文献、资格考试、行业论文、word文档、旅游景点以及南开100题终极无错2.0版等内容。

本文共5页12345