プロが教える店舗&オフィスのセキュリティ対策術

swich文とwhile文を用いたプログラムについて

授業の課題で、swich文とwhile文を用いたプログラムを作りなさい。いう課題が出ました。

5桁以上9桁以下の正の整数を入力し、4で割り切れたとき、何桁の数字かを出力。4でわって1余ったとき、すべての桁の合計を出力。3余ったとき、与えられた数の逆を変数に代入し、その変数を出力(単純に表示するわけではなく、数字として表示)

といったものです。
途中からの授業参加で、C言語に関する知識はほとんどありません。do文を用いたプログラムは見つけれたのですが、while文とswich文を用いろということなので、do文は使えないです。

どなたか教えていただけませんか?
今日中にわからないとちょっとやばいです・・・。
よろしくお願いします

A 回答 (3件)

こんな感じでいいのかな?



#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"

int main(int argc, char* argv[])
{

char sInput[32];
int iInput=0;
int iLen=0;
int iMod=0;
int iSum=0;
int iReb=0;
int iCnt=0;
char sBuf[32];

memset(sInput,0,sizeof(sInput));
memset(sBuf,0,sizeof(sBuf));
scanf("%s",&sInput);
iLen = strlen(sInput);

if( iLen > 9 || iLen < 5 )
{
printf("対象桁数外");
return 0;
}

iInput = atoi(sInput);

iMod = iInput % 4;

switch(iMod)
{
case 0:
printf("入力された数字は %d 桁です。",strlen(sInput));
break;
case 1:
while(iCnt < iLen)
{
sprintf(sBuf,"%c",sInput[iCnt]);
iSum += atoi(sBuf);
iCnt++;
}
printf("入力された数字の合計は %d です。",iSum);
break;
case 3:
iReb = 0;
while(iCnt < iLen)
{
iCnt++;
sprintf(sBuf,"%s%c",sBuf,sInput[iLen-iCnt]);
}
iReb = atoi(sBuf);
printf("入力された数字の逆順は %d です。",iReb);
break;
}
return 0;
}
    • good
    • 0

>do文であったのは、何桁の数字かを出力するもので


桁数がわかるのであれば、すべての桁の合計も出せるでしょう。

>3余ったとき、与えられた数の逆を変数に代入し、その変数を出力
も同様。
    • good
    • 0

では、その見つけたものをdoからwhileに変えれば良いでしょう



繰り返しの判定を先にするか、後にするかの違いだけ(と、とりあえず考えてしまって大丈夫)です。

http://www.geocities.jp/ky_webid/c/index.html

この回答への補足

回答ありがとうございます。

do文であったのは、何桁の数字かを出力するもので、あとの、すべての桁の合計の出し方がわかりません。

解説よろしくお願いします

補足日時:2009/11/09 15:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!