三级网络技术上机题库.docx

上传人:b****6 文档编号:3612227 上传时间:2022-11-24 格式:DOCX 页数:29 大小:27.53KB
下载 相关 举报
三级网络技术上机题库.docx_第1页
第1页 / 共29页
三级网络技术上机题库.docx_第2页
第2页 / 共29页
三级网络技术上机题库.docx_第3页
第3页 / 共29页
三级网络技术上机题库.docx_第4页
第4页 / 共29页
三级网络技术上机题库.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

三级网络技术上机题库.docx

《三级网络技术上机题库.docx》由会员分享,可在线阅读,更多相关《三级网络技术上机题库.docx(29页珍藏版)》请在冰豆网上搜索。

三级网络技术上机题库.docx

三级网络技术上机题库

本题考查结构体数组的排序。

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;i

for(j=i+1;j

if(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;i

for(j=i+1;j

if(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;i

for(j=i+1;j

if(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;i

for(j=i+1;j

if(b[i]

{temp=b[i];

b[i]=b[j];

b[j]=temp;

}

}

38

voidjsVal()

{inti,j;/*定义循环控制变量*/

inttemp;/*定义数据交换时的暂存变量*/

for(i=5;i

if(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;i

for(j=i+1;j

if(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;i

totfc+=(tt[i]-ave1)*(tt[i]-ave1)/odd;/*求所有奇数的方差*/

}

65此题属于数学类问题。

分析题干,本题存在2个关键点:

关键点1如何通过条件"同时能被3与7整除"筛选出指定范围内满足条件的数;关键点2对所有满足条件的数计算出总和的平方根。

本题的解题思路为:

通过循环控制,依次判断小于等于n范围内的自然数是否满足关键点1中的条件。

累加满足条件的数,并通过总和求出算术平方根,最后通过函数值返回。

【参考答案】

doublecountValue(intn)

{inti;/*定义循环控制变量*/

doublesum=0.0;/*存储满足条件的自然数之和,继而求出平方根*/

for(i=1;i

if(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')/*若是大写字母,则改成该字母的下一个字母*/

{*

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1