上机考试题库.docx
《上机考试题库.docx》由会员分享,可在线阅读,更多相关《上机考试题库.docx(110页珍藏版)》请在冰豆网上搜索。
上机考试题库
第1类按结构体成员筛选并排序
第1套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)>0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je>sell[j].je)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
第2套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)<0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
第3套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].dm,sell[j].dm)>0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je>sell[j].je)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
第4套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(sell[i].je==sell[j].je)
if(strcmp(sell[i].dm,sell[j].dm)<0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
第5套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)<0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je>sell[j].je)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
第6套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按金额从大到小进行排列,若金额相同,则按产品名称从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
{if(sell[i].je{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(sell[i].je==sell[j].je)
if(strcmp(sell[i].mc,sell[j].mc)>0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
}
第7套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
{if(strcmp(sell[i].dm,sell[j].dm)<0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(strcmp(sell[i].dm,sell[j].dm)==0
if(sell[i].je{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
}
第8套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
{if(strcmp(sell[i].mc,sell[j].mc)>0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(strcmp(sell[i].mc,sell[j].mc)==0
if(sell[i].je{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
}
第9套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
{if(sell[i].je>sell[j].je)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(sell[i].je==sell[j].je)
if(strcmp(sell[i].dm,sell[j].dm)<0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
}
第10套
已知在文件IN.DAT中存有100个产品销售的记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。
其中:
金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按金额从小到大进行排列,若金额相同,则产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
voidSortDat()
{inti,j;
PROtemp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
{if(sell[i].je>sell[j].je)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
elseif(sell[i].je==sell[j].je)
if(strcmp(sell[i].dm,sell[j].dm)>0)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
}
第2类数位分解后按数筛选统计并排序
第11套
已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中。
请编制函数jsValue(),其功能是:
求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT.DAT文件中。
例如:
6712,6+2=7+1,则该数满足条件,存入数组b中,且个数cnt=cnt+1.
8129,8+9≠1+2,则该数不满足条件,忽略。
注意:
部分源程序存放在PROG1.C中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsValue()
{inti,j;
inta1,a2,a3,a4;
inttemp;
for(i=0;i<300;i++)
{a4=a[i]/1000;
a3=a[i]%1000/100;
a2=a[i]%100/10;
a1=a[i]%10;
if(a4+a1==a3+a2)
{b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
第12套
已知数据文件IN.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:
如果4位数各位上的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位的按从大到小顺序存入数组b中。
最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT.DAT文件。
注意:
部分源程序存放在PROG1.C中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsVal()
{inti,j;
inta1,a2,a3,a4;
inttemp;
for(i=0;i<200;i++)
{a4=a[i]/1000;
a3=a[i]%1000/100;
a2=a[i]%100/10;
a1=a[i]%10;
if(a4%2!
=0&&a3%2!
=0&&a2%2!
=0&&a1%2!
=0)
{b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
第13套
已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中。
请编制一函数jsValue(),其功能是:
求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从大到小的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT.DAT文件中。
例如:
7153,7+1=5+3,则该数满足条件,存入数组b中,且个数cnt=cnt+1.
8129,8+9≠1+2,则该数不满足条件,忽略。
注意:
部分源程序存放在PROG1.C中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsValue()
{inti,j;
inta1,a2,a3,a4;
inttemp;
for(i=0;i<300;i++)
{a4=a[i]/1000;
a3=a[i]%1000/100;
a2=a[i]%100/10;
a1=a[i]%10;
if(a4+a3==a2+a1)
{b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
第14套
已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat()把这两个文件中的数存入数组a和b中,请考生编制一个函数jsVal(),实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数组c中,再对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writeDat()把结果c输出到文件OUT.DAT中。
组成新数的条件:
如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组c中。
例如:
a:
1233241521
b:
3235171518
c:
61615394
排序后:
c:
53946161
注意:
部分源程序存在文件PROG1.C文件中。
程序中已定义:
a[100]、b[100]和c[100]。
请勿改动数据文件IN1.DAT和IN2.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsVal()
{inti,j;
inttemp;
for(i=0;i<=MAX-1;i++)
if((a[i]%2==0)&&(b[i]%2!
=0))||((a[i]%2!
=0)&&(b[i]%2==0)))
{
c[i]=(a[i]<<8)+b[i];
cnt++;
}
for(i=0;ifor(j=0;jif(c[j]>c[j+1])
{temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
}
}
第15套
已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中。
请编制一函数jsValue(),其功能是:
求出千位数上的数减百位数上的数减个位数上的数大于零的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT.DAT文件中。
例如:
9123,9-1-2-3>0,则该数满足条件,存入数组b中,且个数cnt=cnt+1.
9812,9-8-1-2<0,则该数不满足条件,忽略。
注意:
部分源程序存放在PROG1.C中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsValue()
{inti,j;
inta1,a2,a3,a4;
inttemp;
for(i=0;i<300;i++)
{a4=a[i]/1000;
a3=a[i]%1000/100;
a2=a[i]%100/10;
a1=a[i]%10;
if(a4-a3-a2-a1>0)
{b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j])