第一章 C语言概述
第二章 程序的灵魂——算法
第三章 数据类型、运算符与表达式
第四章 简单的C程序设计
第五章 选择结构程序设计
第六章 循环控制
第七章 数组
第八章 函数
第九章 预处理命令
第十章 指针
第十一章 结构体与共用体
第十二章 位运算
第十三章 文件
模拟试题

 

一、 选择题

(1) 若有以下定义:

char aint b float c double d

则表达式a*b+d-c值的类型为 [  ]

A)float  B)int  C)char  D)double

(2) 表示关系x<=y<=zc语言表达式为 [  ]

A)(X<=Y)&&(Y<=Z)   B)(X<=Y)AND(Y<=Z)

C)(X<=Y<=Z)      D)(X<=Y)&(Y<=Z)

(3) a=1,b=2,c=3,d=4,则表达式:a>ba:c>da:d的结果为 [  ]

A)4   B)3   C)2   D)1

(4) x,y,z,t均为int型变量,则执行以下语句后,x=y=z=2; t=x||y&&zt的值为 [  ]

A)不定值  B)2   C)1   D)0

(5) xy均为int型变量,则执行下的循环后,y值为 [  ]

   for(y=1,x=1;y<=50;y++)

    {if(x==10)}break;

     f (x%2==1){x+=5;continue;}

     x-=3;

    }

A)2   B)4   C)6   D)8

(6) 假定abint型变量,则执行以下语句后b的值为 [  ]

   a=1;b=10;

   do {b-=a; a} while (b-- >0)

 A)9   B)2   C)1   D)-1

(7) jint型变量,则下面for循环语句的执行结果是 [  ]

   for(j=10;j>3;j--)

    {if(j%4)j--

     --j;--j;

     printf("%d "j)

    }

A)6 3   B)7 4   C)6 2   D)7 3

(8) 设有以下宏定义:

   #define N 3

   #define Y(n) ((N1)*n)

   则执行语句:z=2 *(NY(51));后,z的值为 [  ]

A)出错   B)42   C)48   D)54

(9) 设有如下定义:

   intarr[]={6,7,8,9,10}

   int *ptr;

   则下列程序段的输出结果为 [  ]

   ptr=arr;

   ptr+=2;

   printf ("%d,%d\n"*ptr,*(ptr+2))

A)8,10   B)6,8   C)7,9   D)6,10

(10) 以下程序的输出结果是 [  ]

  main()

  {inti,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*a[i]]

   for (i=0;i<3;i)k+=p[i]*2;

   printf("%d\n"k)

  }

A)20  B)13  C)10  D)12

(11) 执行以下程序段后,m的值为 [  ]

   int a[2][3]={{1,2,3}{4,5,6}}int m,*p;

   p=&a[0][1] m=(*p)*(*(p+2))*(*(p+4))

A)45   B)44   C)48  D)46

(12) 有以下程序段

  char arr[]="ABCDE"

  char *ptr;

  for(ptr=arr;ptr<arr+5;ptr++)printf("%s\n"ptr)

输出结果是 [  ]

A)ABCD   B)A   C)E   D)ABCDE

(13) 有以下程序

  main()

  {intx,i;

   for(i=1;i<100;i)

   {x=i; if(x%3==0)if(x%5==0)if(x%4==0)printf("%d",i)}

  }

输出结果是 [  ]

A)28  B)27  C)60   D)41

(14) 有下列程序

  #include<stdio.h>

  main()

  {union

   {int k;

    char i[2]

   }*s,a;

  s=&a;

  s->i[0]='9';s->i[1]='8';

  printf("%x\n"s->k)

  }

输出结果是 [  ]

A)3839         B)3938

C)380039       D)390038

(15)有以下程序

   #include <stdio.h>

   main()

   {inta,b,c=246;

    a=c/100%9;

    b=(--a)&&(--a)

    printf("%d,%d\n"a,b)

   }

  输出结果是 [  ]

  A)2,1   B)0,0   C)4,3   D)2,1

(16)设有如下定义:

  int (*ptr)()

  则以下叙述中正确的是 [  ]

  A)ptr是指向一维组数的指针变量

  B)ptr是指向int型数据的指针变量

  C)ptr是指向函数的指针,该函数返回一个int型数据

  D)ptr是一个函数名,该函数的返回值是指向int型数据的指针

(17)有以下程序

   #include <stdio.h>

   structstu

   {intnum;

    char name[10]

    int age;

   }

  void fun(structstu *p)

   {printf("%s\n"(*p).name)}

   main()

   {

    structstu students[3]={{9801,"Zhang"20}

    {9802,"Wang"19}

     {9803,"Zhao"18}}

      fun(students+2)

    }

   输出结果是 [  ]

   A)Zhang   B)Zhao   C)Wang   D)18

(18)设有以下说明和定义:

   typedef union

   {long i;int k[5]char c;}DATE;

    struct date

     {intcat;DATEcow;double dog;}too;

      DATE max;

   则下列语句的执行结果是 [  ]

   printf ("%d"sizeof (struct date )+sizeof(max))

    A)26   B)30   C)18   D)8

(19)有以下程序

  main()

  {char a[]="programming"b[]="language"

   char *p1,*p2;

   int i;

   p1=a;p2=b;

   for(i=0;i<7;i)

   if(*(p1+i)==*(p2+i))printf("c"*(p1+i))

  }

  输出结果是 [  ]

  A)gm   B)rg   C)or   D)ga

(20)有以下程序

   viod fun (int *a,int *b,int *c)

   {a=456;b=567;c=678;}

   main()

   {int x=10,y=20,z=30;

    fun (&x,&y,&z)

    printf("%d,%d,%d\n"x,y,z)

   }

   输出结果是 [  ]

   A)30,20,10          B)10,20,30

   C)456,567,678       D)678,567,456

(21)有以下程序

   int fun(intx,inty,int *cp,int *dp)

    {*cp=x+y;*dp=x-y;}

   main()

    {inta,b,c,d;

     a=30;b=50;

     fun(a,b,&c,&d)

     printf("%d,%d\n"c,d)

    }

   输出结果是 [  ]

   A)50,30         B)30,50

C)80,20         D)80,20

(22)有以下程序

   main()

   {inti,j;

    for(j=10;j<11;j++)

    {for(i=9;i<j;I++)

     if ((j%i))break;

     if(i=j-1)printf("%d"j)

    }

   }

   输出结果是 [  ]

   A)11   B)10   C)9    D)10 11

(23)有以下程序

  #include "atdio.h"

  intabc(intu,intv)

  main ()

  {int a=24,b=16,c;

   c=abc(a,b)

   printf('%d\n"c)"

  }

  intabc(intu,int v)

  {int w;

   while(v)

   {w=u%v;u=v;v=w }

    return u;

  }

  输出结果是 [  ]

  A)6   B)7   C)8   D)9

参考答案

(1)D (2)B (3)A (4)C (5)C (6)D (7)D (8)A (9)A (10)C

(11)C (12)D (13)C (14)A (15)B (16)C (17)B (18)C (19)D (20)C

(21)C (22)A (23)C

二、 填空题

 (1) 读懂下列程序,并补充完整,符合题意

  ____1_____

  void sort(char (*p)[10],int n)

  {inti,j;

  char temp[10];

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

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

  if( ____4____ >0)

   { strcpy( ____5____ );

    strcpy( ____6____ );

    strcpy( ____7____ );}}

  void main(void)

   {int i;

char str[][10]={{"CHINA"},{"AMERICA"},{"FRANCE"},{"RUSSIA"},{"GERMANY"}};

    printf("Before sort the strings is:\n");

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

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

      sort(str, ____9____ );

      printf("After sort the strings is:\n");

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

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

 

   运行结果如下:

   Before sort the strings is:

     CHINA

     AMERICA

     FRANCE

     RUSSIA

     GERMANY

   After sort the strings is:

     AMERICA

     CHINA

     FRANCE

     GERMANY

     RUSSIA

 (2)题意:利用筛选法将2100以内的素数输出

  #define M 98

  void shax(______)

  {inti,j;

   for(i=0;i<____;)

    {for(j=i+1;________;j++)

     if(_________)a[j]=0;

     i=i+1;

     while(a[i]______)i++;

 

    } }

  void main()

   {int a[M],*p;

    inti,k=0;

    for(________;i<M;i++)

    a[i]=i+2;

    shax(a);

   _______;

   printf("\n");

   while(p<a+M)

    {while(*p==0)______;

     k++;

   if(p<a+M)

   if(k%10==0)printf("%5d\n",______);

   else printf("%5d",_______);}}

 

参考答案

1

1#include <string.h>

2i<n-1

3j<n-i-1

4strcmp(p[j],p[j+1])

5temp,p[j] 5temp,p[j+1]

6p[j],p[j+1] 6p[j+1],p[j]

7p[j+1],temp 7p[j],temp

8str[i] 8str+i

95

10str[i] 10str+i

2

1int a[M]int *aint a[]

2M

3j<M

4a[j]%a[I]==0

5==0

6i=0

7p=a

8p++

9*p++

10*p++

三、编程题

C语言编写一个内旋矩阵。

参考答案

#define N 10

main()

{ int a[N][N];

int n;

inti,j,k,x;

printf("\n Input n:");

scanf("%d",&n);

i=0;j=n-1;k=1;

while (i<=j)

{

for(x=i;x<=j;x++) a[x][i]=k++;

for(x=i+1;x<=j;x++)a[j][x]=k++;

for(x=j-1;x>=i;x--)a[x][j]=k++;

for(x=j-1;x>i;x--)a[i][x]=k++;

i++;

j--;

}

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

{

printf("\n");

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

printf("%5d",a[i][j]);

}

}

 

教学日历