题号
总分
得分
考试形式:■闭卷  □开卷  ■笔试  □机试  答卷要求:试卷答案需填写至答题卡内
一、单项选择题(每小题 2 分,共 30 分)
1
2
3
4
5
6
7
8
9
10
C
D
A
B
B
A
D
A
C
C
11
12
13
14
15
C
D
A
C
B
1C语言源程序文件是一个后缀为(      )的文件。(第1章)
A) .bas    B) .java    C) .c    D) .pas
2、下列哪个图形不属于传统流程图的符号(        )(第2章)
A)     B)     C)     D)
3、下列标识符中,不合法的用户标识符为(       )。(第3章)
A) a+4    B) If    C) then    D) _123
4、下面运算符优先级最高的是(        )。(第3章)
A) *    B) !    C) -(减号)    D) =
5、以下哪个是不正确的转义字符(       )。(第3章)
A) '\\'    B) '077'    C) '\0'    D) '\n'
6、若int n,x=1,y=0,则条件表达式n=x<y?x:y的结果为(  )。(第4章)
A) 0    B) 1    C) 2    D) 表达式错误
7、分析以下程序, 下列说法正确的是(  )。(第4章)
int main()
{  int i=10,m=0,n=0,k=0;
switch(i/10)
{  case 0: m++;n++;break;
case 10: n++; break;
default: k++;n++; }
printf("%d %d %d\n",m,n,k); }
A) 0 0 0    B) 0 1 0    C) 1 1 0    D) 0 1 1
8程序段如下:则以下说法中正确的是    )。(第5章)
int k=-10;    while(k<0) k=k+1;
A) while循环执行10    B) while循环执行11
C) 循环体语句一次也不执行    D) 循环是无限循环
9、下列程序段执行后k值为(    )。(第5章)
int k=0,i;
for(i=0;i<=20;i+=3)  k=k+1;
A5    B6    C7    D8
10、若有定义int a[5],i=4;则对数组元素的非法引用是(  )(第6章)
A) a[i]    B) a[i-1]    C) a[i+1]    D) a[i-4]
11、以下能正确定义数组并正确赋初值的语句是(  )(第6章)
A) int a[2][]={1,2,3,4};     B) int a[2][3]={1,2,3,4,5,6,7};
C) int a[][3]= {1,2,3,4,5,6};    D) int a[][]={1,2,3,4,5,6};
12C语言规定,函数返回值的类型是由(    )。(第7章)
A) return语句中的表达式类型所决定
B) 调用该函数时的主调函数类型所决定
C) 调用该函数时系统临时决定
D) 在定义该函数时所指定的函数类型决定
13、以下函数调用语句中实参的个数为(    )(第7章)
func((v1,v2),(v3,v4,v5),v6);
A) 3    B) 4    C) 5    D) 6
14、有如下程序段,执行该程序段后a 的值为(    )。(第8章)
    int *p,a=10,b=2;
    p=&a; a=*p+b;
A) 10    B) 11    C) 12    D) 编译出错
15有如下说明,则数值为9 的表达式是    )。(第8章)
        int a[10]={12345678910}*p=a
A) *p+9    B) *(p+8)    C) *p+=9    D) p+8
二、填空题(每小题  2  分,共 10 分)
1
函数
2
1/3*n(4*n-1)(4*n-1)
3
1
4
50
5
4
1C语言程序是由若干个        组成。(第1章)
2若有声明double n;,则数学公式对应的C语言表达式形式为________(第3章)
3执行语句“a=0,b=1,c=2;if(a>0 && b>0) c++; else c--;"后,变量c值为______(第4章)
4、执行语句“for(s=0,i=1;i<11;i++) {if(i==5) continue; s+=i; }"后,s值为______(第5章)
5、在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是_________(第6章)
三、程序改错题。指出下列程序错误代码并改正,使其能正确运行。(每题只有c语言程序分析题及答案2处错,指出1处得1分,改正得2分,每处 3分,共 12 分)
题号
错误代码
改正后
1
(1)
scanf("%d,%d",a,b);
scanf("%d,%d",&a,&b);
(2)
printf("%d\n,a+b");
printf("%d\n",a+b);
2
(1)
for (i=1;i<=300;i++);
for (i=1;i<=300;i++)
(2)
if (n%3)
if (n%3==0)
1(3)
下面程序是输出ab两个数,输出a+b的和。
#include <stdio.h>
int main(){
    int a,b;
    scanf("%d,%d",a,b);
    printf("%d\n,a+b");
}
2(第4章和第5章)
下面程序是求1..300之间能被3整除的数。
int main()
{    int  i;
    for (i=1;i<=300;i++);
        if (n%3)
            printf("%d ",i);
    return 0;
}
四、程序分析题,根据下列程序,写出其运行结果。(每小题 4 分,共 12 分)
1(第3章)
int main()
{  int x=4,y=0,z;
  x*=3+2;
  printf("%d ",x);
  x*=y=z=4;
  printf("%d",x);
}
输出结果:______
20 80
2(第4章和第5章)
#include <stdio.h>
int main()
{  int i;
  for(i=1;i<=5;i++)
  { if(i%2)
      putchar('<');
    else
      continue;
    putchar('>');
  }
  putchar('#');
}
输出结果:______
< >< >< >#
3(第6章)
void  main()
{  int a[4][4],i,j,k;
    for (i=0;i<4;i++)
        for (j=0;j<4;j++)
            a[i][j]=i-j;
    for (i=0;i<4;i++)
    {
        for (j=0;j<=i;j++)
            printf(" %d",a[i][j]);
        printf("\n");
    }
}
输出结果:______
0
1 0
2 1 0
3 2 1 0
五、程序填空题(每空 3 分,共 12 分)
1
Sn+hn
2
hn/2
3
a[i]>a[maxIndex]
4
maxIndex
1一球从 100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?(第45章)
int main()
{
    float Sn=100.0,hn=Sn/2;
    int n;
    for (n=2;n<=10;n++)
    { 
        Sn= 【第1空】;
        hn= 【第2空】;
    }
    printf("10次落地时共经过%f\n",Sn);
    printf("10次反弹%f\n",hn);
}
2下面的函数是实现出一维数组中最大元素的下标。(第67章)
int findMaxIndex(int a[],int n)
{
    int i;
    int maxIndex;
    maxIndex=0;
    for(i=0;i<n;i++)
        if(【第3空】)
            maxIndex=i;
    return 【第4空】;
}
六、编程题(第1 12 分,第212分,共 24 分)
1有三个数abc,由键盘输入,输出其中最大的数。
1)画出该程序的流程图;(6分)
2)编写程序。(6分)
参考答案
1
2
#include <stdio.h>
int main()
{
    int a,b,c;
    int max;
    scanf("%d%d%d",&a,&b,&c);
    if (a>b)
        max=a;
    else
        max=b;
    if (c>max)
        max=c;
    printf("max=%d\n",max);
    return 0;
}
2、编写程序,对n个整数逆序存放。n个整数和n在主程序中输入,最后在主函数中输出。(要求使用指针变量指向数组的方法)
例如:8 6 9 1 3,逆序后结果是:3 1 9 6 8
参考答案
#include <stdio.h>
#define N 20
void revert(int a[],int n)
{
    int *p,i;
    int t;
    p=a;
    for (i=0;i<n/2;i++)
    {   
        t=*(p+i);
        *(p+i)=*(p+n-i-1);
        *(p+n-i-1)=t;
    }
}
int main()
{
    int i,n;
    int a[N];
    scanf("%d",&n);
    for (i=0;i<n;i++)
        scanf("%d",&a[i]);
   
    revert(a,n);
    for (i=0;i<n;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

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