C语言编程6
发布网友
发布时间:2022-04-22 16:02
我来回答
共2个回答
热心网友
时间:2023-10-02 10:59
姐姐,
一、这里*even+=a[i];
else*odd+=a[i];
注意,是带了*号的,带了*的话就是指向了它所代表的值,也就是把指向的这个值累加了,它指向的正是一个int型的值,这个值一直在累加,就是累加和了。
二、在fun函数里,int
*odd,int
*even两个变量最开始只有代码上的意义,也就是所谓的形式参数(形参)了。只有通过main里的调用,传给它值才能起作用,比如main里的int
odd,even,他们是实际参数(实参)。
三、“利用指针odd返回奇数之和,指针even返回偶数之和”,这里不是返回,而是main里调用fun时用“&”取地址操作,直接odd和even两个int型变量的内存地址赋给了fun函数里的形参——odd和even两个int型指针,这样的话fun里的odd和even两个指针,就指向了main里的odd和even两个变量,而*odd和*even就是main里odd和even两个变量的值了,所以就不用定义全局变量,因为main里odd和even的值都在fun里累加了。
四、真是太拗口了,我想把main做如下修改会好理解一些
main()
{
int
a[N]={1,9,2,3,11,6},i,n=6;
int
odd_sum,
even_sum;
clrscr();
printf("The
original
data
is:\n");
for(i=0;i<n;i++)
printf("%5d",*(a+i));
printf("\n\n");
fun(a,
n,
&odd_sum,
&even_sum);
printf("The
sum
of
odd
numbers:%d\n",odd);
printf("The
sum
of
even
number:%d\n",even);
}
热心网友
时间:2023-10-02 10:59
#include <stdio.h>
typedef struct Cash {
char name[2];
float price;
int base_hour;
int add_hour;
float base_cash;
float add_cash;
float cash;
};
int main()
{
struct Cash Person[4];
int i = 0;
for(i = 0; i < 4; i++)
{
printf("Detail information (%d):\n", i + 1);
puts("姓名:");
scanf("%s", &Person[i].name);
puts("费用:");
scanf("%f", &Person[i].price);
puts("基本工作时间:");
scanf("%d", &Person[i].base_hour);
puts("额外工作时间:");
Person[i].add_hour = Person[i].base_hour - 40;
printf("%d\n", Person[i].add_hour);
puts("基本工资:");
scanf("%f", &Person[i].base_cash);
puts("超时工资:");
Person[i].add_cash = (Person[i].add_hour <= 0)?0 : Person[i].base_cash * 1.5;
printf("%f\n", Person[i].add_cash);
puts("总工资:");
Person[i].cash = Person[i].base_cash + Person[i].add_cash;
printf("%f\n", Person[i].cash);
}
for (i = 0; i < 4; i++)
{
printf ("姓名\t费用\t工作时间\t基本工资\t超时工资\t总工资\n");
printf ("%s\t%f\t%d\t%f\t%f\t%f\n",
Person[i].name, Person[i].price, Person[i].base_hour,
Person[i].add_cash, Person[i].add_cash, Person[i].cash);
}
return 0;
}