鱼C论坛

 找回密码
 立即注册
楼主: liyifeng295641

[已解决]Bootstrap第六次作业

[复制链接]
 楼主| 发表于 2023-12-24 14:44:05 | 显示全部楼层
FishC 发表于 2023-12-23 20:51
请注意代码中的问题,您在输入名字时使用了一个字符变量,但实际上您想输入一个字符串。因此,您需要将`n ...
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         float price, area, yir, mir; // 单价、面积、年利率、月利率
  6.         float interest, loan; // 利息、贷款总额
  7.         float ave_repay, down_payment; // 月均还款、首期付款
  8.         float total_price, total_repay; // 房款总额、还款总额
  9.         int ratio, time; // 按揭成数、按揭年数

  10.         printf("请输入单价(元/平方):");
  11.         scanf("%f", &price);
  12.         printf("请输入面积:");
  13.         scanf("%f", &area);
  14.         printf("请输入按揭成数:");
  15.         scanf("%d", &ratio);
  16.         printf("请输入按揭年数:");
  17.         scanf("%d", &time);
  18.         printf("请输入当前基准年利率:");
  19.         scanf("%f", &yir);

  20.         mir = yir / 100 / 12; // 年利率需要除以100得到,因为用户输入是5.4(%),而不是0.054
  21.         time = time * 12;
  22.         total_price = price * area;
  23.         loan = total_price * ratio / 10; // 这里不能写成(ratio / 10),否则结果会变成0
  24.         ave_repay = loan * mir * pow((1 + mir), time) / (pow((1 + mir), time) - 1);
  25.         interest = ave_repay * time - loan;
  26.         total_repay = loan + interest;
  27.         down_payment = total_price * (1 - (float)ratio / 10); // 强制转换ratio为浮点型

  28.         printf("========== 报告结果 ==========\n");
  29.         printf("房款总额:%.2f元\n", total_price);
  30.         printf("首期付款:%.2f元\n", down_payment);
  31.         printf("贷款总额:%.2f元\n", loan);
  32.         printf("还款总额:%.2f元\n", total_repay);
  33.         printf("支付利息:%.2f元\n", interest);
  34.         printf("月均还款:%.2f元\n", ave_repay);

  35.         return 0;
  36. }
复制代码

可以解释一下这行代码吗?
ave_repay = loan * mir * pow((1 + mir), time) / (pow((1 + mir), time) - 1);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 14:44:19 | 显示全部楼层
liyifeng295641 发表于 2023-12-24 14:44
#include
#include

int main()
{
        flo ...

`ave_repay = loan * mir * pow((1 + mir), time) / (pow((1 + mir), time) - 1);` 这行代码是用来计算每月还款金额的公式。

- `loan` 是贷款总额,即购房所需的贷款金额。
- `mir` 是月利率,根据输入的年利率 `yir` 计算得到。需要将年利率除以 100 得到小数形式,并再除以 12 得到月利率。
- `pow((1 + mir), time)` 是计算 (1 + 月利率)^按揭年数 的结果,即每个月所付的利息部分。
- `(pow((1 + mir), time) - 1)` 是计算 (1 + 月利率)^按揭年数 - 1 的结果,即分子部分,用于计算每月还款金额的系数。

整个公式的含义是:贷款总额乘以月利率,再乘以每月利息部分的系数,得到每月还款金额。

希望这个解释对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-24 14:47:30 | 显示全部楼层
FishC 发表于 2023-12-24 14:44
`ave_repay = loan * mir * pow((1 + mir), time) / (pow((1 + mir), time) - 1);` 这行代码是用来计算每 ...

可以转换数学公式吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 14:47:42 | 显示全部楼层
liyifeng295641 发表于 2023-12-24 14:47
可以转换数学公式吗?

当然可以!我会将数学公式进行转换以便更好地理解。

公式:`ave_repay = loan * mir * pow((1 + mir), time) / (pow((1 + mir), time) - 1);`

转换后的数学公式为:
  1. 月均还款金额 = 贷款总额 × 月利率 × [(1 + 月利率)^按揭年数] / [(1 + 月利率)^按揭年数 - 1]
复制代码

希望这个转换后的数学公式对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-12-24 15:21:03 | 显示全部楼层
FishC 发表于 2023-12-21 22:13
当然可以!这里给你提供几个简单的C语言编程题目:

1. 编写一个程序,要求用户输入一个数字,然后判断该 ...

2. 编写一个程序,要求用户输入一个整数n,然后计算并输出从1到n的所有整数的和。
这是我写的,请问哪里有问题?
  1. #include<stdio.h>

  2. int Allsum(int n){

  3.         int i = 1, sum = 0;
  4.         while(i < n){
  5.                 sum += i;
  6.                 i ++;
  7.         }
  8.         return sum;
  9. }
  10. int main(){
  11.         int n;
  12.         printf("请输入一个整数n:");
  13.         scanf("%d",&n);

  14.         printf(All(sum));
  15.         return 0;
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 15:21:25 | 显示全部楼层
liyifeng295641 发表于 2023-12-24 15:21
2. 编写一个程序,要求用户输入一个整数n,然后计算并 ...

你的代码有一些小问题,下面是修正后的代码:
  1. #include <stdio.h>
  2. int Allsum(int n){
  3.     int i = 1, sum = 0;
  4.     while(i <= n){ // 修改条件为i <= n
  5.         sum += i;
  6.         i ++;
  7.     }
  8.     return sum;
  9. }
  10. int main(){
  11.     int n;
  12.     printf("请输入一个整数n:");
  13.     scanf("%d", &n);
  14.     printf("%d\n", Allsum(n)); // 调用函数应该是Allsum(n),并且需要在printf中使用格式符"%d"输出整数值
  15.     return 0;
  16. }
复制代码

修正后的代码将正确地计算从1到n的所有整数的和,并通过printf函数输出结果。注意,修正后的代码中对循环条件进行了修改,确保从1到n的所有整数都被累加到sum中,同时在调用函数时使用了正确的参数,并在printf函数中用"%d"格式符输出整数值。希望这能够解决你的问题!如果有任何疑问,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-24 15:29:28 | 显示全部楼层
FishC 发表于 2023-12-24 15:21
你的代码有一些小问题,下面是修正后的代码:

ld: Undefined symbols:
  _main, referenced from:
      <initial-undefines>
clang: error: linker command failed with exit code 1 (use -v to see invocation)
报错了,请问是什么问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 15:29:51 | 显示全部楼层
liyifeng295641 发表于 2023-12-24 15:29
ld: Undefined symbols:
  _main, referenced from:
...

这个错误通常是由于缺少主函数(main函数)引起的。根据你提供的代码,我们可以看到`main`函数确实存在,但在使用`All(sum)`函数时有一处拼写错误。下面是修改后的代码:
  1. #include <stdio.h>
  2. int allSum(int n){
  3.     int i = 1, sum = 0;
  4.     while(i <= n){ // 修改为 i <= n
  5.         sum += i;
  6.         i++;
  7.     }
  8.     return sum;
  9. }
  10. int main(){
  11.     int n;
  12.     printf("请输入一个整数n:");
  13.     scanf("%d", &n);
  14.     printf("总和为:%d\n", allSum(n)); // 修改为 printf("总和为:%d\n", allSum(n));
  15.     return 0;
  16. }
复制代码

请注意我做出的两处修改:将函数名`Allsum`改为`allSum`以符合C语言的命名规范,将`while`循环的终止条件改为`i <= n`以包括n在内。此外,将`printf(All(sum))`改为`printf("总和为:%d\n", allSum(n))`,确保正确调用函数并输出结果。

重新编译运行这段代码,应该就可以正常输出从1到n的所有整数的和了。如果还有其他问题,请随时向我提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-24 15:39:53 | 显示全部楼层
FishC 发表于 2023-12-21 22:13
当然可以!这里给你提供几个简单的C语言编程题目:

1. 编写一个程序,要求用户输入一个数字,然后判断该 ...

5. 编写一个程序,要求用户输入一个年份,然后判断该年份是否是闰年,并输出对应的提示信息。
可以给我一点解题思路吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 15:39:59 | 显示全部楼层
liyifeng295641 发表于 2023-12-24 15:39
5. 编写一个程序,要求用户输入一个年份,然后判断该 ...

当判断一个年份是否是闰年时,我们需要根据以下规则进行判断:

1. 如果该年份能被4整除并且不能被100整除,或者能被400整除,那么该年份就是闰年。

根据以上规则,我们可以编写一个C语言程序来实现:
  1. #include <stdio.h>
  2. int main() {
  3.     int year;
  4.     printf("请输入一个年份:");
  5.     scanf("%d", &year);
  6.     if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
  7.         printf("%d年是闰年。\n", year);
  8.     } else {
  9.         printf("%d年不是闰年。\n", year);
  10.     }
  11.     return 0;
  12. }
复制代码

让用户输入一个年份并存储在变量`year`中。然后使用条件语句判断是否满足闰年的条件,并输出相应的提示信息。

希望这个程序能帮助你理解闰年的判断逻辑。如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-24 15:42:22 | 显示全部楼层
FishC 发表于 2023-12-24 15:39
当判断一个年份是否是闰年时,我们需要根据以下规则进行判断:

1. 如果该年份能被4整除并且不能被100整 ...
  1. #include<stdio.h>

  2. int year(int n){
  3.         if(n % 4 == 0 && n / 100 != 0 || n / 400 == 0)
  4.         {
  5.                 return 1;
  6.         }else{
  7.                 return 0;
  8.         }
  9. }

  10. int main(){
  11.         int year;
  12.         printf("请输入一个年份:");
  13.         scanf("%d", &year);
  14.         if(year(int n)){
  15.                 printf("闰年!");
  16.         }else{
  17.                 printf("平年!");
  18.         }
  19.         return 0;
  20. }
复制代码

这是我写的代码,请问有什么问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 15:42:35 | 显示全部楼层
liyifeng295641 发表于 2023-12-24 15:42
#include

int year(int n){
        if(n % 4 == 0 && n  ...

你的代码有一些小问题。首先,在`int main()`函数中,你定义了一个名为`year`的整型变量,但和你之前定义的名为`year`的函数冲突了。建议将变量名修改为其他名称,以避免冲突。

另外,在判断是否为闰年的条件中,你使用了一个名为`n`的参数,但在调用函数时并没有传参。建议将调用函数时的参数名修改为你定义的变量名。

此外,在判断是否为闰年的条件判断中,你需要改正两个地方:
1. 将`n / 100 != 0`改为`n % 100 != 0`,因为我们需要判断是否不能被100整除;
2. 将`n / 400 == 0`改为`n % 400 == 0`,因为我们需要判断是否能被400整除。

根据以上建议,你可以修改代码如下:
  1. #include <stdio.h>
  2. int isLeapYear(int n) {
  3.     if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
  4.         return 1;
  5.     } else {
  6.         return 0;
  7.     }
  8. }
  9. int main() {
  10.     int inputYear;
  11.     printf("请输入一个年份:");
  12.     scanf("%d", &inputYear);
  13.     if (isLeapYear(inputYear)) {
  14.         printf("%d年是闰年!\n", inputYear);
  15.     } else {
  16.         printf("%d年不是闰年!\n", inputYear);
  17.     }
  18.     return 0;
  19. }
复制代码

希望这次修改能让你的程序正常运行。如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 10:43:13 | 显示全部楼层
FishC 发表于 2023-12-21 22:13
当然可以!这里给你提供几个简单的C语言编程题目:

1. 编写一个程序,要求用户输入一个数字,然后判断该 ...

4. 编写一个程序,要求用户输入两个整数,然后交换它们的值并输出交换后的结果。
  1. //4. 编写一个程序,要求用户输入两个整数,然后交换它们的值并输出交换后的结果。
  2. #include<stdio.h>

  3. int swap(int a, int b){
  4.         int temp = a;
  5.         a = b;
  6.         temp =b;
  7. }

  8. int main(){
  9.         int a, b;
  10.         printf("请输入两个整数:");
  11.         scanf("%d %d", &a, &b);
  12.        
  13.         printf("%d %d",swap(a,b));

  14.         return 0;
  15. }
复制代码

请问有什么问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 10:43:20 | 显示全部楼层
liyifeng295641 发表于 2023-12-25 10:43
4. 编写一个程序,要求用户输入两个整数,然后交换它 ...

你的代码存在一些问题。首先,在swap函数中,你交换了a和b的值,但是没有将交换后的结果返回给调用者。其次,在主函数中,你打印了swap(a, b)的返回值,但是实际上swap函数并没有返回任何值。可以在swap函数中使用指针来实现交换,并且不需要返回值。以下是修改后的代码示例: #include#include void swap(int* a, int* b){    int temp = *a;    *a = *b;    *b = temp;}int main(){    int a, b;    printf("请输入两个整数:");    scanf("%d %d", &a, &b);    printf("交换前的值: a=%d, b=%d\n", a, b);    swap(&a, &b);    printf("交换后的值: a=%d, b=%d\n", a, b);    return 0;}在这个修改后的代码中,我们通过传递a和b的地址来实现交换操作,并在主函数中打印交换前后的值。希望这次的修改对你有所帮助!如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 10:43:56 | 显示全部楼层
FishC 发表于 2023-12-25 10:43
你的代码存在一些问题。首先,在swap函数中,你交换了a和b的值,但是没有将交换后的结果返回给调用者。其 ...

请排列好代码!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 10:44:22 | 显示全部楼层

#include <stdio.h>

void swap(int* a, int* b){
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main(){
    int a, b;
    printf("请输入两个整数:");
    scanf("%d %d", &a, &b);
   
    printf("交换前的值: a=%d, b=%d\n", a, b);
    swap(&a, &b);
    printf("交换后的值: a=%d, b=%d\n", a, b);
   
    return 0;
}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 11:01:24 | 显示全部楼层
FishC 发表于 2023-12-25 10:44
#include

void swap(int* a, int* b){

根据我的水平,出点c语言的题。@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 11:01:31 | 显示全部楼层
liyifeng295641 发表于 2023-12-25 11:01
根据我的水平,出点c语言的题。@FishC

当然没问题!请问有什么C语言的问题需要我帮忙解答呢?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 11:02:01 | 显示全部楼层
FishC 发表于 2023-12-25 11:01
当然没问题!请问有什么C语言的问题需要我帮忙解答呢?

以上回复来自 FishC AI 小助理,如未能正确解 ...

给我出点c语言的训练题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 11:02:11 | 显示全部楼层
liyifeng295641 发表于 2023-12-25 11:02
给我出点c语言的训练题

当然!下面是一些C语言的训练题供你练习:

1. 题目:计算两个数的和
   描述:编写一个程序,要求用户输入两个数,然后计算并输出它们的和。
   示例输出:
   输入第一个数:3
   输入第二个数:5
   和为:8

2. 题目:判断奇偶数
   描述:编写一个程序,要求用户输入一个整数,然后判断该数是奇数还是偶数,并输出结果。
   示例输出:
   输入一个整数:7
   7是奇数。

3. 题目:打印九九乘法表
   描述:编写一个程序,使用嵌套循环打印出九九乘法表。
   示例输出:
   1 * 1 = 1
   1 * 2 = 2
   ...
   9 * 8 = 72
   9 * 9 = 81

4. 题目:计算阶乘
   描述:编写一个程序,要求用户输入一个正整数,然后计算并输出它的阶乘。
   示例输出:
   输入一个正整数:5
   5的阶乘为:120

5. 题目:猜数字游戏
   描述:编写一个程序,随机生成一个1到100的整数,然后让用户猜这个数字是多少,直到猜对为止。提示用户是猜大了还是猜小了。
   示例输出:
   猜猜我心里想的是哪个数字(1-100):50
   猜小了!再试试:75
   猜大了!再试试:60
   猜对了!恭喜你猜对了!

以上是一些基础的C语言训练题,希望能够帮助你提高编程能力。如果有任何问题,请随时向我提问。加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 22:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表