考前押题80分押题是什么意思?

上机考试习题集 _百度百科
特色百科用户权威合作手机百科 收藏 查看&上机考试习题集
本书提供了三级C语言机试试题库本书配套光盘中有3部分内容本书所有习题的详尽答案本书所有习题的源文件上机考试的全真模拟环境读者可以利用配套光盘进行考前训练类&&&&别工具书开&&&&本32
本书所有题目均进行了测试保证能够在实际环境中正常运行
本书针对参加的考生同时也可作为大专院校成人高等教育以及相关培训班的练习题和考试题使用
上机试题总结
100个产品销售记录排序此类共10题
已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售
记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价
dj(), 数量sl(整型), 金额je()五部分组成 其中:
金额=单价*数量计算得出函数ReadDat( )读取这100个销售记录
并存入结构sell中请编制函数SortDat( ), 其功能要求:
按金额从小到大进行排列, 若金额相等, 则按产品代码从小到大
进行排列, 最终排列结果仍存入结构sell中最后main( )函
数调用函数WriteDat()把结果输出到文件OUT1.DAT中
注意: 部分源程序存放在PROG1.C中
请勿改动main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &mem.h&
#include &string.h&
#include &conio.h&
#include &stdlib.h&
#define MAX 100
typedef struct {
char dm[5] ; /* 产品代码 */
char mc[11] ; /* 产品名称 */
/* 单价 */
/* 数量 */
/* 金额 */
PRO sell[MAX] ;
void ReadDat() ;
void WriteDat() ;
void SortDat()
int i,j,k;
for(i=0; i & MAX-1; i++)
for(j=i+1; j & MAX; j++)
if((sell[k].je&sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm, sell[j].dm)&0))
{ tt=sell[k]; sell[k]=sell; sell=}
void main()
memset(sell, 0, sizeof(sell)) ;
ReadDat() ;
SortDat() ;
WriteDat() ;
void ReadDat()
char str[80], ch[11] ;
fp = fopen(&IN.DAT&, &r&) ;
for(i = 0 ; i & 100 ; i++) {
fgets(str, 80, fp) ;
memcpy(sell.dm, str, 4) ;
memcpy(sell.mc, str + 4, 10) ;
memcpy(ch, str + 14, 4) ; ch[4] = 0 ;
sell.dj = atoi(ch) ;
memcpy(ch, str + 18, 5) ; ch[5] = 0 ;
sell.sl = atoi(ch) ;
sell.je = (long)sell.dj * sell.
fclose(fp) ;
void WriteDat()
fp = fopen(&OUT1.DAT&, &w&) ;
for(i = 0 ; i & 100 ; i++) {
fprintf(fp, &%s %s %4d %5d %10ld\n&, sell.dm, sell.mc, sell.dj, sell.sl, sell.je) ;
fclose(fp) ;
100个产品销售记录排序其余9题说明
1) in.dat 内容完全相同
2) 程序也基本雷同仅排序的要求不一样
3) 考生应熟悉 strcmp() 函数否则有的题相当不好处理
按金额从小到大进行排列, 若金额相等, 则按产品代码从大到小
if(sell[k].je&sell[j].je|| (sell[k].je==sell[j].je) &&
(strcmp(sell[k].dm, sell[j].dm) & 0))
按金额从大到小进行排列, 若金额相等, 则按产品代码从小到大
if((sell[k].je &
sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,
sell[j].dm)&0))
按金额从大到小进行排列, 若金额相等, 则按产品代码从大到小
if((sell[k].je &
sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)&0))
按产品名称从小到大进行排列, 若产品名称相同, 则按金额从小
到大进行排列
if((strcmp(sell[k].mc,
sell[j].mc)&0)||(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].je&sell[j].je))
按产品名称从小到大进行排列, 若产品名称相同, 则按金额从大
到小进行排列
if(strcmp(sell.mc, sell[j].mc)&0 || (strcmp(sell.mc,
sell[j].mc)==0)&&(sell.je & sell[j].je))
按产品名称从大到小进行排列, 若产品名称相同, 则按金额从小
到大进行排列
if((strcmp(sell[k].mc, sell[j].mc) & 0) ||
(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].je&sell[j].je))
按产品名称从大到小进行排列, 若产品名称相同, 则按金额从大
到小进行排列
if((strcmp(sell[k].mc, sell[j].mc) & 0)|| (strcmp(sell[k].mc,
sell[j].mc)==0)&&(sell[k].je & sell[j].je))
按产品代码从小到大进行排列, 若产品代码相同, 则按金额从小
到大进行排列
if((strcmp(sell[k].dm,
sell[j].dm)&0)||(strcmp(sell[k].dm,sell[j].dm)==0)&&(sell[k].je&sell[j].je
已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售
记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价
dj(整型), 数量sl(整型), 金额je(长整型)五部分组成 其中:
金额=单价*数量计算得出函数ReadDat( )读取这100个销售记
录并存入结构数组sell中请编制函数SortDat( ), 其功能要求:
按产品代码从大到小进行排列, 若产品代码相同, 则按金额从大
到小进行排列, 最终排列结果仍存入结构数组sell中最后main()
函数调用函数WriteDat()把结果输出到文件OUT10.DAT中
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &mem.h&
#include &string.h&
#include &conio.h&
#include &stdlib.h&
#define MAX 100
typedef struct {
char dm[5] ; /* 产品代码 */
char mc[11] ; /* 产品名称 */
/* 单价 */
/* 数量 */
/* 金额 */
PRO sell[MAX] ;
void ReadDat() ;
void WriteDat() ;
void SortDat()
for(i=0; i & MAX-1; i++)
for(j=i+1; j & MAX; j++)
{ if(strcmp(sell.dm, sell[j].dm) & 0)
{ tt=sell; sell=sell[j]; sell[j]=}
if((strcmp(sell.dm, sell[j].dm)==0)&&(sell.je & sell[j].je))
{ tt=sell; sell=sell[j]; sell[j]=}
void main()
memset(sell, 0, sizeof(sell)) ;
ReadDat() ;
SortDat() ;
WriteDat() ;
void ReadDat()
char str[80], ch[11] ;
fp = fopen(&IN.DAT&, &r&) ;
for(i = 0 ; i & 100 ; i++) {
fgets(str, 80, fp) ;
memcpy(sell.dm, str, 4) ;
memcpy(sell.mc, str + 4, 10) ;
memcpy(ch, str + 14, 4) ; ch[4] = 0 ;
sell.dj = atoi(ch) ;
memcpy(ch, str + 18, 5) ; ch[5] = 0 ;
sell.sl = atoi(ch) ;
sell.je = (long)sell.dj * sell.
fclose(fp) ;
void WriteDat()
fp = fopen(&OUT10.DAT&, &w&) ;
for(i = 0 ; i & 100 ; i++) {
fprintf(fp, &%s %s %4d %5d %10ld\n&, sell.dm, sell.mc, sell.dj, sell.sl, sell.je) ;
fclose(fp) ;
300个四位数问题(此类共10题)
本类10题中五题产生数组B并对B按一定要求排序
其余五题是求平均值我把它们分成两组五题来讨论
以下为产生数组B之题一
已知数据文件IN.DAT中存有300个四位数, 并已调用读函数
readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功
能是: 求出个位数上的数减千位数上的数减百位数上的数减十位
数上的数大于零的个数cnt 再把所有满足此条件的四位数依次
存入数组b中, 然后对数组b的四位数按从大到小的顺序进行排序
最后main( )函数调用写函数writeDat()把数组b中的数输出到文
例如: -2-3&0, 则该数满足条件存入数组b中, 且
个数cnt=cnt+1
-1-2&0, 则该数不满足条件忽略
注意: 部分源程序存在文件PROG1.C文件中
程序中已定义数组: a[300], b[300], 已定义变量: cnt
请勿改动数据文件IN.DAT中的任何数据主函数main()读
函数readDat()和写函数writeDat()的内容
#include &stdio.h&
int a[300], b[300], cnt=0 ;
int i,j,k,t;
for(i=0; i & 300; i++)
if(a%10-a/1000-a/100%10-a/10%10&0)
b[cnt++]=a;
for(i=0; i & cnt-1; i++)
for(j=i+1; j & j++)
if(b[k] & b[j]) k=j;
if(k!=i) { t=b[k]; b[k]=b; b=t; }
readDat() ;
jsvalue() ;
writeDat() ;
printf(&cnt=%d\n&, cnt) ;
for(i = 0 ; i & i++) printf(&b[%d]=%d\n&, i, b) ;
fp = fopen(&in.dat&,&r&) ;
for(i = 0 ; i & 300 ; i++) fscanf(fp, &%d,&, &a) ;
fclose(fp) ;
writeDat()
fp = fopen(&out.dat&,&w&) ;
fprintf(fp, &%d\n&, cnt) ;
for(i = 0 ; i & i++) fprintf(fp, &%d\n&, b) ;
fclose(fp) ;
求出所有这些四位数是素数的个数cnt 再把所有满足此
条件的四位数依次存入数组b中, 然后对数组b的四位数按从小到
大的顺序进行排序
求出千位数上的数减百位数上的数减十位数上的数减个位
数上的数大于零的个数cnt 再把所有满足此条件的四位数依次
存入数组b中, 然后对数组b的四位数按从小到大的顺序进行排序
求出千位数上的数加百位数上的数等于十位数上的数加个
位数上的数的个数cnt 再把所有满足此条件的四位数依次存入
数组b中, 然后对数组b的四位数按从大到小的顺序进行排序
求满足条件的数的个数平均值……
求满足条件的数的个数平均值及不满足条件的数的平均
值等此类也是五题本处仅给出一个全题其余题只给出不同
已知数据文件IN.DAT中存有300个四位数, 并已调用读函数
readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功
能是: 求出千位数上的数减百位数上的数减十位数上的数减个位
数上的数大于零的个数cnt 再求出所有满足此条件的四位数平
均值pjz1, 以及所有不满足此条件的四位数平均值pjz2最后
main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到
OUT.DAT文件
例如: -2-3&0, 则该数满足条件计算平均值pjz1,
且个数cnt=cnt+1
-1-2&0, 则该数不满足条件计算平均值pjz2
注意: 部分源程序存在文件PROG1.C文件中
程序中已定义数组: a[300], 已定义变量: cnt,pjz1,pjz2
请勿改动数据文件IN.DAT中的任何数据主函数main()读
函数readDat()和写函数writeDat()的内容
int a[300], cnt=0 ;
double pjz1=0.0, pjz2=0.0 ;
for(i=0; i & 300; i++)
if(a/1000-a/100%10-a/10%10-a%10&0)
{ cnt++; pjz1+=a; }
else pjz2+=a;
if(cnt) pjz1/=
if(cnt&300) pjz2/=300-
readDat() ;
jsvalue() ;
writeDat() ;
printf(&cnt=%d\n满足条件的平均值pzj1=%7.2lf\n不满足条件的平均值pzj2=%7.2lf\n&, cnt,pjz1,pjz2);
fp = fopen(&in.dat&,&r&) ;
for(i = 0 ; i & 300 ; i++) fscanf(fp, &%d,&, &a) ;
fclose(fp) ;
writeDat()
fp = fopen(&out.dat&,&w&) ;
fprintf(fp, &%d\n%7.2lf\n%7.2lf\n&, cnt, pjz1, pjz2) ;
fclose(fp) ;
满足条件数的平均数……四题之说明
求出千位数上的数加百位数上的数等于十位数上的数加个
位数上的数的个数cnt 再求出所有满足此条件的四位数平均值
pjz1, 以及所有不满足此条件的四位数平均值pjz2
求出个位数上的数减千位数上的数减百位数上的数减十位
数上的数大于零的个数cnt 再求出所有满足此条件的四位数平
均值pjz1, 以及所有不满足此条件的四位数平均值pjz2
求出所有这些四位数是素数的个数cnt 再求出所有满足
此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平
求出千位数上的数加个位数上的数等于百位数上的数加十
位数上的数的个数cnt 再求出所有满足此条件的四位数平均值
pjz1, 以及所有不满足此条件的四位数平均值pjz2
200个四位数(此类共10题)
此部分题与300个数的题有相似之处
已知数据文件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 &stdio.h&
#define MAX 200
int a[MAX], b[MAX], cnt = 0 ;
void jsVal()
int i,j,k,A,B,C,D;
for(i=0; i & MAX; i++)
{ A=a/1000; B=a/10%10; C=a%10; D=a/100%10;
if(A&&C&&(B==0)&&(D%2)&&(10*A&10*C+D))
b[cnt++]=a;
for(i=0; i & cnt-1; i++)
for(j=i+1; j & j++)
if(b[k] & b[j]) k=j;
if(k!=i) {A=b[k]; b[k]=b; b=A;}
void readDat()
fp = fopen(&in.dat&, &r&) ;
for(i = 0 ; i & MAX ; i++) fscanf(fp, &%d&, &a) ;
fclose(fp) ;
void main()
readDat() ;
printf(&满足条件的数=%d\n&, cnt) ;
for(i = 0 ; i & i++) printf(&%d &, b) ;
printf(&\n&) ;
writeDat() ;
writeDat()
fp = fopen(&out.dat&, &w&) ;
fprintf(fp, &%d\n&, cnt) ;
for(i = 0 ; i & i++) fprintf(fp, &%d\n&, b) ;
fclose(fp) ;
200个四位数题之其余九题说明
把千位数字和十位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的千位数字,新十位数的个位数字是
原四位数的十位数字), 以及把个位数字和百位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的个位数字, 新十
位数的个位数字是原四位数的百位数字), 如果新组成的两个十
位数均是素数且新数的十位数字均不为零,则将满足此条件的四
位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的
四位数的个数cnt
把个位数字和千位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的个位数字,新十位数的个位数字是
原四位数的千位数字), 以及把百位数字和十位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的百位数字, 新十
位数的个位数字是原四位数的十位数字), 如果新组成的两个十
位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一
个数能被17整除,同时两个新数的十位数字均不为零, 则将满足
此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足
上述条件的四位数的个数cnt
)把这些数存入数组a中,请考生编制一函数jsVal(),其
功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新
十位数的十位数字是原四位数的千位数字,新十位数的个位数字
是原四位数的十位数字), 以及把个位数字和百位数字组成另一
个新的十位数cd (新十位数的十位数字是原四位数的个位数字,
新十位数的个位数字是原四位数的百位数字), 如果新组成的两
个十位数ab-cd&=10且ab-cd&=20且两个数均是偶数,同时两个新
数的十位数字均不为零,则将满足此条件的四位数按从大到小的
顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt
如果四位数各位上的数字均是0或2或4或6或8, 则统计
出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存
把千位数字和个位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的千位数字,新十位数的个位数字是
原四位数的个位数字), 以及把百位数字和十位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的百位数字, 新十
位数的个位数字是原四位数的十位数字), 如果新组成的两个十
位数均是奇数并且两个十位数中至少有一个数能被5整除, 同时
两个新数的十位数字均不为零,则将满足此条件的四位数按从大
到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个
把个位数字和千位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的个位数字,新十位数的个位数字是
原四位数的千位数字), 以及把百位数字和十位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的百位数字, 新十
位数的个位数字是原四位数的十位数字), 如果新组成的两个十
位数均是偶数并且两个十位数中至少有一个数能被9整除, 同时
两个新数的十位数字均不为零,则将满足此条件的四位数按从大
到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个
把千位数字和十位数字重新组成一个新的十位数ab(新
十位数的十位数字是原四位数的千位数字,新十位数的个位数字
是原四位数的十位数字), 以及把个位数字和百位数字组成另一
个新的十位数cd (新十位数的十位数字是原四位数的个位数字,
新十位数的个位数字是原四位数的百位数字), 如果新组成的两
个十位数ab 同时两个新数的十位数字均不为零,则将满足此条件的四位数按
从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数
如果四位数各位上的数字均是奇数,则统计出满足此条
件的个数cnt并把这些四位数按从大到小的顺序存入数组b中
把千位数字和十位数字重新组成一个新的十位数ab(新
十位数的十位数字是原四位数的千位数字,新十位数的个位数字
是原四位数的十位数字), 以及把个位数字和百位数字组成另一
个新的十位数cd (新十位数的十位数字是原四位数的个位数字,
新十位数的个位数字是原四位数的百位数字), 如果新组成的两
个十位数ab-cd&=0且ab-cd&=10且两个数均是奇数, 同时两个新
数的十位数字均不为零,则将满足此条件的四位数按从大到小的
顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt
小于200个四位数之一(共四题)
已知在文件IN.DAT中存有若干个(个数&200)四位数字的正整
数, 函数ReadDat( )读取这若干个正整数并存入数组xx中请编
制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个
正整数totN 2.求出这些数中的各位数字之和是奇数的数的个
数totCnt, 以及满足此条件的这些数的算术平均值totPjz最后
main( )函数调用函数WriteDat()把所求的结果输出到OUT.DAT文
注意: 部分源程序存放在PROG1.C中
请勿改动数据文件IN.DAT中的任何数据主函数main()读
数据函数ReadDat()和输出数据函数WriteDat()的内容
#include &stdio.h&
#include &conio.h&
#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)
while(xx[totNum])
{ if((xx[totNum]/1000+xx[totNum]/100%10+xx[totNum]/10%10+xx[totNum])%2)
{ totCnt++; totPjz+=xx[totNum]; }
if(totCnt) totPjz/=totC
void main()
clrscr() ;
for(i = 0 ; i & MAXNUM ; i++) xx= 0 ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\007\n&) ;
Calvalue() ;
printf(&文件IN.DAT中共有正整数=%d个\n&, totNum) ;
printf(&符合条件的正整数的个数=%d个\n&, totCnt) ;
printf(&平均值=%.2lf\n&, totPjz) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&in.dat&, &r&)) == NULL) return 1 ;
while(!feof(fp)) {
fscanf(fp, &%d,&, &xx[i++]) ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
fp = fopen(&OUT.DAT&, &w&) ;
fprintf(fp, &%d\n%d\n%.2lf\n&, totNum, totCnt, totPjz) ;
fclose(fp) ;
小于200个四位数之二(共四题)
已知在文件IN.DAT中存有若干个(个数&200)四位数字的正整
数, 函数ReadDat( )读取这若干个正整数并存入数组xx中请编
制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个
正整数totN 2.求出这些数中的各位数字之和是偶数的数的个
数totCnt, 以及满足此条件的这些数的算术平均值totPjz最后
main( )函数调用函数WriteDat()把所求的结果输出到OUT.DAT文
注意: 部分源程序存放在PROG1.C中
请勿改动数据文件IN.DAT中的任何数据主函数main()读
数据函数ReadDat()和输出数据函数WriteDat()的内容
#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)
for(; xx[totNum]; totNum++)
if((xx[totNum]/1000+xx[totNum]/100%10+xx[totNum]/10%10+xx[totNum]%10)%2==0)
{ totCnt++; totPjz+=xx[totNum];}
if(totCnt) totPjz/=totC
void main()
clrscr() ;
for(i = 0 ; i & MAXNUM ; i++) xx= 0 ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\007\n&) ;
Calvalue() ;
printf(&文件IN.DAT中共有正整数=%d个\n&, totNum) ;
printf(&符合条件的正整数的个数=%d个\n&, totCnt) ;
printf(&平均值=%.2lf\n&, totPjz) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&in.dat&, &r&)) == NULL) return 1 ;
while(!feof(fp)) {
fscanf(fp, &%d,&, &xx[i++]) ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
fp = fopen(&OUT.DAT&, &w&) ;
fprintf(fp, &%d\n%d\n%.2lf\n&, totNum, totCnt, totPjz) ;
fclose(fp) ;
200个四位数之三(共四题)
已知在文件IN.DAT中存有若干个(个数&200)四位数字的正整
数, 函数ReadDat( )读取这若干个正整数并存入数组xx中请编
制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个
正整数totN 2. 求这些数右移1位后, 产生的新数是奇数的数
的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平
均值totPjz最后main()函数调用函数WriteDat()把所求的结果
输出到文件OUT.DAT中
注意: 部分源程序存放在PROG1.C中
请勿改动数据文件IN.DAT中的任何数据主函数main()读
数据函数ReadDat()和输出数据函数WriteDat()的内容
#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)
for(; xx[totNum]; totNum++)
if((xx[totNum]&&1)%2)
{ totCnt++; totPjz+=xx[totNum];}
if(totCnt) totPjz/=totC
void main()
clrscr() ;
for(i = 0 ; i & MAXNUM ; i++) xx= 0 ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\007\n&) ;
Calvalue() ;
printf(&文件IN.DAT中共有正整数=%d个\n&, totNum) ;
printf(&符合条件的正整数的个数=%d个\n&, totCnt) ;
printf(&平均值=%.2lf\n&, totPjz) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&in.dat&, &r&)) == NULL) return 1 ;
while(!feof(fp)) {
fscanf(fp, &%d,&, &xx[i++]) ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
fp = fopen(&OUT.DAT&, &w&) ;
fprintf(fp, &%d\n%d\n%.2lf\n&, totNum, totCnt, totPjz) ;
fclose(fp) ;
小于200个四位数之四(共四题)
已知在文件IN.DAT中存有若干个(个数&200)四位数字的正整
数, 函数ReadDat( )读取这若干个正整数并存入数组xx中请编
制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个
正整数totN 2. 求这些数右移1位后, 产生的新数是偶数的数
的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平
均值totPjz最后main()函数调用函数WriteDat()把所求的结果
输出到文件OUT.DAT中
注意: 部分源程序存放在PROG1.C中
请勿改动数据文件IN.DAT中的任何数据主函数main()读
数据函数ReadDat()和输出数据函数WriteDat()的内容
#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)
for(; xx[totNum]&0; totNum++)
if((xx[totNum]&&1)%2==0)
{ totCnt++; totPjz+=xx[totNum]; }
if(totCnt) totPjz/=totC
void main()
clrscr() ;
for(i = 0 ; i & MAXNUM ; i++) xx= 0 ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\007\n&) ;
Calvalue() ;
printf(&文件IN.DAT中共有正整数=%d个\n&, totNum) ;
printf(&符合条件的正整数的个数=%d个\n&, totCnt) ;
printf(&平均值=%.2lf\n&, totPjz) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&in.dat&, &r&)) == NULL) return 1 ;
while(!feof(fp)) {
fscanf(fp, &%d,&, &xx[i++]) ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
fp = fopen(&OUT.DAT&, &w&) ;
fprintf(fp, &%d\n%d\n%.2lf\n&, totNum, totCnt, totPjz) ;
fclose(fp) ;
英文文章字符串处理共10题
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数SortCharD( ), 其函数的功能是: 以
行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行
重新存入字符串数组xx中最后main()函数调用函数WriteDat()把
结果xx输出到文件OUT2.DAT中
例: 原文: dAe,BfC.
结果: fedCBA.,
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &string.h&
#include &conio.h&
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void SortCharD(void)
int i,j,k,m,n;
for(i=0; i & i++)
{ j=strlen(xx);
for(m=0; m & j-1; m++)
for(n=m+1; n & n++)
if(xx[k] & xx[n]) k=n;
{ ch=xx[k]; xx[k]=xx[m]; xx[m]= }
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
SortCharD() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT2.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之二
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入
到字符串数组xx中; 请编制函数ConvertCharA(), 其函数的功能
是: 以行为单位把字符串中的所有小写字母改写成该字母的下一
个字母, 如果是字母z, 则改写成字母a大写字母和其它字符保
持不变把已处理的字符串仍按行重新存入字符串数组xx中最
后main()函数调用函数WriteDat()把结果xx输出到文件OUT3.DAT
例: 原文: Adb.Bcdza
结果: Aec.Bdeab
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void ConvertCharA(void)
for(i=0; i & i++)
for(j=0; j & strlen(xx); j++)
if(xx[j]=='z') xx[j]='a';
else if((xx[j]&='a')&&(xx[j]&'z')) xx[j]++;
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
ConvertCharA() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT3.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之三
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数SortCharA( ), 其函数的功能是: 以
行为单位对字符按从小到大的顺序进行排序, 排序后的结果仍按行
重新存入字符串数组xx中最后main()函数调用函数WriteDat()把
结果xx输出到文件OUT1.DAT中
例: 原文: dAe,BfC.
结果: ,.ABCdef
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void SortCharA(void)
int i,j,k,m,n;
for(i=0; i & i++)
{ j=strlen(xx);
for(m=0; m & j-1; m++)
for(n=m+1; n & n++)
if(xx[k] & xx[n]) k=n;
{ ch=xx[k]; xx[k]=xx[m]; xx[m]= }
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
SortCharA() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT1.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之四
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数StrCharJL( ), 其函数的功能是: 以
行为单位把字符串中的所有字符的ASCII值左移4位, 如果左移后,
其字符的ASCII值小于等于32或大于100, 则原字符保持不变, 否则
就把左移后的字符ASCII值再加上原字符的ASCII值, 得到新的字符
仍存入原字符串对应的位置上之后把已处理的字符串仍按行重新
存入字符串数组xx中最后main()函数调用函数WriteDat()把结果
xx输出到OUT7.DAT文件中
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrCharJL(void)
/****注此题的关键是定义 char m 记得往年的考试类似题可以不必定义
如果要定义的话则必须定义为 int 结果才能正确看来理解出题
者的意图是机试的难点之一 ****/
for(i=0; i & i++)
for(j=0; j & strlen(xx); j++)
{ m=xx[j]&&4;
if((m&32)&&(m&=100))
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
StrCharJL() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT7.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之五
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数StrCharJR( ), 其函数的功能是: 以
行为单位把字符串中的所有字符的ASCII值右移4位, 然后把右移后
的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字
符串对应的位置上之后把已处理的字符串仍按行重新存入字符串
数组xx中最后main()函数调用函数WriteDat()把结果xx输出到文
件OUT8.DAT中
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrCharJR(void)
for(i=0; i
for(j=0; j
xx[j]+=xx[j]&&4;
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
StrCharJR() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT8.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之六
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数StrOL( ), 其函数的功能是: 以行为
单位对行中以空格或标点符号为分隔的所有单词进行倒排同时去
除标点符号之后把已处理的字符串(应不含标点符号)仍按行重新
存入字符串数组xx中最后main()函数调用函数WriteDat()把结果
xx输出到文件OUT6.DAT中
例如: 原文: You He Me
I am a student.
结果: Me He You
student a am I
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &string.h&
#include &conio.h&
#include &ctype.h&
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrOL(void)
int i,j,k,m,n,
char yy[80];
for(i=0; i & i++)
{ ll=strlen(xx); k=n=0;
for(j=ll-1; j&=0; j--)
{ if(isalpha(xx[j])) k++;
{ for(m=1; m&=k; m++)
yy[n++]=xx[j+m];
if(xx[j]==' ') yy[n++]=' ';
for(m=1; m&=k; m++)
yy[n++]=xx[j+m];
/* 上面两行处理每行的第一个单词
如果漏写结果显然不正确但并不影响得分 */
strcpy(xx,yy);
/* 标准答案与此法结果相比每行后面多一个空格 */
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT6.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之七
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入
到字符串数组xx中; 请编制函数ConvertCharD(), 其函数的功能
是: 以行为单位把字符串中的所有小写字母改写成该字母的上一
个字母, 如果是字母a, 则改写成字母z大写字母和其它字符保
持不变把已处理的字符串仍按行重新存入字符串数组xx中最
后main()函数调用函数WriteDat()把结果xx输出到文件OUT4.DAT
例: 原文: Adb.Bcdza
结果: Aca.Bbcyz
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &string.h&
#include &conio.h&
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void ConvertCharD(void)
for(i=0; i & i++)
for(j=0; j & strlen(xx); j++)
if(xx[j]=='a') xx[j]='z';
else if(islower(xx[j])) xx[j]-=1;
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
ConvertCharD() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT4.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之八
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数CharConvA( ), 其函数的功能是: 以
行为单位把字符串中的最后一个字符的ASCII值右移4位后加最后第
二个字符的ASCII值, 得到最后一个新的字符, 最后第二个字符的
ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新
的字符, 以此类推一直处理到第二个字符, 第一个字符的ASCII值
加原最后一个字符的ASCII值, 得到第一个新的字符, 得到的新字
符分别存放在原字符串对应的位置上之后把已处理的字符串仍按
行重新存入字符串数组xx中最后main()函数调用函数WriteDat()
把结果xx输出到文件OUT10.DAT中
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &string.h&
#include &conio.h&
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void CharConvA(void)
for(i=0; i & i++)
{ ll=strlen(xx); ch=xx[ll-1];
for(j=ll-1; j--)
xx[j]=(xx[j]&&4)+xx[j-1];
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
CharConvA() ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT10.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之九
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数StrOR( ), 其函数的功能是: 以行为
单位依次把字符串中所有小写字母o 左边的字符串内容移到该串的
右边存放, 然后并把小写字母o删除,余下的字符串内容移到已处理
字符串的左边存放之后把已处理的字符串仍按行重新存入字符串
数组xx中最后main()函数调用函数WriteDat()把结果xx输出到文
件OUT5.DAT中
例如: 原文: You can create an index on any field.
you have the correct record.
结果: n any field. Yu can create an index
rd. yu have the crrect rec
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &string.h&
#include &conio.h&
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrOR(void)
int i,j; char yy[80],*p;
for(i=0; i
for(j=0; j
if(xx[j]=='o')
{ p=&xx[j+1];
strcpy(yy,p);
strncat(yy,xx,j);
strcpy(xx,yy);
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT5.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
字符串处理之10
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数ChA( ), 其函数的功能是: 以行为单
位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值, 得
到第一个新的字符, 第二个字符的ASCII值加第三个字符的ASCII值,
得到第二个新的字符, 以此类推一直处理到最后第二个字符, 最后
一个字符的ASCII值加原第一个字符的ASCII值, 得到最后一个新的
字符, 得到的新字符分别存放在原字符串对应的位置上之后把已
处理的字符串逆转后仍按行重新存入字符串数组xx中最后main()
函数调用函数WriteDat()把结果xx输出到文件OUT9.DAT中
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格
注意: 部分源程序存放在PROG1.C中
请勿改动主函数main( )读数据函数ReadDat()和输出数据函
数WriteDat()的内容
#include &stdio.h&
#include &string.h&
#include &conio.h&
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void ChA(void)
for(i=0; i & i++)
{ ch=xx[0];
for(j=0; j & strlen(xx)-1; j++)
xx[j]+=xx[j+1];
strrev(xx);
void main()
clrscr() ;
if(ReadDat()) {
printf(&数据文件IN.DAT不能打开!\n\007&) ;
WriteDat() ;
int ReadDat(void)
int i = 0 ;
if((fp = fopen(&IN.DAT&, &r&)) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
fclose(fp) ;
return 0 ;
void WriteDat(void)
clrscr() ;
fp = fopen(&OUT9.DAT&, &w&) ;
for(i = 0 ; i & i++) {
printf(&%s\n&, xx) ;
fprintf(fp, &%s\n&, xx) ;
fclose(fp) ;
新手上路我有疑问投诉建议参考资料 查看}

我要回帖

更多关于 apec是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信