(*q)--;
}
main() {
int a[5]={8,7,6},i; f(a);
for (i=0;i<3;i++) printf(\}
运行结果是__576__
34.程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空5分,共25分)
(1)下面的程序从文本文件test.txt逐个读入字符,并显示在屏幕上。
#include
FILE *fp;
char ch,*filename=\
if((fp= ① fopen (flename,\{
printf(\exit(0); }
while(!( ② feof (fp)) {
ch=fgetc(fp); putchar(ch); }
fclose(fp); }
(2)以下程序的功能是:读入一行字符,以回车结束,按输入时的逆序使用单向链表进行存储,先输入的位于链表尾,然后再遍历输出链表。如输入abc↙,链表结构如图10所示,程序最后输出cba。
图 10
struct node {
char value;
struct node *link; }
main() {
struct node *top,*p; char c;
top=NULL;
while((c=getchar()) ③ !=′\\n′ ) {
p=(struct node *)malloc(sizeof(struct node)); p->value=c; p->link=top;
________④____top=p____; }
while (top) {
p=top;
top=top->link;
putchar( ⑤ p->value ); }
}
35.阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空5分,共25分) (1)矩阵乘法是指两个矩阵相乘,生成一个新矩阵,其乘法公式如下:
以下程序实现了两个2×2的矩阵相乘。只对程序中的2行代码进行修改,使其可以正确运行。
L1 #include
L6 int a[M][K]={1,-1,0,2}; L7 int b[K][N]={4,0,2,5};
L8 int c[M][N]; 改为:int c[M][N]={0}; L9 int i,j,l;
L10 for(i=0;i L13 c[i][j]=a[i][l]*[l][j]; 改为:c[i][j]+=a[i][l]*b[l][j]; L14 } L15 } L16 } L17 return 0; L18 } (2)某班举行歌唱比赛,赛后需要显示成绩最高的选手名字和成绩,以下程序实现了查找 得分最高选手的功能。只对程序中的3行代码进行修改,使其可以正确运行。 Ll #include L3 struct PLAYER 改为:typedef struct PLAYER L4 { char *name; L5 float score; L6 }Player; L7 int main(){ L8 Player players[]={{\丁一\陈二\张三\L9 Player *player; L10 Player topPlayer=players[0]; L11 for(playe=players;player L12 if(player.score> topPlayer.score){ player.score改为:player->score L13 topPlayer=player; 改为:topPlayer=*player; L14 } L15 } L16 printf(\L17 return 0: L18 } 五、程序设计题(本大题25分,每空5分) 36.折半查找也称为二分查找,适用于有序数组,其查找的基本过程是:先确定待查记录所在的范围,然后逐步缩小范围,直到找到,或找不到该记录为止。假定数组按照升序排列,对于给定值k,从数组中间位置开始比较,如果当前数据元素的值等于k,则查找成功。否则,若k小于当前数据元素的值,则在数组的前半部继续查找;反之,则在数组的后半部继续查找。依次重复进行,直至获得查找成功或不成功的结果。请补充完成下列程序中的相应部分: #include printf(\请输入要查找的数:\; scanf(\,&key); int data[10]={1,3,5,7,8,9,13,18,22,28}; int ret=BinarySearch(key,data); if(ret>=0) printf(\是数组中的第%d个数\\n”,key,ret+l); else printf(\在数组中未找到!\\n\,key); system(\return 0; } int BinarySearch(int key,int data[]){ int low=0,high=9,middle; while( ① low<=high ){ /*查找结束条件*/ int middle= ② (low+high)/2 ; /*获取数组中间位置*/ if( ③ data[middle]==key ) /*如果当前数据元素的值等于k*/ return middle; /*返回所在位置*/ if(key ⑤ low=middle+1 ; /*在数组的后半部继续查找*/ } return -1: /*返回查找不成功标记*/ } 六、选考题(考生可根据自己的专业方向,从两组题中任选一组,多选则只计前一组的成绩。每空4分,共40分) 第一组 计算机网络技术方向 37.某公司根据业务需求,计划部署DNS服务器、FTP服务器、Web服务器,网络拓扑结构如图11所示,需要能在局域网主机(如PC1、PC2等)上通过域名www.hngy.com访问Web服务器,通过域名ftp.hngy.com访问FTP服务器。 图 11
相关推荐: