模 拟 试 卷

一、选择题 (每题1分,共15分) 在每小题列出的四个选项中只有一个是符合题目要求的,请在正确答案前点选,错选或未选均不得分。

1. 以下选项中不合法的用户标识是 :
正确答案




正确答案:C
2. 在 C 语言中, char 型数据在内存中的存储形式是 :
正确答案


反码

正确答案:D
3. 设 x,y,z 为 int 型变量,且 x=3,y=4,z=5 ,则下面表达式中值为 0 的是 :
正确答案




x<=y
正确答案:B
4. 若有定义: int a=2,b=4,c; 执行语句 c=a/b+2.6 ;后, c 的值为:
正确答案



3
正确答案:D
5. 设 a 为整型变量,不能确定表达数学关系 10<a<15 的为 C 语言表达式是:
正确答案




正确答案:C
6. 若 i 、 j 已定义为 int 型,则以下程序段中语句 printf( “ %d ” ,i*j); 的执行次数是:
for ( i=3;i>0;i-- )
 for ( j=0;j<4;j++ )
  printf( “ %d ” ,i*j);
正确答案




正确答案:A
7. 若有输入语句 “ scanf( "%d%d%d", &x,&y,&z); ”,则不能使x值为5, y值为6, z值为 7的输入是:
正确答案

5 ,6 ,7< 回车 >


正确答案:A
8.执行以下程序段后, x , y 和 z 的值分别是:
  int x=10,y=20,z=30;
  if(x>y) z=x; x=y; y=z;
正确答案


20,30,30

正确答案:B
9. 以下程序段
  x = -1;
  do
  { x=x*x;} while(!x); 正确的说法是
正确答案

死循环


正确答案:B
10. 以下正确的函数声明形式是:
正确答案


double fun(int x ; int y)

正确答案:C
11. 若有定义 char ch[8] ,则以下表达式中不能代表数组元素 ch[1] 的地址是:
正确答案




正确答案:C
12. 若有初始化语句“ int a[5]={1,2,3,4,5}; ”,值为 4 的表达式是:
正确答案


a[a[2]+1]

正确答案:C
13. 若已有以下函数定义:
float fun(float a, int b)
{
 
int c;
 
c=(int)a%b;
 
return c;
}
则主调函数中语句“ printf("%f",fun(fun(fun(34,7),4),3)); ”的输出结果是
正确答案


因参数类型与形参类型不一致,函数调用产生错误

正确答案:A
14. 已知: int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+2 ;则值为 3 的表达式是:
正确答案




正确答案:B
15. 以下可作为函数 fopen 中第一个参数的正确格式是:
正确答案




正确答案:C

、填空题(共10题)

1. 字符串存储时,末尾被系统自动加上 字符。
正确答案
正确答案:'\0'
2. 已有定义 char a[10]= "\t\017\ 018 " ; 则 strlen(a) 的值为
正确答案
正确答案:3
3. 若定义“ int x=3; ”,写出运算 x++ 后表达式的值 和变量 x 的值
正确答案
正确答案:3,4
4. 有一输入函数 scanf("%f",k); 则不能使 float 型变量 k 得到正确数值的原因是
正确答案
正确答案:K前加&
5. 用 while 语句构成循环时,只有在 while 语句后的表达式为 结束循环。
正确答案
正确答案:1
6. 设 y 为 int 型变量,请写出判断 y 为 3 的倍数的关系表达式
正确答案
正确答案:Y%3==0
7. 全局变量放在内存的 区。
正确答案
正确答案:静态存储
8. 以下说明的函数作用是计算x y ,调用 fun 函数计算 x=(1.2)5+(a+4)4 的语句是 。 double fun(double x, int y);
正确答案
正确答案:Fun(1.2,5)+fun(a+4,4)
9. 若有定义语句“ float a[7]; ”则 a 数组中元素的下标最大是
正确答案
正确答案:6
10. 若有定义 int a[5]={1,2,3,4,5};*p=a; ,则 *(p+3) 的值为
正确答案
正确答案:4
11. 若有 char s1[20]=”hello” , s2[]=”world” ;,则将 s2 与 s1 连接的语句是
正确答案
正确答案:Strcat(s1,s2)
12. 在说明语句: int *f() ;中,标识符 f 代表的是
正确答案
正确答案:函数f的返回值为指针
13. 已有定义语句:
  char *s[]={ “ one ” , “ two ” , “ three ” },*p;
  p=s[1]; printf(“%c, %s”, *(p+1),s[0]); 的结果为
正确答案
正确答案:t,one
14. 设有如下定义语句: FILE *fp ;若要打开 A 盘上 user 子目录下的名为 abc.txt 的文本文件进行读、写操作,正确的语句应该写为fp=
正确答案
正确答案:fopen("A:\\user\\abc.txt","r+")


三、 程序改错题(共 4 分):下面程序的功能是在一个正整数的各数字中找出最小者。程序中有若干错误,请找出并修改:
#include<stdio.h>
  void main()
  { int n,min,t ;
   min=0 ;
   scanf( “ %d ” ,n) ;
   do{
     t=n%10 ;
     if(t>min) min=t ;
     n=n/10 ;
     }while( !n ) ;
   print(“min=%d\n”, min);
  }
正确答案
正确答案:
      #include
      void main()
      {
        int n,min,t ;
        min=0;
        scanf(“%d”,n) ;        //&n
        do{
          t=n%10 ;
          if(t>min) min=t ;      //t<min
          n=n/10 ;
         }while( !n ) ;
        print(“min=%d\n”, min);
       }

四、阅读程序,写结果(26分)

1.(4分) 执行下面的程序,输出结果是:
  #include<stdio.h>
   void main()
  {
   char c1,c2,c3;
   c1='a';c2='z';
   c3=c2-c1;
   printf("%c,%c,%d",c1,c2,c3);
  }

正确答案
正确答案:a,z,25
2.(5分有以下程序:
  #include<stdio.h>
  void main()
  {
   int c;
   c=getchar();
   switch(c- ' 2 ' )
   {
    case 0:
    case 1: putchar(c+4); break;
    case 2: putchar(c+4);
    case 3: putchar(c+3); break;
    case 4: putchar(c+2);
   }
  }
程序运行后 , 输入 4< 回车 > ,输出结果是:
正确答案
正确答案:87
3.(5分)以下程序程序运行后的输出结果是:
  #include<stdio.h>
  void main()
  {
   int x,y;
   for( x=1;y=1;x<=50;x++);
   {
    if(y>=15) break;
    if(y%5==1) { y+=5; continue; }
    y-=2;
   }
   printf(”x=%d”,x);
  }
正确答案
正确答案:4

4.( 5 分)以下程序的输出结果是:
  #include<stdio.h>
  int fun(int n)
  {
   static int f=1;
   f=f*n ; return f ;
  }
  void main()
  {
   int i,a[5] ;
   for(i=1 ;i<5 ;i++)  a[i]=fun(i) ;
   printf(“%d\n”,a[4]);
  }

正确答案
正确答案:24

5.( 7 分)以下程序输出结果是:
  #include<stdio.h>
  void main()
  {
   char *p,s[] = "ABCDEFG";
   p = s;
   while(*p != '\0' )
   {
    printf("%s\n",p);
    p++;
    if(*p != '\0') p++;
    else break;
   }
  }

正确答案
正确答案:
ABCDEFG
CDEFG
EFG
G

五、程序填空( 20 分)

1. 下面程序运行结果输出如下图形。

  #include<stdio.h>
  void printstar(int n)
  {
   int j,k; char space=' ';
   for(j=1; j<=5-n; j++)
    printf("%c", space);
   for(k=1; ; k++)
    printf("%c", '*');
  
  }
  void main( )
  {
   int i;
   for(i=1; i<=4; i++)
   
  }

正确答案
正确答案:k<2*j-1,printf(”\n”),printstar(i)
2. 下面程序的功能是计算二维数组中最小值所在列的平均值。请填空。
  #include<stdio.h>
  float fun(float a[4][5])
  {
   float sum=0; int i,j,n=0,min=a[0][0];
   for(i=0;i<4;i++)
    for(j=0;j<5;j++)
     if(     ) { min=a[i][j]; n=j; }
   for(i=0;i<4;i++) sum= sum + ;
   return ;
  }
  void main()
  {
   float a[4][5]={2,3,6,4,1,25,54,23,68,26,7,9,15,20 ,35,67,18,30,17,38};
   int i,j; float ave;
   printf(" 输出原矩阵: \n");
   for(i=0;i<4;i++)
   {
    for(j=0;j<5;j++)
     printf("% 6.1f ",a[i][j]);
    printf("\n");}
    ave=fun( );
    printf(" 最小元素所在列的元素之平均值为: % 6.2f ",ave);
   }
  }
正确答案
正确答案:i==j, a[i][j], sum, a
3.以下程序的功能是将数组 b 中的字符串复制到数组 a 中。请填空。
  #include <stdio.h>
  void strcopy(char *s, char *t)
  {
   int i=0;
    while( )
     { *s=*t; ; t++;}
  }
  void main()
  { char a[20],b[10];
   gets(b);
   strcopy( );
   puts(a);
  }
正确答案
正确答案:
*t!=’\0’
s++
a,b

六、 编程题(共 20 分)

1. (4分)已知 x 和 y 存在下列对应关系,编程实现对输入的每个 x 值,计算出 y 值。

正确答案
正确答案:略
2. (6分)编写程序从键盘输入 5 个整数,将 5 个整数按反序存放后输出到文本文件 invert.txt 中。
正确答案
正确答案:略
3. (10分)编写程序,输入 10 个学生 3 门课的成绩,计算每个学生的平均成绩,按平均成绩降序排列并打印出结果。
正确答案
正确答案:略