第七次作业
1.菜单:
#include<stdio.h> #include<math.h> int sign(int x); int even(int n); int prime(int m); int countdigit(int number,int digit); int is(int number); int main() { int choice=0; int n; int x,y,sum=0; int digit,in,c; do{ printf("**************实验六:函数**************\n"); printf("****1.计算并输出分段函数f(x)的值*******\n"); printf("****2.使用函数求奇数和*****************\n"); printf("****3.计算素数个数并求和***************\n"); printf("****4.统计指定数字的个数***************\n"); printf("****5.输出m~n之间的所有水仙花数********\n"); printf("****请输入一个题号:"); scanf("%d",&choice); switch(choice) { case 1:printf("请输入x的值:"); scanf("%d",&x); y=sign(x); printf("f(x)=%d\n",y); break; case 2:printf("输入一批正整数:"); do{ scanf("%d",&n); if(n>0){ y=even(n); if(y==0){ sum=sum+n; } } }while(n>0); printf("sum=%d\n",sum); break; case 3:int c,i,m,n,sum; scanf("%d%d",&m,&n); c=sum=0; for(i=m;i<=n;i++) if(prime(i)!=0) { c++; sum=sum+i; } printf("c=%d,sum=%d\n",c,sum); break; case 4: scanf("%d%d",&in,&digit); c=countdigit(in,digit); printf("number %d of digit %d:%d\n",in,digit,c); break; case 5:scanf("%d%d",&m,&n); printf("result:\n"); for(i=m;i<=n;i++) if(is(i)!=0) printf("%d\n",i); break; } }while(choice!=0); return 0; } int sign(int x) { int y; if(x>0){ y=1; } else if(x==0){ y=0; } else{ y=-1; } return y; } int even(int n) { int x; if(n%2==0) x=1; else x=0; return x; } int prime(int m) { int j,i; if(m==1) return 0; j=sqrt(m); for(i=2;i<=j;j++) if(m%i==0) return 0; return 1; } int countdigit(int number,int digit) { int c; if(number<0) number=-number; c=0; do{ if(number%10==digit) c++; number=number/10; }while(number!=0); return c; } int is(int number) { int digit,sum,temp; temp=number; sum=0; while(temp!=0){ digit=temp%10; temp=temp/10; sum=sum+pow(digit,3); } return sum==number; }
2.用数组来处理求Fibonacci数列问题(求前40项):
#include<stdio.h> int main(void) { int i; long int f[40]={1,1}; for(i=2;i<40;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<40;i++) { if(i%5==0) printf("\n"); printf("%12ld",f[i]); } printf("\n"); }