Board logo

標題: while迴圈與if else if指令問題 [打印本頁]

作者: msmplay    時間: 2016-10-29 00:24     標題: while迴圈與if else if指令問題

最近剛學C語言................><真的好難喔!!可以直接請教大師們以下2個寫法轉換的問題嗎~~~~~~
請原諒小妹怎麼嘗試都改不出來的心情

1.將以下for迴圈改成while迴圈

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n,i;
    long sum=0;/* 宣告為長整數 */
   
    printf("請輸入任一整數:");
    scanf("%d",&n);
   
    if(n>=1 || n<=100)/* 控制輸入範圍 */
    {
    for(i=0;i<n;i++)
     sum+=i*i; /* 1*1+2*2+3*3+..n*n */
     printf("1*1+2*2+3*3+...+%d*%d=%d\n",n,n,sum);
    }
    else
     printf("輸入數字超出範圍了!\n");
      
    system("pause");
    return 0;
}


2.將以下switch指令改成if else if指令

#include <stdio.h>
#include <stdlib.h>               

int main()
{
        char select;
        puts("    (1) 排骨便當");
        puts("    (2) 海鮮便當");
        puts("    (3) 雞腿便當");
        puts("    (4) 魚排便當");
        printf("    請輸入您要購買的便當:");
        select=getche();/*輸入字元並存入變數select*/
    printf("\n===================================\n");
   
        switch(select)
        {
        case '1':               /*如果select等於1*/
                puts("排骨便當一份75元");               
                break;                                        /*跳出switch*/
        case '2':         /*如果select等於2*/
                puts("海鮮便當一份85元");                  
                break;        /*跳出switch*/
        case '3':      /*如果select等於3*/
                puts("雞腿便當一份80元");               
                break;     /*跳出switch*/
        case '4':      /*如果select等於3*/
            puts("魚排便當一份60元");               
                break;   /*跳出switch*/
        default:        /*如果select不等於1,2,3,4任何一個*/
                printf("選項錯誤\n");                        
        }
    printf("===================================\n");
   
    system("pause");
    return 0;        
}
作者: mamimumemo    時間: 2016-10-29 09:50

回復 1# msmplay

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n,i;
    long sum=0;/* 宣告為長整數 */
   
    printf("請輸入任一整數:");
    scanf("%d",&n);
       
    i=1;
    if(n>=1 || n<=100)/* 控制輸入範圍 */
    {
            while(1)
            {
                if(i>n) break;
                sum+=i*i;
                i++;
        }

             printf("1*1+2*2+3*3+...+%d*%d=%d\n",n,n,sum);
    }
    else
             printf("輸入數字超出範圍了!\n");
      
    system("pause");
    return 0;
}

前半段
作者: mamimumemo    時間: 2016-10-29 15:19

i=1;
    if(n>=1 || n<=100)/* 控制輸入範圍 */
    {
            while(i<=n)
            {
                sum+=i*i;
                i++;
        }
             printf("1*1+2*2+3*3+...+%d*%d=%d\n",n,n,sum);
    }
    else
             printf("輸入數字超出範圍了!\n");

這樣應該也可以吧!
不知道,還有沒有再更精簡的!
作者: mamimumemo    時間: 2016-10-29 15:37

switch(select)
        {
        case '1':               /*如果select等於1*/
                puts("排骨便當一份75元");               
                break;                                        /*跳出switch*/
        case '2':         /*如果select等於2*/
                puts("海鮮便當一份85元");                  
                break;        /*跳出switch*/
        case '3':      /*如果select等於3*/
                puts("雞腿便當一份80元");               
                break;     /*跳出switch*/
        case '4':      /*如果select等於3*/
            puts("魚排便當一份60元");               
                break;   /*跳出switch*/
        default:        /*如果select不等於1,2,3,4任何一個*/
                printf("選項錯誤\n");                        
        }
//-------------------------------------------------------
if(select=='1')
        puts("排骨便當一份75元");               
else if (select=='2')
        puts("海鮮便當一份85元");
else if (select=='3')
        puts("雞腿便當一份80元");
else if (select=='4')
        puts("魚排便當一份60元");
else
        printf("選項錯誤\n");
作者: msmplay    時間: 2016-10-29 21:36

本帖最後由 msmplay 於 2016-10-29 21:41 編輯

回復 4# mamimumemo


m大~~~你好厲害喔!!真的超級感謝你的,不過以後也要請你多多指教了
作者: mamimumemo    時間: 2016-10-30 04:30

回復  mamimumemo


m大~~~你好厲害喔!!真的超級感謝你的,不過以後也要請你多多指教了
msmplay 發表於 2016-10-29 21:36


我是m小啦!
不客氣,好好加油吧!大家互相教學相長,:handshake
我剛來這裡,還算是學弟。
以前在業界曾寫過一段時間的c++,
所以,這還難不倒我啦!
作者: msmplay    時間: 2016-10-30 12:18

本帖最後由 msmplay 於 2016-10-30 12:19 編輯

回復 6# mamimumemo

C++!!好厲害ㄛ~~~~~不過無論如何,還是再次感謝你熱心幫忙囉!
作者: mamimumemo    時間: 2016-11-4 20:30

回復  mamimumemo

C++!!好厲害ㄛ~~~~~不過無論如何,還是再次感謝你熱心幫忙囉!
msmplay 發表於 2016-10-30 12:18


不客氣。
加油囉!
作者: avengertree    時間: 2020-2-22 17:00

回復 1# msmplay

如果是要計算1~n的所有平方和的話,一開始的for迴圈條件就有問題了喔∼
應該要改成
  1. for (i=1; i<=n; i++)
複製代碼
for迴圈的:
  1. for (i=1; i<=n; i++){
  2.     sum += i*i;
  3. }
複製代碼
while迴圈的:
  1. i = 1;
  2. while (i <= n){
  3.     sum += i*i;
  4.     i++;
  5. }
複製代碼
do while迴圈的:
  1. i = 1;
  2. do{
  3.     sum += i*i;
  4.     i ++;
  5. } while (i <= n);
複製代碼

作者: avengertree    時間: 2020-2-22 17:05

回復 3# mamimumemo

如果把i++也寫在一起的話
  1. i = 0;
  2. while (++i <= n){
  3.     sum += i*i;
  4. }
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)