下午好 ,今天是: 2024年11月22日
|
|
|
|
|
|
 
单元练习
第1章 C语言程序设计基本知识
第2章 算法及其描述
第3章 数据类型及表达式
第4章 结构化程序设计
第5章 数组
第6章 函数与预处理
第7章 指针
第8章 结构体、共用体和枚举类型
第9章 位运算
第10章 文件
模拟测试
模拟测试一
模拟测试二
模拟测试三
模拟测试二
发布人:
陈裕雄
一、选择题(每题仅有1个正确选项选对得2分,错选、多选或漏选均不得分。本题共10小题,每小题2分,共20分)。
1、下面属于C语言标识符的是(         )。
(A)  2ab       (B) @f        (C)  ?b        (D)  _a12

2、一个C程序的执行是从(         )
(A) 本程序的main()函数开始,到main函数结束.
(B) 本程序文件的第一个函数开始,到本程序文件第一个函数结束.
(C) 本程序文件的第一个函数开始,到本程序main函数结束.
(D) 本程序的main()函数开始,到本程序文件的最后一个函数结束.

3、C语言中主函数的个数是(        )。
(A)  2个        (B)  1个        (C) 任意个        (D) 10个

4、关于C语言变量,以下说法不正确的是(         )
(A)  变量名由程序员定义,必须符合标识符的命名规则。
(B)  变量是程序运行过程中其值可以改变的量。
(C)  可以用C语言的关键字作为变量名。
(D)  变量命名时应尽量做到见名知意。

5、下列保留字中用于构成循环结构的是(        )
(A) if     (B) while    (C) switch     (D) default

6、以下if语句错误的是(          )
(A)if (x<y)  x++; y++; else x--; y--;
(B)if (y)  x+=y; 
(C)if (x>y); 
(D)if (x==5)  scanf ("%d",&x); else  x++;

7、Microsoft Visual C++ 6.0 中,C语言源程序的扩展名可以是:(         )
(A) exe      (B) obj       (C) cpp      (D) txt

8、对do...while语句错误的描述是:(         )
(A)可构成多重循环结构      (B)循环次数不可能为0
(C)先执行后判断        (D)循环次数可能为0

9、数组名作为实参传递给形参时,数组名被处理为(  )。
A 该数组的长度  B 该数组的元素个数  C 该数组的首地址  D 该数组中各元素的值

10、C语言中规定,if语句的嵌套结构中,else总是(        )配对。
(A)与最近的if          (B)与第一个if 
(C)与按缩进位置相同的if  (D)与最近的且尚未配对的if 

二、填空题(请将你认为的正确答案填入答题纸,每空2分,共20分)。
1、C语言标识符由字母、下划线或数字组成。命名标识符必须以(1)或(2)开头,字母严格区分大小写,不能使用C语言的关键字作为标识符。(两空顺序可以互换)

2、C语言中为了简化程序,提高程序的编译效率,在赋值运算符前面加上其他运算符号构成复合运算符。例如:x=x+5 用复合运算符可以写成(1)。

3、有如下语句 int a=8; int *p; p=&a; 则*p的值是(1)。

4、已知字符A的ACSII码值为65,以下语句的输出结果是(1)。
char ch='B'; 
printf("%d\n",ch);

5、若定义:int a=5,b=2,c=1; 则表达式 a>c || b= =c 的值是(1);表达式 b>c && b= =c 的值是(2)。

6、在循环语句中,continue和break语句的区别是:(1)语句提前结束本次循环,进行下一次循环的判断;而(2)语句跳出循环结构,结束循环。

7、有如下语句:enum color {red, green, blue}; 则green的值是(1)。

三、写出程序运行结果  (本题共4小题,每小题5分,共计20分)。
1、程序1:
#include<stdio.h>
main()
{
  int i=1;
  loop:printf("你好,中国!\n");
  i++;
  if(i<=3) goto loop;
}

2、程序2:以下程序,如果用户输入"A",那么程序输出结果是什么?
#include<stdio.h>
main()
{
  char grade;
  printf("请输入成绩等级(A、B、C、D):");
  scanf("%c",&grade);
  switch(grade)
  {
    case'A':printf("恭喜,你的成绩优秀!\n");
    case'B':printf("成绩良好\n");

    case'C':printf("成绩及格\n");break;
    case'D':printf("不及格,准备重修!\n");break;
default:printf("输入错误!\n");
  } 
}

3、程序3:
#include <stdio.h>
main()
{
int a[10],j,k=0;
for (j=0; j<10; j++ )
a[j]=j;
for (j=0; j<4 ; j++ )
k+=a[j]+j;
printf("%d\n",k);
}

4、程序4:
#include <stdio.h>
int func(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{
int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}

四、程序填空题(填空完善程序,共4空,每空2.5分,共10分)。
1、下面的程序将找出100~150之间的不能被3整除的数并输出,要求一行输出10个数,请补充完善。
#include <stdio.h>
main()
{
  int m,j=0;
  for (m=100;m<=150;m++)
  {
    if((1))
      continue;
    printf("%4d",m);
    j++;
    if((2))
      printf("\n");
  }
}

2、下面的程序将输出一个二维整型数组,请补充完善。
#include <stdio.h>
main()
{
int a[3][3]={
{1},
{0,1},
{0,0,1}};
for(int i=0;(1);i++)
{
  for(int j=0;j<3;j++)
    printf("%3d", (2) );
  printf("\n");
}
}

五、编程题(请按要求编写程序,每题10分,共30分)

1、编写一个程序,实现:用户输入两个整数,然后程序把较大的输出。


                          0                 n=1
2、有一个数列 a(n)=       1                 n=2
                          a(n-1)+a(n+1)      n>3

编写一个程序,求a(20)。


3、编写一个程序,实现由用户输入一个圆的半径值,程序自动计算输出它的周长和面积。如果用户输入的半径值小于0,则提示用户重新输入,直到输入的值满足要求为止。
答案:
一、单项选择题  
题号 1 2 3 4 5 6 7 8 9 10
答题 D A B C B A C C C D

二、填空题 
1、(1)字母  (2) 下划线
2、(1)x+=5
3、(1)8  
4、(1)66
5、(1)真(或非0)   (2)假(或0)
6、(1)continue     (2)break
7、(1)1

三、写出程序运行结果 
1、
运行结果:
你好,中国!
你好,中国!
你好,中国!

2、
用户输入“A”,程序将输出:
恭喜,你的成绩优秀!
成绩良好
成绩及格

3、运行结果:12

4、运行结果:8,17

四、程序填空题
1、(1)m%3= =0  (2) j%10= =0
2、(1)i<3      (2) a[i][j]

五、编程题
1、
方法一:
#include<stdio.h>
main()
{
  int a,b,max;
  printf("请输入两个整数:\n");
  scanf("%d%d",&a,&b);
  max=a>b?a:b;
  printf("较大的数是:%d\n",max);
}

方法二:
#include<stdio.h>
main()
{
  int a,b;
  printf("请输入两个整数:\n");
  scanf("%d%d",&a,&b);
  if(a>b)
    printf("较大的数是:%d\n",a);
  else
    printf("较大的数是:%d\n",b);
}

2、
方法1:
#include <stdio.h>

int seqa(int n)  
{
int a1=1;
int a2=2;
int t;
int an;
if (n==1)
an=1;
else if(n==2)
an=2;
else
{
for (int i=3;i<=n;i++)
{
an=a1+a2;
t=a1;
a1=a2;
a2+=t;
}
}
return an;
}
main()
{
int n;
int an;
printf("请输入n:\n");
scanf("%d",&n);
if (n<=0)
printf("错误,请输入正整数。\n");
else
{
an=seqa(n);
printf(a(%d)=%d\n",n,an);
}
}

方法2:
int seqa2(int n)  
{
int an;
if (n==1)
an=1;
else if(n==2)
an=2;
else
an=seqa2(n-1)+seqa2(n-2);
return an;
}
main()
{
int n;
int an;
printf("请输入n:\n");
scanf("%d",&n);
if (n<=0)
printf("错误,请输入正整数。\n");
else
{
an=seqa(n);
printf(a(%d)=%d\n",n,an);
}
}

3、
#include<stdio.h>
#define PI 3.1415926 
main()
{
double r,circle,area;
printf("请输入圆的半径:");
    scanf("%lf",&r);
    while(r<0)
{
  printf("半径值不可以小于0,请重新输入:");
      scanf("%lf",&r);
}
circle=2*PI*r;
area=PI*r*r;
    printf("圆的周长等于%lf,面积等于%lf。\n",circle,area);
}
 

Copyright©2012,All Rights Reserved
版权所有:广东南方职业学院计算机系 设计:陈裕雄