用C语言编写出 小红有10.5元钱,借给小明2.7元,小红还剩多少钱?
这道题目,考的是编程思路不是过程。过程就是一个金额增加,一个金额减少。但从思路上讲:
1、小红和小明都是一个对象包含多个信息(比如姓名,存款金额等),所以从编程上将两人信息用结构来存储。(没学过结构可用数组代替,首选结构,考虑扩展)。
2、借钱过程不是单纯加减,而是一个能重复执行的行为功能,要用独立函数来写,传递参数是两个行为人(结构)以及要借款的金额。函数过程是处理借款过程,返回值是借款结构(成功或失败及原因)。
3、借款行为包含了各种情况,比如拒绝借款,金额不足等,这些要体验中函数过程中。
下面是演示代码:
#include <stdio.h>
typedef struct people
{
char name[20];
float money;
}PE;
int jieQian(PE *pe1,PE *pe2,float money);//参数:借款双方信息,借款的金额。返回0借款失败,返回1借款成功
int main()
{
float money;
PE pe1,pe2;
printf("程序初始化设置:");
printf("请输入借钱目标姓名:"),scanf("%s",pe1.name);
printf("请输入借钱目标存款:"),scanf("%f",&pe1.money);
printf("请输入借钱人的姓名:"),scanf("%s",pe2.name);
printf("请输入借钱人的存款:"),scanf("%f",&pe2.money);
printf("\n");
while(1){
printf("请输入要借款的金额:"),scanf("%f",&money),getchar();
if(jieQian(&pe1,&pe2,money))
printf("本次借款成功后%s存款%.1f元,%s存款%.1f元\n\n\n",pe1.name,pe1.money,pe2.name,pe2.money);//这里接收返回值判断,是为了外围处理(比如统计),我这边没有处理就直接打印结果。
else
printf("\n\n\n");
}
return 0;
}
int jieQian(PE *pe1,PE *pe2,float money)
{
char n=0;
while(n!='N'&& n!='Y')
printf("请判断%s是否同意借款(Y/N):",pe1->name),scanf("%c",&n),getchar();
if(n=='N')
{
printf("%s向%s借款%.1f元失败,原因%s拒绝借款!\n",pe2->name,pe1->name,money,pe1->name);
return 0;
}
if(pe1->money<money)
{
printf("%s向%s借款%.1f元失败,原因%s存款不足!\n",pe2->name,pe1->name,money,pe1->name);
return 0;
}
pe1->money-=money;
pe2->money+=money;
printf("%s向%s借款%.1f成功!\n",pe2->name,pe1->name,money);
return 1;
}
2020-03-12
printf("小红有的钱\n");
scanf("%lf",&have);
printf("小红借给小明的钱\n");
scanf("%lf",&lend);
printf("小红剩的钱\n");
sheng=have-lend;
printf("%lf",sheng);
using namespace std;
int main()
{
float a=10.5,b=2.7;
flaot c;
c=a–b;
cout<<c<<endl;
}