#include
#include
typedef
struct
aa
{
int
data;
struct
aa
*next;
}NODE;
int
fun(NODE
*h)
{
int
sum
=
0
;
NODE
*p;
/***********found**********/
p=h->next;
//因为不要求计算头结点,所以给P的值应该是链表的第一个值而不是头结点
while(p)
{
if(p->data%2==0)
sum
+=p->data;
/***********found**********/
p=p->next;
//这里计算和的任务是p在做而不是h,所以这里要用p
}
return
sum;
}
NODE
*creatlink(int
n)
{
NODE
*h,
*p,
*s;
int
i;
h=p=(NODE
*)malloc(sizeof(NODE));
for(i=1;
i<=n;
i++)
{
s=(NODE
*)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return
h;
}
void
outlink(NODE
*h,
FILE
*pf)
//
函数是要返回值的。
{
NODE
*p;
p
=
h->next;
fprintf(pf
,"\n\nTHE
LIST
:\n\n
HEAD
"
);
while(p)
{
fprintf(pf
,"->%d
",p->data
);
p=p->next;
}
fprintf
(pf,"\n");
}
void
outresult(int
s,
FILE
*pf)
//函数是要返回值的
{
fprintf(pf,"\nThe
sum
of
even
numbers
:
%d\n",s);
}
void
main()
//函数是要返回值的
{
NODE
*head;
int
even;
head=creatlink(12);
head->data=9000;
outlink(head
,
stdout);
even=fun(head);
printf("\nThe
result
:\n");
outresult(even,
stdout);
}
按照你要求改的,也不知道你用的是什么编译器,函数连返回值都没有。
但是我很郁闷,在我机器上执行结果一直是52
错误的原因是scanf他接收enter键,所以你输入一个数后按enter键后,自动的就认为scanf("%c",&d); d就是enter键的值。
在scanf("%c",&d);前面添加getchar();即可
getchar();用来接收enter键的值。这样就可以输入d的值了
一,
16进制
最大数为f
没有g
-0x48ef
二,
'3'表示字符3
在ASC表中对应10进制数为51
三,C语言规定
赋值表达式的左值要为变量
,
所以a*3=2是错误的
-0x48eg
这是十六进制,里面只有abcdef
没有g。a=10,以此类推。
‘3’
这里只能用的是英文表示法'3'字符
a=a*3=2
这个不对的。
'='为赋值语句。a*3=2这里就不对。
没看懂你的程序!
void
main()
{
int
a[4],i,min,temp;
int
k;
for(i=0;i<4;i++)
scanf("%d",&a[i]);
min=a[0];
index=0;
for(i=0;i<4;i++)
{
if(min>a[i])
{
index=i;
min=a[i];
}
}
a[index]=a[0];
从这里开始交换数
a[0]=min;
printf("\n");
for(i=0;i<4;i++)
printf("%d\n",a[i]);
}
//这是我对
从键盘输入10个整数保存到数组中,求值最小的元素,将这个值最小的元素与数组的第一个元素交换。最后输出整个数组。