C语言程序设计基础考试试卷
计算机电气类专业一年级 1 学期  期末考试试题A卷
时间100分钟考试形式:闭卷 总分100分,占总评成绩 70 %
注:此页不作答题纸,请将答案写在答题纸上
一、判断题(每小题1分,共15分)
1.标准C中,只有数值型数据才能进行4则混合运算。
2.标准C中,_a是合法的自定义标识符
3.有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。
4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。
5.C语言程序中要求被调用函数在调用函数中能被调用必须要在调用函数中进行声明。
6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。
7.语句for(;;);是非法的。
8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。
9.while和do-while的主要区别是后者至少无条件执行一次。
10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。
11.当函数没有返回值类型时,表示函数类型为void。
12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。
13.一个函数中只允许有一条return语句。
14.在C语言中,如果没有说明变量的存储类型是auto类型的。
15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。
二、填空题(每空1分,共15分)
1.若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是  (1)   
2.计算表达式的值:
  4&&-4的值: (2)
  设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3)
  设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4)
  设a=12,则表达式a*=a/5的值: (5)
3.若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}
则循环语句执行完后,z值为 (6)
4.变量的指针就是指该变量的 (7)
5.若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9)
6.已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));
的输出结果分别为: (10) (11)  (12)
7.已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“(13) (14) ”, x, x)。
8.已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15)
三、简答题(每题4分,共12分)
1.简述选择语句if和else语句对与switch语句的区别。
2.简述在循环语句中,break和continue的区别。
3.若int a[5],*p=a;简述*p++和(*p)++的区别。
四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)
1、输入一个数,计算其平方根
# include<stdio.h>
void main( )
{ float a, b;
printf(“please input a number\n”);
scanf(“%f”,a);
if(a>=0)
  {  b=sqrt(a);
    printf(“b=%f\n”, b);
  }
strcmp可以比较单个字符吗 else
  printf(“data is error!\n”);
}
2、已知矩阵a=,求该矩阵对角线元素之和。
# include<stdio.h>
void main( )
{
int i, sum;
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(i=1; i<=3; i++)
  sum = sum + a[i][i];
printf(“sum=%d”, sum);
}
3、通过函数调用实现两个变量值的交换。
# include<stdio.h>
void swap(int *p1, int *p2)
{    int temp;
      temp=*p1;
    p1= p2;
    *p2=temp;
}
void main() 
  int a = 3, b = 8, *p
  printf("Old:a=%d b=%d\n", a, b) ; 
  p=&b;
  swap(&a, *p) ; 
  printf("New:a=%d b=%d\n", a, b) ; } 
4、用递归语句编函数计算10!
# include<stdio.h>
long f (int m)
{  long a;
if(m<0)  printf(“data error!”);
  else a=f(m-1)*m; 
}
void main( )
int n;
n=10;
printf(“%d!=%ld”,n,f (n) );
}
五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)
1、若一自然数全部正整数因子(该因子不包括其本身)之和仍为该自然数,则该自然数称为完全数。如:6=1+2+3,则6是完全数。输出[2,1000]以内的所有完全数及完全数的个数。
#include<stdio.h>
int main( )
{
int x,n,m,s=0;
for(n=2;n<=1000;n++)
{
      (1)   
for(m=1;m<n;m++)
{  if(n%m== 0)  x=x+m; }
    (2)     
printf(“%d\n”,n);
        (3)       
}
}
printf(s=%d\n,s);
}
2、从键盘输入一组100个以内的整数,使用条件表达式出最大的整数,并且以输入的整数为0时作为输入数据结束标志。
#define  N  100
main()
{
  int num[N];
  int i= -1;
  int max=0;
printf("\n Input integer number: \n");
  do
  {  i++;
printf("num[%d]=",i);
scanf("%d",   (4)  );
max=    (5)  num[i] : max;
    }while(    (6)  );
  printf("max=%d\n", max);
}
3、用起泡法对n个数由小到大排序。
起泡法排序的原理为:从第一对元素开始比较相邻的元素,如果第一个比第二个大,就交换他们两个,每一轮下来,该序列的最后的元素应该会是当前序列中最大的数。
bubble(int a[],int n)
{ int i,j,t,temp ;
    for(i=1; i<=n-1; i++)
{
t=  (7)  ;
      for(j=0; j<=t; j++)
        if(    (8)      )
            { temp = a[j];
              a[j] = a[j+1];
                  (9)      ;
}
    }
}
4、从键盘上输入一个不多于7位的正整数,统计其中2的个数,并求各位数字中的最小数。
#include <stdio.h>
main( )
{int count,min,temp;
long n;
min=9;    (10)  ;
scanf(“%ld”,&n);
do
{ temp=  (11)   ;
if (temp= =2) count++;
if (temp < min) min=temp;
n=n/10;
}while (  (12)  );
printf(“count=%d,min=%d”,count,min);
}

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)
1、#include<stdio.h>
int main( )
{
  int i;
  for (i=1; i<=5; i++)
    { if (i%2)
        printf("#");
      else
        continue;
      printf("*");
}
  return 0;
}
2、
#include<stdio.h>
void sub();
int i=0;
static int j=1;
main( )
{ int k=1;
  i++; j++; k++;
  printf(“main i=%d j=%d k=%d\n”, i,j,k);
  sub( );
  sub( );
}
void sub( )
{  int k=0;
  static int x=1;
  k++; x++;
printf(“sub i=%d j=%d k=%d x=%d\n”,i,j,k,x);
}
七、编程题(8分)
编译程序,其功能是比较字符串的大小(不允许用系统提供的字符串比较函数strcmp)。要求是:
(1)通过主函数调用一个函数strcompare来实现。
(2)要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。
(3)并输出两个字符串中相同部分的子串。
《C语言程序设计基础》试卷参考答案
一、判断题(每小题1分,共15分)
1~5 ×√ × ×× 6~10  ×××√×; 11~15  ×××√ ×
二、填空题(每空1分,共15分)
(1) 6    (2)  1    (3)  1      (4)  2.5    (5) 24    (6)  6
(7)地址    (8) 行指针,指向有四个元素的一维数组 
(9)指针数组名,该数组有四个元素,每个元素都是指针
(10)Russia  (11)i  (12)h  (13) %c    (14) %d  (15)7

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