三级网络技术上机题库.docx
《三级网络技术上机题库.docx》由会员分享,可在线阅读,更多相关《三级网络技术上机题库.docx(29页珍藏版)》请在冰豆网上搜索。
三级网络技术上机题库
本题考查结构体数组的排序。
1
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型),几部分组成。
其中:
金额=单价*数量。
函数ReadDat()的功能是读取这一百个销售记录并存入结构数组中。
请编制函数SortDat(),其功能是:
按产品名称从小到大排列,若产品名称相同,则按金额从小到大排列,最终排列结果仍存入结构数组中,最后调用函数把结果输出到文件OUT.DAT中。
voidSortDat()
{inti,j;/*定义循环控制变量*/
PROtemp;/*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/
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
voidSortDat()
{inti,j;/*定义循环控制变量*/
PROtemp;/*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/
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
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>sell[j].je)
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
10
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;
}
}
}
14
voidjsValue()
{inti,j;/*定义循环控制变量*/
inta1,a2,a3,a4;/*定义变量保存4位数的每位数字*/
inttemp;/*定义数据交换时的暂存变量*/
for(i=0;i<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+a3==a2+a1)/*如果千位数加百位数等于十位数加个位数*/
{
b[cnt]=a[i];/*把满足条件的4位数依次存入数组b中*/
cnt++;/*计算满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
18
voidjsValue()
{inti,j;/*定义循环控制变量*/
inta1,a2,a3,a4;/*定义变量保存4位数的每位数字*/
inttemp;/*定义数据交换时的暂存变量*/
for(i=0;i<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(a1-a4-a3-a2>0)/*如果个位数减千位数减百位数减十位数大于零*/
{b[cnt]=a[i];/*则将满足条件的数存入数组b中*/
cnt++;/*统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
21
voidjsVal()
{inti,j;/*定义循环控制变量*/
inta1,a2,a3,a4;/*定义变量保存4位数的每位数字*/
inttemp;/*定义数据交换时的暂存变量*/
for(i=0;i<200;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)&&a1%2==1)/*如果千位数加个位数等于百位数加十位数,并且此数是奇数*/
{b[cnt]=a[i];/*则将满足条件的数存入数组b中*/
cnt++;/*统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
28
voidjsVal()
{inti,j;/*定义循环控制变量*/
inta1,a2,a3,a4;/*定义变量保存4位数的每位数字*/
inttemp;/*定义数据交换时的暂存变量*/
intab,cd;/*存储重新组合成的2位数*/
for(i=0;i<200;i++)/*逐个取每一个4位数*/
{
a4=a[i]/1000;/*求4位数的千位数字*/
a3=a[i]%1000/100;/*求4位数的百位数字*/
a2=a[i]%100/10;/*求4位数的十位数字*/
a1=a[i]%10;/*求4位数的个位数字*/
ab=10*a4+a1;/*把千位数字和个位数字重新组成一个新的2位数*/
cd=10*a3+a2;/*把百位数字和十位数字组成另一个新的2位数*/
if(ab%2==1&&cd%2==1&&(ab%5==0||cd%5==0)&&a4!
=0&&a3!
=0)/*如果这两个2位数均是奇数并且两个2位数中至少有一个数能被5整除,同时两个新2位数的十位上的数字均不为零*/
{b[cnt]=a[i];/*则把满足条件的数存入数组b中*/
cnt++;/*并统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
38
voidjsVal()
{inti,j;/*定义循环控制变量*/
inttemp;/*定义数据交换时的暂存变量*/
for(i=5;iif(a[i]%2!
=0&&a[i]%7==0)/*如果当前数是奇数且可以被7整除*/
for(j=i-5;j<=i-1;j++)/*取该数前面的5个数进行比较*/
{if(a[i]break;/*如果当前数不满足比前面5个数都大的条件,则跳出循环*/
elseif(j==i-1)/*如果当前数比前面的5个数都大*/
{b[cnt]=a[i];/*将满足条件的数存入数组b中*/
cnt++;/*并统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
41
voidjsSort()
{inti,j;/*定义循环控制变量*/
inttemp;/*定义数据交换时的暂存变量*/
for(i=0;i<199;i++)/*用选择法对数组进行排序*/
for(j=i+1;j<200;j++)
{if(aa[i]%1000>aa[j]%1000)/*按照每个数的后3位的大小进行升序排列*/
{temp=aa[i];
aa[i]=aa[j];
aa[j]=temp;
}
elseif(aa[i]%1000==aa[j]%1000)/*如果后3位数值相等*/
if(aa[i]{temp=aa[i];
aa[i]=aa[j];
aa[j]=temp;
}
}
for(i=0;i<10;i++)/*将排好序的前十个数存入数组bb中*/
bb[i]=aa[i];
}
45
intjsValue(intt)
{intf1=0,f2=1,fn;/*定义变量存储Fibonacci数,初始化数列的前两项*/
fn=f1+f2;/*计算下一个Fibonacci数*/
while(fn<=t)/*如果当前的Fibonacci数不大于t,则继续计算下一个Fibonacci数*/
{f1=f2;
f2=fn;
fn=f1+f2;
}
returnfn;/*返回Fibonacci数列中大于t的最小的一个数*/
}
50
voidjsValue()
{inti,n=0;/*定义循环控制变量和计数器变量*/
for(i=0;i<300;i++)/*逐个取4位数*/
if(isP(a[i]))/*如果该数为素数*/
{pjz1+=a[i];/*将满足条件的数求和*/
cnt++;/*统计满足条件的数的个数*/
}
else
{pjz2+=a[i];/*将不满足条件的数求和*/
n++;/*统计不满足条件的数的个数*/
}
pjz1/=cnt;/*求满足条件的数的平均值*/
pjz2/=n;/*求不满足条件的数的平均值*/
}
56
voidmain()
{intcnt1,cnt2,xx[N];
floatpj;
FILE*fw;
inti,k=0;
longj=0;
cnt1=0;
cnt2=0;
pj=0.0;
system("CLS");
fw=fopen("out.dat","w");
read_dat(xx);
for(i=0;i{if(xx[i]%2)
cnt1++;/*求出数组xx中奇数的个数cnt1*/
else
cnt2++;/*求出数组xx中偶数的个数cnt2*/
if(i%2==1)
{j+=xx[i];/*求数组xx下标为奇数的元素值的总和*/
k++;
}
}
pj=(float)(j*100/k)/100;/*求数组xx下标为奇数的元素值的算术平均值pj*/
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
60:
C语言中文件读函数,if条件判断结构,对多个整数求平均值和方差的算法等。
intReadDat(void)
{FILE*fp;
inti,j;/*定义计数器变量*/
if((fp=fopen("IN.DAT","r"))==NULL)
return1;
for(i=0;i<100;i++)/*依次读取整型数据放入数组xx中*/
{for(j=0;j<10;j++)
fscanf(fp,"%d,",&xx[i*10+j]);
fscanf(fp,"\n");
if(feof(fp))
break;/*文件读取结束,则退出*/
}
fclose(fp);
return0;
}
voidCompute(void)
{inti;/*定义循环控制变量*/
inttt[MAX];/*定义数组保存奇数*/
for(i=0;i<1000;i++)
if(xx[i]%2!
=0)
{odd++;/*计算出xx中奇数的个数odd*/
ave1+=xx[i];/*求奇数的和*/
tt[odd-1]=xx[i];/*将奇数存入数组tt中*/
}
else
{even++;/*计算出xx中偶数的个数even*/
ave2+=xx[i];/*求偶数的和*/
}
ave1/=odd;/*求奇数的平均值*/
ave2/=even;/*求偶数的平均值*/
for(i=0;itotfc+=(tt[i]-ave1)*(tt[i]-ave1)/odd;/*求所有奇数的方差*/
}
65此题属于数学类问题。
分析题干,本题存在2个关键点:
关键点1如何通过条件"同时能被3与7整除"筛选出指定范围内满足条件的数;关键点2对所有满足条件的数计算出总和的平方根。
本题的解题思路为:
通过循环控制,依次判断小于等于n范围内的自然数是否满足关键点1中的条件。
累加满足条件的数,并通过总和求出算术平方根,最后通过函数值返回。
【参考答案】
doublecountValue(intn)
{inti;/*定义循环控制变量*/
doublesum=0.0;/*存储满足条件的自然数之和,继而求出平方根*/
for(i=1;iif(i%3==0&&i%7==0)
sum+=i;
sum=sqrt((double)sum);/*再对总和求平方根*/
returnsum;
}
69
【考点分析】本题考查对字符数组中字符的计算和替换。
考查的知识点主要包括:
字符串数组的访问,字符ASCII码的算术运算,if判断结构以及逻辑表达式。
【解题思路】此题属于字符替代问题;分析题干要求,可以归纳出3个关键点:
关键点1如何对字符数组的元素逐个访问;关键点2如何根据给出的函数替代关系"f(p)=p*11mod256"对字符进行计算;关键点3根据条件(本题为"原字符的ASCII值是偶数或计算后f(p)的值小于等于32")对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。
通过问题分析,得出解此题的思路为:
首先通过字符串处理函数strlen获取字符串的长度,根据获得的长度使用下标法逐一对字符数组的元素进行访问;然后按照题目给出的函数关系式直接对字符进行算术运算;最后通过if判断结构和逻辑表达式判断计算结果是否满足条件,分别对两种情况进行处理。
【参考答案】
voidencryptChar()
{inti,j;/*定义循环控制变量*/
intstr;/*存储字符串的长度*/
charch;/*存储当前取得的字符*/
for(i=0;i{str=strlen(xx[i]);/*求得当前行的字符串长度*/
for(j=0;j{ch=xx[i][j]*11%256;
if(xx[i][j]%2==0||ch<=32)/*如果原字符的ASCII值是偶数或计算后的值小于等于32*/
continue;/*则该字符不变*/
else
xx[i][j]=ch;/*否则将所对应的字符进行替代*/
}
}
}
71
【考点分析】本题考查对字符数组中字符的计算和替换。
考查的知识点主要包括:
字符串数组的访问,字符ASCII码的算术运算,if判断结构以及逻辑表达式。
【解题思路】此题属于字符替代问题。
分析题干要求,可以归纳出3个关键点:
关键点1如何对字符数组的元素逐个访问;关键点2如何根据给出的函数替代关系"f(p)=p*11mod256"对字符进行计算;关键点3根据条件(本题为"计算后f(p)的值小于等于32或f(p)对应的字符是小写字母")对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。
本题与前两题思路相同,不同的是本题的替代条件为计算后的f(p)值小于等于32或f(p)对应的字符是小写字母。
【参考答案】
voidencryptChar()
{inti,j;/*定义循环控制变量*/
intstr;/*存储字符串的长度*/
charch;/*存储当前取得的字符*/
for(i=0;i{str=strlen(xx[i]);/*求得当前行的字符串长度*/
for(j=0;j{ch=xx[i][j]*11%256;
if((ch>='a'&&ch<='z')||ch<=32)
/*如果计算后的值小于等于32或对应的字符是小写字母*/
continue;
else
xx[i][j]=ch;/*否则用新字符来替代这个字符*/
}
}
}
74
本题属于字符串类题。
要求对二维数组中的字符元素按行处理。
首先用strlen()函数得到当前行所包含的字符个数。
voidencryptChar()
{inti,j;/*定义循环控制变量*/
intstr;/*存储字符串的长度*/
charch;/*存储当前取得的字符*/
for(i=0;i{str=strlen(xx[i]);/*求得当前行的字符串长度*/
for(j=0;j{
ch=xx[i][j]*11%256;
if(ch<=32||ch>130)/*如果计算后的值小于等于32或大于130*/
continue;/*则该字符不变*/
else/*否则将所对应的字符进行替代*/
xx[i][j]=ch;
}
}
78
本题考查对字符串中字符的替换。
考查的知识点主要包括:
指针对字符串元素的访问,C语言循环结构,if判断结构,逻辑表达式。
【解题思路】此题属于字符替换题型;分析题干要求,可以归纳出2个关键点:
关键点1用指针实现对字符串元素的逐一访问;关键点2根据要求"把所有的小写字母改写成该字母的下一个字母"对字符进行替换。
接着分析具体的解决方法,首先通过指针的移动来实现对字符串的遍历,当指针指向位置的数值不为空,通过if判断结构和逻辑表达式来实现对所有字母的替换操作;其中对于字母"z"和"Z",要分别将其替换成字母"a"和"A"。
【参考答案】
voidchg(char*s)
{while(*s)/*若当前字符不是字符串结束符,则循环一直进行*/
if(*s=='z'||*s=='Z')/*将当前字母是'z'或者'Z'*/
{*s-=25;/*则分别将其改成'a'或'A'*/
s++;/*取下一个字母*/
}
elseif(*s>='a'&&*s<='y')/*若是小写字母,则改成该字母的下一个字母*/
{*s+=1;
s++;/*取下一个字母*/
}
elseif(*s>='A'&&*s<='Y')/*若是大写字母,则改成该字母的下一个字母*/
{*