#作业要求一
##附加题目 写程序证明P++等价于(p)++还是等价于*(p++)? ###1.设计思路: (1).题目算法描述 第一步:定义变量p并赋初值 第二步:分三次计算每次分别输出 p++,(p)++,*(p++) (2).流程图 这是初次尝试的错误流程图 错误原因:①流程图不能是多个程序的,一个程序一个流程图②另外流程图也不会出现三个框并列执行的情况
修改后的流程图
###2.实验代码 (1)
#include
int main ()
{
int p=1;
//printf("%d",p++);
//printf("%d",(p)++);
//printf("%d",*(p++));
return 0;
}
(2)
#include
int main ()
{
int a=1;
int *p = &a;
//printf("%d",p++);
//printf("%d",(p)++);
//printf("%d",*(p++));
return 0;
}
###结论: 当p为int类型时p++与(p)++运算结果相同但是*(p++)计算报错,错误信息如下 错误原因:*无效 ,没有定义指针变量 间接访问运算符无法正常使用 当p为指针类型时,可以确定p++与(p)++结果相同 ###说明:
第一部分:
##6-1 计算两数的和与差(10 分)
本题要求实现一个计算输入的两数的和与差的简单函数。 ###函数接口定义: void sum_diff( float op1, float op2, float *psum, float *pdiff ); 其中op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。 ###裁判测试程序样例:
#include
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;
}
/* 你的代码将被嵌在这里 */
###输入样例: 4 6 ###输出样例:
The sum is 10.00
The diff is -2.00
###1.设计思路: (1).题目算法描述 根据题目中已经给出的代码部分可以看出,题目是想利用指针变量写一个计算和差的函数 第一步:构建函数框架 第二步:利用间接访问运算符操作计算变量的和与差 (2).流程图
###2.实验代码
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
*psum = op1 +op2;
*pdiff = op1-op2;
}
###答案正确
##6-2 拆分实数的整数与小数部分(15 分)
本题要求实现一个拆分实数的整数与小数部分的简单函数。 ###函数接口定义:
void splitfloat( float x, int *intpart, float *fracpart );
其中x是被拆分的实数(0≤x<10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。 ###裁判测试程序样例:
#include
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;
}
/* 你的代码将被嵌在这里 */
###输入样例:
2.718
###输出样例:
The integer part is 2
The fractional part is 0.718
###1.