2012年3月計算機等考二級C語言模擬試題及答案2

字號:

一、填空題
    1、C語言中普通整型變量的類型說明符為_____,在內(nèi)存中占_____字節(jié),有符號普通整型的數(shù)據(jù)范圍是_____。
    2、C語言中基本的數(shù)據(jù)類型有:_____ 、_____ 、_____ 。
    3、設(shè)整型變量n的值為2,執(zhí)行語句“n+=n-=n*n”后,n的值是_____ 。
    4、共用體和結(jié)構(gòu)體的定義格式類似,不同點是 _____。
    5、有如下輸入語句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);為使變量a的值為1,b的值為3,c的值為2,從鍵盤輸入數(shù)據(jù)的正確形式應(yīng)是_____ 。
    6、有語句:char A[ ]={”I am a student”};該字符串的長度是_____,A[3]= _____ 。
    7、符號”a”和’a’的區(qū)別_____。
    8、下列程序的輸出結(jié)果是_____ 。
    int ast(int x,int y,int * cp,int * dp)
    { *cp=x+y; *dp=x-y; }
    main()
    { int a=4,b=3,c,d;
    ast(a,b,&c,&d);
    printf("%d,%d/n",c,d); }
    二、選擇題
    1、以下選項中屬于C語言的數(shù)據(jù)類型是( )。
    A. 復(fù)合型
    B. 雙精度型
    C. 邏輯型
    D. 集合型
    2、以下說法中正確的是( )。
    A. C語言程序總是從第一個的函數(shù)開始執(zhí)行
    B. 在C語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義
    C. C語言程序總是從main()函數(shù)開始執(zhí)行
    D. C語言程序中的main()函數(shù)必須放在程序的開始部分
    3、選出下列標識符中不是合法的標識符的是( )。
    A. hot_do
    B. cat1
    C. _pri
    D. 2ab
    4、下列描述中不正確的是( )。
    A、字符型數(shù)組中可能存放字符串。
    B、可以對字符型數(shù)組進行整體輸入、輸出。
    C、可以對整型數(shù)組進行整體輸入、輸出。
    D、 不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進行整體賦值。
    5、若已定義:int a[9], *p=a;并在以后的語句中未改變p的值,不能表示a[1]地址的表達式為( )。
    A. p+1
    B. a+1
    C. a++
    D. ++p
    6、設(shè)有如下定義: int x=10,y=3,z;
    則語句printf("%d\n",z=(x%y,x/y)); 的輸出結(jié)果是( )。
    A. 1
    B. 0
    C. 4
    D. 3
    7、定義如下變量和數(shù)組: int i, x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的輸出結(jié)果是( )
    A. 1 5 9
    B. 1 4 7
    C. 3 5 7
    D. 3 6 9
    8、讀出以下語句的輸出結(jié)果是( )。
    int x=10,y=10;
    printf(“%d %d\n”,x--,--y);
    A. 10 10
    B. 9 9
    C. 9 10
    D. 10 9
    9、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結(jié)果是( )。
    if(x++>5) printf("%d",x);
    else printf("%d\n",x - -);
    A. 7和5
    B. 6和3
    C. 7和4
    D. 6和4
    10、設(shè)有如下定義:char *aa[2]={"abcd","ABCD"};則以下說法中正確的是( )。
    A)aa數(shù)組成元素的值分別是"abcd"和ABCD"
    B)aa是指針變量,它指向含有兩個數(shù)組元素的字符型一維數(shù)組
    C)aa數(shù)組的兩個元素分別存放的是含有4個字符的一維字符數(shù)組的首地址
    D)aa數(shù)組的兩個元素中各自存放了字符'a'和'A'的地址
       11、以下語句的輸出結(jié)果是( )。
    int a=-1,b=4,k;
    k=(+ +a<0)&&!(b - -<=0);
    printf("%d,%d,%d\n",k,a,b);
    A. 1,0,4
    B. 1,0,3
    C. 0,0,3
    D. 0,0,4
    12、下列程序的輸出結(jié)果是( )。
    char *p1="abcd", *p2="ABCD", str[50]="xyz";
    strcpy(str+2,strcat(p1+2,p2+1));
    printf("%s",str);
    A. xyabcAB
    B. abcABz
    C. ABabcz
    D. xycdBCD
    13、執(zhí)行下面的程序后,a的值是( )。
    #define SQR(X) X*X
    main( )
    { int a=10,k=2,m=1;
    a/=SQR(k+m)/SQR(k+m);
    printf("%d\n",a); }
    A. 10
    B. 1
    C. 9
    D. 0
    14、設(shè)A為存放(短)整型的一維數(shù)組,如果A的首地址為P,那么A中第i 個元素的地址為( )。
    A.P+i*2
    B. P+(i-1)*2
    C. P+(i-1)
    D. P+i
    15、下列程序執(zhí)行后輸出的結(jié)果是( )。
    int d=1;
    fun (int p)
    { int d=5;
    d + =p + +;
    printf("%d,",d); }
    main( )
    { int a=3;
    fun(a);
    d + = a + +;
    printf("%d\n",d); }
    A. 8, 4
    B. 9, 6
    C. 9, 4
    D. 8, 5
    16、表達式:10!=9的值是( )。
    A. true
    B. 非零值
    C. 0
    D. 1
    17、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是( )。
    A. i= *p;
    B. *p=*&j;
    C. i=&j;
    D. i=* *p;
    18、不能把字符串:Hello!賦給數(shù)組b的語句是( )。
    A. char b[10]={'H','e','l','l','o','!'};
    B. char b[10]; b="Hello!";
    C. char b[10]; strcpy(b,"Hello!");
    D.char b[10]="Hello!";
    19、在C程序中有如下語句:char *func(int x,int y); 它是( )。
    A. 對函數(shù)func的定義。
    B. 對函數(shù)func的調(diào)用。
    C.對函數(shù)func的原型說明。
    D. 不合法的。
    20、以下程序的輸出結(jié)果是( )。
    char str[15]=”hello!”;
    printf(“%d\n”,strlen(str));
    A. 15
    B. 14
    C. 7
    D. 6
    三、閱讀程序題
    1、int x=6, y=7;
    printf(“%d,”,x++); printf(“%d\n”,++y);
    程序的輸出結(jié)果是__________。
    2、float f=3.1415927;
    printf(“%f,%5.4f,%3.3f”,f,f,f);
    則程序的輸出結(jié)果是__________。
    3、a=3;
    a+=(a<1)?a:1; printf(“%d”,a);
    結(jié)果是__________。
    4、main( )
    { int a[5]={2,4,6,8,10},*P,* *k;
    p=a; k=&p;
    printf("%d,",*(p++));
    printf("%d\n",* *k); }
    程序的輸出結(jié)果是__________。
    5、 main()
    {int a,b;
    for (a=1,b=1;a<=100;a++)
    { if(b>=20) break;
    if(b%3==1)
    {b+=3; continue; }
    b-=5; } }
    程序的輸出結(jié)果a的值為__________。
       四、程序填空題
    1、求主次對角線之和。
    main()
    {static int a[ ][3]={9,7,5,1,2,4,6,8};
    int I,j,s1=0,s2=0;
    for(I=0;I<3;I++)
    for(j=0;j<3;j++)
    {if(__________)
    s1=s1+a[I][j];
    if( __________ )
    s2=s2+a[I][j];
    }
    printf(“%d\n%d\n”,s1,s2);
    }
    2、從鍵盤上輸入10個數(shù),求其平均值。
    main()
    {int i;
    float f,sum;
    for(i=1,sum=0.0;i<11;i++)
    {__________;
    __________ ;
    }
    printf(“average=%f\n”,sum/10);
    }
    3、以下程序是建立一個名為myfile的文件,并把從鍵盤輸入的字符存入該文件,當(dāng)鍵盤上輸入結(jié)束時關(guān)閉該文件。
    #include
    main()
    {
    FILE *fp;
    char c;
    fp=__________;
    do
    {
    c=getchar();
    fputs(c,fp);
    }while(c!=EOF);
    __________; ;
    }
    五、編程題
    1、三個整數(shù)a、b、c,由鍵盤輸入,輸出其中大的數(shù)。
    2、從鍵盤輸入的10個整數(shù)中,找出第一個能被7整除的數(shù)。若找到,打印此數(shù)后退出循環(huán);若未找到,打印“not exist”。
    3、有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,寫一個函數(shù),求出平均分。
    4、有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績高的學(xué)生信息,包括學(xué)號、性別、姓名和平均成績。
    參考答案
    一、 填空題
    1、int ,2個字節(jié),-32768~ +32767 。
    2、整型、實型、字符型。
    3、- 4。
    4、結(jié)構(gòu)體的成員占有各自不同的空間,而共用體的各成員放到同一存儲空間。
    5、a=1,b=3,c=2
    7、”a”是字符串常量,而’a’是字符常量。
    8、7,1 。
    二、 選擇題
    1、B 2、C 3、D 4、C 5、C
    6、D 7、C 8、D 9、C 10、D
    11、D 12、D 13、B 14、B 15、A
    16、D 17、B 18、B 19、C 20、D
    三、 閱讀程序題
    (1) 6,8 (2) 3.141593,3.1416,3.142 (3) 4 (4) 2,4 (5) 8
    四、 程序填空題
    1、I==j I+j==2 2、scanf(“%f”,&f); sum+=f;
    3、fopen(“myfile”,w) fclose(fp);
    五、 編程題
    1、main()
    { int a,b,c;
    printf(“請輸入三個整數(shù):”); scanf(“%d,%d,%d”,&a,&b,&c);
    if(aif(belse printf(“max=%d\n”,b);
    else if(aelse printf(“max=%d\n”,a); }
    2、#include”stdio.h”
    main()
    { int I,a;
    for(I=1;I<=10;I++)
    { scanf(“%d”,&a);
    { if(a%7==0)
    printf(“%d”,a); break; } }
    if(I==11)
    printf(“not exist”); }
    3、float average(float array[ ],int n)
    { int I;
    float aver,sum=array[0];
    for(I=1;Isum=sum+array[I];
    aver=sum/n;
    return(aver); }
    main()
    { float ave,score[10];
    int I;
    for(I=0;I<10;I++)
    scanf("%f",&score[I]);
    ave=average(score,10);
    printf("%f\n",ave); }
    4、 #include"stdio.h"
    #define N 3
    struct student
    { long stu_num;
    char sex;
    char name[15];
    int score[4];
    float average; };
    main()
    { int I,j,index;
    float sum,max;
    struct student stuarr[N];
    for(I=0;I{ printf("please input %d student information:\n",I+1);
    scanf("%ld,%c,%s",&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);
    for(j=0;j<4;j++)
    scanf("%d",&stuarr[I].score[j]); }
    for(I=0;I{ sum=0.0;
    for(j=0;j<4;j++)
    sum+=stuarr[I].score[j];
    stuarr[I].average=sum/4.0; }
    max=stuarr[0].average;
    index=0;
    for(I=1;Iif(stuarr[I].average>max)
    {max=stuarr[I].average; index=I; }
    printf("總平均成績高的學(xué)生信息是學(xué)號=%ld,性別=%c,姓名=%s,平均成績=%4.1f\n",stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].average); }