2016年計算機(jī)二級考試C語言測試題及答案(2)

字號:


    基本輸入輸出及流程控制
    1.
    #include
    main()
    { int a=1,b=3,c=5;
    if (c==a+b)
    printf("yes\n");
    else
    printf("no\n");
    }
    運行結(jié)果為:no
    詳見教材p89 選擇結(jié)構(gòu)
    詳見教材p91關(guān)系符號
    詳見附錄D p378符號的優(yōu)先級
    ==表示判斷符號兩邊的值是否相等;=表示將符號右邊的值賦給左邊的變量
    本題考點是選擇結(jié)構(gòu)3種基本形式的第二種
    選擇結(jié)構(gòu)三種一般形式中的“語句”皆為復(fù)合語句,復(fù)合語句要用{ }括起來,只有當(dāng)復(fù)合語句中只包括一條語句時可以省略{ },此題即如此,因此兩個printf操作沒有加{ }
    若c==a+b成立,則執(zhí)行printf("yes\n");
    否則(即c==a+b不成立),執(zhí)行printf("no\n");
    +的優(yōu)先級高于==,因此先算a+b,值為4, 表達(dá)式5==4不成立,因此執(zhí)行printf("no\n");即輸出字符串no
    2.
    #include
    main()
    { int a=12, b= -34, c=56, min=0;
    min=a;
    if(min>b)
    min=b;
    if(min>c)
    min=c;
    printf("min=%d", min);
    }
    運行結(jié)果為: min=-34
    詳見教材p89 選擇結(jié)構(gòu)
    本題考點是選擇結(jié)構(gòu)3種基本形式的第一種
    一共包含了兩個選擇結(jié)構(gòu)(兩個if語句)
    定義變量,并賦值 此時a=12, b= -34, c=56, min=0
    將a中值拷貝,賦給min,覆蓋了min中的0,此時min中的值被更新為12。
    若min>b成立,則執(zhí)行min=b;
    若min>c成立,則執(zhí)行min=c;
    輸出min中的值
    12大于-34,第一個if語句的表達(dá)式成立,因此執(zhí)行min=b; 執(zhí)行后min中的值被更新為-34.
    -34小于56,第二個if語句的表達(dá)式不成立,因此不執(zhí)行min=c;
    最后輸出min中的值,為-34.
    3.
    #include
    main()
    { int x=2,y= -1,z=5;
    if(x  if(y<0)
    z=0;
    else
    z=z+1;
    printf(“%d\n”,z);
    }
    運行結(jié)果為:5
    遇到選擇結(jié)構(gòu),首先要明確條件表達(dá)式成立時執(zhí)行哪些操作。本題中,第一個if語句,其后的復(fù)合語句沒有大括號{ },說明復(fù)合語句中只包含一條語句,進(jìn)而省略了{(lán) }。內(nèi)層的if...else...是選擇結(jié)構(gòu)的第二種基本形式,在結(jié)構(gòu)上視為一條語句。因此內(nèi)層的if...else...作為第一個if語句的復(fù)合語句。
    若表達(dá)式x  若y<0,則執(zhí)行z=0;
    否則(即y>=0),執(zhí)行z=z+1;
    輸出z
    2>-1,表達(dá)式x  輸出z中的值為5
    4.
    #include
    main()
    { float a,b,c,t;
    a=3;
    b=7;
    c=1;
    if(a>b)
    {t=a;a=b;b=t;}
    if(a>c)
    {t=a;a=c;c=t;}
    if(b>c)
    {t=b;b=c;c=t;}
    printf("%5.2f,%5.2f,%5.2f",a,b,c);
    }
    運行結(jié)果為:1.00,2.00,7.00
    詳見教材p72數(shù)據(jù)的輸出形式
    本題包含了3個if語句,每個if語句后的{ }都不可省略,因為每個{ }中都包含了多條語句
    若表達(dá)式a>b成立,則執(zhí)行{t=a;a=b;b=t;}
    若表達(dá)式a>c成立,則執(zhí)行{t=a;a=c;c=t;}
    若表達(dá)式b>c成立,則執(zhí)行{t=b;b=c;c=t;}
    輸出a,b,c中的值,要求輸出的每個數(shù)據(jù)寬度為5個空格,小數(shù)部分保留2位,數(shù)據(jù)右對齊
    3小于7,因此表達(dá)式a>b不成立,因此不執(zhí)行{t=a;a=b;b=t;}
    3大于1,因此表達(dá)式a>c成立,則執(zhí)行{t=a;a=b;b=t;}。第一句,將a中的3拷貝,粘貼到t中;第二句,將c中的1拷貝,粘貼到a中,覆蓋掉先前的3;第三句。將t中的3拷貝到c中,覆蓋掉c中先前的1. 執(zhí)行完復(fù)合語句后實現(xiàn)了a,c元素的值的互換,a為1,c為3,t為3,。
    7大于c中的3,因此b>c成立,執(zhí)行則執(zhí)行{t=b;b=c;c=t;},過程同上,執(zhí)行后b為3,c為7,t為7
    此時輸出a,b,c中的值為1.00,2.00,7.00
    5.
    #include< stdio .h >
    main ( )
    {floatc=3.0 , d=4.0;
    if ( c>d ) c=5.0;
    else
    if ( c==d ) c=6.0;
    elsec=7.0;
    printf ( “%.1f\n”,c ) ;
    }
    運行結(jié)果為:7.0
    此題為if...else...語句的嵌套,第二if...else...作為第一個if...else...語句else部分的復(fù)合語句。
    若表達(dá)式c>d成立,則執(zhí)行c=5.0;
    否則(表達(dá)式c>d不成立)
    若表達(dá)式c==d成立,則執(zhí)行c=6.0;
    否則,執(zhí)行c=7.0;
    輸出c中的值
    3.0小于4.0,因此表達(dá)式c>d不成立,執(zhí)行第二個if…else…。
    3.0不等于4.0,因此表達(dá)式c==d不成立,執(zhí)行c=7.0,將7.0賦給c, 覆蓋掉c中的3.0,此時c中的值為7.0
    輸出此時的c中的值
    6.
    #include
    main()
    { int m;
    scanf("%d", &m);
    if (m >= 0)
    { if (m%2 == 0) printf("%d is a positive even\n", m);
    else printf("%d is a positive odd\n", m); }
    else
    { if (m % 2 == 0)printf("%d is a negative even\n", m);
    else printf("%d is a negative odd\n", m); }
    }
    若鍵入-9,則運行結(jié)果為: -9 is a negative odd
    7.
    #include
    main()
    { int num=0;
    while(num<=2){ num++;printf("%d\n",num);}
    }
    運行結(jié)果為:
    1
    2
    3
    詳見教材p115循環(huán)結(jié)構(gòu)
    當(dāng)循環(huán)條件num<=2成立的時候,執(zhí)行循環(huán)體{ num++;printf("%d\n",num);}中的語句。
    循環(huán)初值num為0;
    循環(huán)條件num<=2成立
    第1次循環(huán):執(zhí)行num++;即將num中的值加1,執(zhí)行后num為1;
    執(zhí)行printf("%d\n",num);在屏幕上輸出num中的值,即輸出1,之后換行
    此時num中的值為1,循環(huán)條件num<=2成立
    第2此循環(huán):執(zhí)行num++;即將num中的值加1,執(zhí)行后num為2;
    執(zhí)行printf("%d\n",num);在屏幕上輸出num中的值,即輸出2,之后換行
    此時num中的值為2,循環(huán)條件num<=2成立
    第3此循環(huán):執(zhí)行num++;即將num中的值加1,執(zhí)行后num為3;
    執(zhí)行printf("%d\n",num);在屏幕上輸出num中的值,即輸出3,之后換行
    此時num中的值為3,循環(huán)條件num<=2不成立,結(jié)束循環(huán)。
    8.
    #include
    main( )
    { int sum=10,n=1;
    while(n<3) {sum=sum-n;n++; }
    printf(“%d,%d”,n,sum);
    }
    運行結(jié)果為:3,7
    當(dāng)循環(huán)條件n<3成立的時候,執(zhí)行循環(huán)體{sum=sum-n;n++; }中的語句。
    循環(huán)初值sum為10,n為1;
    循環(huán)條件n<3成立
    第1次循環(huán):執(zhí)行sum=sum-n=10-1=9;
    執(zhí)行n++,即將n中的值加1,執(zhí)行后n為2;
    此時n中的值為2,sum中的值為9,循環(huán)條件n<3成立,繼續(xù)執(zhí)行循環(huán)
    第2次循環(huán):執(zhí)行sum=sum-n=9-2=7;
    執(zhí)行n++,即將n中的值加1,執(zhí)行后n為3;
    輸出此時n,sum中的值,即為3,7。需要注意,在printf(“%d,%d”,n,sum); 中要求輸出的數(shù)據(jù)彼此間用逗號間隔,因此結(jié)果的兩個數(shù)據(jù)間一定要有逗號
    9.
    #include
    main()
    { int num,c;
    scanf("%d",&num);
    do{c=num%10;printf("%d",c);}while((num/=10)>0);
    printf("\n");
    }
    從鍵盤輸入23,則運行結(jié)果為:32
    詳見教材p117循環(huán)結(jié)構(gòu);p60復(fù)合的賦值運算符
    do{ }while(表達(dá)式);
    先無條件執(zhí)行循環(huán)體,再判斷循環(huán)條件。注意while(表達(dá)式)后有分號
    定義整型變量num,c;
    為num賦一個整型值;
    執(zhí)行{c=num%10;printf("%d",c);}直到循環(huán)條件(num/=10)>0不成立;
    輸出換行
    已知為num賦值23
    第1次執(zhí)行循環(huán)體
    執(zhí)行c=num%10=23%10=3;
    執(zhí)行printf("%d",c);輸出3
    判斷循環(huán)條件 num/=10等價于num=num/10; 因此num=23/10=2, 2大于0,因此循環(huán)條件(num/=10)>0成立,繼續(xù)執(zhí)行循環(huán)體。執(zhí)行完第1次循環(huán)時,num為2,c為3
    第2次執(zhí)行循環(huán)體
    執(zhí)行c=2%10=2;
    執(zhí)行printf("%d",c);再輸出2
    判斷循環(huán)條件num=2/10=0,0等于0,因此循環(huán)條件(num/=10)>0不成立。結(jié)束循環(huán)
    10
    #include
    main()
    { int s=0,a=5,n;
    scanf("%d",&n);
    do { s+=1;a=a-2; }while(a!=n);
    printf("%d,%d\n",s,a);
    }
    若輸入的值1,運行結(jié)果為: 2,1
    詳見教材p117循環(huán)結(jié)構(gòu);p60復(fù)合的賦值運算符
    執(zhí)行{ s+=1;a=a-2; }直到循環(huán)條件a!=n不成立;
    已知為n賦值1,s為0,a為5
    第1次執(zhí)行循環(huán)體
    執(zhí)行s+=1;等價于s=s+1=0+1
    執(zhí)行a=a-2; a=5-2=3
    判斷循環(huán)條件,3不等于1,因此循環(huán)條件a!=n成立,繼續(xù)執(zhí)行循環(huán)體。
    執(zhí)行完第1次循環(huán)時,s為1,a為3
    第2次執(zhí)行循環(huán)體
    執(zhí)行s+=1;等價于s=s+1=1+1=2
    執(zhí)行a=a-2; a=3-2=1
    判斷循環(huán)條件,1等于1,因此循環(huán)條件a!=n不成立,結(jié)束循環(huán)。
    執(zhí)行完第2次循環(huán)時,s為2,a為1
    輸出此時s,a中的值,結(jié)果為2,1