写在前面:
本文属作者原创,欢迎转载,但请表明出处:FROYO's Blog (www.izhuyue.com)

1.关于分类整理:南开100题几乎可以说是上机题库,然而这个题库并不是有100类题目,这100题可以分为几个类别,每个类别的题无非是换换数据,大同小异。本文的出发点之一就是归类整理,便于学习,掌握方法,以不变应万变。
2.关于优化代码:南开100题中给出的答案一般都比较长,有的接近甚至超过1页A4纸的代码,试问3级上机这么简单的内容需要那么复杂的代码吗?经过一番研究,我发现每个题,或者说每一类题,都有非常简洁的解题方法,代码一般不超过10行。这种思路在考试实战中是非常实用的,因为考试判定成绩仅仅根据程序的运行结果,而不看过程,所以无论是采用南开100题的40多行代码还是自行设计思路的10行代码,都可以获得满分。

原文很长的,放个下载连接吧,方便学习:
点击此处下载

本人在2010年9月的三级上机考试中,仅仅用了15分钟就做完了全部试题,不得不说这与分类整理100题并且自行改写代码有很大关系。下面就分享一下当年分类修改的成果:

计算机三级考试南开100题分类整理及代码优化

1题函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。
替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t
xx[i][j]=t;
}
}
}
3题替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t='a'&&xx[i][j]
xx[i][j]=t;
}
}
}
5题替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,strl;
intt;
for(i=0;i
{
strl=strlen(xx[i]);
for(j=0;j
{
t=xx[i][j]*11%256;
if(t='0'&&t
xx[i][j]=t;
}
}
}
7题替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t='A'&&t
xx[i][j]=t;
}
}
}
9题替代关系:f(p)=p*13mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*13%256;
if(t
xx[i][j]=t;
}
}
}
27题函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT4.DAT中。
voidconvertchard(void)
{inti,n,j;
for(i=0;i
{n=strlen(xx[i]);
for(j=0;j
if(islower(xx[i][j])
{if(xx[i][j]>'a')xx[i][j]-=1;
elsexx[i][j]='z';}
}
30题下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。
voidchg(char*s)
{
inti,j,k;
k=strlen(s);
for(i=0;i
{if(s[i]=='z'||s[i]=='Z')
s[i]-=25;
elseif(isalpha(s[i]))
s[i]+=1;
}
}
73、以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母Z,则改写成字母A.大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变.
voidconvertcharA(void)
{
char*p;
inti;
for(i=0;i
{p=xx[i];
while(*p)
{if(*p=='z')*p='a';
elseif(*p>='a'&&*p
p++;
}
}
}
79、以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。
voidShA(void)
{
inti,j;
chart1;
for(i=0;i
{t1=xx[i][0];
for(j=0;xx[i][j+1]!='?';j++)
xx[i][j]=xx[i][j]+xx[i][j+1];
xx[i][j]=xx[i][j]+t1;/*注意:当xx[i][j+1]!='?'这个条件不满足时,j的值已经为字符串的最后一位的下标值了*/
}
}
091题替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t130)continue;
xx[i][j]=t;
}
}
}
093题替代关系:f(p)=p*17mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*17%256;
if(t
xx[i][j]=t;
}
}
}
095题关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t='a'&&t
xx[i][j]=t;
}
}
}
097题替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t='A'&&xx[i][j]
xx[i][j]=t;
}
}
}
099题替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
voidencryptChar()
{
inti,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[i][j]*11%256;
if(t='0'&&xx[i][j]
xx[i][j]=t;
}
}
}

2题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
voidjsSort()
{
inti,strl,half,j,k;
charch;
for(i=0;i
{strl=strlen(xx[i]);/*每行长度*/
half=strl/2;
for(j=0;j
for(k=j+1;k
if(xx[i][j]>xx[i][k])
{ch=xx[i][j];/*每次将最小数赋给xx[i][j]*/
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
for(j=half-1,k=strl-1;j>=0;j--,k--)
{ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
4题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
voidjsSort()
{
inti,strl,half,j,k;
charch;
for(i=0;i
{strl=strlen(xx[i]);
half=strl/2;
for(j=1;j
{ch=x[i][j];
k=j-1;
while((k>=0)&&(ch>xx[i][k]))
{xx[i][k+1]=xx[i][k];
k--;
}
xx[i][k+1]=ch;
}
for(j=half-1,k=strl-1;j>=0;j--,k--)
{ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
6题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
voidjsSort()
{
inti,strl,half,j,k,p;
charch;
for(i=0;i
{strl=strlen(xx[i]);
half=strl/2;
for(j=0;j
for(k=j+1;k
if(xx[i][j]
{ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
if(strl%2)half++;/*Musttonotetheorderline!*/
for(j=half;j
{p=j;
for(k=j;k
if(xx[i][k]
p=k;
ch=xx[i][j];xx[i][j]=xx[i][p];xx[i][p]=ch;
}
}
12题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
voidjsSort()
{
inti,j,k,strl;
chartemp;
for(i=0;i
{
strl=strlen(xx[i]);
for(k=1;k
for(j=k+2;j
if(xx[i][k]>xx[i][j])
{
temp=xx[i][k];
xx[i][k]=xx[i][j];
xx[i][j]=temp;
}
}
}
26题下列程序的功能是:求出ss字符串中指定字符c的个数,并返回此值。请编写函数intnum(*charss,charc)实现程序要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。
(注:大小写字母有区别)
intnum(char*ss,charc)
{
inti=0;
while(*ss!=0)
if(*ss++==c)i++;
returni;
}
29题函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。
voidsortchard(void)
{
inti,j,k,strl;
charch;
for(i=0;i
{strl=strlen(xx[i]);
for(j=0;j
for(k=j+1;k
if(xx[i][j]
{ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
71、函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数SORTCHARA(),其函数功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DATK.
voidsortcharA(void)
{
inti,j,k,strl;
charch;
for(i=0;i
{strl=strlen(xx[i]);
for(j=0;j
for(k=j+1;k
if(xx[i][j]>xx[i][k])
{ch=xx[i][k];
xx[i][k]=xx[i][j];
xx[i][j]=ch;
}
}
}
72、下列程序的功能是:把S字符串中的所有字符左移一个位置,串中的第一个字符移到最后.请编写函数CHG(CHAR*S)实现程序要求,最后调用函READWRITEDAT()把结果输出到OUT.DAT文件中.
voidchg(char*s)
{
inti=strlen(s);
charc=*s;
strcpy(s,s+1);
*(s+i-1)=c;
*(s+i)='?';
}
74、下列程序的功能是:统计在TT字符串中'A'到'Z'26个字母各自现的次数,并存入PP数组.请编写函数CNT(CHAR*TT,INTPP[])实现程序的要求,最后调用函数READWRITEDAT()把结果输出到文件OUT.DAT中.(仅统计小写字母.)
voidcnt(char*tt,intpp[])
{
inti;
for(i=0;i
pp[i]=0;
while(*tt)
{if(*tt>='a'&&*tt
pp[*tt-'a']++;
tt++;
}
}
084题函数loop(s,m,n,str)对长为n的字符串str,从第s个字符开始的间隔为m的部分字符进行循环左移,即str[s]←str[s+m]←...←str[s+km]←...←str[s](k为正整数)且当字符位置s+k*m大于等于n时,要求用s+k*m-n作新的字符位置。要求编写此函数实现其功能,最后调用函数WriteDat()把结果输出到文件out.dat中。
ViodLoop(ints,intm,intn,charstr[])
{intcuur,last,i=0;
charch;
last=s;
ch=str[s];
while(++i)
{cuur=last;
last=(s+i*m)%n;
if(last>=s&&s+i*m>n)break;
str[cuur]=str[last];
}
str[cuur]=ch;
}
090题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
voidjsSort()
{
inti,j,k,strl;
charch;
for(i=0;i
{
strl=strlen(xx[i]);
for(j=1;j
for(k=j+2;k
if(xx[i][j]
{
ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
096题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,右边部分按字符的ASCII值降序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
voidjsSort()
{
inti,j,k,strl;
charch;
for(i=0;i
{
strl=strlen(xx[i]);
for(j=0;j
for(k=j+1;k
if(xx[i][j]>xx[i][k])
{
ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
for(j=(strl+1)/2;j
for(k=j+1;k
if(xx[i][j]
{
ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
098题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
voidjsSort()
{
inti,j,k,strl;
charch;
for(i=0;i
{
strl=strlen(xx[i]);
for(j=(strl+1)/2;j
for(k=j+1;k
if(xx[i][j]
{
ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
for(j=0;j
{
ch=xx[i][j];
xx[i][j]=xx[i][(strl+1)/2+j];
xx[i][(strl+1)/2+j]=ch;
}
}
}
100题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,右边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
voidjsSort()
{
inti,j,k,strl;
charch;
for(i=0;i
{
strl=strlen(xx[i]);
for(j=(strl+1)/2;j
for(k=j+1;k
if(xx[i][j]>xx[i][k])
{
ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
for(j=0;j
{
ch=xx[i][j];
xx[i][j]=xx[i][(strl+1)/2+j];
xx[i][(strl+1)/2+j]=ch;
}
}
}

8题在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。
voidjsSort()
{
inti,j,data;
for(i=0;i
for(j=i+1;j
{if(aa[i]%1000>aa[j]%1000)
{data=aa[i];aa[i]=aa[j];aa[j]=data;}
elseif(aa[i]%1000==aa[j]%1000)
if(aa[i]
{data=aa[i];aa[i]=aa[j];aa[j]=data;}
}
for(i=0;i
bb[i]=aa[i];
}
31题已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求******位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。
jsvalue()
{
inti,g,s,b,q,k=0;
for(i=0;i
{g=a[i]%10;
s=a[i]%100/10;
b=a[i]/100%10;
q=a[i]/1000;
if((q+g)==(s+b)){cnt++;pjz1+=a[i];}
else{k++;pjz2+=a[i];}
}
pjz1/=cnt;
pjz2/=k;
}
33题已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到OUT.DAT文件。
jsvalue()
{
inti,g,s,b,q,k=0;
for(i=0;i
{g=a[i]%10;
s=a[i]%100/10;
b=a[i]/100%10;
q=a[i]/1000;
if((q+b)==(s+g)){cnt++;pjz1+=a[i];}
else{k++;pjz2+=a[i];}
}
pjz1/=cnt;
pjz2/=k;
}
35题已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到OUT.DAT文件。
jsvalue()
{
inti,g,s,b,q,k=0;
for(i=0;i
{g=a[i]%10;
s=a[i]%100/10;
b=a[i]/100%10;
q=a[i]/1000;
if(q-b-s-g>0){cnt++;pjz1+=a[i];}
else{k++;pjz2+=a[i];}
}
pjz1/=cnt;
pjz2/=k;
}
37题已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到OUT.DAT文件。
jsvalue()
{
inti,j,temp;
for(i=0;i
if(isP(a[i]))b[cnt++]=a[i];
for(i=1;i
{temp=b[i];
j=i-1;
while(j>=0&&temp
b[j+1]=b[j--];
b[j+1]=temp;
}
}
39题已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把结果输出到OUT.DAT文件。
jsvalue()
{
intq,b,s,g,i,j,data;
for(i=0;i
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(g-q-b-s>0)
bb[cnt++]=a[i];
}
for(i=0;i
for(j=i+1;j
if(bb[i]
{data=bb[i];
bb[i]=bb[j];
bb[j]=data;
}
}
42、请编制程序,从文件in.dat中读取200个整数至数组xx中,不计数组xx中值最大和最
小的数(若有重复值,则都不计),再求出最大数max及最大数的个数cnt1、最小数min
及最小数的个数cnt2和所剩下200-cnt1-cnt2个数的算求平均值pj(保留2位小数)。
结果max,cnt1,min,cnt2,pj输出到out.dat中。
voidmain()
{
intcnt1,cnt2,xx[N],max,min;
floatpj;
FILE*fw;
inti,max0,min0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max0=min0=xx[0];
pj=0;
cnt1=cnt2=0;
for(i=1;i
{if(max0
elseif(min0>xx[i])min0=xx[i];
elsemax=min=xx[i];
}
for(i=0;i
{if(max
if(min>xx[i]&&xx[i]>min0)min=xx[i];
}
for(i=0;i
if(xx[i]==max)cnt1++;
elseif(xx[i]==min)cnt2++;
elsepj+=xx[i];
pj=(float)((int)pj*100/(200-cnt1-cnt2))/100;
printf("nnmax=%d,cnt1=%d,min=%d,cnt2=%d,pj=%6.2fn",
max,cnt1,min,cnt2,pj);
fprintf(fw,"%dn%dn%dn%dn%6.2fn",max,cnt1,min,cnt2,pj);
fclose(fw);
}
44、请编制程序,从文件in.dat中读取200个整数至数组xx中,不计数组xx绝对值最大的数(若有重复值,则都不计),再求出绝对值最大数max及绝对值最大数的个数cnt和所剩下200-cnt个数的算求平均值pj(保留2位小数)。结果max,cnt1,min,cnt2,pj输出到out.dat中。
voidmain()
{
intcnt,xx[N],max;
floatpj;
FILE*fw;
inti,max0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max0=abs(xx[0]);
pj=0;
cnt=0;
for(i=1;i
if(max0
elsemax=abs(xx[i]);
for(i=0;i
if(abs(xx[i])max)max=abs(xx[i]);
for(i=0;i
if(abs(xx[i])==max)cnt++;
elsepj+=xx[i];
pj=(float)((int)pj*100/(200-cnt))/100;
printf("nnmax=%d,cnt=%d,pj=%6.2fn",max,cnt,pj);
fprintf(fw,"%dn%dn%6.2fn",max,cnt,pj);
fclose(fw);
}
46、请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数级xx下标为奇数的元素值的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中。
voidmain()
{
intcnt1,cnt2,xx[N];
floatpj;
FILE*fw;
inti,j=0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0;
cnt1=cnt2=0;
for(i=0;i
{if(xx%2)cnt1++;
elsecnt2++;
if(i%2)pj+=xx[i],j++;
}
pj=(float)((int)pj*100/j)/100;
printf("nncnt1=%d,cnt2=%d,pj=%6.2fn",cnt1,cnt2,pj);
fprintf(fw,"%dn%dn%6.2fn",cnt1,cnt2,pj);
fclose(fw);
}
47、已知在文件in.dat中存有若干个(个数
voidcalvalue(void)
{
inti;
for(i=0;i
{if(!xx[i])break;
if(xx[i]>0)totnum++;
if((xx[i]/1000+xx[i]/100%10+xx[i]/10%10+xx[i]%10)/2==0)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
48、请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数级xx值为奇数的元素值的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。
voidmain()
{
intcnt1,cnt2,xx[N];
floatpj;
FILE*fw;
inti;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0;
cnt1=cnt2=0;
for(i=0;i
if(xx[i]%2){cnt1++;pj+=xx[i];}
elsecnt2++;
pj=(float)((int)pj*100/cnt1)/100;
printf("nncnt1=%d,cnt2=%d,pj=%6.2fn",cnt1,cnt2,pj);
fprintf(fw,"%dn%dn%6.2fn",cnt1,cnt2,pj);
fclose(fw);
}
49、已知在文件in.dat中存有若干个(个数
voidcalvalue(void)
{
inti;
for(i=0;i
{if(!xx[i])break;
if(xx[i]>0)totnum++;
if((xx[i]/1000+xx[i]/100%10+xx[i]/10%10+xx[i]%10)/2==1)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
50、请编制程序,从文件in.dat中读取200个整数至数组xx中,不计数组xx最大的数(若有重复值,则都不计),再求出最大数max及最大数的个数cnt和所剩下200-cnt个数的算求平均值pj(保留2位小数).结果max,cnt1,min,cnt2,pj输出到out.dat中。
voidmain()
{
intcnt,xx[N],max;
floatpj;
FILE*fw;
inti,max0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max0=xx[0];
pj=0;
cnt=0;
for(i=1;i
if(max0
elsemax=xx[i];
for(i=0;i
if(max0>xx[i]&&max
for(i=0;i
if(xx[i]==max)cnt++;
elsepj+=xx[i];
pj=(float)((int)pj*100/(200-cnt))/100;
printf("nnmax=%d,cnt=%d,pj=%6.2fn",max,cnt,pj);
fprintf(fw,"%dn%dn%6.2fn",max,cnt,pj);
fclose(fw);
}
51、下列程序的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之各,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out11.dat中。部分源程序已给出。
voidcountValue()
{
inti,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j
if(i%j==0)break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}
52、请编制程序,从文件in.dat中读取200个整数至数组xx中,不计数组xx最小的数(若有重复值,则都不计),再求出最小数min及最小数cnt和所剩下200-cnt个数的算求平均值pj(保留2位小数)。结果min,cnt,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。
#include
voidmain()
{
intcnt,xx[N],min;
floatpj;
FILE*fw;
inti,min0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
min0=xx[0];
pj=0;
cnt=0;
for(i=1;i
if(min0>xx)min0=xx[i];
elsemin=xx[i];
for(i=0;i
if(min0xx[i])min=xx[i];
for(i=0;i
if(xx[i]==min)cnt++;
elsepj+=xx[i];
pj=(float)((int)pj*100/(200-cnt))/100;
printf("nnmin=%d,cnt=%d,pj=%6.2fn",min,cnt,pj);
fprintf(fw,"%dn%dn%6.2fn",min,cnt,pj);
fclose(fw);
}
53、下列程序的功能是:先出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的确10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countvalue(0实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out13.dat中。
voidcountValue()
{
inti;
for(i=1000;i
if((i/1000+i/100%10)==(i/10%10+i%10))
if((i/1000+i/100%10)==(i%10-i/1000)*10)
{cnt++;
sum+=i;
}
}
54、请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数级xx值为偶数的元素值的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。
voidmain()
{
intcnt1,cnt2,xx[N];
floatpj;
FILE*fw;
inti;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
cnt1=cnt2=0;
pj=0.0;
for(i=0;i
if(xx[i]%2)cnt1++;
else{cnt2++;pj+=xx[i];}
pj=(float)((long)(pj*100/cnt2))/100;
056题请编制程序,从文件IN.DAT中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到OUT.DAT中。
voidmain()
{
intcnt1,cnt2,xx[N];
flotpj;
FILE*fw;
inti;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0.0;
for(i=0;i
{
if(xx[i]%2==0)
cnt2++;
else
cnt1++;
if(i%2==0)
pj+=xx[i];
}
pj=pj/100;
58、请编制程序,从文件in.dat中读取200个整数至数组xx中,不计数组xx绝对值最小的数(若有重复值,则都不计),再求出绝对值最小数max及绝对值最小数的个数cnt和所剩下200-cnt个数的算求平均值pj(保留2位小数)。结果min,cnt,pj输出到out.dat中。
voidmain()
{
intcnt,xx[N],min;
floatpj;
FILE*fw;
inti,min0;/*min0存绝对值最小的数,不是绝对值。min是绝对值次小的数,也不是绝对值。*/
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
min0=xx[0];
for(i=0;i
if(abs(xx[i])
min0=xx[i];
else
min=xx[i];
cnt=0;
pj=0.0;
for(i=0;i
if(abs(xx[i])abs(min0))
{
min=xx[i];
cnt=1;
}
else
if(abs(xx[i])==abs(min))
cnt++;
for(i=0;i
if(abs(xx[i])!=abs(min))
pj+=xx[i];
pj/=(200-cnt);
60、请编制程序,从文件in.dat中读取200个整数至数线xx中,求出最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的算求增均值pj(保留2位小数)。
voidmain()
{
intcnt,xx[N],max;
floatpj;
FILE*fw;
inti,k=0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max=xx[0];
pj=0;
cnt=0;
for(i=1;i
if(max
for(i=0;i
{if(xx[i]==max)cnt++;
if(xx[i]%3==0//xx[i]%7==0)
{pj=xx[i];k++;}
}
pj=(float)((int)pj*100/k)/100;
61、已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT()把这些数存入数组a中,请编制一函数JSVALUE(),其功能是:求******位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数CNT,再把所有满足此条件的四位数依次存入数组bb中,然后对数组bb的四位数按小到大的顺序进行排序,最后调用写函数WRITEDAT()把数组B中的数输出到OUT.DAT文件.
jsValue()
{
intq,b,s,g,i,j;
for(i=0;i
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(q-b-s-g>0)
bb[cnt++]=a[i];
}
for(i=0;i
for(j=i+1;j
if(bb[i]>bb[j])
{q=bb[i];
bb[i]=bb[j];
bb[j]=q;
}
}
63、已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT()把这些存入数组a中,请编制一函数JSVALUE()其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数CNT,再把所有满足条件的四位数依次存入数组B中,然后对数组bb的四位数按从大到小的顺序进行排序,最后调用写函数WRITEDAT()把数组bb中的数输出到OUT.DAT文件.
jsValue()
{
intq,b,s,g,i,j;
for(i=0;i
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(q+b==s+g)
bb[cnt++]=a[i];
}
for(i=0;i
for(j=i+1;j
if(bb[i]
{q=bb[i];
bb[i]=bb[j];
bb[j]=q;
}
}
65、已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT()把这些数存入数组A中.请编制一函数JSVALUE(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数CNT,再把所有满足条件的四位数依次存入数组bb中,然后对数组bb的四位数按从小到大的顺序进行排序,最后调用写函数WRITEDAT()把数组bb中的数输出到OUT.DAT文件.
jsValue()
{
intq,b,s,g,i,j;
for(i=0;i
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(q+g==b+s)
bb[cnt++]=a[i];
}
for(i=0;i
for(j=i+1;j
if(bb[i]>bb[j])
{q=bb[i];
bb[i]=bb[j];
bb[j]=q;
}
}
67、已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT()把这些数存入数组A中,请编制一函数JSVALUE(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数CNT,再把所有懑足此条件的四位数平均值PJZ1,以及不满足条此条件的四位数平均值PJZ2,最后调用写函数WRITEDAT()把结果CNT,PJZ,PJZ2输出到OUT.DAT文件.
jsValue()
{
inti,q,b,s,g,cnt1=0;
for(i=0;i
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(g-q-b-s>0)
{pjz1+=a[i];
cnt++;
}
else
{pjz2+=a[i];
cnt1++;
}
}
pjz1/=cnt;
pjz2/=cnt1;
}
69、已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT()把这些数存入数组A中,请编制一函数JSVALUE(),其功能是:求出所有这些四位数是素数的个数CNT,再求出所有满足此条件的四位数平均值PJZ1,以及不满足条件的四位数平均值PJZ2,最后调用写函数WRITEDAT()把结果CNT,PJZ1,PJZ2输出到OUT.DAT文件.
jsValue()
{
inti,cnt1=0;
for(i=0;i
if(isP(a[i]))
{cnt++;
pjz1+=a[i];
}
else
{cnt1++;
pjz2+=a[i];
}
pjz1/=cnt;
pjz2/=cnt1;
}
092题在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。
intjsSort()
{inti,j,k=0;
DATAswap;
for(i=0;i
if(aa[i].x2>(aa[i].x1+aa[i].x3))
bb[k++]=aa[i];
for(i=0;i
for(j=i+1;j
if((bb[i].x2+bb[i].x3)
{
swap=bb[i];
bb[i]=bb[j];
bb[j]=swap;
}
returnk;
}
094题在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。
voidjsSort()
{inti,j,n,s;
n=200;
for(i=0;i
for(j=i+1;j
{if(aa[i]%1000
{s=aa[i];
aa[i]=aa[j];
aa[j]=s;
}
elseif(aa[i]%1000==aa[j]%1000)
if(aa[i]>aa[j])
{s=aa[i];
aa[i]=aa[j];
aa[j]=s;
}
for(n=0;n
bb[n]=aa[n];
}

11题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT10.DAT中。
voidSortDat()
{
inti,j;
PROswap;
for(i=0;i
for(j=0;j
{if(strcmp(sell[j].dm,sell[j+1].dm)
{swap=sell[j];sell[j]=sell[j+1];sell[j+1]=swap;}
if(strcmp(sell[j].dm,sell[j+1].dm)==0&&sell[j].je
{
swap=sell[j];
sell[j]=sell[j+1];
sell[j+1]=swap;
}
}
}
13题
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT8.DAT中。
voidSortDat()
{
inti,j;
PROswap;
for(i=0;i
for(j=i+1;j
{
if(strcmp(sell[i].mc,sell[j].mc)
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
if(strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
}}
15题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。
voidSortDat()
{
inti,j;
PROswap;
for(i=0;i
for(j=i+1;j
{
if(strcmp(sell[i].mc,sell[j].mc)>0)
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
if(strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
}
17题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT4.DAT中。
voidSortDat()
{
inti,j;
PROswap;
for(i=0;i
for(j=i+1;j
{
if(sell[i].je
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
if(strcmp(sell[i].dm,sell[j].dm)
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
}
}
19题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.DAT中。
voidSortDat()
{
inti,j;
PROswap;
for(i=0;i
for(j=i+1;j
{
if(sell[i].je>sell[j].je)
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
if(strcmp(sell[i].dm,sell[j].dm)
{
swap=sell[i];
sell[i]=sell[j];
sell[j]=swap;
}
}
}
081题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。
voidSortDat()
{
inti,j;
PROt;
for(i=0;i
for(j=i+1;j
if(sell[i].je>sell[j].je)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
elseif(sell[i].je==sell[j].je)
if(strcmp(sell[i].dm,sell[j].dm)>0)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}
083题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。
voidSortDat()
{
inti,j;
PROt;
for(i=0;i
for(j=i+1;j
if(sell[i].je
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
elseif(sell[i].je==sell[j].je)
if(strcmp(sell[i].dm,sell[j].dm)>0)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}
085题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。
voidSortDat()
{inti,j;
PROt;
for(i=0;i
for(j=i+1;j
if(strcmp(sell[i].mc,sell[j].mc)>0)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je>sell[j].je)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}
087题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT7.DAT中。
voidSortDat()
{inti,j;
PROt;
for(i=0;i
for(j=i+1;j
if(strcmp(sell[i].mc,sell[j].mc)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je>sell[j].je)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}
089题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。
voidSortDat()
{inti,j;
PROt;
for(i=0;i
for(j=i+1;j
if(strcmp(sell[i].dm,sell[j].dm)>0)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
elseif(strcmp(sell[i].dm,sell[j].dm)==0)
if(sell[i].je>sell[j].je)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}

14题请编写一个函数jsValue(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
voidjsvalue(intm,intk,intxx[])
{
inti,j,s=0;
for(i=m+1;k>0;i++)
{for(j=2;j
if(i%j==0)break;
if(i==j)
{xx[s++]=i;k--;}
}
}
22题下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countValue()实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。
voidcountvalue()
{
inti,j;
for(i=1;i
if(isprime(i)&&isprime(i+4)&&isprime(i+10))
{cnt++;
sum+=i;
}
}
28题下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(intm,intk,intxx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。
voidnum(intm,intk,intxx[])
{
inti,j=0;
i=m+1;
while(j
{if(isp(i))xx[j++]=i;
i++;
}
}
51、下列程序的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之各,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out11.dat中。
voidcountValue()
{
inti,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j
if(i%j==0)break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}
80、下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM。请编写函数COUNTVALUE()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM输出到文件OUT.DAT中.
voidcountvalue()
{
inti,j;
for(i=100;i
{for(j=2;j
if(i%j==0)break;
if(j==i&&((i%10+i/10%10)%10==i/100))
{cnt++;
sum+=i;
}
}
}
滺優书萌 Uutxt.cOm 全文子板粤读

10题在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。
intjsSort()
{
inti,j,k=0;
DATAswap;
for(i=0;i
if(aa[i].x1>(aa[i].x2+aa[i].x3))
bb[k++]=aa[i];
for(i=0;i
for(j=i+1;j
if((bb[i].x1+bb[i].x3)>(bb[j].x1+bb[j].x3))
{
swap=bb[i];
bb[i]=bb[j];
bb[j]=swap;
}
returnk;
}
18题下列程序的功能是:将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现此功能,最后调用writeDat()函数所新序列输出到文件out.dat中。
jsvalue(inta[10][9])
{inti,j,k,n,temp;
intb[9]=0;
for(i=0;i
{temp=a[i][0];
k=8;n=0;
for(j=8,j>=0;j--)
{if(temp
if(temp>a[i][j])b[n++]=a[i][j];
if(temp==a[i][j])b[n]=temp;/*也可以b[k]=a[i][j];*/
}
for(j=0;j
{a[i][j]=b[j];
b[j]=0;}
}
}

16题下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。
最后调用函数writeDat()把结果输出到文件out.dat中。
intjsvalue(intbb[])
{
inti,j,k=0,g,s,b;
for(i=100;i
{
g=i%10;
s=i/10%10;
b=i/100;
if((i==(int)sqrt(i)*(int)sqrt(i))&&(g==s||s==b||b==g))
bb[k++]=i;
}
returnk;
}
20题某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中,请编制jsValue()函数来实现此功能,最后调用函数writeDat()把数组b[]中的值输出到out.dat文件中。
jsvalue()
{
inta1=1,a2=1,a12,sn,k=2;
sn=a1+a2;
while(1)
{a12=a1+2*a2;
if(sn=100)b[0]=k;
if(sn=1000)b[1]=k;
if(sn=10000){b[2]=k;break;}
sn=sn+a12;
a1=a2;
a2=a12;
k++;
}
}
36题请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
计算方差的公式如下:
N2
totfc=1/N∑(xx[i]-ave1)
i=1
设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。
原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)
intReadDat(void)
{
FILE*fp;
inti;
if((fp=fopen("in.dat","r"))==NULL)return1;
for(i=0;i
{fscanf(fp,"%d,",&xx[i]);
if(feof(fp))break;
}
fclose(fp);
return0;
}
voidCompute(void)
{
inti,yy[1000];
for(i=0;i
if(xx[i]%2)
{odd++;
ave1+=xx[i];
yy[odd-1]=xx[i];
}
else
{even++;
ave2+=xx[i];
}
ave1/=odd;
ave2/=even;
for(i=0;i
totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;
}
43、请编写函数countvalue(),它的功能是:求n以内(不包括n)同时能被3和7整数的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。
doublecountvalue(intn)
{
inti;
floats=0.0;
for(i=21;i
s+=i;
s=sqrt(s);
returns;
}
55、下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件所有的SIX与NINE的和SUM。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out15.dat中。其中S,I,X,N,E各代表一个十进制数字。
voidcountValue()
{
inti;
cnt=0;
sum=0;
for(i=1000;i
if(i/1000==i/10%10&&((2*i)/3)*3==(i+i))/*以N为准*/
{
cnt++;
sum+=i*5/3;
}
}
57、下列程序的功能是:利用发下所示的简单迭代方法求方程: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()把结果输出到
文件OUT17.DAT中。
floatcountValue()
{
floatx0,x1=0.0;
do
{x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=0.000001);
returnx1;
}
59、请编写函数voidcountvalue(int*a,int*n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,并通过n返回这些数的个数。
voidcountValue(int*a,int*n)
{
inti;
*n=0;
for(i=7;i
if((i%7==0||i%11==0)&&i%77!=0)
a[(*n)++]=i;
}
64、请编制函数READDAT()实现从文件IN.DAT中读取1000个十进制整数到数组XX中;再编制函数COMPUTE()分别计算出XX中奇数的个数ODD,偶数的个数EVEN,平均值`AVER以及方差TOTFE的值,最后调用函数WRITEDAT()把结果输出到OUT.DAT文件中.
intReadDat(void)
{
FILE*fp;
inti;
if((fp=fopen("in.dat","r"))==NULL)return1;
for(i=0;i
{fscanf(fp,"%d,",&xx[i]);
if(feof(fp))break;
}
fclose(fp);
return0;
}
voidCompute(void)
{
inti,yy[1000];
for(i=0;i
{aver+=xx[i];
if(xx[i]%2)
odd++;
else
even++;
}
aver/=(odd+even);
for(i=0;i
totfc+=(xx[i]-aver)*(xx[i]-aver)/(odd+even);
}
66、请编制函数READDAT()实现从文件IN.DAT中读取1000个十进制整数到数组XX中;再编制函数COMPUTE()分别计算出XX中偶数的个数EVEN,奇数的平均值`AVE1,偶数的平均值AVE2以所有偶数的方差TOTFC的值,最后调用函WRITEDAT()把结果输出到OUT.DAT文件中
intReadDat(void)
{
FILE*fp;
inti;
if((fp=fopen("in.dat","r"))==NULL)return1;
for(i=0;i
{fscanf(fp,"%d,",&xx[i]);
if(feof(fp))break;
}
fclose(fp);
return0;
}
voidCompute(void)
{
inti,yy[1000];
for(i=0;i
if(xx[i]%2)
{odd++;
ave1+=xx[i];
}
else
{even++;
ave2+=xx[i];
yy[even-1]=xx[i];
}
ave1/=odd;
ave2/=even;
for(i=0;i
totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;
}
78、下列程序的功能是:设A,B,C为三个不零的正整数,计算并输出下列不定方程组解的个数CNT以及满足此条件的所有A,B,C之和SUM。不定方程组为:A+B+C=13A-C=5
请编写函数COUNTVALUE()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM输出到文件OUT.DAT中.
voidcountvalue()
{
inta;
for(a=6;a
if(18-2*a>0)
{cnt++;
sum+=13;
}
}
086题下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数intjsValue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。
intjsValue(longn)
{
inti,aa[10],j=0,b=1;/*n为“long”型,n的三次方最多达到10位,所以定义为aa[10]*/
while(n)
{
aa[j++]=n%10;
n=n/10;
}
for(i=0;i
{
if(aa[i]!=aa[j-i-1])b=0;
}
returnb;
}
088题编写函数jsValue,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)最后调用函数writeDat()读取10个数据t,分别得出结果且把结果输出到文件out.dat中。
intjsvalue(intt)
{intf1=0,f2=1,fn;
fn=f1+f2;
while(fn
{f1=f2;
f2=fn;
fn=f1+f2;
}
returnfn;
}

21题函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数CharConvA(),其函数的功能是:以行为单位把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT10.DAT中。
voidCharConvA(void)
{
inti,j,strl;
charch;
for(i=0;i
{strl=strlen(xx[i]);
ch=xx[i][strl-1];
for(j=strl-1;j>0;j--)
{xx[i][j]>>=4;
xx[i][j]+=xx[i][j-1];
}
xx[i][0]+=ch;
}
}
23题函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT8.DAT中。
voidStrCharJR(void)
{
inti,j;
for(i=0;i
for(j=0;xx[i][j]!='?';j++)
xx[i][j]+=xx[i][j]>>4;
}
41、已知在文件in.dat中存有若干个(个数
voidcalvalue(void)
{
inti,data;
for(i=0;i
{if(!xx[i])break;
if(xx[i]>0)totnum++;
data=xx[i]>>1;
if(data%2==0)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
45、已知在文件in.dat中存有若干个(个数
voidcalvalue(void)
{
inti,data;
for(i=0;i
{if(!xx[i])break;
if(xx[i]>0)totnum++;
data=xx[i]>>1;
if(data%2)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
77、函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STRCHARJL(),其函数功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变.否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT7.DAT文件中.
voidStrCharJR(void)
{
inti,j;
for(i=0;i
for(j=0;xx[i][j]!='?';j++)
if(xx[i][j]32&&xx[i][j]
xx[i][j]+=xx[i][j]
}

24题下列程序的功能是:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a数组中。找出成绩最低的学生记录(假定最低成绩的记录是唯一的),通过形参返回。请编写函数mm(STUa[],STU*s)实现程序要求,最后调用函数reawriteDAT()把结果输出到文件out.dat中。
mmm(STUa[],STU*s)
{
inti;
s->s=a[0].s;
for(i=1;i
if(a[i].ss)
*s=a[i];
}
76、下列程序的功能是:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入A数组中。找出成绩最高的学生记录(假定最高成绩的记录中唯一的),通过形参返回。请考生编写函数MMM(STUA[],STU*S)实现程序的要求,最后调用函数READWRITEDAT()把结果输出到文件OUT.DAT中.
mmm(STUa[],STU*s)
{
inti;
s->s=a[0].s;
for(i=1;i
if(a[i].s>s->s)
*s=a[i];
}

25题函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。
voidStr0L(void)
{
inti,k;
char*p1,*p2;
chart[80],t1[80];
for(i=0;i
{p2=p1=strchr(xx[i],'?')-'?';
t[0]=t1[0]='?';
k=1;
while(k)
{
while(isalpha(*p1)==0&&p1!=xx[i]){p1--;p2=p1;}
while(isalpha(*p1)&&p1>=xx[i])p1--;
memcpy(t1,p1+1,p2-p1);
t1[p2-p1]=0;
strcat(t,t1);
strcat(t,"");
if(p1
}
strcpy(xx[i],t);
}
}
75、函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT5.DAT中.
voidStrOR(void)
{
inti;
char*p1,*p2,t[80];
for(i=0;i
{t[0]='?';
p2=xx[i];
while(*p2)
{if(*p2=='o')p1=p2;
p2++;
}
strcat(t,p1+1);
*p1='?';
strcat(t,xx[i]);
p1=xx[i];
p2=t;
while(*p2)
{if(*p2!='o')*p1++=*p2;
p2++;
}
*p1='?';
}
}

32题现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。
voidcountrs(void)
{
inti,j,count;
for(i=0;i
{count=0;
for(j=0;j
if(xx[i][j]=='1')
count++;
if(count
continue;
for(j=0;j
if(xx[i][j]=='1')yy[j]++;
}
}
68、现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个的选中情况,第二位表示第二个人的选中情况,依此类推;内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票.给定函数READDAT()的功能是把选票数据读入到字符串数组XX中.请编制函数COUNTRS()来统计每个人的选票数并把票数依次存入YY[0]到YY[9]中,最后调用函数WRITEDAT()把结果YY输出到OUT.DAT中.
voidcountrs(void)
{
inti,j;
for(i=0;i
{if(strcmp(xx[i],"1111111111")==0||strcmp(xx[i],"0000000000")==0)
continue;
for(j=0;j
if(xx[i][j]=='1')yy[j]++;
}
}
70、现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个的选中情况,第二位表示第二个人的选中情况,依此类推;内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时认为无效的选票.给定函数READDAT()的功能是把选票并把选票数据读入到字符串数组XX中.请编制函数COUNTRS()来统计每个人的选票数并把票数依次存入YY[0]到YY[9]中,最后调用函数WRITEDAT()把结果YY输出到OUT.DAT中.
voidcountrs(void)
{
inti,j,count;
for(i=0;i
{count=0;
for(j=0;j
if(xx[i][j]=='1')
count++;
if(count>5)
continue;
for(j=0;j
if(xx[i][j]=='1')yy[j]++;
}
}
082题在文件in.dat存放了10位选手参赛,6位评委给选手打分的数据。计算各位选手的得分规则是去掉一个最高分和一个最低分,最后得分是剩下分数的算术平均值。在下列程序中,函数readDat()是从文件df.dat中读取10位选手的评委打分数据并存入数组mark[10][6]中,要求编写函数jsValue()计算出每位选手的得分并依次存入数组score[10]中,最后调用函数writeDat()把数组score中的值输出到文件out.dat中。说明:第1位选手的得分存入score[0]中,第2位选手的得分存入score[1]中,依此类推。
jsValue()
{
inti,j;
floatmax,min,sum;
for(i=0;i
{
max=mark[10][0];
min=mark[10][0];
sum=mark[10][0];
for(j=1;j
{
if(mark[i][j]>max)max=mark[i][j];
if(mark[i][j]
sum+=mark[i][j];
}
score[i]=(sum-max-min)/4;
}
}

34题设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。
设n=100,c=1,m=10.
(1)将1到n个人的序号存入一维数组p中;
(2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
(3)重复第(2)步直至圈中只剩下p[1]为止。
voidJosegh(void)
{
inti,j,s1,w;
s1=s;
for(i=1;i
p[i-1]=i;
for(i=n;i>=2;i--)
{s1=(s1+m-1)%i;
if(s1==0)
s1=i;
w=p[s1-1];
for(j=s1;j
p[j-1]=p[j];
p[i-1]=w;
}
}

38、请编制函数readdat()实现从文件in.dat中读取100个十六进制数到字符串数组xx中;再编制函数h16to2(),将xx中的十六进制数转换成二进制数并把已转换的二进制数仍存放在字符串数组xx,最后调用函数writedat()把结果输出到out.dat文件中。
intReadDat(void)
{
FILE*fp;
inti,data;
charyy[20];
if((fp=fopen("in.dat","r"))==NULL)return1;
for(i=0;i
{fscanf(fp,"%x,",&data);
itoa(data,yy,16);
strcpy(xx[i],yy);
}
fclose(fp);
return0;
}
voidH16to2(void)
{
inti,data;
charyy[20];
for(i=0;i
{data=strtol(xx[i],NULL,16);
itoa(data,yy,2);
strcpy(xx[i],yy);
}
}
040题请编制函数ReadDat()实现从文件IN.DAT中读取100个十六进制整数到数组xx中;请编制函数H16To10().将xx中的十六进制数转换成十进制数并把已转换的十进制数仍存放在字符串数组xx,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
intReadDat(void)
{
FILE*fp;
inti,data;
charyy[20];
if((fp=fopen("in.dat","r"))==NULL)return1;
for(i=0;i
{fscanf(fp,"%x,",&data);
itoa(data,yy,16);
strcpy(xx[i],yy);
}
fclose(fp);
return0;
}
voidH16to10(void)
{
inti,data;
charyy[20];
for(i=0;i
{data=strtol(xx[i],NULL,16);
itoa(data,yy,10);
strcpy(xx[i],yy);
}
}
62、请编制函数READDAT()实现从文件IN.DAT中读取100个十六进制数到字符串数组xx中;再编制函数H16TO8(),将xx中的十六进制数转换成八进制数并把已转换的八进制数仍存放在字符串数组XX中,最后调用函数WRITEDAT()把结果输出到OUT.DAT文件中.
intReadDat(void)
{
FILE*fp;
inti,data;
charyy[20];
if((fp=fopen("in.dat","r"))==NULL)return1;
for(i=0;i
{fscanf(fp,"%x,",&data);
itoa(data,yy,16);
strcpy(xx[i],yy);
}
fclose(fp);
return0;
}
voidH16to8(void)
{
inti,data;
charyy[20];
for(i=0;i
{data=strtol(xx[i],NULL,16);
itoa(data,yy,8);
strcpy(xx[i],yy);
}
}

本文属作者原创,欢迎转载,但请表明出处:FROYO's Blog (www.izhuyue.com)

标签: 南开100题,计算机三级

已有 2 条评论

  1. ian

    计算机三级大纲变了 和以前的四级差不多了

    1. 要与时俱进啊,我这个落后了

评论已关闭