题目详情
当前位置:首页 > 计算机考试 > 初级程序员
题目详情:
发布时间:2023-10-23 08:47:34

[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename,char*word)是从指定的文件中得到单词。char*strdup(char*S)是复制S所指向的字符串,并返回复制字符串的地址。
[C程序]
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAXWORD 100
struct node {
char*word;
int count;
struct node*left;
struct node*right;
}
struct node*addtree(struct node*P,char*w)
{ int cond;
if(p==NULL){ /*向树中插入结点*/
P=(struct node*)malloc(sizeof(struct node));
P->word=strdup(w);
P->count=1;
(1) ;
}
elseif((oond=strcmp(w,p->word))==0) (2) ;
else if(cond<0)p->left= (3) ;
else p->right= (4) ;
return p;
}
main( )
{ Struct no

更多"阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。"的相关试题:

[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明1]
本程序输入一字符串,并将其中的大写字母变成小写字母。
[C函数1]
#include<stdio.h>
void main( )
int i=0;
char s[120];
printf("Enter a string./n");
scanf("%s",s);
while( (1) )
if( (2) )
s[i]=s[i]-’A’+’a’;
i++;

printf("%s/n",S);

[说明2]
本程序用二分法,在已按字母次序从小到大排序的字符数组list[len]中,查找字符c,若c在数组中,函数返回字符c在数组中的下标,否则返回-1。
[C函数2]
int search(char list[],char c,int len)
( intlow=0,high=len-1,k;
while( (3) );
k=(10w+high)/2;
if( (4) ) return k;
else if( (5) )high=k-1;
else low=k+1;
return -1;

[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
函数void diff(Node*A,Node*B,Node**r)的功能是:根据两个由整数按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1,并且不是L2中的整数,还要求L3中的所有整数都两两不等。
[C函数]
#include<malloc.h>
typedef struct node
int data;
struct node*next;
Node;
void diff(Node*A,Node*B,Node**r)
int lastnum;
Node*P;
*r=NULL;
if(!A) return;
while( (1) >
if(A->data<B->data)
lastnum=A->data;
p=(Node*)malloc(sizeof(Node));
P->data=lastnum;
P->next=*r;
(2) ;
do
A=A->next;
while( (3) >;

else iffA->data>B->data)
B=B->next;
else
(4) ;
lastnum=A->data;
while (A &&A->data==lastnum)A=A->next;

while(A)
lastnum=A->data;
p=(Node*)m
[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。
[C函数]
int psort(int a[],int n)
int i,J,k,P;
for(i=0,k=0;i< (1) ;i++)
for(j=i+1, (2) ;j<n; j++)
if(a[p]>a[j])
p=j;
if(p!=i)
t=a[p];
a[p]=a[i];
a[i]=t;

if( (3) ) k++;
else if( (4) <a[i])
(5) =a[i];

return k;

int a[]=5,7,5,6,4,3,4,6,7;
main( )
int k,n;
for(k=0;k<(Sizeof a)/Sizeof(int);k++)
printf("%5d",a[k]);
printf ("/n/n");
n=psort(a,(sizeof(a))/sizeof(int));
for(k=0;k<n;k++)
printf("%5d",a[k]);
printf("/n/n");

[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
函数void diff(Node*A,Node*B,Node**r)的功能是:根据两个由整数按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1,并且不是L2中的整数,还要求L3中的所有整数都两两不等。
[C函数]
#include<malloc.h>
typedef struct node {
int data;
struct node*next;
}Node;
void diff(Node*A,Node*B,Node**r)
{ int lastnum;
Node*P;
*r=NULL;
if(!A) return;
while( (1) >
if(A->data<B->data)
{lastnum=A->data;
p=(Node*)malloc(sizeof(Node));
P->data=lastnum;
P->next=*r;
(2) ;
do
A=A->next;
while( (3) >;
}
else iffA->data>B->data)
B=B->next;
else{
(4) ;
lastnum=A->data;
while (A &&A->data==lastnum)A=A->next;
}
while(A){
lastnum=A->data;
p=(Node*)malloc(sizeof(Node));

[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明1]
函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。
[C函数1]
void fun(char*W,char x,int*n)
{ int i,P;
p=0;
w[*n]=x;
while(x>w[p]) (1) ;
for(i=*n,i>p;i--)w[i]= (2) ;
w[p]=x;
++*n;
}
[说明2]
函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。
[C函数2]
void revstr(char*s)
{ char*p,c;
if(s==NULL)return;
p= (3) ; /*p指向字符串s的最后一个有效字符*/
while(s<p){ /*交换并移动指针*/
C=*s;
(4) =*p;
(5) =c;
}
}
[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明1]
函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。
所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如:28的因子为1,2,4,7,14,而28=1+2+4+7+14,因此28是“完全数”。
[C函数1]
int factors(int n)
int i,S;
for(i=l,s=0;i<=n/2;i++)
if(n%i==O) (1) ;
if( (2) )return 0;
rerurn -1;

[说明2]
函数int maxint(int a[],int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。
[C函数2]
int maxint(int a[],int k)
int t;
if( (3) )return (4) ;
t=maxint(a+1, (5) )j
return(a[0]>t) a[0] :t;

[填空题]
阅读以下函数说明和C语言函数,将应填入 (n) 的字句写在答题纸的对应栏内。
[说明1]
函数int fun1(int m, int n)的功能是:计算并返回正整数m和n的最大公约数。
[函数1]
int fun1(int m, int n)
{
while ( (1) ) {
if (m>n) m=m-n;
else n=n-m;
}
(2) ;
}
[说明2]
函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。
例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。
[函数2]
long fun2(char *str)
{
int i=0;
long k=0;
char *p=str;
while (*p!=’\0’ && (3) ) {
if (*p>=’0’ && *p<=’9’) {
k= (4) + *p - ’0’;
++i;
}
(5) ;
}
return k;
}


[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 已知r[1...n]是n个记录的递增有序表,用折半查找法查找关键字为k的记录。若查找失败,则输出“failure",函数返回值为0;否则输出“success”,函数返回值为该记录的序号值。 [C函数] int binary search(struct recordtype r[],int n,keytype k) { intmid,low=1,hig=n; while(low<=hig){ mid= (1) ; if(k<r[mid].key) (2) ; else if(k==r[mid].key){ printf("succesS/n"); (3) ; } else (4) ; } printf("failure/n"); (5) ; }
[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明1] 本程序输入一字符串,并将其中的大写字母变成小写字母。 [C函数1] #include<stdio.h> void main( ) { int i=0; char s[120]; printf("Enter a string./n"); scanf("%s",s); while( (1) ){ if( (2) ) s[i]=s[i]-’A’+’a’; i++; } printf("%s/n",S); } [说明2] 本程序用二分法,在已按字母次序从小到大排序的字符数组list[len]中,查找字符c,若c在数组中,函数返回字符c在数组中的下标,否则返回-1。 [C函数2] int search(char list[],char c,int len) ( intlow=0,high=len-1,k; while( (3) ); k=(10w+high)/2; if( (4) ) return k; else if( (5) )high=k-1; else low=k+1; return -1; }
[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
设一个环上有编号为0~n-1的n粒颜色不尽相同的珠子(每粒珠子颜色用字母表示,n粒珠子的颜色由输入的字符串表示)。从环上的某两粒珠子间剪开,则环上珠子形成一个序列然后按以下规则从序列中取走珠子:首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子中取走所有连续的同色珠子,两者之和为该剪开处可取走珠子的粒数。在不同位置剪开,能取走的珠子也不尽相同。
本程序所求的是在环上哪个位置剪开,按上述规则可取走的珠子粒数最多。程序中用数组存储字符串。例如:10粒珠子颜色对应字符串为“aaabbbadcc”,在0号珠子前剪开,序列为aaabbbadcc,从左端取走3粒a色珠子,从右端取走2粒c色珠子,共取走5粒珠子。若在3号珠子前剪开,即bbbadccaaa,共取走6粒珠子。
[C函数]
int count(char*s,int start,int end)
inti,c=0,color=s[start],step=(start>end)-1:1;
for(i=start;s[i]==color;i+=step)
if(step>0 && i>end || (1) ) break;
(2) ;

return c;

void main( )
char t,s[120];
int i,j,C,len,maxc,cut=0;
printf("请输入环上代表不同颜色珠子字符串:");
scanf("%s",s );
len=strlen(s);
for(i=maxc=0;i<len;i++) /*尝试不同的剪开方式*/
c=count(s,0,len-1);
if(c<len) C+=count( (3) );
if(c>maxc)cut=i;maxc=c; )
/*
[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
这是一个求解Josephus问题的函数。用整数序列1,2,3…,n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。Josephus问题描述,设n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个人重新开始报数,数到第m个人,再让他出局,…如此反复直到所有的人全部出局为止。
[C函数]
void Josephus(int A[],int n,s,m)
(int i,j,k,temp;
if(m==O)
printf("m=0是无效的参数!/n");
return;

for(i=0;i<n;i++) A[i]=i+1; /*初始化,执行n次*/
i= (1) /*报名起始位置*/
for(k=n;k>1;k-)
if( (2) ) i=0;
i= (3) /*寻找出局位置*/
if(i!=k-1)
tmp=A[i];
for(j=i;J<k-1;j++) (4) ;
(5) ;


for(k=0;k<n/2;k++)
tmp=A[k];A[k]=A[n-k+1];A[n-k+1]=tmp;


[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明1]
L为一个带头结点的循环链表。函数LinkList deletenode(LinkList L,int c)的功能是删除L中数据域data的值大于C的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。
[C函数1]
LinkList deletenode(LinkList L,int c)
LinkList Lc,P,pre;
pre=L;
p= (1) ;
Lc=(LinkList)malloc(sizeof(Listnode));
Lc->next=Lc;
while(P!=L)
if(p->data>C)
(2) ;
(3) ;
Lc->next=p;
p=pre->next;

else
pre=p;
p=pre->next;

return Lc;

[说明2]
递归函数dec_to_k_2(int n,int k)的功能是将十进制正整数n转换成[*]进制数,并打印。
[C函数2]
dec to k 2(int n,int k)
if(n!=O)
dec to k 2( (4) ,k);
printf("%d", (5) );


[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到P之间路径上的结点。
[C程序]
#define Maxsize 1000
typedef struct node
TelemType data;
struct node*1child,*rchild;
BiNode,*BiTree;
void Path(BiTree t,BiNode*P)
BiTree*stack[Maxsize],*stackl[Maxsize],*q;
int tag[Maxsize],top=0,topl;
q=t;
/*通过先序遍历发现P*/
do(while(q!=NULL && q!=p)
/*扫描左孩子,且相应的结点不为P*/
(1) ;
stack[top]=q;
tag[top]=0;
(2) ;

if(top>0)
if(stack[top]==P) break; /*找到P,栈底到栈顶为t到P*/
if(tag[top]==1)top--;
elseq=stack[top];
q=q->rchild;
tag[top]=1;


(3) ;
top--; topl=0;
while(top>0)
q=stack[top]; /*反向打印准备*/
topl++;
<
[填空题]阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明]
某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。程序中用数组card[M][N+3]中的每一行存放一张储蓄卡的有关信息,其中:
card[i][0]存放第i张卡的卡号;
card[i][1]存放第i张卡的余额;
card[i][2]存放第i张卡的当日业务实际发生笔数;
card[i][3]~card[i][N+2]存放第i张卡的当日存取款金额,正值代表存款,负值代表取款。
当持卡者输入正确的卡号、存款或取款金额后,程序进行相应的处理;若输入不正确的数据,程序会提示持卡者重新输入;若输入的卡号为负数时,银行终止该卡的当日业务。
[C程序]
#include<stdio.H>
#define M 6
#define N 5
long card[M][N+3]=9801,2000,0,,9812,2000,2,,9753,3000,1,,
8750,500,0,,9604,2800,3,),(8901,5000,5,;
int locate(long card[][N+3],int m,long no)
int i;
for(i=0;i<m;i++)
if( (1) ==no) return i;
(2) ;

main( )
long cardNo,money;
int k;
while(1)
printf("请输入卡号:/n");
scanf("%1d",&cardNo);
if(cardNo<0) break;
k=locate(card,M,cardNo);
if(k==-1)
printf("不存在%id号的储蓄卡/n",cardNo);
continue;

printf("请输入金额(正值

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码