【Week1 -6】调用函数计算

【问题题目】输入一个实数x,计算并输出下式的值,直到最后一项的绝对值小于10^-5(保留两位小数)。要求定义和调用函数fact(n),计算n的阶乘,可以调用pow()函数求幂。

【问题分析】一个成熟的函数应该有声明(主函数在前)、定义、调用三部分。

【代码呈上】

#include<stdio.h>
#include<math.h>
double fact(int n);  /* 函数声明 */
int main()
{   int i=1;
    double x,item,s=0;
    printf("输入x的值:"); 
    scanf("%lf",&x);     
    item=x;
    while(fabs(item)>=0.00001)
    {    s=s+item; 
              i++;                 
              item=pow(x,i)/fact(i);     
    }
    printf("和是:%.2lf\n",s);
    return 0;
}

double fact(int n)
{     int i;
      double j=1;
      for(i=1;i<=n;i++)
           j=j*i;
       return j;
}
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我来帮你实现这两个函数。 第一个函数 int2week 将数字转换为星期字符串,实现如下: ```c++ #include <stdio.h> #include <stdlib.h> #include <string.h> char *int2week(int week); int main() { int week; char *str; printf("请输入0-6之间的数字:"); scanf("%d", &week); str = int2week(week); printf("%d对应的星期是%s。\n", week, str); return 0; } char *int2week(int week) { char *week_str[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; if (week < 0 || week > 6) { printf("输入的数字超出范围!\n"); exit(0); } return week_str[week]; } ``` 这个函数接受一个 int 类型的参数 week,表示数字0-6。函数内部使用了一个字符串数组 week_str,存储了每个数字对应的星期字符串。首先判断输入的数字是否合法,如果不合法,则输出错误信息并退出程序。否则,将对应的字符串返回。 第二个函数 getweek 计算给定日期是星期几,并判断该年份是否为闰年,实现如下: ```c++ #include <stdio.h> #include <stdlib.h> #include <string.h> char *getweek(int year, int mon, int day, int *pleap); int main() { int year, month, day, leap; char *week; printf("请输入年月日(用空格隔开):"); scanf("%d%d%d", &year, &month, &day); week = getweek(year, month, day, &leap); printf("%d年%d月%d日是%s,", year, month, day, week); if (leap == 1) printf("%d是闰年。\n", year); else printf("%d不是闰年。\n", year); return 0; } char *getweek(int year, int mon, int day, int *pleap) { int i, y, m, leap; char *week[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; int daytab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; y = year; m = mon; leap = ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0); *pleap = leap; if (m < 1 || m > 12 || day < 1 || day > daytab[leap][m]) { printf("输入的日期有误!\n"); exit(0); } for (i = 1; i < m; i++) day += daytab[leap][i]; for (i = 1; i < y; i++) day += ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) ? 366 : 365; return week[day % 7]; } ``` 这个函数接受四个参数:年、月、日和一个指向 int 类型的指针,用于返回是否为闰年。函数内部使用了一个二维数组 daytab,用于存储每个月的天数。首先判断输入的日期是否合法,如果不合法,则输出错误信息并退出程序。否则,计算该日期是该年的第几天,并根据这个来判断星期几。同时,利用闰年的判断公式 ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) 来判断该年是否为闰年,并将结果通过指针传递给调用者。 以上两个函数可以分别独立编写和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值