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

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

1,1,-1,-1,-1,

B

1,0,-1,1,-1,

C

1,1,1,1,1,

D

1,-1,1,-1,1,

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

第1题:

阅读以下函数说明和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。

第2题:

请编写一个函数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。

第3题:

运行下面的PHP程序后,数据$array的内容是什么?( )?php$array = array(‘1’,’1’);foreach($array as $k=$v){$v = 2;}

A.array(‘2’,’2’)

B.array(‘1’,’1’)

C.array(2,2)

D.(1,1)


参考答案:D

第4题:

若有以下程序#include <stdio.h>main(){ int i; int a[]={1,3,5,7,9} int *p=a; for(i=0;i<4;i++) a[i]=*p; printf("%d,%d\n",a[2],a[4]);}上面程序的输出结果是A.3,9 B.5,9 C.1,9 D.1,1


正确答案:C
本题中,程序开始定义了一个数组a,并对这个数组进行赋初值。然后定义一个整型变量i和一个整型指针变量p,并使指针变量p指向数组a的首地址。然后执行for循环,循环变量i的初值为0,循环结束条件为变量i的值大于等于4,循环变量i的值每循环一次自加1,通过这些分析我们知道,循环执行了4次结束。
第一次循环时,由于*p表示数组的第一个元素值1,那么执行a[i]=*p;语句,即将数组的第一个元素变为1;第二次循环时,由于i为1,即将数组的第二个元素变为1,同理,第三次与第四次循环分别将数组的第三和第四个元素值变为1。
循环结束,程序执行输出语句,这时数组中所有元素的值分别为1,1,1,1,9,因此,程序最后的输出结果是1,9,答案选C。

第5题:

阅读以下函数说明和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)进行递归调用。

第6题:

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"); }

第7题:

有以下程序: 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。

第8题:

下面的PHP程序运行的结果是什么?( )?phpfunction sort_my_array(&$array){return sort($array);}$a1 = array(3,2,1);var_dump(sort_my_array($a1));

A.NULL

B.array(3){[0]=int(1) [1]=int(2) [2]=int(2)}

C.bool(true)

D.array(3){[2]=int(1) [1]=int(2) [0]=int(3)}


参考答案:A

第9题:

下面程序执行的结果是【 】。 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 解析:本题用数组地址来访问数组内容,通过数组指针来操作数组内容,依次取出数组内容进行加和,然后进行输出。

第10题:

有以下程序includemain(int arge,char *argv[]){int i,len=0;for(i=1;i

有以下程序 #include<string.h> main(int arge,char *argv[]) { int i,len=0; for(i=1;i<arge;i++)len+=strlen(argv[i]); printf(“%d\n”,len); } 程序编译连接后生成的可执行文件是exl.exe,若运行时输入带参数的命令行是: exl abcd efg 10<回车> 则运行的结果是

A.22

B.17

C.12

D.9


正确答案:D
解析:main()函数可以带参数,并且参数只能有两个,第一个参数(arge)类型为整型用来记下命令行的参数个数,第二个参数(argv)为一个字符型指针数组,其各个元素用来记下命令行各参数字符串的首地址。本题执行时,arge的值为4,在循环中依次求出algv[l]、argv[2]和argv[3]指向的字符串(“abcd”、“efg”和“10”)的长度,并把它们加到变量len中,得到len的值9。所以最后输出的len值为9。

更多相关问题