计算机三级网络的技术上机道题答案文档格式.docx
《计算机三级网络的技术上机道题答案文档格式.docx》由会员分享,可在线阅读,更多相关《计算机三级网络的技术上机道题答案文档格式.docx(86页珍藏版)》请在冰豆网上搜索。
}
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·
【考点分析】本题考查对结构体数组的排序,可以用选择法或起泡法来实现。
考查的知识点包括:
【解题思路】此题属于销售记录类题型;
此类题型主要考查对结构体数组的排序。
解题时,应注意3个关键点:
关键点1本题为按产品名称从大到小排序;
关键点2本题为如果产品名称相同;
关键点3本题为按金额从大到小排列。
本题在每次记录比较时,首先用字符串比较函数strcmp比较两个产品的名称,如果返回的值小于0,则这两个产品进行数据交换;
如果返回值等于0,再比较两个产品的金额,如果前一个产品的金额小于后一个产品的金额,则这两个产品进行数据交换。
if(strcmp(sell[i].mc,sell[j].mc)<
0)/*按产品名称从大到小进行排列*/
elseif(strcmp(sell[i].mc,sell[j].mc)==0)/*若产品名称相同,则按金额从大到小进行排列*/
if(sell[i].je<
sell[j].je)
3·
【参考答案】
/*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/
if(strcmp(sell[i].dm,sell[j].dm)>
0)/*按产品代码从小到大进行排列*/
elseif(strcmp(sell[i].dm,sell[j].dm)==0)/*若产品代码相同,则按金额从小到大进行排列*/
4·
if(sell[i].je<
sell[j].je)/*按金额从大到小进行排列*/
sell[i]=sell[j];
elseif(sell[i].je==sell[j].je)/*若金额相同*/
if(strcmp(sell[i].dm,sell[j].dm)<
0)/*则按产品代码从大到小进行排列*/
5·
【考点分析】本题考查结构体数组的排序,可以用选择法或起泡法来实现。
i++)/*利用选择法排序*/
{
temp=sell[i];
elseif(strcmp(sell[i].mc,sell[j].mc)==0)/*若产品名称相同,则按金额从小到大排列*/
6·
{if(sell[i].je<
elseif(sell[i].je==sell[j].je)/*若金额相同,则按产品名称从小到大进行排列*/
if(strcmp(sell[i].mc,sell[j].mc)>
0)
}
7·
{if(strcmp(sell[i].dm,sell[j].dm)<
0)/*按产品代码从大到小进行排列*/
elseif(strcmp(sell[i].dm,sell[j].dm)==0)/*若产品代码相同,则按金额从大到小进行排列*/
8·
voidSortDat()
/*定义计数器变量*/
{if(strcmp(sell[i].mc,sell[j].mc)>
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;
}
9·
{
inti,j;
{
if(sell[i].je>
sell[j].je)/*按金额从小到大进行排列*/
{
{
temp=sell[i];
10·
/*定义数据交换时的暂存变量*/
i++)
{if(sell[i].je>
if(strcmp(sell[i].dm,sell[j].dm)>
0)/*则按产品代码从小到大进行排列*/
11·
【考点分析】本题考查对多个整数的筛选以及排序。
多位整数的分解算法,逻辑表达式,数组排序算法。
voidjsValue()
inta1,a2,a3,a4;
/*定义变量保存4位数的每位数字*/
inttemp;
300;
i++)/*逐个取每一个4位数*/
{a4=a[i]/1000;
/*求4位数的千位数字*/
a3=a[i]%1000/100;
/*求4位数的百位数字*/
a2=a[i]%100/10;
/*求4位数的十位数字*/
a1=a[i]%10;
/*求4位数的个位数字*/
if(a4+a1==a3+a2)/*如果千位数加个位数等于百位数加十位数*/
{b[cnt]=a[i];
/*将满足条件的数存入数组b中*/
cnt++;
/*统计满足条件的数的个数cnt*/
}
cnt-1;
i++)/*用选择法对数组b的4位数按从小到大的顺序进行排序*/
cnt;
if(b[i]>
b[j])
temp=b[i];
b[i]=b[j];
b[j]=temp;
12·
voidjsVal()
200;
if(a4%2!
=0&
&
a3%2!
a2%2!
a1%2!
=0)/*如果4位数各位上的数字均是奇数*/
/*将满足条件的数存入数组b中*/
/*统计满足条件的数的个数*/
i++)/*将数组b中的数按从大到小的顺序排列*/
if(b[i]<
{temp=b[i];
13·
if(a4+a3==a2+a1)/*如果千位数加百位数等于十位数加个位数*/
b[cnt]=a[i];
/*把满足条件的4位数依次存入数组b中*/
/*计算满足条件的数的个数*/
i++)/*对数组b中的4位数按从大到小进行排序*/
14·
【考点分析】本题考查对整数的筛选及数组排序。
考查的知识点主要包括:
C语言循环结构,逻辑表达式等。
/*定义循环变量*/
/*用于存储排序中的中间变量*/
for(i=0;
i<
=MAX-1;
i++)/*循环查找符合条件的元素*/
if(((a[i]%2==0)&
(b[i]%2!
=0))||((a[i]%2!
=0)&
(b[i]%2==0)))
{/*判断数组a和b中相同下标位置的数是否符合一个是偶数,另一个是奇数*/
c[i]=(a[i]<
<
8)+b[i];
/*a[i]按二进制左移8位再加上b[i]*/
/*记录c中个数*/
MAX-1;
i++)/*将C中的元素按从小到大顺序排列*/
for(j=0;
j<
MAX-i-1;
j++)
if(c[j]>
c[j+1])
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
15·
if(a4-a3-a2-a1>
0)/*如果千位数减百位数减十位数减个位数大于零*/
/*则把该数存入数组b中*/
i++)/*对数组b的4位数按从小到大的顺序进行排序*/
16·
【考点分析】本题考查对多个整数的筛选以及统计。
多位整数的分解算法,逻辑表达式。
voidcountValue()
{inti;
/*循环控制变量*/
for(i=5000;
i>
=1000;
i--)/*依次取每一个数进行判断*/
{a4=i/1000;
a3=i%1000/100;
a2=i%100/10;
a1=i%10;
if(a4+a3==a2+a1&
a4+a3==(a1-a4)*10)
{/*千位数与百位数之和等于十位数与个位数之和,且千位数与百位数之和等于个位数与千位数之差的10倍*/
/*则统计满足条件的数的个数*/
sum+=i;
/*将满足条件的数求和*/
17通过问题分析,得出解此题的思路为:
先求出每个数的各位数字,再根据各位数数字筛选出满足条件的数存入新的数组中,最后对新数组进行排序。
对于问题1通过算术运算取余和除法可以分解得到4位数的各个数位上的数字;
问题2通过if条件判断语句和逻辑表达式可以实现。
问题3排序可以通过选择法或起泡法来完成。
/*求4位数的百位数字*/
/*求4位数的十位数字*/
if(a4%2==0&
a3%2==0&
a2%2==0&
a1%2==0)/*如果各位上的数字均是0或2或4或6或8*/
}
i++)/*将数组b中的数按从大到小的顺序排序*/
b[i]=b[j];
18·
【解题思路】此题属于4位数的筛选类题。
解此类题目需主要解决3个问题:
问题1如何取得4位数的各个数位数字;
问题2如何通过条件(本题为个位数减千位数减百位数减十位数大于零)筛选出满足条件的数;
问题3如何按照要求(本题为从大到小的顺序)对数组中的数进行排序。
本题的解题思路和上一套相同,不同的是本套的筛选条件为个位数减千位数减百位数减十位数大于零(a1-a4-a3-a2>
if(a1-a4-a3-a2>
0)/*如果个位数减千位数减百位数减十位数大于零*/
/*则将满足条件的数存入数组b中*/