………………………………装………………………………订……………………………线………………………
………………………………装………………………………订……………………………线…………………………
专业:              科类:  科 班级:      班  姓名:      学号:       
临沂大学20152016学年度第二学期
C程序设计》试题(J
(适用于20015级数本、专科学生)
题号
总分
得分
阅卷人
一、判断(本大题20分,每小题2分)
(  )1、在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。
(  )2、在C语言的复合语句中,只能包含可执行语句。           
(  )3、自动变量属于局部变量。
(  )4、一个函数利用return只能返回一个函数值。
(  )5、在程序运行过程中,系统分配给实参和形参的内存单元是不同的。
(  )6、用scanf输入字符时,字符串中不能包含空格。
(  )7、Continue break都可用来实现循环体的中止。
(  )8、若将C源程序经过编译、连接后生成可执行文件,则可直接在DOS系统下输入可执行文件名执行。
(  )9、字符常量的长度肯定为1。
(  )10、已知:char c=48int i=1j=10;执行语句j=!(c>j)&&i++;则ij的值分别是1和0
二、选择题(本大题20分,每小题2分)
以下各题只有一个答案是正确的,请选择正确的答案代号。
1.一个C程序中必须包括
    Ascanf函数      Bmain函数        C.变量          D#include <stdio.h>
2.数组名作为函数参数传递给函数,作为实在参数的数组名被处理为       
    A. 该数组的长度                        B. 该数组的元素个数
    C. 该数组中各元素的值                  D. 该数组的首地址
3.若有以下语句,下边哪个描述正确?
    char x[]="abcde";
    char y[]={'a','b','c','d','e'};
A.数组x5个元素,数组y5个元素  B.数组x6个元素,数组y6个元素
C.数组x5个元素,数组y6个元素  D.数组x6个元素,数组y5个元素
4.若有说明:int a[3][4];则对a数组元素的非法引用是       
    A. a[0][3*1]                              B. a[2][3]
C. a[1+1][0]                            D. a[0][4]
5.下面标识符中,不合法的标识符是
AAb            Ba#b              Cx_y_2          Dx2
6、void main( )
{ int ij
for(i=0j=1 i<=j+1 i+=2 j--) printf("%d \n"i)
}
以上循环体的执行次数是    
A3            B2        C1            D0
7、设有数组定义:char array [ ]="China" 则数组 array所占的空间为    
A4个字节        B5个字节        C6个字节         D7个字节
8、C语言的编译系统对宏命令是    
      A)在程序运行时进行代换处理的
      B)在程序连接时进行代换处理的
      C)和源程序中其它C语句同时进行编译的
      D)在对源程序中其它成份正式编译之前进行处理的
9、以下说法中正确的是    
AC语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在void main( )中有定义
CC语言程序的执行既可以采用解释方式,也可以采用编译方式
DCc++判断素数语言程序中的void main( )函数可以不放在程序的开始部分
10、下面程序的输出是    
    #define SUB(XY)  X*Y
    void main( )
    {int a=3b=4
      printf("%d\n"SUB(a++b++))
    }
      A12            B15                C16                D20
三、读程序,写出运行结果(本大题20分,每小题5分)
要求:按计算机显示的格式写,空格也要用 画出。
1#include "stdio.h"
void main( )
{int i, j;
  for(i=1;i<=5;i++)
{ for (j=1;j<10-i;j++)
      printf(" ");
      for(j=1;j<=2*i-1;j++)
      printf("*");
      printf("\n");
    }
}
2#include "stdio.h"
swap1(int *p1,int *p2)       
 
{ int p;       
    p=*p1;*p1=*p2;*p2=p;
}
swap2(int *p1,int *p2)       
   
{int  *p;       
    p=p1;p1=p2; p2=p;
}
void main( )
    {int a=6,b=8;
    int *pt1,*pt2;
    pt1=&a;pt2=&b;
    if(a<b)  swap2(pt1,pt2);
    printf("swap2:%d,%d\n",a,b);
    if(a<b)  swap1(pt1,pt2);
    printf("swap1:%d,%d\n",a,b);
    }
3#include "stdio.h"
void main( )
{int a[3][3],i,j,t;
  for(i=0;i<3;i++)
    for(j=0;j<3;j++)
      scanf("%d",&a[i][j]);
  for(i=0;i<3;i++)
    for(j=0;j<i;j++)
    {t=a[i][j];
    a[i][j]=a[j][i];
    a[j][i]=t;
    }
  for(i=0;i<3;i++)
  {for(j=0;j<3;j++)
    printf("%5d",a[i][j]);
    printf("\n");
  }
}
输入数据:1 2 3 4 5 6 7 8 9 (回车)
4. #include "stdio.h"
void main( )
{int a[10],i,m;
for(i=0;i<10;i++)
  scanf("%d",&a[i]);
m=a[0];
for(i=1;i<10;i++)
  if(m<a[i]) m=a[i];
printf("m=%d\n",m);
}
输入数据为:2 3 5 8 7 4 8 3 8 5 (回车)
四、程序填空(本大题26分,每空2分)按下列各题的题意及给出的程序进行填空,使它们成为完整、正确的程序。每个空中仅可以填写一个语句或一个语句的一部分。
1产生10个区间[20,60]上的随机整数,用选择排序法对其进行由小到大的排序。
#include "stdio.h"
void main( )
{int i,j,k,m, a[10];
for(i=0;i<=9;i++)
    a[i]=  1 +20;
for(i=0;i<9;i++)
  { k=i;
    for(  2 ;j<=9;j++)
        if (  (3)  )  k=j;
    m=a[i];a[i]=a[k];a[k]=m;
    }
for(i=0;i<=9;i++)
    printf("%5d",a[i]);
printf("\n");
  }
2. 函数fun的功能是求n个数的平均值,调用fun函数分别求10个数中的前5个数的平均值和后5个数的平均值。
#include "stdio.h"
void main( )
{int a[10],i;
float av1,av2;
      (4)    ;
for(i=0;i<10;i++)
  scanf("  5 ",&a[i]);
av1=fun(a,5);
av2=  (6)  ;
printf("5个数的平均值:%f\n",av1);
printf("5个数的平均值:%f\n",av2);
}
float fun(int *p,int n)
{ float s=0;
  int *q;
  for(q=p;q<p+n;q++)
      (7)    ;
  return s/n;
}
3.求一个正整数的位数。
#include "stdio.h"
void main( )
{int x,k=0,d;
scanf("%d",  (8)  );
do
{d=x%10;
  k++;
    (9)      ;
  }while(x>0);
printf("k=%d\n",k);
  }
4.实现下面的程序功能:将三位整数n的十位数的数字变为0,例如,输入三位整数位738,输出为708
#include "stdio.h"
void main( )
{
    10      ;
printf(输入一个三位整数);
scanf(%d,&n);
d2=     11    ;
d0=  12            ;
printf(输出三位整数:%d\n,       13      );
}
五、编写程序(本大题48分,每小题12分)
注意:程序的易读性非常重要。如果卷面很乱,或难以读懂,将被扣分。
1.从键盘上输入x的值,输出对应的y的值:
2.按每行5个输出100200之间的所有素数,要求判断素数由函数完成,是素数返回1,不是素数返回0

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