题目内容 (请给出正确答案)
[主观题]

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。【说明】 本程序从正文文件text.in中读

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。

【说明】

本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。

程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点内容输出。

【函数】

include <stdio.h>

include <malloc.h>

include <ctype.h>

include <string.h>

define INF "text.in"

define OUTF "word.our'

typedef struct treenode {

char *word;

int count;

struct treenode *left, *right;

} BNODE;

int getword(FILE *fpt, char *word)

{ char c;

c=fgetc(tpt);

if (c==EOF)

return 0;

while(!(tolower(c)>= 'a' && tolower(c)<= 'z'))

{ c=fgetc(fpt);

if (c==EOF)

return 0;

} /* 跳过单词间的所有非字母字符 */

while(tolower(c)>= 'a' && tolower(c)<= 'z')

{ *word++=c;

c=fgetc(fpt);

}

*word='\0';

return 1;

}

void binary_tree(BNODE **t, char *word)

{ BNODE *ptr, *p; int compres;

p=NULL;

(1);

while (ptr) /* 寻找插入位置 */

{ compres=strcmp(word, ptr->word);/* 保存当前比较结果 */

if (!compres)

{ (2); return;}

else

{ p=ptr;

ptr=compres>0 ? ptr->right: ptr->left;

}

}

ptr=(BNODE *)malloc(sizeof(BNODE));

ptr->left=ptr->right=NULL;

ptr->word=(char *)malloc(strlen(word)+1);

strcpy(ptr->word, word);

(3);

if (p==NULL)

*t=ptr;

else if (compres>0)

p->right=ptr;

else

p->left=ptr;

}

void midorder(FILE *fpt, BNODE *t)

{ if (t==NULL)

return;

midorder(fpt,(4));

fprintf(fpt, "%s %d\n", t->word, t->count);

midorder(fpt, t->right);

}

void main()

{ FILE *fpt; char word[40];

BNODE *root=NULL;

if ((fpt=fopen(INF, "r"))==NULL)

{ printf("Can't open file %s\n", INF);

return;

}

while(getword(fpt, word)==1)

binary_tree((5));

fclose(fpt);

fpt=fopen(OUTF, "w");

if (fpt==NULL)

{ printf("Can't open fife %s\n", OUTF);

return;

}

midorder(fpt, root);

fclose(fpt);

}

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内…”相关的问题

第1题

阅读以下函数说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【函数2.1说明】 将一个正整数分

阅读以下函数说明和C语言函数,将应填入(n)处的语句写在对应栏内。

【函数2.1说明】

将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

【函数2.1】

Fun1 (int n)

{

int i;

for(i=2;i<=n;i++)

{

while ((1))

{

if (n%i==0)

{

printf("%d*",i);

(2);

}

else

break;

}

}

printf("%d",\n);

}

【函数2.2说明】

下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第 3、4、5只猴子都是这样做的,问海滩上原来最少有多少个猴子?

【函数2.2】

main()

{

int i,m,j,k,count;

for(i=4;i<10000;i+=4)

{

count=0;

(3);

for(k=0;k<5;k++)

{

(4);

i=j;

if(j%4==0)

(5);

else

break;

}

i=m;

if(count==4)

{

printf("%d\n",count);

break;

}

}

}

点击查看答案

第2题

阅读下列说明和C++代码,请回答问题1至问题3。【说明】 已知下列程序运行时的输出应为: 1:1 1:1 1:1【

阅读下列说明和C++代码,请回答问题1至问题3。

【说明】

已知下列程序运行时的输出应为:

1:1

1:1

1:1

【C++程序】

01 include <iostream>

02 using namespace std;

03 class Stock{

04 protect:

05 (1) {};

06 Stock(iht n, int pr=1){

07 shares = n; share_val=pr;

08 };

09 void~Stock(){};

10 public:

11 //成员函数

12 void output(){

13 (2) << shares << ":" << share val << endl;

14 }

15 private:

16 //成员变量

17 int shares;

18 int share_val;

19 };

20

21 void main(){

22 Stock a(1); a.output();

23 Stock b; b.output();

24 Stock c = Stock(); c.output();

25 }

请补齐下述代码中的空缺1和2。

点击查看答案

第3题

阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。【说明】 下面的程序用DoleRob算法生成N阶(

阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。

【说明】

下面的程序用DoleRob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。

a.在第一行的正中插入1。

b.新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。

c.若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。

例如,3阶魔方阵如下所示:

8 1 6

3 5 7

4 9 2

【C程序】

include<stdio.h>

include<stdlib.h>

define SIZE 50

main( )

{ int row, col, n,value;

int a[SIZE+1][SIZE+1]; /*不使用下标为0的元素*/

printf("请输入要输出魔方阵的阶数n(奇数,<%d):n=",SIZE);

scanf("%d",&n);

if (!(n % 2)||n < 1 ||(1)) {

printf("输入数据有误!\n"); exit(0);

}

row=1; col = (n+1)/2; value=1;

while(value< =(2)) {

a[row][col] = value;

/*计算下一位置*/

if(value%n !=0){

row--; (3);

if(row<1) row=n;

if(col>n)(4);

}

else row++;

value =(5);

}

printf("\n%d阶魔方阵如下所示:\n\n",n);

for(row = 1;row <= n; row++){

for(col = 1; col <=n; col++)

printf("%5d",a[row][col]);

printf("\n");

}

}

点击查看答案

第4题

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 甲乙两地

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

甲乙两地之间的铁路线上有二十多个火车站,为方便乘客查询票价,特开发了火车票价查询程序,其运行窗口如下图所示。乘客只要通过

两个下拉列表框分别选择起点与终点站名,再单击“查询”按钮,则票价文本框中就会显示相应的票价。

在开发过程中,设选择起点和终点站名的组合框(ComboBox)名分别为ST和SP,显示票价的文本框(TextBox)名为Price,“查询”按钮

(CommandButton)名为Query;设ST与SP中的诸列表项完全相同,且都是从甲地开始依次排列,从第i站到第j站的票价存放在二维对称矩阵P的元

素P(i,j)中。假设从甲地到第i站行驶的距离存放在 d(i)中,火车票价等于其行驶距离乘以C(常数)。

【Visual Basic代码】

Dim p(30,30) As Single '通用声明

Const C=0.2

Private Sub Form_Load()

Dim d (30) As Single

(1)="甲地" '在ST组合框中设置首个列表项

… '在ST和SP中设置其他列表项(若干行语句)

… '对数组d(i)赋值(若干行语句)

For i=0 to ST. (2) -1 '对ST中各列表项循环

For j=0 to SP. (2) -1 '对SP中各列表项循环(这两处填写内容相同)

P (i,j)=(3)

Next j

Next i

End Sub

Private Sub query_Click()

i=(4) '组合框ST中选择的当前项编号

j=… '组合框SP中选择的当前项编号(语句略)

(5)=str$ ( p (i,j))

End Sub

点击查看答案

第5题

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 一棵非空二叉树中“最

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左

子树分支向下查找,直到某个结点不存在左子树时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以 A为根的二叉树的“最

左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。

二叉树的结点类型定义如下:

typedef stmct BSTNode{

int data;

struct BSTNode*lch,*rch;//结点的左、右子树指针

}*BSTree;

函数BSTree Find Del(BSTree root)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从

树于删除以*p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。

【函数】

BSTrce Find_Del(BSTreeroot)

{ BSTreep,pre;

if ( !root ) return NULL; /*root指向的二叉树为空树*/

(1); /*令p指向根结点的右子树*/

if ( !p ) return NULL;

(2); /*设置pre的初值*/

while(p->lch){ /*查找“最左下”结点*/

pre=p;p=(3);

}

if ((4)==root) /*root的右子树根为“最左下”结点*/

pre->rch=NULL;

else

(5)=NULL; /*删除以“最左下”结点为根的子树*/

reurn p;

}

点击查看答案

第6题

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 某个文本

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

某个文本文件中存放了若干个非零数值有效数据,每个数据占一行,最后一行以数字“0”作为结束标志。下面的程序用于计算该文件中这

些数据之和,其运行窗口如下。

用户只要通过驱动器列表框、目录列表框和文件列表框,选择文本文件所在的驱动器、文件夹及相应的文件名,再单击“累计”按钮,就

能在“总计”文本框中看到该文本文件中的数据之和。

在开发过程中,设驱动器列表框名为Drivel,目录列表框名为Dirl,文件列表框名为Filel,存放数据的文本文件名为D:\test\vb7\datA

.txt,“累计”按钮名为sum,“总计”文本框(TextBox)名为textl。

【Visual Basic代码】

Private Sub Drivel_Change()

Dirl.Path=(1) '户选择的驱动器反映到目录列表框中

End Sub

Private Sub Dirl_Change()

Filel.Path=(2) '用户选择的文件夹改变文件列表框内容

End Sub

Private Sub sum_Click()

Dim (3) As New FileSystemOject, (4) As TextStxeam

'创建自己的文件系统对象,说明自己的文本流对象

If Right (Dirl.Path,1)="\"Then

SetmyTextFile=fso.OpenTextFile (Dirl.Path+Filel.FileNamc)

Else

SetmyTextFile=fso.OpenTextFile(Dirl.Path+”\’+Filel.FileName)

End“

S=0

Do

d=Val (myTextFilE.ReadRow)

S=S+d

Loop While (5)

Textl.Text=Str$(S)

End Sub

点击查看答案

第7题

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 假设一个剧场有N*N个

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

假设一个剧场有N*N个座位,顾客买票时可以提出任意有效的座号请求。下面用二维数组a[N][N]模拟剧场中的座位,a[i][j]圆等于0表示

第i排第j列(0≤i,j≤N-1)的票尚未售出。

函数int Find(int a[][N],int R,int*row,int*col)的功能是:在部分票已售出的情况下,找出剧场中的R*R个空座位,要求这些座位

的排列形成一个正方形。若找到满足要求的一个座位排列,则函数返回1,并算出该正方形左上角的行、列号;若未找到,则返回0。

例如,一个7X7个座位的剧场如下图(a)所示,已售出部分座位的剧场如下图(b)所示,图中阴影部分表示已售出的座位,从下图(b)中找出

的3X3正方形空座位如下图(c)中斜线区所示。

【函数】

int Find(int a[][N] int R,int*row,iht*col)

{int i,j,k,c,t;int FOUND=0;

for(i=0;!FOUND&&i<N-R+1;i++) { /*从第0排开始查找*/

(1);

while (j<N-R+1&&!FOUND) {

for (k=0;(2)&&a[i][j+k]==0;k++); /*查找第i排连续的R个空座位*/

if (k>=R) { /*找到第i排连续的R个空座位*/

for (c=0;c<R;c++) { /*查找其余的R*(R-1)个座位*/

for (t=1;t<R;t++)

if (a[(3)][j+c]!=0) break;

if (t<R) break;

}/*for*/

if ((4)) FOUND=1;

}/*if*/

(5;

}/*while*/

}/*fori*/

if (FOUND) {

*row=i-1; *col=j-1; /*计算正方形区域的左上角坐标*/

return 1;

}

return 0;

}

点击查看答案

第8题

阅读以下说明和算法,完善算法并回答问题,将解答写在对应栏内。 [说明] 假设以二维数组G[1..m,1..n

阅读以下说明和算法,完善算法并回答问题,将解答写在对应栏内。

[说明]

假设以二维数组G[1..m,1..n]表示一幅图像各像素的颜色,则G[i,j]表示区域中点(i,j]处的颜色,颜色值为0到k的整数。

下面的算法将指定点(i0,j0)所在的同色邻接区域的颜色置换为给定的颜色值。约定所有与点(i0,j0)同色的上、下、左、右可连通的点组成同色邻接区域。

例如,一幅8×9像素的图像如图1-1所示。设用户指定点(3,5),其颜色值为0,此时其上方(2,5)、下方(4,5)、右方(3,6)邻接点的颜色值都为0,因此这些点属于点(3,5)所在的同色邻接区域,再从上、下、左、右四个方向进行扩展,可得出该同色邻接区域的其他点(见图1-1中的阴影部分)。将上述同色区域的颜色替换为颜色值7所得的新图像如图1-2所示。

[算法]

输入:矩阵G,点的坐标(i0,j0),新颜色值newcolor。

输出:点(i0,j0)所在同色邻接区域的颜色置换为newcolor之后的矩阵G。

算法步骤(为规范算法,规定该算法只在第七步后结束):

第一步:若点(i0,j0)的颜色值与新颜色值newcolor相同,则(1);

第二步:点(i0,j0)的颜色值→oldcolor;创建栈S,并将点坐标(i0,j0)入栈;

第三步:若(2),则转第七步;

第四步:栈顶元素出栈→(x,y),并(3);

第五步:

1) 若点(x,y-1)在图像中且G[x,y-1]等于oldcolor,则(x,y-1)入栈S;

2) 若点(x,y+1)在图像中且G[x,y+1]等于oldcolor,则(x,y+1)入栈S;

3) 若点(x-1,y)在图像中且G[x-1,y]等于oldcolor,则(x-1,y)入栈S;

4) 若点(x+1,y)在图像中且G[x+1,y)等于oldcolor,则(x+1,y)入栈S:

第六步:转(4);

第七步:算法结束。

[问题]

是否可以将算法中的栈换成队列?回答:(5)。

点击查看答案

第9题

阅读下列算法说明和代码,将应填入(n)处的语句写在对应栏内。【说明】本程序用古典Eratosthenes;筛选

阅读下列算法说明和代码,将应填入(n)处的语句写在对应栏内。

【说明】

本程序用古典Eratosthenes;筛选法求从2起到指定范围内的素数。如果要找出2~10中的素数,开始时筛中有2~10的数,然后取走筛中最小的数2,宣布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9;重复上述步骤,再取走最小数3,宣布它为素数,并取走3的倍数,于是留下5、7。反复重复上述步骤,直到筛中为空时,工作结束,求得2~10中的全部素数。

【代码】

include <stdio.h>

define MAX 22500

/*程序中用数组sieve表示筛子,数组元素sieve[i]的值为1时,表示数i在筛子中,值为-1时表示数i已被取走*/

main()

{ unsigned int i, range, factor, k;

int sieve[MAX];

printf("please input the range:");

scanf("%d", &range);/* range 指出在多大的范围内寻找素数*/

for(i=2; i<=range; i++)

(1);

factor=2;

while (factor<=range)

{ if((2)) /* 筛中最小数是素数 */

{ printf("%d\t", factor);

k=factor;

while (k<=range) /*移走素数的倍数 */

{ (3);

k=(4);

}

}

(5);

}

}

点击查看答案

第10题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【程序2.1说明】 求所有满足如下

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【程序2.1说明】

求所有满足如下条件的三位数:它除以11得的商等于它各位数字的平方和。例如 550,除以11商为50,50=52+52+02。

【程序2.1】

void main()

{

int i, j,n,s;

for(i=100;i<=999;i++)

{

n=i;

j=n/11;

s=0;

while((1))

{

(2)

n/=10;

}

if((3))

printf("%d\t",i);

}

}

【程序2.2说明】

本程序输入一字符串,将其中的大写字母改变成小写字母。

【程序2.2】

void main()

{

int i=0;

char s[120];

scanf("%s",s);

while((4))

{

if((5))

s[i]=s[i]- 'A'+'a';

i++;

}

printf("%s\n",s);

}

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信