求问一道C语言编程题

输入两个浮点数,将第二个数的小数部分拼接到第一个数的整数部分,
将第一个数的小数部分拼接到第二个数的整数部分。然后输出新生成的浮点数。
输入格式:
输入两个浮点数
输出格式:
输出新生成的两个浮点数。(输出保留6位小数)
输入样例:
135.79 24.068
输出样例:
135.068000 24.790000

#include"stdio.h"
#include"stdlib.h"
struct st //定义一个结构
{
char name[20]; //用来存储学生的姓名
char number[20]; //用来存储学生的学号
int maths; //以下的三个变量用来存储学生的成绩,这里姑且认为是语数外三门吧,呵呵
int chinese;
int English;
double average; //用来存储平均成绩
};
double aver(int a,int b,int c) //这个函数用来计算平均成绩
{
double n; //其实可以用一步写出来的,这里为了看着方便,这样写。你自己可以改。
n=(a+b+c)/3;
return n;
}
void main()
{
st A; //用该结构定义一个变量
printf("输入姓名\n"); //一下是信息的输入,你运行一下是会有各个信息输入的提示
scanf("%s",A.name);
printf("输出学号\n");
scanf("%s",A.number);
printf("输入第一科成绩\n");
scanf("%d",&A.maths);
printf("输入第二科成绩\n");
scanf("%d",&A.chinese);
printf("输入第三科成绩\n");
scanf("%d",&A.English);
A.average=aver(A.chinese,A.English,A.maths); //调用aver函数,计算平均值,并返回。
printf("%s同学的成绩如下\n",A.name); //输出各个信息,输出时,一样会有提示的。你运行一下,就知道了
printf("%d,%d,%d\n",A.maths,A.chinese,A.English);
printf("平均成绩如下\n");
printf("average=%lf\n",A.average);
}
以上是你要的程序,我运行过了,可以的,有什么不满意的,追问我,我再改。希望能帮助到你。
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-10-06
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, fa, fb, ta, tb;

printf("Enter number 1: ");

scanf("%lf", &a);

printf("Enter number 2: ");

scanf("%lf", &b);
fa = floor(a); ta = a-fa;

fb = floor(b); tb = b-fb;
printf("Mixed 1: %.6lf\n", fa+tb);

printf("Mixed 2: %.6lf\n", fb+ta);
return 0;

}追问

没有全对

追答

是什么问题?

追问

追答

你自己都没跑一下的?

追问

我跑了呀

应该还有情况没考虑全

追答

难道是负数?

追问

我试了下,两个负数是对的,但一正一负就错了

追答

#include
#include
int main()
{
double a, b, fa, fb, ta, tb, ka, kb;
printf("Enter number 1: ");
scanf("%lf", &a);
printf("Enter number 2: ");
scanf("%lf", &b);

if(a>0){
fa = floor(a);
ta = a-fa;
ka = 1;
}else{
fa = ceil(a);
ta = fa-a;
ka = -1;
}
if(b>0){
fb = floor(b);
tb = b-fb;
kb = 1;
}else{
fb = ceil(b);
tb = fb-b;
kb = -1;
}
printf("Mixed 1: %.6lf\n", fa+ka*tb);
printf("Mixed 2: %.6lf\n", fb+kb*ta);
return 0;
}

追问

ok了,感谢!

本回答被提问者采纳
相似回答