单选题有如下程序: #include voidchange(int*array,intlen) {  for(;len=0;len--)   array[len]+=2; } main() {  inti,array[5]={1,2};  change(array,4);  for(i=0;i4;i++)   printf("%d,",array[i]);  printf(""); } 程序运行后的输出结果是(  )。A 2,3,4,5,B 3,4,5,6,C 3,4,2,2,D 1,2,0,0,

题目
单选题
有如下程序: #include  void change(int *array,int len) {  for(;len>=0;len--)   array[len]+=2; } main() {  int i,array[5]={1,2};  change(array,4);  for(i=0;i<4;i++)   printf("%d,",array[i]);  printf(""); } 程序运行后的输出结果是(  )。
A

2,3,4,5,

B

3,4,5,6,

C

3,4,2,2,

D

1,2,0,0,

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

第1题:

C语言数组输出间隔

#include <stdio.h>void main(){ void sort(int array[],int n); int a[10],i; printf("enter the array:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); sort(a,10); printf("The sorted array:\n"); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n");}void sort(int array[],int n){ int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k];array[k]=array[i];array[i]=t; }}程序呢,就是这个了。谭老爷子书上的例题,和书上一样,然后输入:5 7 -3 21 -43 67 321 33 51 0 然后从小到大排好后输出,书上他们之间从小到大有间隔,但是我运行了,没有间隔。。。。( ⊙o⊙ )?咋解决?????来高手解答。。。我运行后是:-43-305721335167321


#include <stdio.h> void main() { void sort(int array[],int n); int a[10],i; printf("enter the array:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); sort(a,10); printf("The sorted array:\n"); for(i=0;i<10;i++) printf("%d\t",a[i]);//在这加一个\t就行了 printf("\n"); }

第2题:

有以下程序: include include usingnamespacestd; intmain() {intarrays

有以下程序: #include <iostream> #include <cstdlib> using namespace std; int main() { int arraysize; int *array; cout<<"Please input the size of the array:"; cin>>arraySiZe; array=new int[arraysize]; if(array==NULL) { cout<<"allocate Error\n"; exit(1); } for(int i=0;i<arraysize;i++) array[i]=i*i; int j; cout<<"which element you want to check:"; cin>>j; cout<<array[j]<<end1; return 0; } 执行程序输入:10<空格>5,则输出结果为( )。

A.allocate Error

B.1

C.0

D.25


正确答案:D
解析:程序中利用new()申请动态分配数组。利用for循环给数组array赋值。最后输出想要检查元素的值。程序输10,即数组array元素个数为10。程序输入5,即检查元素array[5]的值。由for循环的赋值运算可知array[5]的值为25,所以程序最后输出25。

第3题:

函数Min的功能是返回具有n个元素的数组array中的最小值。请将横线处的缺失部分补充完整,使得程序的输出结果为1.24。

include<iostream>

using namespace std;

template<typename T>

T Min(T*array, int n){

T min=array[0];

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

if(array[i]<min)min=array[i];

return min;

}

int main(){

double art[8]={5.2, 48.45, 41.01, 42, 51.2, 1.24, 14.12, 42};

cout<<______;

return 0:

}


正确答案:Min(arr 8)
Min(arr, 8)

第4题:

编写程序,实现矩阵(3行3列)的转置(即行列互换)。

例如,若输入下面的矩阵:

100 200 300

400 500 600

700 800 900

则程序输出:

100 400 700

200 500 800

300 600 900

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <stdio.h>

include <conio.h>

int fun (int array[3][3])

{

}

main()

{

int i,j;

int array [3][3]={{100,200,300},{400,

500,600},{700,800,900}};

clrscr();

for (i-0;i<3;i++)

{for (j=0;j<3;j++)

printf("%7d ",array[i] [j]);

printf("\n ");

}

fun(array);

printf("Converted array:\n ");

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

{ for (j=0;j<3;j++)

printf("%7d ",array[i][j]);

printf("\n ");

}

}


正确答案:int fun (int array[3][3]) { int ijt; for(i=0;i3;i++) /*将右上三角和左下三角对换实现行列互换*/ for(j=i+1;j3;j++) {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } }
int fun (int array[3][3]) { int i,j,t; for(i=0;i3;i++) /*将右上三角和左下三角对换,实现行列互换*/ for(j=i+1;j3;j++) {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } 解析:注意对矩阵转置后仍然存回其本身时,只能循环矩阵中的一个角(本程序是右上半三角)。控制右上半三角的方法是在第2个循环中j从i+1或i开始,左下半三角的方法是在第2个循环中写成for(j=0;ji;j++),若要控制所有元素在第2个循环要写成for(j=0;j3;j++)。

第5题:

下面程序执行的结果是【 】。 include using namespace std; void main(){ int sum=0; i

下面程序执行的结果是【 】。

include <iostream>

using namespace std;

void main(){

int sum=0;

int array[6]={1,2,3,4,5,6};

int *p;

p=&array[0];

for(int i=0;i<6;i++){

sum=sum+*p;

p++;

}

cout<<sum;

}


正确答案:21
21 解析:本题用数组地址来访问数组内容,通过数组指针来操作数组内容,依次取出数组内容进行加和,然后进行输出。

第6题:

请编写一个函数sum(int array[],int len),该函数返回数组array的所有整数元素的和,其中len为数组array的长度。

注意:部分源程序已存在文件test34_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。

程序输出结果如下:

sum of array 15

文件test34_2.cpp的内容如下:

include <iostream.h>

int sum(int array[],int len)

{

}

void main()

{

static int a[5]-{1,2,3,4,5};

int result=sum(a,5);

cout<<"sum of array "<<result<<end1;

}


正确答案:int sum(int array[]int len) { int sum=0; for (int i=0;ilen;i++) sum=sum+array[i]; return sum; }
int sum(int array[],int len) { int sum=0; for (int i=0;ilen;i++) sum=sum+array[i]; return sum; } 解析:本题主要考查考生对于数组访问和for循环语句的掌握。应该注意的是,长度为len的数组array的下标范围为0到 len-1,而不是从1到len,所以循环控制变量的初始值为0。

第7题:

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

【说明】

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

【函数】

main()

{

int number[20],n,m,i;

printf("the total numbers is:");

scanf("%d",&n);

printf("back m:");

scanf("%d",&m);

for(i=0;i<=n-1;i)

scanf("%d,",&number[i]);

(1);

for(i=0;i<=n-1;i)

printf("%d,",number[i]);

}

move(array,n,m)

int n,m,array[20];

{

int *p,array_end;

array_end=(2);

for(p=array[n-1];(3);p--)

*p=(4);

*array=array_end;

m--;

if(m>0) (5);

}


正确答案:(1)move(numbernm) (2)*(array[n-1]) (3)p>array (4)*(p-1) (5)move(arraynm)
(1)move(number,n,m) (2)*(array[n-1]) (3)p>array (4)*(p-1) (5)move(array,n,m) 解析:本题考查数字顺序移动和数组的相关知识。
从数据结构的角度出发,数字在数组中顺序移动,就是将数字一个一个往后搬,例如,将n-1位置的数字移到n位置,然后再把n-2位置的数字移到n-1位置,其实这是一个简单的数字移动。我们只需要取出第n个位置的数字并保存在一个临时变量中,然后,其他的就按顺序依次移动即可,直到一次整体移动完成,我们再从临时变量中取回数字并将其放在数组的第一个位置中。重复这个过程m次,整个数组就往后移动了m个位置。
首先,我们来看一下主函数,在主函数里面声明了一个容量为20的整型数组 number[20]和其余3个整型变量,数组用来存储我们输入的待处理的数,而变量m、n分别用于存放我们要移动位置的个数和输入整数的个数。第一个循环语句用于n个整数的输入,第二个循环语句用于n个整数的输出,在这中间应该还有一个处理来完成将n个整数顺序向后移m个位置,并让最后m个数变成最前面的m个数这个功能,从下面的程序段我们知道,这里是调用函数muve(number,n,m)来完成的。因此,第(1)空填 move(nurnber,n,m),在调用时我们需要注意参数的传递。
再来看move(array,n,m)函数,在此函数中,同样声明了一个容量为20的整型数组和 2个整型变量,另外还声明了一个指针变量p。由*array=array_end,结合第(2)空来看,这里是把数组中最后位置的数取出存放在array_end变量当中。因此,第(2)空应填 *(array[n-1])。
第(3)空是常见的在循环语句中表示判断的语句,由于“p=array[n-1]”把数组最末的地址赋给了指针p,只要p的值大于数组的起始地址循环就可以继续,因此,第(3)空应填p>array。
第(4)空要完成的任务是将数字后移,因此,第(4)空为*p-1。从程序来分析,数组每移动完成一次,m的值就减一,而现在只有移动m次的功能没有实现,因此,只要m值大于0,就调用函数自身来实现再次移动。因此,第(5)空填写move(array,n,m)进行递归调用。

第8题:

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

【说明】

实现矩阵(3行3列)的转置(即行列互换)。

例如,输入下面的矩阵:

100 200 300

400 500 600

700 800 900

程序输出:

100 400 700

200 500 800

300 600 900

【函数】

int fun(int array[3][3])

{

int i,j,t;

for(i=0;(1);i++)

for(j=0;(2);j++)

{

t=array[i][j];

(3);

(4);

}

}

}

main()

{

int i,j;

int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};

clrscr();

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

{

for(j=0;j<3;j++)

printf("%7d",array[i][j]);

printf("\n");

}

fun((5));

printf("Converted array:\n");

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

{

for(j=0;j<3;j++)

printf("%7d",array[i][j]);

printf("\n");

}

}


正确答案:(1)i3 (2)ji (3)array[i][j]=array[j][i] (4)array[j][i]=t (5)array
(1)i3 (2)ji (3)array[i][j]=array[j][i] (4)array[j][i]=t (5)array 解析:本题考查用C语言实现矩阵的转置。
题目要求程序实现矩阵(3行3列)的转置,其关键是将当前行列对应的元素与其对应的列行元素互换。题目中给出了具体的矩阵元素和结构,下面来具体分析程序。
第(1)空很明显是循环语句的判断条件,是上界条件,这个二重循环的作用是进行数组中元素的互换,而从题目中给出的已知条件可以判断出,这个数组是一个三维的数组,而在程序中下标是从0开始的,那么其上界应该是不大于3,因此这个空的答案分别是i3。
第(2)空也是循环的判断上界,在上面我们已经分析出了这个二重循环的作用是进行数组中元素的互换,而元素互换的过程是将当前行列对应的元素与其对应的列行元素互换,元素的下标都要在能互换的下标范围内,那么第二重循环的上界应该是第一重循环变量的当前值,因此此空答案为ji。
第(3)空在这个二重循环体中,从程序中不难发现,用一个临时变量f来存放要置换的值,接下来就是此空,那么应该是将其中一个值放到其转置后的位置,再结合上面分析,可以得出此空答案为array[i][j]=array[j][i]。
第(4)空是紧接着上一空而来的,在上面的程序中已经将当前位置中的值保存到了临时变量t中,且把其对应的转置位置的元素值放到了这个位置,那么接下来应该是将临时变量中的值放到转置位置,因此此空答案为array[j][i]=t。
第(5)空很明显是函数的参数,这个函数就是功能函数fun(),用来实现矩阵的转置,根据程序中函数的定义,它只有一个参数,这个参数是要被处理的数组。在主函数中,需要被处理的数组是array,这里我们需要注意在数组作为函数的形参时,一般是通过传递其地址来实现参数传递的,因此此空答案为array。

第9题:

下列程序用于打印出ASCⅡ字符,其析构函数内的语句应为【 】。 include inelude

下列程序用于打印出ASCⅡ字符,其析构函数内的语句应为【 】。

include<iostream. h>

inelude<iomanip, h>

template<class T>

class Array

{

T * elems;

int size;

public:

Array(int.s);

~Array()

T& operator[](int)

void perator=(T)

};

template<class T>

Array<T>::Array(int s)

size=s;

elems=new T[size]

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

elems[i]=0

}

template<celass T>

Array<T>::~Array()

{

______

template <class T>

T& Array<T>::operator[](int index)

{

return elems[index];

}

template<class T>

void Array<T>::operator=(T temp)

{

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

elems[i]=temp;

}

void main()

{

int i,n=26;

Array<int> arr1(n)

Array<char> arr2(n)

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

{ -.

arr1[i]='a'+i;

arr2[i]='a'+i;

}

cout<<"ASCII 字符"<<endl;

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

cout<<setw(8)<<arr1[i]<<setw(8)<<arr2[i]<<endl;

}


正确答案:delete elems;
delete elems; 解析:注意,用new动态申请的内存在使用完成后一定要用delete释放。

第10题:

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

【说明】

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

【函数】

main ( )

{

int number[10];

input (number);

max min (number);

output (number);

}

input (number)

int number[10];

{int i;

for ( i=0;i<9;i++ )

scanf ( "%d,",&number[i] );

scanf ( "%d",&number[9] );

}

max_min ( array )

int array[10];

{int *max,*min,k,1;

int *p,*arr_end;

arr end=(1);

max=min=array;

for ( p=(2);p<arr_end;p++ )

if((3)) max=p;

else if ( *p<*min ) min=p;

(4);

l=*min;

(5);array[0]=1;1=*p;

*p=array[9];array[9]=k;k=*p;

return;

}

output ( array )

int array[10];

{ int *p;

for ( p=array;p<array+9;p++ )

printf ( "%d,",*p );

printf ( "%d\n",array[9] );

}


正确答案:(1)array+10 (2) array+1 (3) *p>*max (4) k=*max (5) *p=array[0]
(1)array+10 (2) array+1 (3) *p>*max (4) k=*max (5) *p=array[0]

更多相关问题