c语言习题集合(数组)

1 选择题

  1. 以下关于数组的描述正确的是( )。
    A. 数组的大小是固定的,但可以有不同的类型的数组元素
    B. 数组的大小是可变的,但所有数组元素的类型必须相同
    C. 数组的大小是固定的,所有数组元素的类型必须相同
    D. 数组的大小是可变的,可以有不同的类型的数组元素

  2. 以下对一维整型数组a的正确说明是( )。
    A.int a(10); B. int n=10,a[n];
    C.int n; D. #define SIZE 10
    scanf("%d",&n); int a[SIZE];
    int a[n];

  3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
    A. 整型常量
    B. 整型表达式
    C. 整型常量或整型表达式
    D. 任何类型的表达式

  4. 以下对一维数组m进行正确初始化的是( )。
    A. int m[10]=(0,0,0,0) ; B. int m[10]={ };
    C. int m[ ]={0}; D. int m[10]={10*2};

  5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是( )。
    A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1

  6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
    A. 3 B. 6 C. 10 D. 20

  7. 若有以下说明:
    int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
    char c=‘a’,d,g;
    则数值为4的表达式是( )
    A. a[g-c] B. a[4] C. a[‘d’-‘c’] D. a[‘d’-c]

  8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
    #include
    main()
    {
    int a[10],i=0;
    while(i<10) scanf("%d",________ );

    }
    A. a+(i++) B. &a[i+1] C. a+i D. &a[++i]

  9. 执行下面的程序段后,变量k中的值为( )。
    int k=3, s[2];
    s[0]=k; k=s[1]*10;
    A. 不定值 B. 33 C. 30 D. 10

  10. 以下程序的输出结果是( )
    main()
    {
    int i, a[10];
    for(i=9;i>=0;i–) a[i]=10-i;
    printf("%d%d%d",a[2],a[5],a[8]);
    }
    A. 258 B. 741 C. 852 D. 369

  11. 以下程序运行后,输出结果是( )。
    main()
    {
    int n[5]={0,0,0},i,k=2;
    for(i=0;i printf("%d\n",n[k]);
    }
    A. 不确定的值 B. 2 C. 1 D. 0

  12. 以下程序运行后,输出结果是( )。
    main()
    {
    int y=18,i=0,j,a[8];
    do
    { a[i]=y%2; i++;
    y=y/2;
    } while(y>=1);
    for(j=i-1;j>=0;j–) printf("%d",a[j]);
    printf("\n");
    }
    A. 10000 B. 10010 C. 00110 D. 10100

  13. 以下程序运行后,输出结果是( )。
    main()
    {
    int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k;
    for(k=0;k<4;k++)
    if(a1[i] else a[k]=a2[j++];
    for(k=0;k<4;k++) printf("%d",a[k]);
    }
    A. 1234 B. 1324 C. 2413 D. 4321

  14. 以下程序运行后,输出结果是( )。
    main()
    {
    int i,k,a[10],p[3];
    k=5;
    for (i=0;i<10;i++) a[i]=i;
    for (i=0;i<3;i++) p[i]=a[i*(i+1)];
    for (i=0;i<3;i++) k+=p[i]*2;
    printf("%d\n",k);
    }
    A. 20 B. 21 C. 22 D. 23

  15. 以下程序运行后输出结果是( )。
    main( )
    {
    int n[3],i,j,k;
    for(i=0;i<3;i++)
    n[i]=0;
    k=2;
    for (i=0;i for (j=0;j n[j]=n[i]+1;
    printf("%d\n",n[1]); }
    A. 2 B. 1 C. 0 D. 3

  16. 下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是 ( )。
    main()
    {
    int i,a[10],x,flag=0;
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    scanf("%d",&x);
    for(i=0;i<10;i++) if _______ {flag=i+1; break;}
    printf("%d\n", flag);
    }
    A. x!=a[i] B. !(x-a[i]) C. x-a[i] D. !x-a[i]

  17. 若说明:int a[2][3]; 则对a数组元素的正确引用是( ) 。
    A. a(1,2) B. a[1,3] C. a[1>2][!1] D. a[2][0]

  18. 若有定义:int b[3][4]={0};则下述正确的是( ) 。
    A. 此定义语句不正确
    B. 没有元素可得初值0
    C. 数组b中各元素均为0
    D. 数组b中各元素可得初值但值不一定为0

  19. 若有以下数组定义,其中不正确的是( ) 。
    A. int a[2][3];
    B int b[][3]={0,1,2,3};
    C. int c[100][100]={0};
    D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}};

  20. 若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。
    A. t[2][4] B. t[5][0] C. t[0][0] D. t[0,0]

  21. 在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。
    A. 4 B. 1 C. 2 D. 5

  22. 在定义int n[5][6]后第10个元素是( )。
    A. n[2][5] B. n[2][4] C. n[1][3] D. n[1][4]

  23. 若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公式为( )。
    (假设c[0][0]位于数组的第一个位置)
    A. im+j B. jm+i C. im+j-1 D. im+j+1

  24. 若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是( )。
    float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
    A. 0.0 B. 4.0 C. 5.0 D. 6.0

  25. 以下程序运行后,输出结果是 ( )。
    main()
    {
    int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
    printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
    }
    A. 0650 B. 1470 C. 5430 D. 输出值不定

  26. 以下程序运行后,输出结果是( )。
    main()
    {
    int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
    int i,s=0;
    for(i=0;i<4;i++) s+=aa[i][1];
    printf(“%d\n”,s);
    }
    A. 11 B. 19 C. 13 D. 20

  27. 有以下程序
    main( )
    {
    int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
    for(i=1;i<3;i++)
    for(j=0;j<=i;j++) s+=a[i][j];
    printf("%d\n",s);
    }
    该程序的输出结果是( )。
    A. 18 B. 19 C. 20 D. 21

  28. 若定义如下变量和数组:
    int i;
    int x[3][3]={1,2,3,4,5,6,7,8,9};
    则下面语句的输出结果是( )。
    for(i=0;i<3;i++) printf("%d",x[i][2-i]);
    A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9

  29. 下述对C语言字符数组的描述中错误的是( )。
    A. 字符数组可以存放字符串
    B. 字符数组中的字符串可以整体输入、输出
    C. 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
    D. 不可以用关系运算符对字符数组中的字符串进行比较

  30. 下述对C语言字符数组的描述中正确的是 ( )。
    A. 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间
    B. 一维数组的元素在引用时其下标大小没有限制
    C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
    D. 一维数组的第一个元素是其下标为1的元素

  31. 不能把字符串:Hello!赋给数组b的语句是( )。
    A. char str[10]= {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, '! '};
    B. char str[10];str=“Hello!”;
    C. char str[10];strcpy(str,“Hello!”);
    D. char str[10]=“Hello!”;

  32. 合法的数组定义是( )。
    A. int a[]=“string”; B. int a[5]={0,1,2,3,4,5};
    C. int s=“string”; D. char a[]={0,1,2,3,4,5};

  33. 下列语句中,不正确的是( )。
    A. static char a[2]={1,2}; B. static char a[2]={ ‘1’, ‘2’};
    C. static char a[2]={ ‘1’, ‘2’, ‘3’}; D. static char a[2]={ ‘1’};

  34. 若给出以下定义:
    char x[ ]=“abcdefg”;
    char y[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};
    则正确的叙述为( )。
    A. 数组x和数组y等价 B. 数组x和数组y的长度相同
    C. 数组x的长度大于数组y的长度 D. 数组x的长度小于数组y的长度

  35. 若有数组定义: char array [ ]=“China”; 则数组 array所占的空间为( )。
    A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节

  36. 若有定义和语句:
    char s[10];s=“abcd”;printf("%s\n",s);
    则结果是(以下└┘代表空格)( )。
    A. 输出abcd B. 输出a C. 输出abcd└┘└┘└┘└┘ D. 编译不通过

  37. 下面程序运行后,输出结果是( )。
    main()
    {
    char ch[7]={ “65ab21”};
    int i,s=0;
    for(i=0;ch[i]>= ‘0’&&ch[i]<= ‘9’;i+=2)
    s=10*s+ch[i]- ‘0’;
    printf("%d\n",s);
    }
    A. 12ba56 B. 6521 C. 6 D. 62

  38. 运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输出结果是( )。
    A. 123,456,789 B. 1,456,789
    C. 1,23,456,789 D. 1,23,456
    main()
    {
    char s[100]; int c, i;
    scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
    printf("%c,%d,%s\n",c,i,s);
    }

  39. 运行下面的程序,如果从键盘上输入:
    ab<回车>
    c <回车>
    def<回车>
    则输出结果为( )。
    A. a B. a C. ab D. abcdef
    b b c
    c c d
    d d
    e
    f
    #include
    #define N 6
    main()
    {
    char c[N];
    int i=0;
    for( ;i for( i=0;i printf("\n");
    }

  40. 运行下面的程序,如果从键盘上输入:ABC时,输出的结果是( )。
    #include
    main()
    {
    char ss[10]=“12345”;
    strcat(ss, “6789” );
    gets(ss);printf("%s\n",ss);
    }
    A. ABC B. ABC9 C. 123456ABC D. ABC456789

  41. 判断两个字符串是否相等,正确的表达方式是( )。
    A. while(s1==s2) B. while(s1=s2)
    C. while(strcmp(s1,s2)==0) D. while(strcmp(s1,s2)=0)

  42. 以下程序的输出结果是( )。
    main()
    {
    char str[12]={ ‘s’,‘t’,‘r’,‘i’,‘n’,‘g’};
    printf("%d\n",strlen(str));
    }
    A. 6 B. 7 C. 11 D. 12

  43. 若有以下程序片段:
    char str[ ]=“ab\n\012\”";
    printf("%d",strlen(str));
    上面程序片段的输出结果是 ( )。
    A. 3 B. 4 C. 6 D. 12

  44. 若有以下程序段,输出结果是( )。
    char s[ ]="\141\141abc\t";
    printf ("%d\n",strlen(s));
    A. 9 B. 12 C. 13 D. 14

  45. 设有static char str[ ]=“Beijing”;
    则执行printf("%d\n", strlen(strcpy(str,“China”)));
    后的输出结果为 ( )。
    A. 5 B. 7 C. 12 D. 14

  46. 以下程序运行后,输出结果是( )。
    main()
    {
    char cf[3][5]={“AAAA”,“BBB”,“CC”};
    printf(""%s"\n",ch[1]);
    }
    A. “AAAA” B. “BBB” C. “BBBCC” D. “CC”

  47. 以下程序运行后,输出的结果是( )。
    #include
    #include
    main()
    {
    char w[ ][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”},k;
    for (k=1;k<3;k++)
    printf("%s\n",&w[k][k]);
    }
    A. ABCD B. ABCD
    FGH EFG
    KL IJ
    M
    C. EFG D. FGH
    JK KL
    O

  48. 以下程序运行后,输出结果是( )。
    main()
    {
    char arr[2][4];
    strcpy(arr,“you”); strcpy(arr[1],“me”);
    arr[0][3]=’&’;
    printf("%s \n",arr);
    }
    A. you&me B. you C. me D. err
    4.2 填空题

  49. C语言中,数组元素的下标下限为 ________。

  50. C程序在执行过程中,不检查数组下标是否________。

  51. 在定义时对数组的每一个元素赋值叫数组的________;C语言规定,只有________存储类型和________存储类型的数组才可定义时赋值。

  52. 下面程序的运行结果是________。
    #define N 5
    main()
    {
    int a[N]={1,2,3,4,5},i,temp;
    for(i=0;i {temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;}
    printf("\n");
    for(i=0;i }

  53. 以下程序以每一行输出4个数据的形式输出a数组。
    #include
    main()
    {
    int a[20],i;
    for(i=0;i<20;i++) scanf("%d", 【1】);
    for(i=0;i<20;i++)
    {if ( 【2】 ) 【3】 ;
    printf("%3d",a[i]);
    }
    printf("\n");
    }

  54. 以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中。
    #include
    main()
    {
    int a[10]={1,2,5,8,9,10}, an=5,b[10]={1,3,4,8,12,18},bn=5;
    int i,j,k,c[20],max=9999;
    a[an+1]=b[bn+1]=max;
    i=j=k=0;
    while((a[i]!=max)||(b[j]!=max))
    if(a[i] else {c[k]= 【3】; k++; 【4】;}
    for(i=0;i }

  55. 以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
    main( )
    {
    float x[1000], sum=0.0, ave, a;
    int n=0, i;
    printf(“Enter mark:\n”);scanf("%f",&a);
    while(a>=0.0&& n<1000)
    { sum+=【1】 ; x[n]= 【2】 ;
    n++; scanf("%f",&a);
    }
    ave=【3】 ;
    printf(“Output:\n”);
    printf(“ave=%f\n”,ave);
    for (i=0;i if ( 【4】 ) printf ("%f\n",x[i]);
    }

  56. 以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此二进制数。注意:二进制数的最低位在数组的第一个元素中。
    #include
    main()
    {
    int b[16],x,k,r,i;
    printf(“please input binary num to x”); scanf("%d",&x);
    printf("%d\n",x);
    k=-1;
    do
    {r=x% 【1】 ;
    b[++k]=r;
    x/= 【2】 ;
    }
    while(x>=1);
    for(i=k; 【3】 ;i–)
    printf("%d",b[i]); printf("\n");
    }

  57. 输入10个整数,用选择法排序后按从小到大的次序输出。
    #define N 10
    main( )
    {
    int i,j,min,temp,a[N];
    for(i=0;i scanf("%d", 【1】);
    printf("\n");
    for(i=0; 【2】; i++)
    {min=i;
    for(j=i;j if(a[min]>a[j]) 【3】 ;
    temp=a[i];
    a[i]=a[min];
    a[min]=temp;
    }
    for (i=0;i printf("%5d",a[i]);
    printf("\n");
    }

  58. 当先后输入1,3,4,12,23时,屏幕上出现________;再输入12时,屏幕上出现________。
    #include
    #define N 5
    main()
    {
    int i,j,number,top,bott,min,loca,a[N],flag;
    char c;
    printf(“please input 5 numbers a[i]>a[i-1]\n”);
    scanf("%d",&a[0]); i=1;
    while(i {scanf("%d",&a[i]); if(a[i]>=a[i-1]) i++;} printf("\n");
    for(i=0;i flag=1;
    while(flag)
    { scanf("%d",&number); loca=0; top=0; bott=N-1;
    if ((numbera[N-1])) loca=-1;
    while((loca0)&&(top<=bott))
    {min=(bott+top)/2;
    if(number
    a[min])
    {loca=min;printf("%d is the %dth number\n",number,loca+1);}
    else if (number else top=min+1;
    }
    if (loca0||loca-1) printf("%d is not in the list \n",number);
    c=getchar();
    if (c==’N’||c==’n’) flag=0;
    }
    }

  59. 以下程序运行结果是 ________.
    #include
    main()
    {
    int a[3][3]={1,2,3,4,5,6,7,8,9},i,s1=0,s2=1;
    for(i=0;i<=2;i++) { s1=s1+ a[i][i];
    s2=s2*a[i][i];};
    printf(“s1=%d,s2=%d”,s1,s2);
    }

  60. 以下程序完成功能是:计算两个3*4阶矩阵相加,并打印出结果。请填空。
    #include
    main()
    {
    int a[3][4]={{3,-2,1,2},{0,1,3,-2},{3,1,0,4}};
    int b[3][4]={{-2,3,0,-1},{1,0,-2,3},{-2,0,1,-3}};
    int i,j,c[3][4];
    for(i=0;i<3;i++)
    for(j=0;j<4;j++)
    ________;
    for(i=0;i<3;i++)
    { for(j=0;j<4;j++)
    printf("%d",c[i][j]);
    printf("\n");
    }
    }

  61. 以下程序的运行结果是________.
    main()
    {
    int i, j,a[3][3];
    for(i=0;i<3;i++)
    {for(j=0;j<3;j++)
    {if(i==3) a[i][j]=a[i-1][a[i-1][j]]+1;
    else a[i][j]=j;
    printf("%4d",a[i][j]);
    }
    printf("\t");
    }
    }

  62. 阅读下列程序:
    #include
    main()
    {
    int i, j, row, column,m;
    static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
    m=array[0][0];
    for (i=0; i<3; i++)
    for (j=0; j<3; j++)
    if (array[i][j] { m=array[i][j]; row=i; column=j;}
    printf("%d,%d,%d\n",m,row,column);
    }
    上述程序的输出结果是 ________。

  63. 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是________。
    :
    .
    char a[10],b;
    scanf(“a=%s b=%c”,a,&b);
    :
    .

  64. 以下程序段的输出结果是________。
    main()
    {
    char b[]=“Hello,you”;
    b[5]=0;
    printf("%s\n", b );
    }

  65. 若有以下程序段,若先后输入:
    English
    Good
    则其运行结果是________。
    main()
    {
    char c1[60],c2[3];
    int i=0,j=0;
    scanf("%s",c1);
    scanf("%s",c2);
    while(c1[i]!= ‘\0’) i++;
    while(c2[j]!= ‘\0’) c1[i++]=c2[j++];
    c1[i]= ‘\0’;
    printf("\n%s",c1);
    }

  66. 从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。
    #include
    main()
    {
    static char str[ ]={‘h’,’e’,’l’,’l’,’o’};
    char str1[5];
    【1】 ;
    for(i=0;i<5;i++)
    【2】 ;
    flag=0;
    for(i=0;i<5;i++)
    if 【3】 {flag=1; break;}
    if(flag) printf(“this word is not hello”);
    else printf(“this word is hello”);
    }

  67. 以下程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
    #include
    #include
    main()
    {
    char a[]=“clanguage”,t;
    int i, j, k;
    k=strlen(a);
    for(i=0; i<=k-2; i+=2)
    for(j=i+2; j<=k; 【1】)
    if( 【2】 )
    { t=a[i]; a[i]=a[j]; a[j]=t; }
    puts(a);
    printf("\n");
    }

  68. 输入5个字符串,将其中最小的打印出来。
    main()
    {
    char str[10],temp[10]; int i;
    【1】;
    for(i=0;i<4;i++)
    {gets(str);
    if (strcmp(temp,str)>0) 【2】;
    }
    printf("\nThe first string is:%s\n",temp);
    }

  69. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。
    #include
    main( )
    {
    char str1[100],str2[100],c;
    int i,s;
    printf("\n input string 1:\n"); gets(str1);
    printf("\n input string 2:\n"); gets(str2);
    i=0;
    while((strl[i]==str2[i]&&(str1[i]!= 【1】))
    i++;
    s= 【2】 ;
    printf("%d\n",s);
    }

  70. 设有下列程序:
    #include
    #include
    main()
    {
    int i;
    char str[10], temp[10];
    gets(temp);
    for (i=0; i<4; i++)
    { gets(str);
    if (strcmp(temp,str)<0) strcpy(temp,str);
    }
    printf("%s\n",temp);
    }
    上述程序运行后,如果从键盘上输入(在此代表回车符):
    C++
    BASIC
    QuickC
    Ada
    Pascal
    则程序的输出结果是 ________。

  71. 以下程序功能是:统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
    #include
    #include
    main( )
    {
    int num[26],i; char c;
    for(i=0; i<26; i++) num[i]=0;
    while( 【1】 != ‘#’) /统计从终端输入的大写字母个数/
    if( isupper©) num[c-65]+=1;
    for(i=0; i<26; i++) /输出大写字母和该字母的个数/
    if(num[i]) printf("%c:%d\n",i 【2】 , num[i]);
    }

  72. 下面程序段完成功能是:输出两个字符串中对应字符相等的字符。请填空。
    char x[ ]= “language”;
    char y[ ]= “llngga”;
    int i=0;
    while (x[i]!= 【1】 &&y[i]!= 【2】 )
    { if (x[i]==y[i]) printf("%c", 【3】);
    else i++;
    }

  73. 下面程序完成功能是:计算一个字符串中子串出现的次数。
    #include
    main()
    {
    int i ,j, k,count;
    char str1[20],str2[20];
    printf(“zhu chuan:”);
    gets(str1);
    printf(“zi chuan:”);
    gets(str2);
    【1】;
    for(i=0;str1[i];i++)
    for(j=i,k=0;str1[j]==str2[k];j++,k++)
    if ( 【2】 )
    count++;
    printf(“chuxian cishu=%d\n”,count);
    }

  74. 下面程序完成以下功能:从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
    #include
    main()
    {
    char s[81];
    int i , c, num=0,word=0;
    【1】;
    for(i=0;(c=s[i])!=’\0’;i++)
    if(c32) 【2】;
    else if (word
    0) {word=1; 【3】;}
    printf(“there are %d words.\n”,num);
    }

  75. 下面程序完成功能是:判定用户输入的正整数是否为“回文数”,所谓“回文数”是指正读反读都相同的数。请填空。
    #include
    main()
    {
    int buffer[10], i,k,flag;
    long number ,n;
    printf(“please input one number”);
    scanf("%ld",&number);
    k=0;
    n=number;
    do
    { 【1】 ;
    k=k+1;
    n=n/10;
    }while (n!=0);
    flag=1;
    for( i=0;i<=(k-1)/2;i++)
    if ( 【2】 )
    flag=0;
    if(flag)
    printf("%ld is huiwenshu\n",number);
    else printf("%ld is not huiwenshu\n",number);
    }
    4.3 答案及部分解析
    一.选择题答案

  76. C 2. D 3. C 4. C 5. C 6. D

  77. D 8. A 9. A 10. C 11. D 12. B

  78. A 14. B 15. D 16. B 17. C 18. B

  79. D 20. C 21. A 22. C 23. D 24. A

  80. A 26. B 27. A 28. C 29. C 30. A

  81. B 32. D 33. C 34. C 35. C 36. D

  82. C 38. D 39. C 40. A 41. C 42. A

  83. C 44. A 45. A 46. B 47. D 48. A

  84. 解析:程序中的for语句为n[0]和n[1]重新赋了值,但要输出的应该是n2值。

  85. 解析:第一个for语句中当k=0时 a1[0]a2[0],a[1]=2,j值为1;当k=2时,a1[1]a2[1] a[3]=4,j值为2第二个for语句输出a数组。

  86. 解析:第一个for循环是为了将0,1,2,3,4,5,6,7,8,9分别赋给a[0]-a[9];第二个for循环再将a[0],a[2],a[6]的值赋给p[0],p[1],p[2];第三个for循环将3个数组下标变量值*2后累加,结果为16,再和k初值5相加,最终结果为21。

  87. 解析:本题考点是关于给数组赋初值时,初值的个数少于数组中元素个数。a数组实际存储状态是a[0][2]=0,a[1][2]=0,a[2][2]=0.

  88. 解析:字符串的最后一个字符应该是结束符’\0’。

  89. 解析:在程序执行语句部分,不允许把字符串赋予一个数组。

  90. 解析:函数strcat()是字符串连接。gets()中输入数据时以回车符作为结束符。在纳入内存时,输入字符串末尾的回车符自动变换成代码‘\0’,从而使它成为C字符串。它在stdio.h中被定义,输出ss时,遇到“0”停止输出。

  91. 解析:本题中strcpy(arr,”you”)函数的功能是将”you” 3个字符分别赋给arr[0][0]、 arr[0][1] 和a[0][2];strcpy(arr[1],”me”) 函数的功能是将 “me” 分别赋给arr[1][0]和a[1][1]。
    二.填空题答案

  92. 答案:0

  93. 答案:越界

  94. 答案:初始化 静态 外部

  95. 答案:5 4 3 2 1

  96. 答案:【1】&a[i] 【2】i%4==0 【3】printf("\n");

  97. 答案:【1】a[i] 【2】i++或++i 【3】b[j] 【4】j++或++j

  98. 答案:【1】a 【2】a 【3】sum/n 【4】x[i]

  99. 答案:【1】2 【2】2 【3】i>=0
    解析: 采用辗转相除法进行进制之间的相互转换,将结果存储在一维数组b中,最后显示其值即可。

  100. 答案:【1】&a[i] 【2】i

  101. 答案: 1 3 4 12 23 12 is the 4th number

  102. 答案: s1=15 ,s2=45

  103. 答案: c[i][j]=a[i][j]+b[i][j]
    解析: 使用两个二维数组a和b存放两个3*4阶矩阵的元素值,然后用两重for循环进行相加求值产生二维数组c,最后显示c的各元素值。

  104. 答案:0 1 2 0 1 2 0 1 2

  105. 答案:-850,2,0

  106. 答案:a=1234 b=5 A或a=1234b=5

  107. 答案:Hello

  108. 答案:EnglishGood

  109. 答案: 【1】 int i,flag 【2】 str[i]=getchar( ) 【3】 str1[i]!=str[i]

  110. 答案:【1】 j+=2 【2】 a[i]>a[j]
    解析: 外层for循环控制i步长为2,内层for循环控制j步长为2.当i=0时,j=2,a[0]>a[2],交换c和a;j=4,a[0]a[6], 交换a和c字符;j=8,a[2]a[6], 交换c和g字符;j=8,a[4]a[8], 交换e和g字符;输出”alancuegg”。

  111. 答案:【1】 gets(temp) 【2】 strcpy(temp,str)

  112. 答案:【1】 '\0’或0 【2】 strl[i]-str2[i]

  113. 答案:QuickC

  114. 答案: 【1】 (c=getchar()) 注意,外层括号不得遗漏 【2】 +65 或 +‘A’

  115. 答案:【1】 ‘\0’ 【2】 ‘\0’ 【3】 x[i++]

  116. 答案:【1】 count=0 【2】!str2[k+1]

  117. 答案:【1】 gets(s) 【2】 word=0 【3】 num++

  118. 答案:【1】 buffer[k]=n%10 【2】 buffer[i]!=buffer[k-1-i]

你可能感兴趣的:(c语言习题集合(数组))