您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第六章 数组程序设计 > 【6.4 思考与练习】

6.4 思考与练习

 

思考与练习

1选择题

1)以下程序的输出结果是     

#include <stdio.h>

#include <string.h>

main()

{

    char str[12]={'s','t','r','i','n','g'};

    printf("%d\n",strlen(str));

}

A6                           B7                            C11                   D12

2)以下语句的输出结果是     

printf("%d\n",strlen("\t\"\065\xff\n"));

A5                                                              B14

C8                                                               D.输出项不合法,无正常输出

3)以下程序的功能是:给数组的所有元素输入数据,应填入的正确答案是     

#include <stdio.h>

main()

{

    int a[10],i=0;

 

    while(i<10)

       scanf("%d",      );

  

       

}

Aa+(i++)                  B&a[i+1]                  Ca+i                  D&a[++i]

4设有static char str[]="Beijing";,则执行语句printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为     

A5                           B7                            C12                   D14

5)下面各语句中,能正确进行为字符串赋值操作的是     

Achar st[4][5]={"ABCDE"};                         Bchar s[5]={'A','B','C','D','E'};

Cchar *s; s="ABCDE";                                 Dchar *s; scanf("%s",s);

6)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int n[2],i,j,k;

 

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

        n[i]=0;

    k=2;

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

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

            n[j]=n[j]+1;

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

}

A.不确定的值            B3                            C2                     D1

7)以下对C语言字符数组的描术中,错误的是     

A.字符数组可以存放字符串

B.字符数组中的字符串可以整体输入、输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D.不可以用关系运算符对字符数组中的字符串进行比较

8)定义如下变量和数组:

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]);

A1 5 9                      B1 4 7                      C3 5 7               D3 6 9

9)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int n[3],i,j,k;

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

        n[i]=0;

    k=2;

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

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

            n[j]=n[i]+1;

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

}

A2                           B1                            C0                     D3

10)不能将字符串:Hello!赋给数组b的语句是     

Achar b[10]={'H','e','l','l','o','!','\0'};                Bchar b[10];b="Hello!";

Cchar b[10];strcpy(b,"Hello!");                    Dchar b[10]="Hello!";

11)若有以下定义语句:

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

char c='a',d,g;

则数值为4的表达式是     

Aa[g-c]                                                     Ba[4]

Ca['d'-'c']                                                   Da['d'-c]

12)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char *a="12134211";

    int v1=0,v2=0,v3=0,v4=0,k;

    for(k=0;s[k];k++)

        switch(s[k])

        {

            default: v4++;

            case '1': v1++;

            case '3': v3++;

            case '2': v2++;

        }

    printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);

}

Av1=4,v2=2,v3=1,v4=1                              Bv1=4,v2=9,v3=3,v4=1

Cv1=5,v2=8,v3=6,v4=1                               Dv1=8,v2=8,v3=8,v4=8

13)当执行以下程序且输入ABC时,输出结果是     

#include <stdio.h>

#include <string.h>

main()

{

    char ss[10]="12345";

    strcat(ss,"6789");

    gets(ss);

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

}

AABC                           BABC9              C123456ABC     DABC456789

14)以下数组定义中,合法的是     

Aint a[]="string";                                       Bint a[5]={0,1,2,3,4,5};

Cstring s="string";                                      Dchar a[]={0,1,2,3,4,5};

15)若有以下定义语句:

char s[10]="abcd";

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

则输出结果是(以下u代表空格)     

Aabcd                                                        Ba

Cabcduuuuu                                               D.编译不通过

16)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char *s="121";

    int  k=0,a=0,b=0;

    do

    {

        k++;

        if(k%2==0)

        {

            a=a+s[k]-'0';

            continue;

        } 

        b=b+s[k]-'0';

        a=a+s[k]-'0';

    } while(s[k+1]);

    printf("k=%d a=%d b=%d\n",k,a,b);

}

Ak=3 a=2 b=3         Bk=3 a=3 b=2           Ck=2 a=3 b=2    Dk=2 a=2 b=3

17)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;

    for(k=1;k<3;k++)

    printf("%s\n",&w[k][k]);

}

AABCD                                                     BABCD

         FGH                                   EFG

         KL                                     IJ

         M

CEFG                                                        DFGH

         JK                                     KL

         O

18)以下程序片段的输出结果是     

char str[]="ab\n\012\\\"";

printf(%d",strlen(str));

A3                         B4                            C6                     D12

19)若有以下定义语句:

char x[]="abcdefg";

char y[]={'a','b','c','d','e','f','g'};

则正确的叙述为     

A.数组x和数组y等价

B.数组x和数组y的长度相同

C.数组x的长度大于数组y的长度

D.数组x的长度小于数组y的长度

20)以下程序的输出结果是     

#include <stdio.h>

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

}

A20                        B21                          C22                   D23

21)以下程序的输出结果是     

#include <stdio.h>

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

}

A2ba56                   B6521                      C6                     D62

22)执行以下程序时,如果从键盘上输入:

ab<CR>

c <CR>

def<CR>

则输出结果为     

#include <stdio.h>

main()

{

    char c[N];

    int  i=0;

    for(;i<N;c[i]=getchar(),i++)

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

        putchar(c[i]);

    printf("\n");

}

Aa                          Ba                            Cab                   Dabcdef

         b                  b                   c

         c                  c                   d

         d                  d

         e

         f

23)以下程序的输出结果是     

#include <stdio.h>

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

}

A10000                  B10010                     C00110              D10100

24)以下描述中,不正确的是     

A.字符型数组中可以存放字符串

B.可以对字符型数组进行整体输入、输出

C.可以对整型数组进行整体输入、输出

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

25)执行以下程序片段后,变量k的值为     

int  k=3,s[2];

s[0]=k;k=s[1]*10;

A.不定值                 B33                          C30                   D10

26)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char arr[2][4];

    strcpy(arr,"you");

    strcpy(arr[1],"me");

    arr[0][3]='&';

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

}

Ayou&me               Byou                        Cme                  Derr

27)若执行下列程序时,输入123<空格>456<空格>789<CR>,则输出结果是     

#include <stdio.h>

main()

{

    char s[100];

    int  c, i;

    scanf("%c",&c);

    scanf("%d",&i);

    scanf("%s",s);

    printf("%c,%d,%s\n",c,i,s);

}

A123,456,789                                            B1,456,789

C1,23,456,789                                            D1,23,456

28)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int n[5]={0,0,0},i,k=2;

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

        n[i]=n[i]+1;

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

}

A.不确定的值          B2                            C1                     D0

29)若有定义语句int t[3][2];,能正确表示t数组元素地址的表达式是     

A&t[3][2]               B*(t+3)                    Ct+1                  Dt[2]

30)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a[3][2]={{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);

}

A18                        B14                          C20                   D21

31)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;

    for(k=1;k<3;k++)

    printf("%s\n",w[k]);

}

AABCD                  BABCD                    CEFG                DEFGH

         FGH               EFG                 JK              IJKL

         KL                 IJ                   O

                            M

32)以下定义语句中,错误的是     

Aint a[]={1,2};                                                 Bchar *a[3];

Cchar s[10]="test";                                     Dint n=5,a[n];

33)设int型变量占用两个字节,如有定义int x[10]={0,2,4};,则数组x在内存中所占的字节数是     

A3                         B6                            C10                   D20

34)以下程序的输出结果是     

#include <stdio.h>

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]);

}

A258                      B741                        C852                 D369

35)以下数组定义中,不正确的是     

Aint a[2][3];

Bint b[][3]={0,1,2,3};

Cint c[100][100]={0};

Dint d[3][]={{1,2},{1,2,3},{1,2,3,4}};

36)以下程序的输出结果是     

#include <stdio.h>

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]);

}

A0650                                                       B1470

C5430                                                       D.不确定的值

37)以下选项中,不能正确赋值的语句是     

Achar s1[10];s1="Ctest";                             Bchar s2[]={'C', 't', 'e', 's', 't'};

Cchar s3[20]="Ctest";                                 Dchar *s4="Ctest\n"

38)以下程序的输出结果     

#include <stdio.h>

main()

{

    char a[]={'a','b','c','d','e','f','g','h','\0'};

    int i,j;

    i=sizeof(a);

    j=strlen(a);

    printf("%d,%d\n"i,j);

}

A9,9                       B8,9                         C1,8                  D9,8

39)以下程序的输出结果是     

#include <stdio.h>

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

}

A11                        B19                          C13                   D20

2填空题

1)以下程序的输出结果为     

#include <stdio.h>

main()

{

    int i,j,row,column,m;

    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;i++)

            if(array[i][j]<m)

            {

                m=array[i][j];

                row=i,column=j;

            }

    printf("%d,%d,%d\n",m,row,column);

}

2以下程序的功能是:统计从键盘输入的字符中大写字母的个数。用#号作为输入结束的标志

#include <stdio.h>

#include <ctype.h>

main()

{

    int num[26],i;

    char c;

 

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

        num[i]=0;

 

    /*统计从键盘输入的大写字母的个数*/

    while(      != '#')

        if( isupper(c)) num[c-65]+=1;

 

    /*输出大写字母和该字母的个数*/

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

       if(      ) printf("%c:%d\n,C,num[i]);

}

3)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int arr[10],i,k=0;

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

        arr[i]=i;

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

        k+=arr[i]=i;

    printf("%d\n",k);

}

4)若有定义语句char s[100],d[100]; int j=0,i=0;,且s中字符串已赋值,以下程序的功能是实现字符串的复制(注:不得使用逗号表达式)。

while(s[i])

{

    d[j]=      ;

    j++;

}

d[j]=0;

5)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char s[]="abcdef";

    s[3]='\0';

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

}

6)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如,输入的两个字符串分别为abcdefabceef,则输出结果为-1

#include <stdio.h>

main()

{

    char str[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]!=      ))

        i++;

    s=      ;

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

}

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

#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("%ld",&n);

    printf("Enter a new base:\n");

scanf("%d",&base);

    do

    {

        c[i]=      ;

        i++;

        n=n/base;

    } while(n!=0);

    printf("Transmite the new base:\n");

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

    {

        d=c[i];

        printf("%c",b      ;

    }

}  

3上机操作题

1)有10个整数存放在一个数组中,编写一个程序,求这10个整数的最大值。

2)有n个学生,每个学生有m门课,编写一个程序,求出每个学生的总分,每门课的平均分。

3)编写一个程序,实现输入一个字符串时,将字符串中的所有小写字母转换成对应的大写字母。

4)编写一个程序,删除一个字符串中的所有空格。