更多"阅读以下函数说明和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("请输入金额(正值