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

字號:


    一、填空
    1.實型變量的類型說明符有:__________、____________。
    2.表達式7+8>2 && 25 %5的結果是_______________________。
    3.下列程序段是從鍵盤輸入的字符中統(tǒng)計數字字符的個數,用換行符結束循環(huán)。
    Int n=0, ch;
    Ch=getchar( );
    While( __________________ ) ) ) )
    { if ( ________________ ) n++;
    4.putchar(c ) 函數的功能是是是_____________________________________。
    5int *p 的含義是是是是___________________________________________。
    6.C語言中數組的下標下限為___________________________。
    7.定義fp為文件型指針變量的定義方法為_______________________。
    8.數組 int a[3][4];共定義了____________個數組元素。
    二、單項選擇題
    1、下列屬于整型常量的是________。
    A、12
    B、12.0
    C、-12.0
    D、10E10
    2、不屬于字符型常量的是_________。
    A.‘A’
    B、'a'
    C、“A”
    D、'b'
    3、下列表達式為關系表達式的為_________。(其中a為一整型變量)
    A.3+4*5
    B、a==10
    C、a>0?a:-a
    D、a=1
    4、下面不正確的賦值語句是_____________。
    A.a=a+1
    B、a= =b
    C、a+=b
    D、a=1
    5、下列對數組定義不正確的語句是______________。
    A.int m[5];
    B、char b[]={‘h’,’e’};
    C、int a[10]={1,6,8,4};
    D、char p[];
    6、若有以下定義,則______和______是對數組元素的正確引用。
    int a[5],*p=a
    A. *&a[6]
    B、*p+8
    C、*(a+2)
    D、*p
    7、執(zhí)行下列語句后,a的值是______。
    int a=8;
    a+=a-=a*a;
    A.-240
    B、64
    C、112
    D、-112
    8. 指出下面正確的輸入語句( )。
    A. scanf(“a=b=%d”,&a,&b) ;
    B. scanf(“%d,%d”,&a,&b) ;
    C. scanf(“%c”,c) ;
    D. scanf(“%f\n”,&f) ;
    9.下面的變量說明中正確的是____________。
    A.int:a, b, c;
    B.int a; b; c;
    C.int a, b, c
    D.int a, b, c;
    10. C語言用( )表示邏輯“真”值。
    A.True
    B. t 或 y
    C. 非零整型值
    D. 整型值0
    11.若x=5,y=4 則y*=x+5; y的值為( ).
    A. 40
    B. 20
    C. 15
    D. 30
    13.C語言中以追加方式打開一個文件應選擇_______________參數。
    A.“r”
    B.“w”
    C.“rb”
    D.“a”
    14.Break語句的正確的用法是( )。
    A. 無論在任何情況下,都中斷程序的執(zhí)行,退出到系統(tǒng)下一層。
    B. 在多重循環(huán)中,只能退出最靠近的那一層循環(huán)語句。
    C. 跳出多重循環(huán)。
    D. 只能修改控制變量。
    15.兩個指針變量的值相等時,表明兩個指針變量是________________。
    A. 占據同一內存單元。
    B. 指向同一內存單元地址或者都為空。
    C. 是兩個空指針。
    D. 都沒有指向。
    16.字符串指針變量中存入的是________________。
    A.字符串的首地址。
    B. 字符串
    C.第一個字符
    D. 字符串變量。
    17.以_______________個是不正確的描述。
    A. 不論在主函數還是自定義函數中,只要說明了變量,就可為其分配存貯單元。
    B. 在定義函數時,必須指定形參的類型。
    C. 形參和實參之間可以是值傳遞。
    D. 數組名可以作為參數進行傳遞。
    18 表達式“1?(0?3:2):(10?1:0)”的值為_____________________。
    A.3
    B. 2
    C. 1
    D. 0
    19. 為表示關系x≥y≥z,應使用C語言表達式
    A.(x>=y)&&(y>=z)
    B. (x>=y) AND (y>=z)
    C.(x>=y>=z)
    D. (x>=z)&(y>=z)
    20. 以下說法中正確的是_______________。
    A. C語言程序總是從第一個定義的函數開始執(zhí)行。
    B. 在C語言程序中,要調用的函數必須有main( ) 函數中定義。
    C. C語言程序總是從main( ) 函數開始執(zhí)行。
    D. C語言程序中的main( ) 函數必須放在程序的開始部分。
    21.設有數組定義:char array[]=”China”;則數組所占的存貯空間為__________。
    A.4個字節(jié)
    B. 5個字節(jié)
    C. 6個字節(jié)
    D. 7個字節(jié)
    22.根據C語言的語法規(guī)則,下列________個是不合法標識符。
    A.While
    B. Name
    C. Rern5
    D. _exam
    三、讀出下列程序,寫出程序的運行結果。
    1. main()
    { int a=8 , b=1;
    a=a+b;
    b=a*b;
    printf("a=%d,b=%d",a,b); }
    該程序的運行結果是___________________________________。
    2. main()
    { int i,num[5];
    for(i=0;i<5;i++)
    num[i]=i*10 - 2;
    printf("%d",num[3]); }
    該程序的運行結果是___________________________________。
    3. main()
    { float c,f;
    c=30.0;
    f=(6*c)/5+32;
    printf("f=%f",f); }
    該程序的運行結果是___________________________________。
    4. main()
    { int a=6095 , b ;
    b=a00 ;
    printf("%d", b) ; }
    該程序的運行結果是___________________________________。
    5. # include “stdio.h”
    main( )
    { int a[]={8,2,9,4,1}, *p;
    p=a;
    *(p+2)+=2;
    printf(“%d, %d ”, *p, *(p+2));}
    該程序的運行結果是___________________________________。
    四、將下列程序中不正確的語句改正。
    1. main( )
    { int k ;
    k=35555 ;
    printf ( “%d “, k) ; }
    2. main ( )
    { int a , b ;
    scanf ( “input a ,b:”,a , b );
    printf (“a=%d, b=%d”,a,b); }
    3. main( )
    { int sum , k ;
    sum=0 ;
    k= 1 ;
    while (k < =100 )
    sum = sum+k ;
    k + + ;
    p rintf (“ sum=%d\n”, sum) ; }
    4. main( )
    { int k , a( 8 ) ;
    for( k=0; k<10 ; k++)
    scanf(“%d”, &a(k));
    ...... }
    5. main( )
    scanf(“%d”, a);
    if (a = 1)
    printf(“One\n”) ; }
    五.編程題
    1. 用程序計算下列表達式:s=1!+2!+3!+4!
    2、從鍵盤上輸入三個數,求出其中的一個數。
    3. 輸入兩個整數,調用函數stu( )求兩個數差的平方,返回主函數顯示結果。。
    4.從鍵盤上輸入10個評委的分數,去掉一個分,去掉一個最低分,求出其余8個人的平均分,輸出平均分,分,最低分。
    5.write.txt中,遇到回車鍵輸入結束。。(用“\n”表示回車鍵)
    參考答案
    一、填空
    1.float double
    2. 0
    3.ch!=‘\0’ (ch>=‘a’ && ch<=‘z’) || (ch>=‘A’ && ch<=‘Z’)
    4.將字符c所包含的值輸出到標準的輸出設備上。
    5.定義一個整型的指針變量p
    6.0
    7.FILE *fp
    8. 12
    二、單項選擇題
    1、 A 2、 C 3、 B 4、 B 5、 D 6、C D 7、 D
    8、 B 9、 D 10、 C 11、 A. 13、 D 14、B
    15、 A. 16、 A 17、 A. 18、 B 19、 A 20、 C 21、C 22、A
    三、讀出下列程序,寫出程序的運行結果。
    1. a=9,b=9 2. 28 3. f=68 4. 95 5. 8,11
    四、將下列程序中不正確的語句改正。
    1. long int k ; printf ( “%ld “, k) ; }
    2. scanf ( “%d,%d”,a , b );
    3. while (k < =100 )
    { sum = sum+k ;
    k + + ; }
    4. int k , a[8] ;
    scanf(“%d”, &a[k]);
    5. if (a = = 1)
    五.編程題
    1. main()
    { long int a,b,sum=0,p;
    for(a=1;a<=4;a++)
    { p=1;
    for(b=1;b<=a;b++)
    p*=b;
    sum+=p; }
    printf(“%ld”,sum); }
    2、main()
    { int a,b,c,max;
    scanf(“%d,%d,%d”,&a,&b,&c);
    if (a>b)
    max=a;
    else
    max=b;
    if (maxmax=c;
    printf(“max=%d”,max); }
    3. int stu(int a,int b)
    { int c;
    c=a*a+b*b;
    return c; }
    main()
    { int x,y,z;
    scanf(“%d,%d”,&x,&y);
    z=stu(x,y);
    printf(“%d”,z); }
    4.main()
    { float a[10],b,max,min,sum=0,aver;
    for(b=0;b<10;b++)
    scanf(“%f”,&a[b]);
    max=min=a[0];
    for(b=1;b<10;b++)
    { if(a[b]>max)
    max=a[b];
    if(a[b]min=a[b];
    sum+=a[b]; }
    sum=sum-max-min;
    aver=sum/8;
    printf(“%f,%f,%f”,aver,max,min); }
    5. main()
    { FILE *fp;
    Char ch;
    fp=fopen(“write.txt”,“w”);
    ch=getchar();
    while(ch!= ‘\n’)
    { fputc(ch,fp);
    ch=getchar(); }
    fclose(fp);