2019-02-24 計算機二級C語言之課后習(xí)題(1)

題目來源:高教版《全國計算機等級考試二級教程——C語言程序設(shè)計》

P35 編程和改錯題

3.16

題目:

以下程序多處有錯媚创。若必須按下面的形式輸入數(shù)據(jù),并且必須按下面指定的形式輸出數(shù)據(jù),請對該程序做相應(yīng)的修改。

main
{
    double a, b, c, s, v;
    printf("input a, b, c:\n);
    scanf("%d %d %d", a, b, c);
    a = a * b;
    v = a * b * c;
    printf("%d %d %d", a, b, c);
    printf("s = %f\n", s, "v = %d\n", v);
}

當程序執(zhí)行時,屏幕的顯示和要求輸入形式如下:

input a, b, c:2.0 2.0 3.0

a = 2.000000, b = 2.000000, c = 3.000000

s = 4.000000, v = 12.000000

解答:

原程序中錯誤的地方如注釋所述:

//缺少#include <stdio.h>
main //漏掉了main()函數(shù)的括號
{   double a, b, c, s, v;
    printf("input a, b, c:\n); //換行符導(dǎo)致輸出與要求的輸出不符,要求的輸出中這里是不換行的
    scanf("%d %d %d", a, b, c); //格式字符錯誤看政,double類型應(yīng)該使用%lf,而且還漏了取址運算符“&”
    a = a * b;
    v = a * b * c;
    printf("%d %d %d", a, b, c); //格式字符錯誤抄罕。此外允蚣,這里應(yīng)該加上a,b,c和一個換行符,否則與要求的輸出格式不同
    printf("s = %f\n", s, "v = %d\n", v); //格式控制錯誤呆贿,應(yīng)該寫在一起嚷兔。此外,也不應(yīng)有換行符
}

正確的程序如下:

(左大括號獨占一行做入、第二行main函數(shù)的寫法“int main (void);”和最后的“return 0;”與教材上的不一樣冒晰,這是我的個人習(xí)慣,按照教材上的左大括號后不換行竟块、寫“main ( )”以及不寫return 0;也是可以通過編譯的壶运。)

#include <stdio.h>
int main(void)
{
    double a, b, c, s, v;
    printf("input a, b, c:");
    scanf("%lf %lf %lf", &a, &b, &c);
    s = a * b;
    v = a * b * c;
    printf("a = %lf, b = %lf, c = %lf\n", a, b, c);
    printf("s = %lf,v = %lf\n", s, v);
    return 0;
}

輸出:

與題目要求的輸出格式相同。

3.17

題目:

編寫程序浪秘,把560分鐘換算成用小時和分鐘表示蒋情,然后分別進行輸出。

解答:

題目的意思應(yīng)該是要求把560分鐘換算成x小時x分鐘耸携,再輸出棵癣。換算過程可以用除法和求模來完成。

程序如下:

#include <stdio.h>
int main(void)
{
    int minute = 560;
    int minute1, hour = 0;
    hour = minute / 60; //計算換算后的小時
    minute1 = minute % 60; //計算換算后的分鐘
    printf("560 minutes = %d h %d min", hour, minute1); //輸出換算后的小時和分鐘
    return 0;
}

輸出:

560 minutes = 9 h 20 min

3.18

題目:

編寫程序违帆,輸入兩個整數(shù):1500和350浙巫,求出它們的商和余數(shù)并進行輸出金蜀。

解答:

這題跟上面那題有點像刷后,用同樣的方法來實現(xiàn)就可以。

程序如下:

#include <stdio.h>
int main(void)
{
    int a = 1, b = 1, s = 1, ys = 1;
    printf("請輸入兩個整數(shù):");
    scanf("%d %d",&a, &b);
    s = a / b; //求兩數(shù)之商
    ys = a % b; //求余數(shù)
    printf("%d和%d的商為:%d渊抄,余數(shù)為:%d\n",a,b, s, ys);
    return 0;
}

輸入和輸出:

C語言課后習(xí)題-2.png

3.19

題目:

編寫程序尝胆,讀入三個雙精度數(shù),求它們的平均值并保留此平均值小數(shù)點后一位數(shù)护桦,對小數(shù)點后第二位數(shù)進行四舍五入含衔,最后輸出結(jié)果。

解答:

程序如下:

#include <stdio.h>
int main(void)
{
    double a = 1.0, b = 1.0, c = 1.0, answer = 1.0; 
    printf("請輸入三個浮點數(shù):");
    scanf("%lf %lf %lf", &a, &b, &c); 
    answer = (a + b + c) / 3; //進行求平均值的運算
    printf("answer = %.2lf", answer); //用“.2”控制輸出數(shù)據(jù)所占的寬度,實現(xiàn)保留一位數(shù)并將第二位進行四舍五入的功能
    return 0;
}

輸出:


3.20

題目:

編寫程序贪染,讀入三個整數(shù)給a缓呛、b、c杭隙,然后交換它們中的數(shù)哟绊,把a中原來的值給b,把b中原來的值給c痰憎,把c中原來的值給a票髓,然后輸出a、b铣耘、c洽沟。

解答:

要實現(xiàn)三個整數(shù)的值互相交換,除了要定義這三個整數(shù)a蜗细,b裆操,c之外還需要另外再定義兩個整數(shù)d和e。首先把a的值存在d中鳄乏,把b的值存在e中跷车,再把c的值給a,d(也就是原來的a)的值給b橱野,最后把e(原來的b)的值給c朽缴。

程序如下:

#include <stdio.h>
int main(void)
{
    int a = 0, b = 0, c = 0, d = 0, e = 0; 
    printf("請輸入三個整數(shù):");
    scanf("%d %d %d",&a, &b, &c); //輸入三個整數(shù):a,b,c
    printf("輸入的值為:a = %d, b = %d, c = %d\n",a, b, c); //輸出原始值
    //以下五行進行三個數(shù)值的交換
    d = a;
    e = b;
    a = c;
    b = d;
    c = e;
    printf("交換后的值為:a = %d, b = %d, c = %d\n",a, b, c); //輸出交換后的值
    return 0;
}

輸入和輸出:

P49 編程題

4.21

題目:

若a的值小于100,請將以下選擇結(jié)構(gòu)改寫成由switch語句構(gòu)成的選擇結(jié)構(gòu)水援。

if (a < 30)
    m = 1;
else if (a < 40)
    m = 2;
else if (a < 50)
    m = 3;
else if (a < 60)
    m = 4;
else
    m = 5;

改寫后的switch語句如下:

(雖然放入完整的程序中能通過編譯而且輸出正確但是這段語句是不是最優(yōu)的改寫方法不能確定密强,如果有更好的實現(xiàn)方法的話歡迎大佬指正。)

switch (a / 10)
{
    case 0:
        m = 1;
        break;
    case 1:
        m = 1;
        break;
    case 2:
        m = 1;
        break;
    case 3:
        m = 2;
        break;
    case 4:
        m = 3;
        break;
    case 5:
        m = 4;
        break;
    default:
        m = 5;
        break;
}

4.22

題目:

編寫程序蜗元,輸入一位學(xué)生的生日(年:y0或渤、月:m0、日:d0)奕扣,并輸入當前的日期(年:y1薪鹦、月:m1、日:d1)惯豆,輸出該生的實際年齡池磁。

解答:

基本思路是,首先求當前年份和生日年份的差楷兽,如果小于0地熄,則輸出“錯誤”。

如果當前年份和生日年份的差大于零芯杀,判斷當前月份和生日月份的差端考,如果大于零雅潭,判斷當前日期和生日日期的差,如果也大于零却特,則生日就是當前年份和生日年份的差扶供。如果這兩項有一項小于零,就將當前年份和生日年份減1作為該生的實際年齡裂明。

(在我的這個程序里诚欠,把當前日期是生日當天的情況也算作實際年齡為當前年份和實際年份減1,如果不要這么算的話要再加一個if語句漾岳,也是可以實現(xiàn)的轰绵,看對題目的理解了。)

#include <stdio.h>
int main(void)
{
    int y0 = 2000, m0 = 1, d0 = 1, y1 = 2000, m1 = 1, d1 = 1, y2 = 1, m2 = 1, d2 = 1;
    printf("請輸入生日:\n");
    scanf("%d %d %d", &y0, &m0, &d0);
    printf("請輸入當前日期:\n");
    scanf("%d %d %d", &y1, &m1, &d1);
    y2 = y1 - y0; //求當前年份和生日年份的差
    if (y1 - y0 < 0) //判斷當前年份和生日年份的差是否小于0
        printf("錯誤\n");
    else if (m1 - m0 > 0) //判斷當前月份和生日月份的差是否小于0
        printf("該生的實際年齡為:%d\n", y2); 
    else if (d1 - d0 > 0) //判斷當前日期和生日日期的差是否小于0
        printf("該生的實際年齡為:%d\n", y2);
    else
    {
        y2--; 
        printf("該生的實際年齡為:%d\n", y2);
    }
    return 0;
}

輸入和輸出:

4.23

題目:

編寫程序尼荆,輸入一個整數(shù)左腔,打印出它是奇數(shù)還是偶數(shù)。

解答:

很簡單的題捅儒,用一個求模運算和一個if語句就可以完成液样。

程序如下:

#include <stdio.h>
int main(void)
{
    int a = 0, b = 0;
    scanf_s("%d", &a);
    b = a % 2;
    if (b != 0) //利用該數(shù)除以2的余數(shù)是否為0來判斷該數(shù)是奇數(shù)還是偶數(shù)
        printf("它是奇數(shù)。\n");
    else
        printf("它是偶數(shù)巧还。\n");
    return 0;
}

輸入和輸出如下:

4.24

題目:

編寫程序鞭莽,輸入a、b麸祷、c三個數(shù)澎怒,打印出最大者。

解答:

很簡單阶牍,用兩條不嵌套的if語句就可以實現(xiàn)喷面。

程序如下:

#include <stdio.h>
int main(void)
{
    int a = 0, b = 0, c = 0;
    scanf("%d %d %d", &a, &b, &c);
    int d = a;
    if (c > d)
        d = c;
    if (b > d)
        d = b;
    printf("最大的數(shù)為:%d", d);
    return 0;
}

輸入和輸出如下:

4.25

題目:

對于以下函數(shù):
\begin{cases} x\quad(-5<x<0)\\ x-1\quad(x=0)\\ x+1\quad(0<x<10)\\ \end{cases}
編寫程序,要求輸入x的值走孽,輸出y的值惧辈。分別用:

  1. 不嵌套的if語句
  2. 嵌套的if語句
  3. if-else語句
  4. switch語句

解答:

不嵌套的if語句:

#include <stdio.h>
int main(void)
{
    int x = 0, y = 0;
    scanf("%d", &x);
    if (-5 < x && x < 0)
        y = x;
    if (x == 0)
        y = x - 1;
    if (0 < x && x < 10)
        y = x + 1;
    printf("%d", y);
    return 0;
}

嵌套的if語句:

#include <stdio.h>
int main(void)
{
    int x = 0, y = 0;
    scanf("%d", &x);
    if (x <= 0 && x > -5)
    {
        if (x < 0)
            y = x;
        if (x == 0)
            y = x - 1;
    }
    else
        y = x + 1;
    printf("%d", y);
    return 0;
}

if-else語句:

#include <stdio.h>
int main(void)
{
    int x = 0, y = 0;
    scanf("%d", &x);
    if (x > 0)
        y = x + 1;
    else if (x < 0)
            y = x;
    else 
            y = x - 1;
    printf("%d", y);
    return 0;
}

switch語句:

#include <stdio.h>
int main(void)
{
    int x = 0, y = 0, z = 0;
    scanf("%d", &x);
    z = x < 0 ? 2 : 3;
    z = x == 0 ? 1: 3;
    switch ( z )
    {
    case 1:
        y = x - 1;
break;
    case 2:
        y = x;
        break;
    default:
        y = x + 1;
        break;
    }
    printf("%d", y);
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市磕瓷,隨后出現(xiàn)的幾起案子盒齿,更是在濱河造成了極大的恐慌,老刑警劉巖困食,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件边翁,死亡現(xiàn)場離奇詭異,居然都是意外死亡陷舅,警方通過查閱死者的電腦和手機倒彰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門审洞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莱睁,“玉大人待讳,你說我怎么就攤上這事⊙鼋耍” “怎么了创淡?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長南吮。 經(jīng)常有香客問我琳彩,道長,這世上最難降的妖魔是什么部凑? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任露乏,我火速辦了婚禮,結(jié)果婚禮上涂邀,老公的妹妹穿的比我還像新娘瘟仿。我一直安慰自己,他們只是感情好比勉,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布劳较。 她就那樣靜靜地躺著,像睡著了一般浩聋。 火紅的嫁衣襯著肌膚如雪观蜗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天衣洁,我揣著相機與錄音墓捻,去河邊找鬼。 笑死坊夫,一個胖子當著我的面吹牛毙替,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播践樱,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼厂画,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拷邢?” 一聲冷哼從身側(cè)響起袱院,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞭稼,沒想到半個月后忽洛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡环肘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年欲虚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悔雹。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡复哆,死狀恐怖欣喧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梯找,我是刑警寧澤唆阿,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站锈锤,受9級特大地震影響驯鳖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜久免,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一浅辙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阎姥,春花似錦摔握、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伊磺,卻和暖如春盛正,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屑埋。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工豪筝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摘能。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓续崖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親团搞。 傳聞我的和親對象是個殘疾皇子严望,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容