高二微机专业《C语言程序设计》考试试卷
总分:100
一、选择题(每小题3分,共36分)
1. C 语言中,引用数组元素时,其数组下标的数据类型允许是(      )
A.整型常量                    B.整型表达式
C.整型常量或整型表达式        D.任何类型的表达式
2. C语言中,数组名代表(      )
A.数组全部元素的值                    B.数组首地址
C.数组第一个元素的值                D.数组元素的个数
3. 以下对一维整型数组a 的正确说明是(      )
Aint a(10);                      Bint n=10,a[n];
Cint n;                          D#define SIZE 10
  scanf(%d,&n);                  int a[SIZE];
  int a[n];
4. 合法的数组定义是(      )
Aint a[ ]=string;            Bint a[5]={0,1,2,3,4,5};
Cchar a=string;            Dchar a[ ]={0,1,2,3,4,5};
5. 若有定义和语句:char s[10]; s=abcd; printf(%s\n,s); 则结果是(      )。(  _ 代表空格)
A.输出abcd                    B.输出a
C.输出abcd _ _ _ _ _ _    D.编译不通过
6. 有以下语句,则下面是正确的描述(      )
char x[ ]=12345;       
char y[ ]={1,2,3,4,5};
Ax数组和y数组的长度相同
Bx数组长度大于y数组长度
Cx数组长度小于y数组长度
Dx数组等价于y数组
7. 若有说明:int a[10];则对a 数组元素的正确引用是(      )
Aa[10]      Ba[3.5]    Ca(5)    Da[10-10]
8. C 语言中,一维数组的定义方式为:类型说明符 数组名(      )
    A[整型常量表达式]                    B[整型表达式]
    C[整型常量] [整型表达式]        D[常量]
9. 以下能对一维数组a 进行正确初始化的语句是(      )
    Aint a[10]=(0,0,0,0,0);        Bint a[10]={};
    Cint a[]={0};                    Dint a[10]=10*1;
10. 对以下说明语句的正确理解是(      )
      int a[10]={6,7,8,9,10};
A.将5 个初值依次赋给a[1]a[5]
B.将5 个初值依次赋给a[0]a[4]
C.将5 个初值依次赋给a[6]a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
11. 若已定义数组:float a[8];则下列对数组元素引用正确的是(      )
A. a[0] =1;                B. a[8] = a[0];       
C. a=1;                    D. a[3.5]=1;
12.下列程序执行后输出结果是(    )。
int main( )
{
int i,j,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<=i;j++)a[i][j]=i*j;
printf(%d,%d\n,a[1][2],a[2][1]);
return 0;
}
A.2,2          B. 不定值,2          C. 2,1            D. 2,0
注:将选择题答案填入下面表格中,否则不得分!
题号
1
2
3
4
5
6
7
8
9
10
11
12
答案
二、阅读程序,写出运行结果。(每小题6分,共24分)
第13题结果:
13.
#include<stdio.h>
int main()
{
    int i,x[3][3]={9,8,7,6,5,4,3,2,1};
    for(i=0;i<3;i++)printf("%5d",x[1][i]);
    return 0;
}
14.
#include<stdio.h>
第14题结果:
void main()
{
    int i,j,a[][3]={10,12,13,14,15,16,17,18,19},s;
s=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            if(i==j)
            {
                s=s+a[i][j];   
            }
        }
    }
    printf("s=%d\n",s);
}
15.
第15题结果:
#include<stdio.h>
void main()
{
    int i,a[10]={1,1};
    for(i=2;i<10;i++)
        a[i]=a[i-2]+a[i-1];
    for(i=0;i<10;i++)
    {
        printf("%4d",a[i]);
        if((i+1)%5==0)printf("\n");
    }
}
16.
#include<stdio.h>
main()
{
    int i,j,m,p,a[4][4]={0,6,9,3,11,8,3,7,1,5,2,0,13,9,15,3};
    for(i=0;i<4;i++)
第16题结果:
    {
        m=a[i][0];
        p=0;
        for(j=1;j<4;j++)
        {
            if(m<a[i][j])
            {
                m=a[i][j];
                p=j;
            }
        }
        printf("%d\t%d\n",m,p);
    }
}
三、程序填空。(每小题20printf是不是c语句分,共40分)
17.对数组进行降序排列,将下列程序补充完整。
(要求:2,3处需用含有N的表达式填充,算法应尽量优化。)
#include<stdio.h>
#define N 8
void main()
{
    int a[N];
17题:
1.                   
2.                   
3.                   
4.                   
    int i,j,t;
    printf("排序前:\n");
    for(i=0;i<N;i++)
        scanf("%d",1);
    printf("排序前:\n");
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
    printf("\n");
    for(i=0;2;i++)
    {
        for(j=0;3;j++)
            if(4)
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=a[j];
            }
    }
    printf("排序后:\n");
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
}
18.求三个整数的最大公约数,将下列程序补充完整。(算法是先求两个数的最大公约数,再用前两个数的最大公约数和第三个数求最大公约数,结果即为三个数的最大公约数。)
18题:
1.                   
2.                   
3.                   
4.                   
#include<stdio.h>
void main()
{
    int x,y,z,m;
    printf("输入三个数:");
    scanf("%d%d%d",&x,&y,&z);
    while((m=x%y)!=0)
    {
        1;
        2;
    }
    while((m=3)!=0)
    {
        y=z;
        z=m;
    }
    printf("这三个数的最大公约数为:%d\n",4);
}

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