編程題 | 4 C選擇結構程序設計

2021-03-02 程序設計及計算機基礎學習空間

有一個函數如下:

   

編寫程序,輸入x的值,計算相應的y值輸出(保留3位小數)。

源程序:

#include<stdio.h>

#include<math.h>

int main()

{

  float x,y;

  scanf("%f", &x);

  if(x<5)  y=x*x-2;

  else if(x<50) y=3*x +5;

         else y=x-sqrt(4*x-1);

  printf("y=%.3f\n",y);

  return 0;

}

運行結果:

(1

4

y=14.000

(2

10.5

y=36.500

(3

55.6

y=40.720

編寫一個程序,根據輸入的三角形的三條邊判斷是否能組成三角形,如果可以則輸出它的面積和三角形類型(等邊、等腰、直角、等腰直角、一般三角形等)。

源程序:

#include <stdio.h>

#include <math.h>

int main()

{

  float a, b, c, s, area;

  printf("Input the three edge length:");

  scanf("%f,%f,%f",&a,&b , &c);

  if(a+b>c && b+c>a && a+c>b)

   {

     s=(a+b+c)/2;

    area=sqrt(s*(s*(s-a)*(s-b)*(s-c)));

    printf("area=%.2f\n",area);

    if(fabs(a-b)<=0.0001&&fabs(b-c)<=0.0001&&fabs(c-a)<=0.0001)

     {

       printf("等邊三角形");

     }

         else if(fabs(a-b)<=0.0001||fabs(b-c)<=0.0001||fabs(c-a)<=0.0001)

       {

      if(fabs(a*a+b*b-c*c)<=0.0001||fabs(a*a+c*c-b*b)<=0.0001||fabs(b*b+c*c-a*a)<=0.0001)

        {

           printf("等腰直角三角形");

        }

       else

            printf("等腰三角形");

          }

else if(fabs(a*a+b*b-c*c)<=0.0001||fabs(a*a+c*c-b*b)<=0.0001||fabs(b*b+c*c-a*a)<=0.0001)

       {

         printf("直角三角形");

       }

        else printf("一般三角形\n");

   }

else   printf("不是三角形\n");

return 0;

}

運行結果:

(1)

Input the three edge length:3,4,5

area=14.70

直角三角形

(2)

Input the three edge length:4,4,5

area=19.90

等腰三角形


(3)

Input the three edge length:5,5,5

area=29.65

等邊三角形

(4)

Input the three edge length:5,5,7.071065

area=36.52

等腰直角三角形

(5)

Input the three edge length:5,6,7

area=44.09

一般三角形

(6)

Input the three edge length:4,5,10

不是三角形

--

設獎金稅率r有如下的要求 (n代表獎金) :

由鍵盤輸入獎金值,計算並輸出相應的稅率和實際應得獎金值。分別用if-else的嵌套語句和switch多分支選擇語句編寫程序。

源程序一:

#include<stdio.h>

int main()

   float n, r, s;

   int m;

   printf("請輸入獎金值:");

   scanf("%f", &n);

   if(n<1000) r=0;

     else if(n<3000) r=0.03;

         else if(n<5000) r=0.05;

             else if(n<10000) r=0.07;

                 else r=0.1;

    s=n-r*n;  //計算實際所得獎金值

  printf("稅率r=%.0f%%, 獎金值n=%.2f, 實際所得獎金s=%.2f\n",r*100, n, s);

  return 0;

}

源程序二:

#include<stdio.h>

int main( )

   float n, r, s;

   int m;

   printf("請輸入獎金值:");

   scanf("%f", &n);

   if(n>=10000)  m=10;

   else  m=n/1000;

   switch(m)

   {  case 0: r=0; break;

      case 1:

      case 2: r=0.03; break;

      case 3:

      case 4: r=0.05; break;

      case 5: case 6:

      case 7: case 8:

      case 9:r=0.07; break;

      case 10:r=0.1;

   }

  s=n-r*n;  //計算實際所得獎金值

  printf("稅率r=%.0f%%, 獎金值n=%.2f, 實際所得獎金s=%.2f\n",r*100, n, s);

  return 0;

}

運行結果:

(1)

請輸入獎金值:3000

稅率r=5%, 獎金值n=3000.00, 實際所得獎金s=2850.00

(2)

請輸入獎金值:6000

稅率r=7%, 獎金值n=6000.00, 實際所得獎金s=5580.00

(3)

請輸入獎金值:11000

稅率r=10%, 獎金值n=11000.00, 實際所得獎金s=9900.00

--

從鍵盤輸入任意4個數a、b、c、d,按照從大到小的順序排列後重新輸出。

源程序:

#include<stdio.h>

int main( )

{  int a, b, c, d,t;

   scanf("%d,%d,%d,%d", &a,&b,&c,&d);

   if(a<b) { t=a; a=b; b=t; }

   if(a<c) { t=a; a=c; c=t; }

   if(a<d) { t=a; a=d; d=t; }

   if(b<c) { t=b; b=c; c=t; }

   if(b<d) { t=b; b=d; d=t; }

   if(c<d) { t=c; c=d; d=t; }

   printf("%d %d %d %d\n", a,b,c,d);

   return 0;

}

運行結果:

3,4,6,1

6 4 3 1

---

給出一個不超過4位數的正整數,判斷它是幾位數,並按逆向輸出各位數字。例1234,輸出為4321。

源程序:

#include<stdio.h>

int main(void)

   int num,i,j,k,m;

   printf("輸入一個少於4位的正整數:");

   scanf("%d",&num);

   if(num>=0 && num<=9999)

   {

    if(num>1000 && num<=9999) 

    {

          printf("是一個4位數\n");

          m=num%10;     /*求個位上的數字*/

          k=num/10%10;   /*求十位上的數字*/

          j=num/100%10;  /*求百位上的數字*/

       i=num/1000;     /*求千位上的數字*/

      printf("逆序數為:%d%d%d%d\n",m,k,j,i);

    }

   else if(num>=100)

   {   printf("是一個3位數\n");

              m=num%10;    /*求個位上的數字*/

              k=num/10%10;  /*求十位上的數字*/

           j=num/100;     /*求百位上的數字*/

          printf("逆序數為:%d%d%d\n",m,k,j);

   }

    else if(num>=10)

       {     printf("是一個2位數\n");

              m=num%10;    /*求個位上的數字*/

              k=num/10;    /*求十位上的數字*/

       printf("逆序數為:%d%d\n",m,k);

       }

    else

       {     printf("是一個1位數\n");

           printf("逆序數為:%d\n",num);

       }

   }

   else printf("是一個無效的數\n");

   return 0;

}

運行結果:

(1)

輸入一個少於4位的正整數:63

是一個2位數

逆序數為:36

(2)

輸入一個少於4位的正整數:135

是一個3位數

逆序數為:531

(3)

輸入一個少於4位的正整數:1234

是一個4位數

逆序數為:4321

--

從鍵盤輸入一個正整數,判斷其是否能同時被5和7整除,若是則輸出「YES」,否則輸出「NO」。


源程序:

#include<stdio.h>

int main()

   int x;

   scanf("%d", &x);

   if(x>0)

   { if(x%5==0&&x%7==0)

         printf("YES\n");

     else  printf("NO\n");

   }

   else printf("data error!");

return 0;

}

運行結果:

(1)

14

NO

(2)

35

YES

(3)

-9

data error!

     

郵局郵寄包裹有如下規定:如果包裹的長、寬、高任意尺寸超過1米或重量超過40千克,不予郵寄;可以郵寄的包裹每件收取手續費5元,再根據不同的重量weight計算郵資。

weight<10kg         2.5元

10kg≤weight<30kg   2.0元

30kg≤weight<40kg   1.5元

編寫程序輸入包裹的長、寬、高和重量,計算並輸出郵資。

源程序:

#include<stdio.h>

int main()

float length, width, height, weight, money, r;

  scanf("%f%f%f%f",&length, &width, &height, &weight);

  printf("Please Input length, width, height, weight:\n");

  if (length>1 || width>1 || height>1 || weight>40) r=-1;

  else if (weight<10)  r=2.5;

      else if (weight<30)  r=2.0;

          else r=1.5;

    if (r==-1) printf ("error\n");

else

{

money=weight*r+5;

printf ("%.2f\n", money);

}

return 0;

}

運行結果:

(1

Please Input length, width, height, weight:

0.8 0.7 0.6 5

17.50

(2

Please Input length, width, height, weight:

0.9 0.8 0.9 20

45.00

(3

Please Input length, width, height, weight:

1.2 0.8 0.6 5

error

--

源程序一:

#include<stdio.h>

int main()

int a, b, c, d, min;

   printf("Please input a, b, c, d:\n");

   scanf("%d%d%d%d",&a,&b,&c,&d);

   min=a;

   if(b<min) min=b;

   if(c<min) min=c;

   if(d<min) min=d;

   printf("min=%d\n", min);

   return 0;

}

源程序二:(採用條件運算符)

#include<stdio.h>

int main()

int a, b, c, d,min;

   printf("Please input a, b, c, d:\n");

   scanf("%d%d%d%d",&a,&b,&c,&d);

   min=a;

   min=b<min? b:min;

   min=c<min? c:min;

   min=d<min? d:min;

   printf("min=%d\n", min);

   return 0;

}

運行結果:

Please input a, b, c, d:

6 4 5 2

min=2

----

某超市進行啤酒促銷活動,每瓶啤酒的單價為20元,買5瓶以上(包括5瓶)10瓶以下打9折;10瓶以上(包括10瓶)20瓶以下打85折;20瓶以上(包括20瓶)30瓶以下打8折;30瓶以上打75折。編寫程序,根據顧客的購買數量計算所要付款的數額(保留2位小數)。

源程序:

#include<stdio.h>

int main()

float discount, price=20, total;

   int x;

   printf ("輸入購買的瓶數:");

   scanf("%d", &x);

   switch (x/5)

   {  case 0: discount=1; break;

      case 1: discount=0.9;break;

      case 2:

      case 3: discount=0.85;break;

      case 4:

      case 5: discount=0.8;break;

      default: discount=0.75;

    }

    total=price*x*discount;

printf("所付金額為%.2f\n",total);

return 0;

}

運行結果:

輸入購買的瓶數:12

所付金額為204.00

---

從鍵盤輸入一個5位數,判斷它是不是迴文數。迴文數是指個位和萬位數相同,十位數和千位數相同的數,如12321是迴文數。

源程序:

#include<stdio.h>

int main()

{

 int ge,shi,qian,wan,x;

   printf("Please input a number: ");

   scanf("%d",&x);

   wan=x/10000;

   qian=x%10000/1000;

   shi=x%100/10;

   ge=x%10;

   if (ge==wan && shi==qian)

     printf("This number %d is huiwen\n",x);

   else

     printf("This number %d is not huiwen\n", x);

   return 0;

}

運行結果:

(1)

Please input a number: 12321

This number 12321 is huiwen

(2)

Please input a number: 12325

This number 12325 is not huiwen

--

相關焦點

  • 上海機電大學2020年《程序設計與數據結構》考試大綱
    一、課程的性質與地位  《高級語言程序設計》和《數據結構》課程是計算機類專業及相關專業的必修課程。通過這兩門課程的學習,使學生掌握C程序設計的基本概念和程序設計的思想和編程技巧;具備使用C語言開發小型軟體系統的能力;為後續學習計算機作業系統原理、編譯原理、資料庫原理等課程打下堅實基礎。
  • 2011年4月成人自考計算機基礎與程序設計真題
    一、單項選擇題(本大題共20小題.每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題後的括號內。錯選、多選或未選均無分。;printf('%d ',x ,y); }該程序的運行結果是A.1B.3C.5D.7二、多項選擇題(本大題共5小題.每小題2分.共10分)在每小題列出的五個備選項中有二至五個是符合題目要求的.請將其代碼填寫在題後的括號內。
  • 2013年4月成人自考計算機基礎與程序設計真題
    一、單項選擇題 (本大題共20小題.每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題後的括號內。錯選、多選或未選均無分。1,y= 1 10.當a=1,b=3,c=5,d=4時,執行下面程序段後,x的值是( )if(a﹤b)if(c﹤d) x=1;else if(a﹤c) x=2;else   x=4; A.1 B.2 C.3 D.4 11.對do... while(表達式);結構的循環,下面說法正確的是
  • 2006年4月成人自考計算機基礎與程序設計真題
    一、單項選擇題(本大題共20小題.每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題後的括號內。錯選、多選或未選均無分。(   )A.LoadB.NewC.SaveD.Quit點擊進入:自考報名有疑問、不知道如何選擇主考院校及專業、自考當地政策不了解,點擊立即報考諮詢》》4.設有int a=3, b=-4, c=5;表達式(a﹤b)?
  • 單片機C語言模塊化編程方法
    這個時候,你就應該將自己的這一塊程序寫成一個模塊,單獨調試,留出接口供其它模塊調用。最後,小組成員都將自己負責的模塊寫完並調試無誤後,由項目組長進行組合調試。像這些場合就要求程序必須模塊化。模塊化的好處是很多的,不僅僅是便於分工,它還有助於程序的調試,有利於程序結構的劃分,還能增加程序的可讀性和可移植性。
  • 單片機的程式語言:彙編語言、C語言、PL/M和BASIC語言
    單片機系統同樣也由硬體系統和軟體系統構成,因此涉及到程序的編寫問題。單片機的程式語言很多,目前常見的程式語言有4種,即彙編語言、C語言、PL/M和BASIC語言。下面我們來介紹一下吧:一、BASIC程式語言BASIC是一種高級語言,它的英文含義是「初學者通用符號指令代碼」,是在1965年5月,由美國科學家託馬斯•庫爾茲研製出來的。
  • 編程大佬總結的50點學習C+的方法,一針見血,少走彎路
    25.和別人一起討論有意義的c++知識點,而不是爭吵xx行不行或者yy與zz哪個好; 26.請看《程序設計實踐》,並嚴格的按照其要求去做; 27.不要因為c和c++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣; 28.c++絕不是所謂的c的「擴充」——如果c++一開始就起名叫
  • 想學編程?先來理解一下C語言的Helloworld程序吧
    C語言作為一門計算機科學歷史上裡程碑式的程式語言,現在依然被廣泛使用。其功能強大,內容簡單,想學習編程的小夥伴們不妨先學習一下C語言。本文將介紹一下K&R所寫的經典程序:Helloworld的簡要分析。
  • 單片機程式語言的比較
    例如,懂得彙編語言指令就可以使用在片內ram作變量的優勢,因為片外變量需要幾條指令才能設置累加器和數據指針進行存取。同樣的,當要求使用浮點數和啟用函數時也只有具備彙編編程經驗才能避免生成龐大的、效率低的程序,對於這方面的編程,沒有彙編語言是做不到的。
  • C/C+編程筆記:C語言編程面試常見問題,全是經典題!
    如果有剛剛學習編程的小夥伴也可以看一下,都是當時大學應該學懂的,但是因為我以前沒有好好聽課,有些也沒有注意到,現在也是提醒大家吧~ 這些功能使其適用於諸如作業系統或編譯器開發之類的系統編程。 i ++和++ i有什麼區別? 1)表達式「 i ++」返回舊值,然後遞增i。表達式++ i遞增該值並返回新值。 2)後綴++的優先級高於前綴++。
  • 程式語言學哪個比較好?2019年最實用的程式語言
    學習編程關鍵是要找到一種合適的語言,那麼程式語言那麼多,該如何選擇?下面萬古網校小編為大家分享一篇關於程式語言選擇的文章,希望能給你帶來幫助!第一大類語言包括Java、C、Python和C++。這類語言都是非常通用的語言,它們並不局限於特定的編程平臺或用途。
  • keil C語言與彙編語言混合編程
    ,點擊右邊的「Generate Assembler SRC File」和「Assemble SRC File」,使檢查框由灰色變成黑色(有效)狀態;3、根據選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 Keil/C51/Lib/C51S.Lib)加入工程中, 該文件必須作為工程的最後文件;4、編譯,即可生成目標代碼。
  • 單片機模塊化編程的原則有哪些
    目前我們在學習和開發單片機時廣泛採用 c 語言進行編程,當我們開發的單片機項目較小時,或者我們所寫的練習程序很小時,我們總是習慣於將所有代碼編寫在同一個 c 文件下,由於程序代碼量較少,通常為幾十行或者上百行, 此時這種操作是可行方便的, 也沒有什麼問題。
  • C語言入門級教程:基礎數據類型與基本算法,學編程從此刻開始!
    算法的基本特性 算法包含兩方面的內容:算法設計和算法分析 算法設計其實就是針對某一特定類型的問題而設計的一個實現過程。 (1) 定義4個變量分別是a,b,c和min。 (2) 輸入大小不同的三個數分別賦值給a,b,c。 (3) 判斷a是否小於b,如果小於,則將a的值賦給min,否則將b的值賦給min。
  • 單片機編程軟體大佬:明確單片機編程軟體編寫單片機程序步驟
    單片機用什麼軟體編程?單片機開發中除必要的硬體外,同樣離不開軟體,我們寫的彙編語言源程序要變為CPU可以執行的機器碼有兩種方法,一種是手工彙編,另一種是機器彙編,目前已極少使用手工彙編的方法了。掌握這一軟體的使用對於使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那麼Keil幾乎就是你的不二之選(目前在國內你只能買到該軟體、而你買的仿真機也很可能只支持該軟體),即使不使用C語言而僅用彙編語言編程,其方便易用的集成環境、強大的軟體仿真調試工具也會令你事半功倍。
  • 第一篇:C語言編程基礎語法
    01編程基礎C語言——貝爾實驗室、Dennis Ritchie>(丹尼斯裡奇)於1973年設計。其特點:模塊化編程程序設計,層次清晰;語句簡潔,提出程序庫概念;功能強大,系統、應用軟體均可開發;移植性好,適合不同的作業系統。除此之外,C語言還有豐富的運算符、數據結構等,程序設計自由度大,可以對硬體進行操作。
  • 做嵌入式編程,為什麼用的是C語言而不是C++呢?
    C語言發展到現在,差不多50年的時間了,現在正是c語言過渡到C++語言成為嵌入式開發主流語言的最佳契機。 對於習慣了用C語言開發的嵌入式程式設計師來說,對C++語言是有一些誤解和偏見的。
  • 教你輕鬆學會C語言系列之——一種更簡潔、更經典的選擇結構
    前文中,我們已經講到了選擇結構的使用語法。在多重條件選擇應用場景中,有表示等值判斷的,也有表示區間範圍的應用。本文,就來分享另外一種簡潔又經典的選擇結構。但在實際應用中,特殊是在可選擇的條件特別多的情況下,書寫if-else if結構就顯得特別的繁瑣和麻煩。因此,C語言又提供了一個專門用於處理多分支結構的條件選擇語句。
  • keil c語言編程常見問題解析(一)
    一起走向智能工業革命時代,單片機DIY、基於c語言/彙編的編程。3.不知道你有沒有把Source group組下面的A51.C刪掉,如果沒有刪,在A51.c上點右鍵,選擇remove file " ".4.建一個新的c文件,裡面寫一個空的函數,把該文件添加到project中,注意該文件不能再選generate assembler SRC file和assemble SRC file選項。
  • 推薦幾款可以直接在手機上編程的app(包含Java、C、Python等)
    三.C4droid是一款C/C++程序集成開發環境,默認使用tcc為編譯器,可以選擇安裝gcc插件(需要root)選用gcc後,可以用sdl(簡單直控媒體層庫,需安裝sdl plugin forc4droid)和qt(nokia官方開發庫,需安裝sdl plugin for c4droid)。