c语言进阶编程 培训,大学C语言进阶编程实例.doc

本文介绍了三个编程任务:用函数拆分实数成整数和小数部分,通过指针寻找两个数的最大值,以及计算复数的乘积。还涉及一个额外的函数,根据学生成绩设置等级并统计不及格人数。这些题目涵盖了基础数据类型处理、指针技巧、复数运算和数据结构应用。
摘要由CSDN通过智能技术生成

6-1?拆分实数的整数与小数部分?(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 )

{

????*intpart = (int)x;

????*fracpart = x- (*intpart);

}

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;

}

6-2?利用指针找最大值?(10?分)

本题要求实现一个简单函数,找出两个数中的最大值。

函数接口定义:

void findmax( int *px, int *py, int *pmax );

其中px和py是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

程序:

#include

void findmax( int *px, int *py, int *pmax )

{

*pmax=(*px>*py)?*px:*py;

}

int main()

{

int max, x, y;

scanf("%d %d", &x, &y);

findmax( &x, &y, &max );

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

return 0;

}

6-3?计算两个复数之积?(15?分)

本题要求实现一个计算复数之积的简单函数。

函数接口定义:

struct complex multiply(struct complex x, struct complex y);

其中struct complex是复数结构体,其定义如下:

struct complex{

int real;

int imag;

};

程序:

#include

struct complex{

int real;

int imag;

};

struct complex multiply(struct complex x, struct complex y)

{

????struct complex result;

????result.real=x.real*y.real-x.imag*y.imag;

????result.imag=x.real*y.imag+x.imag*y.real;

????return result;

};

int main()

{

struct complex product, x, y;

scanf("%d%d%d%d", &x.real, &x.imag, &y.real, &y.imag);

product = multiply(x, y);

printf("(%d+%di) * (%d+%di) = %d + %di\n",

x.real, x.imag, y.real, y.imag, product.real, product.imag);

return 0;

}

6-4?按等级统计学生成绩?(20?分)

本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

函数接口定义:

int set_grade( struct student *p, int n );

其中p是指向学生信息的结构体数组的指针,该结构体的定义为:

struct student{

int num;

char name[20];

int score;

char grade;

};

n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值