题  号
总 计
核查人签名
得  分
阅 卷 人
一、选择题(每题1分,共20分)
1.若i为整型变量,i=0;则以下循环while(i=0)i++;(  )
    A)执行10次;    B)执行1次;    C)一次也不执行;    D)无限循环。 
2.若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回值是(  )
A)EOF;        B)非零值;        C)-1;        D)0
3.设有如下枚类型定义:enum color{red=3,yellow,blue=9,white,black};请问枚举变量black的值是(  )
A)1 ;        B)11;        C)12;        D)2。
4.C语言规定,程序中各函数之间(  )
A)既允许直接递归调用也允许间接递归调用;
B)不允许直接递归调用也不允许间接递归调用;
C)允许直接递归调用不允许间接递归调用;
D)不允许直接递归调用允许间接递归调用。
5.有如下程序,程序的运行结果为:(    )
      main( )
      {
          int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
          for(i=0;i<4;i+=2)
                printf("%d ",p[i] );
      }
      A)5 2        B)5 1        C)5 3          D)9 7
6.设有变量说明:int a[ ][2]={1,2,3,4}; int *pa, (*pb)[2];  则执行语句“pa= &a[0][0]; pb=a” 后,(*(pa+1))的值为:(    )
    A)  3        B)  &a[1][0]      C)  2      D) &a[0][1]
7.设有变量说明:int a[ ][2]={1,2,3,4}; int*pa, (*pb)[2];  则执行语句“pa=&a[0][0]; pb=a” 后,(*(pb+1))的值为:(    )
    A)  3        B)  &a[1][0]      C)  2      D) &a[0][1]
8.C语言中的文件类型划分为(  )
  A) 索引文件和文本文件两种  B) ASCII文件和二进制文件两种
  C) 只有文本文件一种        D) 只有二进制文件一种
9.在宏定义:#define  PI  3.1415926中,用宏名PI代替一个(  )。
    A)常量            B)双精度数        C)单精度数        D)字符串
10.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是(  )。
    A)auto        B)static        C)extern        D)register
11.C语言规定,基本数据类型的变量做实参时,它和对应形参之间的数据传递方式是(  )。
    A)地址传递                                        B)单向的值传递
    C)由实参传递给形参,再由形参传递回实参            D)由用户指定传递方式
12.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(  )。
    A)auto        B)static        C)extern        D)register
13.判断字符串a和b是否相等,应当使用(  )。
    A)if(a= =b)        B)if(a=b)        C)if(strcpy(a,b))        D)if(strcmp(a,b))
14.若执行fopen函数时发生错误,则函数返回值是(  )。
    A)0        B)1        C)EOF            D)地址值
15.语句while(!x)中的表达式!x等价于(  )。
    A)x= =0        B)x!=0            C)x!=1            D)x= =1
16.当说明一个结构体类型变量时系统分配给它的内存是(    )。
    A)各成员所需内存容量的总和;        B)结构体中第一个成员所需内存数;
    C)成员中占内存量最大者所需的容量;  D)结构中最后—个成员所占内存量。
17.在对typedef的叙述中错误的是(    )。
    A)用typedef 可以定义各种类型名,但不能用来定义变量;
    B)用typedef可以增加新类型;
    C)用typedef只是将已存在的类型用一个新的标识符来代表;
    D)使用typedef有利于程序的通用和移植。
18.在下面四种字符串说明或赋值中,不正确的是(    )。
90设计网
  A)char *p;p=“computer”;  B)char *p={‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’};
  C)char p[20];p=”computer”;    D)char p[ ]=”computer”, q[ ]=”student”;
19.设prt1和prt2均为指向同一个int型一维数组的指针变量,k为int型变量,则下面不
  能正确执行的赋值语句是(    )。                         
  A)k=*ptr1+*ptr2;  B)ptr2=k;      C)ptr1=ptr2;      D)k=*ptr1*(*ptr2);
20.在循环语句的循环体中执行break语句,其作用是(    )。
A)跳出该循环体,提前结束循环
B)继续执行break语句之后的循环体各语句
C)结束本次循环,进行下次循环
D)终止程序运行
二、判断题(每题1分,共10分。对打√,错打×)
1.C语言中,while和do-while循环的主要区别是:do-while的循环体至少无条件的执行一次。(    )
2.从多层循环嵌套中退出时,只能使用goto语句。(    )
3.字符数组的字符串可以整体输入、输出。(      )
4.C语言规定:函数返回值类型由调用该函数时的主调函数类型所决定。(    )
5.在不同函数中可以使用相同名字的变量。(    )
6.在C语言程序中,函数的调用可以嵌套,但函数的定义不可以嵌套。(    )
7.C语言的编译预处理就是对源程序进行初步的语法检查。(      )
8.当说明一个共用体变量时系统分配给它的内存是各成员所需内存量的总和。(    )
9.有定义:int a[][2]={1,2,3,4},*pa;若要使*pa的值为a[0][0],则令pa=a即可。(    )
10.如:char a[]=”\t\r\\\0will\n”;sizeof(a)的结果为10。    (    )
三读程序写结果(每题4分,共20分)
1.                      void main()
    {
        int a,b,c;
        a=2;b=7;c=5;
        switch(a>0)
        {
        case 1:
          switch(b<10)
          {
              case 1:printf("^");break;
              case 0:printf("!");break;
          }
        case 0:
          switch(c= =5)
          {
              case 0: printf("*");break;
              case 1: printf("#");break;
              default:printf("%%");break;
          }
        default:
          printf("&");
        }
        printf("\n");
    }
2.                  main()
{
    int m=37,n=13;
    while(m!=n)
    {
      while(m>n)
        m=m-n;
      while(n>m)
        n-=m;
    }
    printf("m=%d\n",m);
}
3.                main()
{
    int a[]={1,2,3,4,5};
    int x,y,*p;
    p=&a[0];
    x=*(p+2);y=*(p+4);
    printf("*p=%d,x=%d,y=%d",*p,x,y);
}
4.                main( )
{
    int s[6][6],j,k;
    for(j=0;j<6;j++)
        for(k=0;k<6;k++)
            *(*(s+j)+k)=j-k;
    for(j=0;j<6;j++)
    {
        for(k=0;k<6;k++)
            printf(“%4d”,*(*(s+j)+k));
        printf(“\n”);
    }
}
5.                int a;
main()
{
    int i;
    i=a=1;
    sub();
    printf("a=%d i=%d\n",a,i);
}
sub()
{
    int i;
    i=a=2;
}
四、程序填空(每空2分,共26分)
1.在数组a中查用户输入的某个数x。
#define N 10
main()
  {
  int a[N] = {23,56,11,87,91,35,41,44,60,6};
  int p,x;
  printf ( "\nPlease Enter find number:" );
                    ;
  p = 0;
  while (                        )
        p ++ ;                        /* 不断查的过程 */
  if  (             )  printf ( "%d Position is %d\n", x, p );
  else    printf ( "%d could not be found\n", x );
}
2.判断m是不是素数。算法:如m能被2~m-1中的任何一个数整除,则不是素数。
main( )
{
    int m,i;
    scanf("%d",&m);
    if(m<=2)
    {printf(“\n%d是素数!”,m);return;}
    for (i=2;i < m;i + +)
        if (m % i = = 0)
                       
    if (             )
        printf ("%d是素数\n",m,i);
    else
        printf ("%d不是素数,能被 %d 整除\n",m,i);
}
3.下列程序将两个升序数组a、b合并到数组c中后,c仍为升序数组。
main()
{
    int a[10]={1,2,5,8,9,10}, int b[10]={1,3,4,8,12,18};
    int j,k,l,c[20],max=9999;
    a[6]=b[6]=max;
    j=k=l=0;
    while(a[j]!=max||b[k]!=max)
        if(a[j]<b[k])
        {
            c[l]=        ;
            l++;
                          ;
        }
        else
        {
            c[l]=        ;
            l++;
                        ;
        }
    for(j=0;j<l;j++)
        printf("%4d",c[j]);
}
4.下列程序用来创建一个的单向链表。创建中如输入的学号为零,则创建结束。#define LEN sizeof (struct student)
struct  student
{
    long  num;
    float  score;
    struct  student *next;
};
int  n;
struct  student *creat( )  /*此creat函数带回一个链表起始地址 */
{
    struct student *head, *p1, *p2; 
    int n=0;
    p1 = p2 = (struct student *)malloc(LEN);  / *开辟一个新单元*/
    scanf ("%ld, %f", &p1->num, &p1->score);
    head = NULL;
    while(p1->num! = 0)
    {
        n++;
        if(n = = 1)
                            ;
        else
                            ;
        p2 = p1;
        p1 =                   ;
        scanf ("%ld,%f", &p1->num, &p1->score);
    }
    p2->next =           ;
    return (head); 
  }
五、根据题意编程(共24分)
1.用递归方法将一个整数N转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意位数的整数。
2.用选择法或冒泡法对输入的十个字符(按ASCII码由小到大)进行排序。
3.建立一个链表,每个结点包括:学号、姓名、年龄。数据从键盘上输入, 输入的学号为0时结束输入。链表建立后,将该链表中数据输出到屏幕上并存放到文件student.dat中。

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