编写分段函数,计算相应的值
#include <stdio.h> double f1(double); double f2(double); double f3(double); int main (void) { double x,y; printf("请输入x的值:\n"); scanf("%lf",&x); if (x<2) y=f1(x); else if (x>=2 && x<4) y=f2(x); else y=f3(x); printf("y=%lf",y); return 0; } double f1(double x) { return (-x+2.5); } double f2(double x) { return (2-1.5*(x-3)*(x-3)); } double f3(double x) { return (0.5*x-1.5); }
编写函数,输出1000以内的所有完数及其因子。
(所谓完数是指一个整数的值等于它的因子之和。例如6的因子是1、2、3,而6=1+2+3,故6是一个完数。)
#include<stdio.h> int is_wanshu(int); void print_(int x); int main (void) { int x; for (x=2;x<=1000;x++) { if(is_wanshu(x)) //条件非0即可 { printf("%d\t",x); print_(x); } } return 0; } int is_wanshu(int x) //这个函数的功能是判断一个是是否是完数。 { int i,s=0; for (i=1;i<x;i++) { if (x%i==0) s+=i; } if (s==x) return x; else return 0; } void print_(int x) //函数的功能是输出完数的因子。 { int i; for (i=1;i<x;i++) { if (x%i==0) printf("%d\t",i); } return; //定义的是无返回值函数 }
输出200~300之家所有的素数。
#include <stdio.h> int is_Prime(int x); int main (void) { int x; for (x=200;x<=300;x++) { if (is_Prime(x)) printf("%d\n",x); } return 0; } int is_Prime(int x) //函数的功能:判断一个数是否是素数 { int divisor; if (x==1) return 0; for (divisor=2;divisor*divisor<=x;divisor++) //注意是从2开始! { if (x%divisor==0) return 0; } return 1; //注意所有路径都要有返回值!这个return不能写在for循环内部! }
编写函数,计算排列数
#include<stdio.h> double fac_(int); int main (void) { int m,n; double a,b; printf("请输入m、n的值(m<n):\n"); scanf("%d%d",&m,&n); a=fac_(n); b=fac_(n-m); //注意阶乘的公式 printf("%lf",a/b); return 0; } double fac_(int x) //函数的功能是计算某一个数的阶乘! { int i; double product=1; for(i=1;i<=x;i++) { product*=i; } return product; }
编写函数,将10~20之间所有的偶数表示为两个素数之和
#include <stdio.h> int is_Prime(int x); int main (void) { int x,i; for (x=10;x<=20;x=x+2) { for (i=1;i<x/2;i++) { if (is_Prime(i)) { if (is_Prime(x-i)) // 判断偶数减去一个素数是否还是素数 printf("%d+%d=%d\n",i,x-i,x); } } } return 0; } int is_Prime (int x) //判断一个数是否是素数 { int divisor; if (x==1) return 0; for (divisor =2;divisor*divisor<=x;divisor++) { if (x%divisor==0) return 0; } return 1; }
编写函数,计算eˣ的近似值(计算前n项的和,n在主函数中输入)
#include <stdio.h> #include <math.h> double x; //定义x为全局变量 double func(double k); double factorial(int m); int main (void) { int i,n; double s=1; printf("Please input x:\n"); scanf("%lf",&x); printf("Please input n:\n"); scanf("%d",&n); for (i=1;i<=n-1;i++) { func(i); s+=func(i); } printf("eˣ的近似值为:%f\n",s); return 0; } double func(double k) //函数功能:表示公式中的一项 { return pow(x,k)/factorial(k); } double factorial(int m) //函数功能:计算阶乘 { int i; double s=1; for (i=1;i<=m;i++) { s*=i; } return s; }
编写函数,输出所有各位数之和等于5的3位数。
#include <stdio.h> int func(int x); int main (void) { int i; for (i=100;i<=999;i++) if (func(i)) printf("%d\n",i); return 0; } int func (int x) //函数的功能是判断(一个数的所有各位数之和等于5) { int a,b,c; a=x%10;b=x/10%10;c=x/100; if (a+b+c==5) return 1; //函数的返回值为逻辑量 else return 0; }
用递推法求一下数列的前n项和,n从主函数中输入。
#include <stdio.h> double add(int n); int main (void) { int n; double sum; printf("Please input n:\n"); scanf("%d",&n); sum=add(n); printf("数列前n项和为%lf\n",sum); return 0; } double add(int n) { int i; double term,sum,a,b,temp; a=2;b=1;sum=0;term=a/b; for (i=1;i<=n;i++) { sum+=term; temp=b; b=a; a=a+temp; term=a/b; } return sum; }
编写函数,用公式计算ex的近似值(计算前n项和,n 从键盘输入)
#include <stdio.h> double add(double x,int n); double fac(int i); int main (void) { double x,ex; int n; printf("请输入x的值:\n"); scanf("%lf",&x); printf("请输入n的值:\n"); scanf("%d",&n); ex=add(x,n); printf("ex的近似值为%lf\n",ex); return 0; } double add(double x,int n) { double ex,term,a,b;//a表示分子,b表示分母,term表示当前项 int i; //i是循环控制变量 term=1;ex=0; a=1; //完成初始化 for (i=1;i<=n;i++) { ex+=term; a*=x; b=fac(i); term=a/b; } return ex; } double fac(int i) { int k;double s=1; for (k=1;k<=i;k++) s*=k; return s; }