C语言——第一次作业(2)

时间:2022-07-08 21:01:53

1.写程序证明p++等价于(p)++还是等价于*(p++)?

#include <stdio.h>
int main()
{
int *p,a=5;
p = &a;
printf("*p = %d\n",*p); //*p = 5
printf("p = %d\n",p); //p = 6487620
printf("p++ = %d\n",p++); //p++ = 6487620
printf("(p)++ = %d\n",(p)++); //(p)++ = 6487620
printf("*p++ = %d\n",*p++); //*p++ = 6487628
printf("*(p++) = %d\n",*(p++)); //*(p++) = 6487628
}

题目

题目6-1 计算两数的和与差(函数题)

1.设计思路

- (1)算法

第一步:调用题目中定义的函数。

第二步:通过局部变量op1,op2进行加减运算,计算psum、pdiff的值。

第三步:函数调用结束,结果返回主函数。

- (2)流程图

C语言——第一次作业(2)

2.实验代码

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
*psum = op1 + op2;
*pdiff = op1 - op2;
}

完整代码

#include <stdio.h>

void sum_diff( float op1, float op2, float *psum, float *pdiff );

int main()
{
float a, b, sum, diff;

scanf("%f %f", &a, &b);
sum_diff(a, b, &sum, &diff);
printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);

return 0;
}

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
*psum = op1 + op2;
*pdiff = op1 - op2;
}

3.本题调试过程碰到问题及解决办法

本题未遇到问题。

6-2 拆分实数的整数与小数部分(函数题)

1.设计思路

- (1)算法

第一步:调用题目中定义的函数。

第二步:将x除以1,所得值为x的整数部分,将其赋值给*intpart。

第三步:将x减去其整数部分intpart,所得值为x的小数部分,将其赋值给fracpart。

第四步:函数调用结束,结果返回主函数。

- (2)流程图

C语言——第一次作业(2)

2.实验代码

void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart = x / 1;
*fracpart = x - *intpart;
}

完整代码

#include <stdio.h>

void splitfloat( float x, int *intpart, float *fracpart );

int main()
{
float x, fracpart;
int intpart;

scanf("%f", &x);
splitfloat(x, &intpart, &fracpart);
printf("The integer part is %d\n", intpart);
printf("The fractional part is %g\n", fracpart);

return 0;
}

void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart = x / 1;
*fracpart = x - *intpart;
}

3.本题调试过程碰到问题及解决办法

错误信息:C语言——第一次作业(2)

错误原因:*fracpart是浮点型数据,(x/1)的运算没有作用。

改正方法:将fracpart = x - (x / 1)改为 fracpart = x - *intpart。

学习总结和进度

1.知识点

2.我的git地址

3.点评链接

[链接一]

[链接二]

[链接三]

4.图表