一、    填空题(每空1分,共10分)
1.    C语言中的每条基本语句以_分号________作为结束符。
2.    设int a[2][3] = {{2},{3}};则数组元素__a[1][0]__________的值为3。
3.设int a=3,b=4,c=5;表达式a+b>c&&b==c的值为__0________。
4. 设int i = 5;则语句while (i > = 1) i - -;执行后i的值为_0______。
5. n为整型,表达式n=1,n+2,n*5 的值是__5_______。
6. 已知:float x=8.53; 整形变量i=(int)x;则i=__8_____。
7. 已知:int x=5;语句y=x++*x++;执行完成后x=___7__,y=_25____。
8.char str[5]=“GDMMfhdhhdfhg”;则执行strlen(str)的值为__4_______。
9.已知:int x,a;则表达式x=(a=4,6*2)的值为_____12____。
二、    单选题,将每小题正确答案填入以下对应表格中。
(每小题2分,共30分)
题号    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15
答案                                                           
1.设a为整型变量, 能正确表达1<a≤10 的C语言表达式是_____c_______。
  (A) 1<a<=10            (B) 1<a≤10
  (C) a>1 && a<=10        (D) 1<a and≤10
2.下列变量名中,_____a_____是合法的
  (A) CHINA    (B) 1byte-size  (C) double    (D)  A+a
3. 定义int x[6]={1,2,3,4},*p=x;  则*(++p)的值为___b_______。
    (A) 1          (B) 2    (C) 3        (D) 4
4.下列说法错误的是____b______。
(A)在一个源程序中,全局变量和局部变量可以同名。
(B) C语言不允许将整个数组作为函数的参数进行传递。
(C)在函数间传递数组时,通常传递的是数组的首地址。
(D)函数体内的语句可以绕过函数参数和返回值直接访问全局变量。
5. 定义int  m=’b’; char  n=’B’ ,则语句printf("%d",m-n);输出的结果是___a_______。
  (A)32    (B) 没有结果    (C)-32    (D) m-n
6. 若有以下说明和语句:
  struct worker
  {
int no;
char *name;
  }work, *p=&work;
  则以下引用方法不正确的是__________。
  (A)   (B) work->no  (C) p->no  (D)(*p).no
7.以下说法错误的是____b______。
(A)一个结构体变量的指针就是该变量所占据的内存空间的起始地址。
(B)结构体的成员不能是其它结构体类型。
(C)结构体数组中的所有元素都具有相同的结构体类型。
(D)结构体类型的变量可以拥有不同数据类型的成员。
8.若执行fopen函数时发生错误,则函数的返回值是___b_______。
(A)随机值  (B) NULL  (C)EOF  (D)1
9.若定义 int a,b,*p1=&a,*p2=&b; 使p2指向a的赋值语句是_c_________。
    (A)*p2=&a;          ( B) p2=&p1; 
      (C) p2=&*p1          ( D) p2=*&a;
10.在调试程序的过程中,错误信息“Declaration syntax error in function main”的可能含义是________c____。
  (A)    语句漏掉分号(;)            (B)    变量重复定义
  (C)    主函数中标识符定义错误    (D)    没有定义变量标识符
11.若执行以下程序时从键盘上输入3  4,则输出结果是______b_____。
  #include<stdio.h>
  void main( )
  {  int a,b,s;
        scanf("%d%d",&a,&b);  4
        s=a;  3
        if (a<b) s=b;
一个完整的c语言程序        s*=s;
        printf("%d\n",s);
    }
    (A)14        (B) 16      (C) 18      (D)20
12. 已知: int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=a; 则不能表示数组a中元素的表达式是_______b____。
(A)*p          (B)a[10]    (C)*a      (D)a[p-a]
13. 下列说法错误的是____b_______。
(A)指针变量的存储空间存放的是一个地址值。
(B)在指针操作中,运算符“&”是取指针指向的对象的值。
(C)在指针操作中,运算符“*”的操作对象是一个地址。
(D)语句int  *ip;定义了指针变量只能存放整型变量的地址。
14.判断字符串str1是否大于字符串str2,应当使用___d________。
(A)if (str1>str2)   
(B)if (strcmp(str1, str2))
(C)if (strcmp(str2, str1)>0)
(D)if (strcmp(str1, str2)>0)
15. 关于break和continue的使用,下列说法中正确的是    c      。
(A) break只能用在switch语句中,而continue 用在循环语句中。
(B)break 只能用在循环语句中,而continue用在switch语句中。
(C)break 能结束循环,而continue只能结束本次循环。
(D)continue能结束循环,而break只能结束本次循环。
三、    程序阅读分析(本大题共20分)
1.阅读并分析以下程序。
#include<stdio.h>
void sub(int x,int y,int *z)
      {
*z=y-x;
}
  void  main()
      {
int a,b,c;
        sub(10,5,&a);
        sub(7,a,&b);
        sub(a,b,&c);
        printf(“%d %d %d”,a,b,c);
      }
执行时的输出结果是__________________________________。
2.分析以下程序, 写出程序输出结果。
#include<stdio.h>
void main( )
  { int a=10,b=5,c=5,d=5;
    int i=0,j=0,k=0;
    for( ;a>b;++b)
              i++;
    while (a>++c)
              j++;
    do
      {    k++;
          while(a>d++);
          printf(“%d,%d,%d\n”,i,j,k);
}
  }
3. 分析以下程序:
#include<stdio.h>
#include<string.h>
void main()
{
char s1[90],s2[20];
scanf("%s",s1);
scanf("%s",s2);
strcat(s1,s2);
printf("%s\n",s1);
}
以上程序的功能是:________________________。
4. 分析以下程序:
#include<stdio.h>
void main()
{
    int n[3][3],i,j;
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                n[i][j]=i+j;
    for(i=0;i<2;i++)
        for(j=0;j<2;j++)
            n[i+1][j+1]= n[i+1][j+1]+n[i][j];
        printf("%d\n",n[i][j]);
}
程序运行输出结果是________________________。
四、程序阅读填空,根据要求补充完整程序(本题共10分)。
1.下面程序的功能是输出两个字符串中较短串的长度。请填空。
  #include <stdio.h>
  void main(  )
  { char str1[20], str2[20];
   int i, k, num;
   gets(str1);  gets(str2);
   i=strlen(str1); 
      k=strlen(str2);
   num=______? ____: ____;
   printf("%d\n", num);
  }
2. 下面程序是计算字符串中实际字符的个数,即实现和字符串处理函数strlen相同的功能,补充空白处的程序。
  int  MyStrlen(char str[])
{
int  len = 0, i;
    for (i=0; str[i]!= “\0”      ; i++)
    {
        len ++        ;
    }
    return len ;
}
五、程序设计题(本题共30分)
1. 定义一个函数,实现对一维整型数组元素的排序。(本小题10分)
  函数首部参考:void sort(int a[],int n) 其中,a为数组名,n为数组元素个数。
2.定义一个学生结构体student,包含成员信息如下:学号,姓名,年龄,性别,家庭住址。定义一个student类型的结构体数组stud,包含有3个数组元素,在定义数组的同时完成数组元素初始化。再定一个指针P指向stud,利用指针操作输出数组中所有女生的姓名和家庭地址。根据以上要求,写出完整的C语言程序。(本小题20分)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。