niusouti.com

有以下程序: void sott(int a[], int n) { int i, j, t; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;) } main() {int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, I; sort(aa+2, 5); for (i=0; i<10; i++)printf("% d", aa[i]); printf("\n"

题目

有以下程序: void sott(int a[], int n) { int i, j, t; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;) } main() {int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, I; sort(aa+2, 5); for (i=0; i<10; i++)printf("% d", aa[i]); printf("\n"); } 程序运行后的输出结果是______。

A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

B.1, 2, 7, 6, 3, 4, 5, 8, 9, 10,

C.1, 2, 7, 6, 5, 4, 3, 8, 9, 10,

D.1, 2, 9, 8, 7, 6, 5, 4, 3, 10,


相似考题
更多“有以下程序:void sott(int a[], int n){ inti, j, t;for(i=0; i<n-1; i++)for(j=i+1; j<n; j++)i ”相关问题
  • 第1题:

    以下程序的输出结果是 ( ) main( ) { int n[3] [3],i,j; for (i=0;i<3;i+ +) for(j=0;i<3;++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0,j<2;j++) n[i+1][j+1]+=[i][j]; printf("%d\n",n[1][j]); }

    A.14

    B.0

    C.6

    D.值不确定


    正确答案:C

  • 第2题:

    有以下程序:includevoid f(char p[][10],int n)/* 字符串从小到大排序*/{char t[10];

    有以下程序: #include<string.h> void f(char p[][10],int n) /* 字符串从小到大排序 */ {char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy([i],t);} } main() {char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"; f(p,5); printf("%d\n",strlen(p[0])); } 程序运行后的输出结果( )。

    A.2

    B.4

    C.6

    D.3


    正确答案:D
    解析:strcmp(str1,str2)是比较字符串str1和str2,若str1>str2,返回值为正数;f()函数的功能就是将字符串按照从小到大的顺序进行排列,需要注意的是比较的足字符串中每个字符的ASCII值的大小,所以元素p[0]是“abc”,它的长度为3。

  • 第3题:

    本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。 void bubble(int a[],int n) {int i,j,max,temp; max=n-1; do{j=0; for(i=0;i<max;i++) if(a[i]<a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp; j=i; } max=j; }while(( )); }


    正确答案:max>0
    max>0 解析:本题是典型的冒泡排序题,每一次for循环将从数组a中找出剩下数中的最大的值放在这些数的最前端,若数组a中有n个数,则完成数组排序共需n-1次循环。令max=n-1,每次循环后i值增1,imax条件不足,即n-1次循环后,此时i=j=max=0,循环结束。

  • 第4题:

    有以下程序 include include void fun(char s[][10],int n

    有以下程序 #include <stdio.h> #include <string.h> void fun(char s[][10],int n) { char t; int i j; for (i=0; i<n-1; i++) for 0--i+l; j<n; j++) /*比较字符串的首字符大小,并交换字符串的首字符*/ if(s[i][0] > s[j][0]) { t = s[i][0]; s[i][0] = s[j][0]; s[j][0] = t;} } main() { char ss[5][10]= {"bcc", "bbcc", "xy", "aaaacc", "aabcc" }; fun(ss, 5); printf("%s,%s\n", ss[0],ss[4]); } 程序的运行结果是

    A.xy, aaaacc

    B.aaaacc,xy

    C.xcc,aabcc

    D.acc,xabcc


    正确答案:D
    解析:在函数fun()中有一个两层嵌套的for循环,外循环变量i从0递增到n-2,内循环变量i从i+1循环递增到n-1,这是选择排序算法的标准结构。循环体中因为逆序条件为“s[i][0]> s[j][0]”,所以实现的是升序排序。由此可见,fun()函数实现的功能是对一个二维字符数组前n行的首字符进行升序排序。主函数中定义的二维数组初始化为{"bcc",”bbcc", "xy","aaaacc","aabcc"},通过fun()函数的排序后,结果将为acc","abcc","by", "baaacc","xabcc"}。故最终输出字符串ss[0]和ss[4]的结果为acc,xabcc,应该选择D。

  • 第5题:

    有以下程序 main() { int n[3],i,j; for(i=0;i<3;i++)n[i]=0; for(i=0;i<2,i++) for(j=0;j<2;j++)n[j]=n[i]+1; printf("%d\n",n[1]); } 程序运行后的输出结果是( )

    A.2

    B.1

    C.0

    D.3


    正确答案:D

  • 第6题:

    有以下程序:includevoid f(char p[][10],int n){char t[10];int i,j;for(i=0;i

    有以下程序: #include<string.h> void f(char p[][10],int n) {char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } main() {char p[5][10]={"abc","aabdfg","abbd","dedbe","cd"}; f(p,5); printf("%d\n",strlen(p[0]));} 程序运行后的输出结果是( )。

    A.2

    B.4

    C.6

    D.3


    正确答案:C
    解析:本题考核的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符串数组p并按行赋值,调用f()函数,将字符串从小到大排序,strcmp()函数的功能是对两个字符串作向右逐个字符比较,直到出现不同的字符或遇到“\0”为止。如果全部字符都相同,则认为相等;若出现不同的字符.则以第一个不相同的字符的比较结果为准。由此可知最小的字符串是“aabdfg”,排序后存放在p[0]中,最后在主函数中输出p[0]的长度。

  • 第7题:

    有以下程序includeincludevoidfun(char*s[],intn){char*t;int i,j;for(i=0

    有以下程序 #include <stdio.h> #include <string.h> void fun(char *s[],int n) { char *t; int i,j; for(i=0;i<n-1;++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i];s[j];s[j]=t;} } main() { char *ss[]={"bcc

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A
    解析: 函数fun(char*s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc"," bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。

  • 第8题:

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

    [函数2.1说明]

    函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。

    [函数2.1]

    fun1 (int m, int k, int xx [] )

    {

    inti, j, s=0;

    for ( i=m+1; k>0; i++ )

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

    if ( i %j=0 )

    (1)

    if( i==j )

    {

    (2)

    k--; }

    }

    }

    [函数2.2说明]

    函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。

    [函数2.2]

    void fun2 ( )

    {

    int i, j;

    int a[10][10];

    printf ("\n" );

    for (i=0; i<10; i++

    {a [i] [0]=1;

    (3))

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

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

    (4)

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

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

    (5)

    printf ( "\n" );

    }

    }


    正确答案:(1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d"a[i] [j]);
    (1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d",a[i] [j]);

  • 第9题:

    有以下程序: void sort(int a[], int n) {int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(aa+2,5); for(i=0;i<10;i++)printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是( )。

    A.1,2,3,4,5,6,7,8,9,10,

    B.1,2,7,6,3,4,5,8,9,10,

    C.1,2,7,6,5,4,3,8,9,10,

    D.1,2,9,8,7,6,5,4,3,10,


    正确答案:C
    解析:先看sort()函数,它没有返回值,有两个参数,一个int型数组和一个int型变量。在函数中是一个二重循环,外循环变量i从0递增到n-2,内循环变量j从i+1递增到n-1。内循环体是一条if语句“如果a[i]a[j]就把两个值交换”。这是一个典型的从大到小选择排序算法,排序的范围是a[0]~a[n-1],一共n个数排序,主函数中定义了一个数组aa[10],然后调用sort(aa+2,5);的意思是将aa[2]~aa[6]范围的5个数据从大到小排序。所以排序以后数组aa[10]的内容是1,2,7,6,5,4,3,8,9,10。故应该选择C。

  • 第10题:

    有以下程序 include void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到

    有以下程序

    #include <stdio.h>

    void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

    { int t,i,j;

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

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

    if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;}

    }

    main( )

    { int c[10]={1,2,3,4,5,6,7,8,9,0},i;

    fun(c+4,6);

    for(i=0;i<10;i++) printf("%d,",c[i]);

    printf("\n");

    }

    程序的运行结果是

    A.1,2,3,4,5,6,7,8,9,0,

    B.0,9,8,7,6,5,1,2,3,4,

    C.0,9,8,7,6,5,4,3,2,1,

    D.1,2,3,4,9,8,7,6,5,0,


    正确答案:D
    解析:在本题中,主函数在调用fun( )函数进行排序时,传递的参数是c+4和6,fun( )函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

  • 第11题:

    有以下程序includevoidfun(int*s,intn1,intn2){inti,j,t; i=n1j=n2; while(i

    有以下程序 #include <stdio.h> void fun(int *s,int n1,int n2) { int i,j,t; i=n1 j=n2; while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]); printf("\n"); } 程序的运行结果是

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当 fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5.6,7,8,9,01;再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

  • 第12题:

    有以下程序:include void f(char p[][10],int n)/* 字符串从小到大排序 */{ char t[1

    有以下程序: #include <string.h> void f(char p[][10],int n)/* 字符串从小到大排序 */ { char t[10]; int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) { strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[j],t); } } main() {char p[5][10]={"abc","aabdog","abbd","dcdbe","cd"}; f(p,5); printf("%d\n",strlen(p[0])); } 程序运行后的输出结果是( )。

    A.2

    B.4

    C.6

    D.3


    正确答案:C
    解析:题目中已告知函数f()的作用是将字符串从小到大排序,因此主函数中调用完f(p,5);后,二维数组p中的内容为("aabdfg","abbd","abc","cd","dcdbc"}。输出的结果是strlen(p[0]),即p中第1个字符串的长度,所以结果是6。故本题应该选择C。

  • 第13题:

    有下列程序: include include "string.h" void tim(char *s[],int n)

    有下列程序: #include <stdio.h> #include "string.h" void tim(char *s[],int n) { char *t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;} } main() { char *ss[]= {"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是( )。

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A
    解析:从main函数入手,定义了指向字符串的指针数组,并赋予了初始值,调用fun()函数,函数的功能是:比较数组中各个元素的长度,按元素长度从小到大排列数组元素,所以执行fun(ss,5)函数后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},所以调用printf函数输出ss[0],ss[4]的值分别为xy,aaaacc。

  • 第14题:

    下面程序的功能是:对字符串从小到大进行排序并输出,请填空。

    #include "string.h"

    #include "stdio.h"

    sort(char *a[],int n)

    { int i,j;

    char *p;

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

    for(i=0; 【15】 ;i++)

    if( 【16】 >0)

    { p=a[i];

    a[i]=a[i+1];

    a[i+1]=p;}}

    main()

    { int i;

    char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};

    sort( 【17】 );

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

    printf("%s\n",book[i]);}


    正确答案:
    i<n-j;strcmp(a[i],a[i+1]);book,6

  • 第15题:

    下列程序的输出结果是 #include"stdio.h" #define N 3 #define M 3 void fun(int a[M][N]) { printf("%d\n",*(a[1]+2));} main() { int a[M][N]; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j); fun(a);}

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:若有以下定义:inta[3][4],i,j;且当0=i3,0=j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。

  • 第16题:

    有以下程序:include using namespace std;int main ( ){ int n[3],i,j,k = 2; for(i

    有以下程序: #include <iostream> using namespace std; int main ( ) { int n[3],i,j,k = 2; for(i = 0;i<k;i++) n[i] = O; for(i = O;i<k;i++) { for(j = O;j<k;j++) n[j] = n[i] + 1; } cout<<n [0 ] <<end1; return 0; } 上述程序运行后,输出结果是( )。

    A.0

    B.1

    C.2

    D.3


    正确答案:D
    解析:本题考核数组的定义、初始化及其使用。根据程序逐步分析:程序首先给数组n的所有元素赋初值0,然后执行一个嵌套的循环结构。嵌套循环的执行过程如下:①i=0时,j分别取值0、1,使得n[0]、n[1]的值分别变1、2,内层循环结束。②i=1时,对外层循环进行判断,符合循环条件,执行内层循环,j分别取值0、1,使得n[0]、n[1]的值变为3、3,退出内层循环。③i=2时,判断外层循环,不再符合循环条件,退出外层循环,执行cout语句,输出n[0]的值为3。

  • 第17题:

    有以下程序:includeincludevoid fun(char*s[],int n){char*t;int i,j;for(

    有以下程序: #include<stdio.h> #include<string.h> void fun(char*s[],int n) { char*t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;} } main() { Char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是( )。

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A

  • 第18题:

    include void sort(inta[],int n) {int i,j,t;for(i=0;i

    include<stdio.h>

    void sort(inta[],int n)

    {int i,j,t;

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

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

    if(a[i]<a[j])

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

    }

    }

    main()

    {int a[10]={1,2,3,4,5,6,7,8,9,10},i;

    sort(&a[1],7);

    for(i=0;i<10;i++)printf("%d,",a[i]);

    }

    程序运行后的输出结果是( )。

    A.1,2,3,4,5,6,7,8,9,10,

    B.10,9,8,7,6,5,4,3,2,1,

    C.1,8,7,6,5,4,3,2,9,10,

    D.1,2,10,9,8,7,6,5,4,3,


    正确答案:C
    解析:本程序中的函数sort(int a[],int n)实现的功能是将数组a中的前n个数进行从大到小排序。 sort(&a[1],7)是将数组中从a[1]到a[7]这7个数进行从大到小排序,其他数不变。

  • 第19题:

    有以下程序:include void fun(iht * a,int i,int j){int t;if(i < j) {t=a[i];a[i] =

    有以下程序:#include <stdio, h>void fun(iht * a,int i,int j){ int t; if(i < j) { t=a[i];a[i] =a[j] ;a[j]=t; i++;j--; fun(a,i,j);main ( ) int x[ ]: {2,6,1,8} ,i; fun(x,0,3); for( i=0;i <4;i ++ ) printf( "%2d" ,x[i] ); printf(" \n");

    A.1268

    B.8621

    C.8162

    D.8612


    正确答案:C
    解析:语句fun(x,0、3);中将数组名x作为实参,即把数组x的首地址传送给形参(指针a),使数组x与形参指针s共占同一段内存单元,在调用函数期间,如果形参数组x的值发生了改变,实参指针a的值也就改变了。程序中fun函数是递归调用函数,其运行过程是:第1次调用fun时,a=x,i=0,j=3,ij成立,a[0]与a[3]交换,a数组中的数变为{8,6,1,2},执行i++;j--;继续调用fun,此时i,j分别为1,2,ij成立,a[1]与a[2]交换,a数组中的数变为{8,1,6,2},执行i++j--;继续调用fun,此时i,j分别为2,1,ij不成立,递归调用结束。当返回主函数时,x数组中的数据就为{8,1,6,2}。

  • 第20题:

    有以下程序:includeinclude"string.h"void fun(char*s[],int n){char*t;int i,j;for(

    有以下程序: #include<stdio.h> #include"string.h" void fun(char*s[],int n) { char*t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;} } main() { char*ss[]={"bee","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是( )。

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A

  • 第21题:

    有以下程序:struct S{int n;int a[20];};void f(struct S*P){int i,j,t;for(i=0;in-1;i++)fo

    有以下程序: struct S{int n;int a[20];}; void f(struct S*P) { int i,j,t; for(i=0;i<P->n-1;i++) for(j=j+1;j<P->n-1;j++) if(p->a[i]>p->a[j]) {t=P->a[i];p->a[i]=P->a[j];p->a[j]=t} } main() {int i;struct S s{10,{2,3,1,6,8,7,5,4,10,9}}; f(&s); for(i=0;i<s.n;i++)printf("%d",s.a[i]);} 程序运行后的输出结果是( )。

    A.3

    B.4

    C.5

    D.6


    正确答案:A
    解析:在主函数main()中定义了一个整型变量i和一个结构体变量s。f()函数中,定义了一个结构体指针类型的指针p,外层循环变量i表示数组的第i个元素,内层循环j表示数组的第i+1个元素,调用f()函数,通过指针变量p来引用结构体成员,并把它们进行从小到大排序,最后输出。

  • 第22题:

    写出模板函数实现数值型数组元素值按从小到大排序的程序。

    include<iostream>

    using namespace std;

    template <class T>

    void sort(T b[],int n)

    {

    T temp;

    int i,j;

    T *a=new T[n];

    for (i=0;i<n;i++){a[i]=b[i];}

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

    {

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

    { if(a[i]>a[j])

    {temp=a[i];

    a[i]=a[j];

    a[j]=temp;

    }

    }

    }

    for(i=0;i<n;i++){cout<<a[i]<<" ";}

    cout<<endl;

    delete []a;

    }

    void main()

    {

    int i,n=6;

    int a[]={5,1,9,10,3,8};

    ____________;

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

    {cout<<a[i]<<" ";}

    cout<<endl;

    }


    正确答案:
    template<classT><int>(a,6)

  • 第23题:

    有以下程序includeincludevoidfun(char,*s[],intn){char*t;inti,j; for(i=

    有以下程序 #include <stdio.h> #include <string.h> void fun(char,*s[],int n) { char *t; int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;} } main() { char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5); printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A
    解析:函数fun(char,s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。