编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数even 10

编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数even(n)判断数的奇偶性,当n为偶数时返回1,否则返回0。... 编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数even(n)判断数的奇偶性,当n为偶数时返回1,否则返回0。 展开
 我来答
听不清啊
高粉答主

推荐于2017-09-08 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h>

int even(int x)

{return (x+1)%2;}

int main()

{int x,s=0;

printf("输入若干正整数,以0或负数结束,求奇数的和:\n");

scanf("%d",&x);

while(x>=0)

{

if(!even(x))s+=x;

scanf("%d",&x);

}

printf("%d\n",s);

getch();

return 0;

}

百度网友35e80f595
2010-05-11 · TA获得超过116个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:71.2万
展开全部
由于题目要求输入的整数的数目不确定,所以我认为用链表来解决这个问题
代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int num;
struct node* next;
}node,*link;
link input(void); //把输进来的数连接成一个链表
int sum(link head); //遍历整个链表 把奇数累加起来
int even(int n); //偶数返回1 奇数返回0
void del_all(link head); //销毁整个链表
int main ()
{
link head=NULL;
int(*p)()=sum; //这是一个指向函数的指针,让它指向求和函数sum
head=input();
printf("奇数和为%d\n",(*p)(head));
del_all(head);
return 0;
}
/*链表的建立*/
link input(void)
{
link head,p,last;
int x;
head=last=(link)malloc(sizeof(node)); //建立头结点
printf("输入一批正整数以0或负数为结束标:\n");
scanf("%d",&x);
while(x>0) //输入为正数就继续循环
{
p=(link)malloc(sizeof(node)); //建立一个新的结点用来储存x
p->num=x;
last->next=p; //连接到链表的最后一个节点的后面
last=p; //更新last的指向。让其指向当前的最后一个节点
scanf("%d",&x);
}
last->next=NULL; //把最后一个节点的指针域置空
return head; //把建立好的链表头返回
}
/*求奇数之和*/
int sum(link head)
{
link p=head->next; //指向第一个节点
int total=0; //用来记录奇数和的
while(p) //只要这个节点存在
{
if(!even(p->num)) //如果是不是偶数
total+=p->num; //累加起来
p=p->next;
}
return total; //返回最后的累加值
}
/*判断是否是偶数*/
int even(int n)
{
if(n%2==0)
return 1;
else return 0;
}
/*销毁整个链表*/
void del_all(link head)
{
link p=head,pr;
while(p)
{
pr=p;
p=p->next;
free(pr);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-05-11
展开全部
奇数有。。。。。-9,-7,-5,-3,-1,1,3,5,7,9。。。。。。。。。。。。
偶数有。。。。。-8,-6,-4,-2,0,2,4,6,8。。。。。。。。。。。。
是的,0是偶数,0绝对是偶数。
我们的教科书也出现过这个题目,说是0是偶数,我说是错的,结果老师给我打了一个大大的叉。
作为自然数,0既不是素数(质数)也不是合数。
平方数, 0是偶数。
0非正非负,0的相反数和绝对值是其本身。
0乘以任何实数都等于0,0加上任何实数等于其本身。
0没有倒数和负倒数,一个非0的数除以0无意义,0除以0有无穷多个解。
0的正数次方等于0,0的0和负数次方无意义。
0不能做对数的底数和真数。
0的0次方是未定义的,但有时亦采用为1其值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang433
2010-05-11 · TA获得超过969个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:125万
展开全部
#include <stdio.h>
#define MAXLEN 1000

int even(int n)
{
return n%2;
}

int main( )
{
int x;
long sum=0;

scanf("%d",&x);
while(x)
{
if(even(x))
sum+=x;
scanf("%d",&x);
}
printf("sum=%ld\n",sum);
}
问题其实很简单,题目只要求出输入的所有奇数的和,所以没有必要定义数组.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JerryKnow
2010-05-11 · TA获得超过102个赞
知道答主
回答量:55
采纳率:0%
帮助的人:51.6万
展开全部
已在TC2下经过测试,如果觉得好,请采纳。。。

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

int Even(int * array, int num); /*定义*/

void main()
{
int ii, MyArray[100] = {0};
clrscr();
printf("Pls input numbers, to end this input operation, pls put a number <=0 :\n");
for(ii=0;ii<100;ii++)
{
scanf("%d", &MyArray[ii]);
fflush(stdin);
if( MyArray[ii] <= 0 ) break;
}

printf("\nThe sum is %d\n", Even(MyArray, ii)); /*调用*/
system("pause");

}

int Even(int * array, int num)
{
int ii, sum = 0;
for(ii=0;ii<num;ii++)
{
if( ((*array) % 2 ) != 0 )
sum += *array;
array ++;
}
return sum;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式