问题描述
- 这个代码为什么输出不对呢求大神指教
- #include
#include
/** 本题要求计算给定的一系列正整数中奇数的和。输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出正整数序列中奇数的和。
输入样例:
8 7 4 3 70 5 6 101 -1输出样例:
116
int main()
{
int a[80];
int ic = 0;
int sum=0;
for(i=0; ; i++)
{
scanf(""%d ""&a[i]);
c++;
if(a[i]==0||a[i]<0)
{
break;}}for(i=0; i<=c; i++){ if(a[i]%2!=0) { sum += a[i]; }}printf(""%d""sum);return 0;
}
解决方案
int main(){ int a[80]; int i = 0c = 0; int sum=0; do { scanf(""%d""&a[i]); c++; } while (a[i++]>0); for(i=0; i<c-1; i++) { if(a[i]%2!=0) { sum += a[i]; } } printf(""%d""sum); return 0;}
解决方案二:
8 7 4 3 70 5 6 101 -1
116Press any key to continue
解决方案三:
错误输出是什么呢?
错误原因应该是
for(i=0; i<=c; i++)
一行,中间的条件应是
i<c
你看看只有一个数的情况就知道了
还有,为什么假定输入最多只有80个数,题目有说最多80个数吗?
下面的代码应该更好
#include <stdio.h>int main() { int sum = 0 input = 0; while (1) { scanf(""%d"" &input); if (input <= 0) break; if (input & 1) sum += input; } printf(""d"" sum);}
解决方案四:
虽然写的不好 但结果 应该不会有问题
解决方案五:
#include ""stdafx.h""
#include
#include
#include
#include""iostream""
using namespace std;
int _tmain(int argc _TCHAR* argv[])
{
int a[80];
int i c = 0;
int number;
int sum = 0;
for (i = 0;; i++)
{
cin >> number;
a[i] = number;
c++;
if (a[i] == 0 || a[i]<0)
{
break;
}
}for (i = 0; i <c-1; i++){ if (a[i] % 2 != 0) { sum += a[i]; }}printf(""%d"" sum);return 0;
}