●试题二阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】该程序运行后,输出下面的数字金字塔【程序】includestdio.hmain (){char max,next;int i;

题目

●试题二

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

【说明】

该程序运行后,输出下面的数字金字塔

【程序】

include<stdio.h>

main ()

{char max,next;

int i;

for(max=′1′;max<=′9′;max++)

{for(i=1;i<=20- (1) ;++i)

printf(" ");

for(next= (2) ;next<= (3) ;next++)

printf("%c",next);

for(next= (4) ;next>= (5) ;next--)

printf("%c",next);

printf("\n");

}

}

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

●试题八

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

【说明】

以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

【程序】

#include<stdio.h>

main()

{FILE*fp;

charstr[100];inti=0;

if((fp=fopen("text.txt" (1) ))==NULL)

{printf("can't open this file.\n");exit(0);}

printf("input astring:\n");gest(str);

while(str[i])

{if(str[i]>=′a′ && str[i]<=′z′)

str[i]= (2) ;

fputc(str[i], (3) );

i++;

}

fclose(fp);

fp=fopen("test.txt", (4) );

fgets(str,100,fp);

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

(5) ;

}


正确答案:

●试题八

【答案】(1)W

(2)stri-a+A

(3)fp

(4)r

(5)fclose(fp)

【解析】程序运行后,首先打开文件test.txt用于写入,因此(1)空填w

程序从键盘读入字符串到变量str中,对str中每个字符,如是小写字母,则将其转换成大写字母。(2)空是小写字母转换大写字母的操作。(3)空是将str中的字符写入文件text.txt中。

str中所有字符处理完后,关闭文件test.txt(对应语句是fclose(fp)),然后重新以读方式打开,因此(4)空填r,将test.txt中的内容读到str中并显示输出后,关闭文件test.txt,即(5)空填fclose(fp)

 

第2题:

●试题一

阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【函数1.1说明】

函数strcpy(char*to,char*from)将字符串from复制到字符串to。

【函数1.1】

void strcpy(char*to,char*from)

{while( ( 1 ) );}

【函数1.2说明】

函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。

【函数1.2】

void merge(int a[ ],int n,int b[ ],int m,int *c)

{ int i,j;

for(i=j=0;i<n && j<m;)

*c++=a[i]<b[j]? a[i++]:b[j++];

while( (2) )*c++=a[i++];

while( (3) )*c++=b[j++];

}

【函数1.3说明】

递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。

【函数1.3】

int sum(int a[ ],int n)

{ if(n>0)return (4) ;

else (5) ;

}


正确答案:

●试题一

【答案】(1)*to++=*from++ 或 (*to++=*from++)!=′\0

(2)i<n i!=n(3)j<m 或 j!=m

(4)an-1+sum(an-1);或 a0+sum(a+1n-1)(5)return 0

【解析】(1)完成字符的复制,并使指针指向下一元素。(2)当出现某一数组所有元素均已合并完成,则将另一数组其他元素直接进行复制。b串已复制完。(3)判断a串是否已复制完。(4)递归函数sun()完成数组n个元素的累加,当n>0时,使用规模为n-1的函数进行递归。(5)n<=0时,返回0即可。

 

第3题:

●试题四

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

【说明】

函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。

【函数】

void QuickSort(int A[],int s,int t)

{int i=s,j=t+1,temp;

int x=A[s];

do{

do i++;while (1) ;

do j--;while(A[j]>x);

if(i<j){temp=A[i]; (2) ; (3) ;}

}while(i<j);

A[a]=A[j];A[j]=x;

if(s<i-1) (4) ;

if(j+1<t) (5) ;

}


正确答案:

●试题四

【答案】(1)Ai<x(2)Ai=Aj(3)Aj=temp(4)QuickSort(Asj-1)

(5)QuickSort(Aj+1t)

【解析】快速排序的思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。快速排序是对冒泡排序的一种改进方法,算法中元素的比较和交换是从两端向中间进行的,排序码较大的元素一次就能够交换到后面单元,排序码较小的记录一次就能够交换到前面单元,记录每次移动的距离较远,因而总的比较和移动次数较少。

 

第4题:

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

[说明]

函数Printprime(int UpBound)的功能是输出1到UpBound以内的全体素数。

[函数2.1]

void PrintPrime(int UpBound)

printf("2," );

for(i=3; i<UpBound; i+ =2) {

int k = sqrt(i);

for(j=3; j<= k;(1)) /*检查i是否有3到k以入的奇因数*/

if((2)) break;

fi((3)) printf("%d", i);

[函数2.2说明]

递归函数invert(int a[],int k),int k)的功能是将数组a中的前k个元素逆置。

[函数2.2]

void invert(int a[ ], int k)

{ int t;

if ((4)) {

invert((5));

t=a[0];

a[0] =a[k-1];

a[k-l]=t;

}

}


正确答案:(1)j+=2 (2)i%j==0 (3)j>k (4)k>1 (5)a+1k-2
(1)j+=2 (2)i%j==0 (3)j>k (4)k>1 (5)a+1,k-2 解析:(1)~(3)由于(1)处循环只检查i是否能被3到k以内的奇数所整除,因此循环增量应该是2。并且一旦i被某个3到k以内的奇数整除,那么内层for应当立即终止,此时j<=k。相反的,若内层for循环结束后j>k,则表明i没有3到k以内的奇因数,即i是一素数,应该输出;
(4)由于函数递归的终止条件是k不大于1,于是仅在 k>1时需要继续进行递归;
(5)为了将数组a的前k个元素a[0]、……、a[k-1]置逆,只需先将a[1]、……、a[k-2]这k-2个元素置逆,即调用invert(a+1,k-2),再交换a[0]和a[k-1]的值即可。

第5题:

●试题三

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

【说明】

函数move(int*a,int n)用于整理数组a[]的前n个元素,使其中小于0的元素移到数组的前端,大于0的元素移到数组的后端,等于0的元素留在数表中间。

令a[0]~a[low-1]小于0(初始为空);a[low]~a[i-1]等于0(初始为空);a[i]~a[high]还未考察,当前考察元素为a[i]。a[high+1]~a[n-1]大于0(初始为空)。

【函数】

move(int*a,int n)

{

int i,low,high,t;

low=i=0;high=n-1;

while( (1) )

if(a[i]<0)

{

t=a[i];a[i]=a[low];a[low]=t;

(2) ;i++;

}

else if( (3) )

{t=a[i];a[i]=a[high];a[high]=t;

(4) ;

}

else (5) ;

}


正确答案:

●试题三

【答案】(1)i<=high(2)low++(3)ai>0(4)high--(5)i++

【解析】程序的说明已经对程序的功能和相关变量解释得很清楚了,这儿就不再重复了。由变量i、变量low和变量high的含义和初值可以判断,ihigh之间的元素还未处理,因此while循环条件是"i<=high"或其等价形式,这就是(1)空所填写的内容。

(2)空所在语句块是处理当ai<0的情况,显然这时需要将ai]与alow]进行交换,交换后需要将ilow都要向后移动,因此(2)空处应填写"low++"或其等价形式。

(3)空需要填写执行(4)空所在语句块的条件,由(4)空所在语句块的可以判断,它是处理当ai>0的情况,因此(3)空处应填写"ai>0"或其等价形式。当ai>0时,需要将ai]与ahigh]进行交换,交换后需要将high都要向前移动,因此(4)空处应填写"high--"或其等价形式。注意这时i不能向后移动,因为交换后的ai]还没有处理,需要循环的下一趟进行处理。

ai=0情况,当ai=0时,不需要进行元素交换,只需将i向后移动就可以了,因此(5)空处应填写"i++"或其等价形式。

 

第6题:

●试题六

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

【说明】

设计一个类模板Sample用于对一个有序数组采用二分法查找元素下标。

【C++程序】

#include<iostream.h>

#define Max 100∥最多元素个数

template<class T>

class Sample

{

T A[Max]:∥存放有序数序

int n:∥实际元素个数

public

Sample(){}∥默认构造函数

Sample(T a[],int i);∥初始化构造函数

int seek(T c);

void disp()

{

for(int i=0;i<n;i++)

cout<<A[i]<<"";

cout<<end1:

}

};

template<class T>

Sample<T>::Sample(T a[],int i)

{

n=i;

for(intj=0;j<i;j++)

(1) ;

}

template<class T>

int Sample<T>::seek(T c)

{

int low=0,high=n-1,mid;

while( (2) )

{

mid=(low+high)/2;

if( (3) )

return mid;

else if( (4) )

low=mid+l;

else

(5) ;

}

return-1;

}

void main()

{

char a[]="acegkmpwxz";

Sample<char>s(a,1。);

cout<<"元素序列:";s.disp();

cout<<"元素′g′的下标:"<<s.seek(′g′)<<endl;

}


正确答案:

●试题六

【答案】(1)Aj=aj(2)low<=high(3)Amid==c(4)Amid<c(5)high=mid-1

【解析】在主函数中,首先由类模板实例化成Sample<char>模板类。(1)空所在处为构造函数的声明,将参数中的值赋值到类的成员变量中,所以(1)空应填入"Aj=aj"。

成员函数seek()采用二分法查找元素下标,变量lowhigh分别表示查找区间的下标,如果查询到目标,则返回相应的下标,若没有查询到,则其结束的条件即(2)空的内容为"low<=high"。根据二分法的原理,当中间的元素恰好等于目标元素时,则返回其下标,所以(3)空应填入"Amid==c";若中间的元素小于目标元素时,则mid+1作为新的查找区间的起始下标,所以(4)空应填入"Amid<c";否则mid-1作为新的查找区间的结束下标,所以(5)空应填入"high=mid-1"。

 

第7题:

●试题二

阅读下列程序或函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【函数2.1说明】

函数strcmp()是比较两个字符串s和t的大小。若s<t函数返回负数;若s=t函数返回0;若s>t,函数返回正数。

【函数2.1】

int strcmp(char *s,char *t)

{ while(*s && *t && (1) ){

s++;t++;

}

return (2) ;

}

【程序2.2说明】

在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个。

【程序2.2】

#includestdio.h

#define N 100

int a[N][N];

void main()

{ int row ,col,max,min,n;

/*输入合法n(<100),和输入n×n个整数到数组a的代码略*/

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

for(max=a[row][0],col=1;col<n;col++)

if( (3) )max=a[row][col];

if( (4) )min=max;

else if( (5) )min=max;

}

printf ("The min of max numbers is %d\n",min);

}


正确答案:

●试题二

【答案】(1)*s == *t(2) *s - *t

【解析】*s *t相等才执行循环体。返回二者差值,恰好符合题目要求。

【答案】(3) arow][col>max (4) row == 0(5) max<min

【解析】当前值比max大,则把它赋给maxmax是本行最大值。初始化min为第一行的max。该行的maxmin小,则将max赋给min

 

第8题:

●试题二

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

【说明2.1】

以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

【函数2.1】

void fun1(int a[])

{int i,j,k,r,x,m;

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

{ (1) ;

k=1;r=i-1;

while(k<=r)

{m=(k+r)/2;

if(x<a[m])r=m-1;

else (2) ;

}

for(j=i-1;j>=k;j--)

a[j+1]=a[j];

(3) ;

}

}

【说明2.2】

以下程序可以把从键盘上输入的十进制数(1ong型)以二~十六进制形式输出。

【程序2.2】

#include<stdio.h>

main()

{char b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};

int c[64],d,i=0,base;

long n;

printf(″enter a number:′n″);

scanf(″%1d″,&n);

printf(″enter new basc:kn″);

scanf(″%d″,&base);

do

{c[i]= (4) ;

i++;n=n/base;

}while(n!=0);

printf("transmite new base:\n");

for(--i;i>=0;--i)

{ d=c[i];

printf("%c", (5) );

}

}


正确答案:

●试题二

【答案】(1)x=ai(2)ak=x(3)k=m+1(4)nbase(5)bd

【解析】函数31的思想是依次将数组中的每一个元素插入到有序段中,使有序段的长度不断地扩大。对于待插入元素,先用二分查找法找出应该插入的位置。然后将元素插入。对数组来说,就是将该位置以后的元素依次后移,然后将待插入元素放到移出来的空位中。

程序32用的思想是除base(base在二~十六进制之间)取余法求得相应进制数,然后再转换输出。

 

第9题:

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

[说明]

编写一个字符界面的Java Application 程序,接受用户输入的10个整数,并输出这10个整数的最大值和最小值。

[Java 代码]

import java. io.* ;

public class abc

{

public static void main ((1))

{int i, n=10, max=0, min=0, temp=0;

try {

BufferedReader br = new BufferedReader (

new InputStreamReader ( System.in ) );

max = min =Integer. parselnt ( br. readLine ( ) );

}. (2) ( IOExccption e ) {} ;

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

try {

BufferedReader br = new (3) (

new InputStreamReader ( System. in ) );

temp =(4) ( br. readLine ( ));

if (temp>max ) max=temp;

if (temp<min) (5)

} catch (IOException e ) {};

}

System.out.println ( "max="+max+"\nmin="+min );

}

}


正确答案:(1)String args [] (2) Catch (3) BufferedReadsr (4) Integer. parseInt (5) min=temp;
(1)String args [] (2) Catch (3) BufferedReadsr (4) Integer. parseInt (5) min=temp;

第10题:

阅读下列程序说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【说明】

程序利用选择排序算法对数组a中的N个整数按照从小到大的顺序排列,并将排序结果显示出来。

【程序】

define N 10

main()

{

void (1);

int i,a[N];

for(i=0;i<10,i++) /*输入*/

scanf(“%d”,&a[i]);

(2);

for(i=0;i<N,i++) /*输出*/

printf(“%3d”,a[i]);

}

void selectSon(int x[],int n)

{

int i,j,k,t;

for(int i=0; (3);i++)

{

k=i;

for(j=i+1;j<n;j++)

if (4) k=j;

if (5)

{t=x[i];x[i]=x[k];x[k] =t;}

}

}


正确答案:(1)selectSort()
(1)selectSort() 解析:main函数中对selectSort函数的调用在定义之前,所以要进行说明。

更多相关问题