1. 程式人生 > >習題4-1 求奇數和

習題4-1 求奇數和

習題4-1 求奇數和 (15 分)

本題要求計算給定的一系列正整數中奇數的和。

輸入格式:

輸入在一行中給出一系列正整數,其間以空格分隔。當讀到零或負整數時,表示輸入結束,該數字不要處理。

輸出格式:

在一行中輸出正整數序列中奇數的和。

輸入樣例:

8 7 4 3 70 5 6 101 -1

輸出樣例:

116

 分析:本題較為簡單,基本思想就是判斷奇數。此外,關於數的儲存方式,由於是要不斷輸入,計算加和,所以可以選擇定義一個數組進行儲存也可以不選用。這裡我沒有選擇陣列儲存的方式,因為考慮到輸入的數個數未知,有可能是較大規模資料也有可能是小規模,所以大小不好定義。這裡還是用一個變數儲存比較方便。

程式碼:(三種不同的迴圈,ps:就當複習了)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int Odd(int num)
{
	int ret = 0;
	if (num % 2 != 0)//是奇數
	{
		ret = num;
	}
	return ret;
}
int main()
{
	//while迴圈
	int num;
	int sum = 0;
	scanf("%d", &num);
	while (num > 0 )
	{
		if (Odd(num))
		{
			sum = sum + num;
		}
		scanf("%d", &num);
	}
	printf("%d\n", sum);



	//do while 迴圈
	int num;
	int sum = 0;
	do
	{
		scanf("%d", &num);
		if (num <= 0)
		{
			break;
		}
		if (Odd(num))
		{
			sum = sum + num;
		}

	} while (num > 0);
	printf("%d\n", sum);



	//for迴圈
	int num;
	int sum = 0;
	scanf("%d", &num);
	for (sum = 0; num > 0;)
	{
		if (Odd(num))
		{
			sum = sum + num;
		}
		scanf("%d", &num);
	}
	printf("%d\n", sum);
	system("pause");
	return 0;
}

測試結果:(while迴圈)