题目详情
当前位置:首页 > 计算机考试 > 初级程序员
题目详情:
发布时间:2024-07-05 01:19:52

[填空题]试题三
阅读以下说明和C函数,回答问题。
[说明]
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。
计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的汁算过程如下。
①依次将46、5、120、37压入栈中。
②遇到“-”,取出37、120,计算120-37=83,将其压入栈中。
③遇到“*”,取出83、5,计算5×83=415,将其压入栈中。
④遇到“+”,取出415、46,计算46+415=461,将其压入栈中。
⑤表达式结束,则计算过程完成。
函数computing(char expt[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“/”)。
函数computing中所用栈的基本操作的函数原型说明如下。
void InitStack(STACK *s):初始化栈。
void Push(STACK *s, int e):将一个整数压栈,栈中元素数目增1。
void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。
int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。
int IsEmpty(STACK s):若s是空栈,则返回1;否则返回0。
[C函数]
int computing(char expr[], int *result)
{
STACK s; int tnum, a, b; char *ptr; InitStack(&s);

更多"试题三阅读以下说明和C函数,回答问题。 [说明] 计算机在处理算"的相关试题:

[填空题]试题三
阅读以下说明和C函数,回答问题。
[说明]
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。
计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的汁算过程如下。
①依次将46、5、120、37压入栈中。
②遇到“-”,取出37、120,计算120-37=83,将其压入栈中。
③遇到“*”,取出83、5,计算5×83=415,将其压入栈中。
④遇到“+”,取出415、46,计算46+415=461,将其压入栈中。
⑤表达式结束,则计算过程完成。
函数computing(char expt[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“/”)。
函数computing中所用栈的基本操作的函数原型说明如下。
void InitStack(STACK *s):初始化栈。
void Push(STACK *s, int e):将一个整数压栈,栈中元素数目增1。
void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。
int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。
int IsEmpty(STACK s):若s是空栈,则返回1;否则返回0。
[C函数]
int computing(char expr[], int *result)
{
STACK s; int tnum, a, b; char *ptr; InitStack(&s);
[填空题]阅读以下说明和C函数,填补C函数中的空缺。
[说明]
函数numberOfwords(char message[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。
假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似don’t形式的词,单词之后都为空格或标点符号。
函数中判定单词的规则是:
(1)一个英文字母串是单词;
(2)一个数字串是单词;
(3)表示名词所有格的撇号(’)与对应的单词看作是一个单词。
除上述规则外,其他情况概不考虑。
例如,句子“The 1990’s witnessed many changes in people’s concepts of conservation”中有10个单词,输出如下:
The
1990’s
witnessed
many
changes
in
people’s
concepts
of
conservation
函数numberOfwords中用到的部分标淮库函数如下所述。
函数原型 说明
int islower(int ch); 若ch表示一个小写英文字母,则返回一个非0整数,否则返回0
int isupper(int ch): 若ch表示一个大写英文字母,则返回一个非0整数,否则返回0
int isalnum(int ch); 若ch表示一个英文字母或数字字符,则返回一个非0整数,否则返回0
int isabha(int ch); 若ch表示一个英文字母,则返回
[填空题]阅读以下说明和C函数,填充函数中的空缺。
[说明]
函数Insert _key(*root,key)的功能是将键值key插入到*root指向根结点的二叉查找树中(二叉查找树为空时*root为空指针)。若给定的二叉查找树中已经包含键值为key的结点,则不进行插入操作并返回0;否则申请新结点、存入key的值并将新结点DHA树中,返回1。
提示:
二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:
若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;
若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;
左、右子树本身就是二叉查找树。
设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:
typedef struct BiTnode
int key _value; /*结点的键值,为非负整数*/
struct BiTnode *left,*right; /*结点的左、右子树指针*/
BiTnode,*BSTree;
[C函数]
int Insert _key(BSTree *root,int key)

BiTnode *father=NULL,*p=*root,*s;
while(______&&key!=p->key _value)(/*查找键值为key的结点*/
father=p;
if(key<p->key _value)p=______; /*进入左子树*/
else p=______; /进入右子树*/

if(p) return 0; /*二叉查找树中已存在键值为key的结点,无需再插入*/
s=(BiTnode *)malloc(______);/*根据结点类型生成新结点*/
if(!s)rettlrn -1;
s->key _value=key; s->left=NULL; s->right=NULL;
if(!father)
______; /*新结点作为二叉查找树的根结点*/
else /*新结点插入二叉查找树
[填空题]

阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。

【说明】

函数GetDateld(DATE date)的功能是计算并返回指定合法日期date是其所在年份的第几天。例如,date表示2008年1月25日时,函数的返回值为25,date表示2008年3月3日时,函数返回值为63。

函数Kday_Date(int theyear,int k)的功能是计算并返回指定合法年份theyear(theyear≥1900)的第k天(1≤k≤365)所对应的日期。例如,2008年的第60天是2008年2月29日,2009年的第60天是2009年3月
1日。

函数isLeapYear(int y)的功能是判断Y代表的年份是否为闰年,是则返回1,否则返回0。

DATE类型定义如下:

typedef struct{
int year,month,day;
}DATE;
【C函数1】
int GetDateId(DATE date)
{
Const int days_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,date_id=date.day;
for(i=0;i<____(1)____;i++)
date_id+=days_month[i];
if( ____(2)____&&isLeapYear(date.year))date_id++;
return date_id;
}
【C函数2】
____(3)____Kday_Date(int theyear,int k)
{
int i;
DATE date;
int days_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31);
assert(k>=1&&k<=365&&theyear>=1900);/*不

[填空题]阅读以下函数说明和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));

我来回答:

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

订单号:

截图扫码使用小程序[完全免费查看答案]
请不要关闭本页面,支付完成后请点击【支付完成】按钮
  • 支付完成
  • 取消支付
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码