#include<stdio.h>
#include<math.h>
int sign(int x);
double even(int n);
int prime(int m);
double countdigit(int number,int digit);
int number(int m,int n);
int main()
{
int i,n;
do{
printf("********************************\n");
printf("** -------------实验六:函数 ----------------- **\n");
printf("** -------1.计算并输出分段函数f(x)的值 ------ **\n");
printf("** -------2.使用函数求奇数和 ---------------- **\n");
printf("** -------3.计算素数个数并求和 -------------- **\n");
printf("** -------4.统计指定数字的个数 -------------- **\n");
printf("**-------5.输出m~n之间的所有水仙花数 ------- **\n");
printf("********************************\n");
printf("请输入题号:");
scanf("%d",&i);
switch(i){
case 1:
{
int x,y;
printf("输入任意值确认。\n");
scanf("%d",&x);
printf("请输入x值:");
scanf("%d",&x);
y=sign(x);
printf("f(x)=%d\n",y);
}break;
case 2:
{
int n,sum=0;
double num;
printf("输入任意值确认。\n");
scanf("%d",&n);
printf("输入一批正整数(以零或负数为结束标志):");
do{
scanf("%d",&n);
num=even(n);
if(0==num){
printf("%d是奇数\n",n);
sum=sum+n;
}
else if(1==num){
printf("%d是偶数\n",n);
}
else{
printf("Unknow");
}
}while(n>0);
printf("奇数和=%d\n",sum);
}break;
case 3:
{
int sum=0,m,h=0,n;
printf("输入任意值确认。\n");
scanf("%d",&n);
printf("Input m,n:");
scanf("%d%d",&m,&n);
for(m;m<=n;m++){
if(prime (m)!=0){
h=h+m;
sum++;
}
}
printf("素数的个数为:%d,素数的合为:%d",sum,h);
}
break;
case 4:
{
int digit=0,y=0,number,i,n;
printf("输入任意值确认。\n");
scanf("%d",&n);
double sum,sum1=0;
printf("Input number,digit,n(n为输入数字位数):");
scanf("%d%d",&number,&digit);
sum=countdigit(number,digit);
}
break;
case 5:
{
int m,n;
printf("输入任意值确认。\n");
scanf("%d",&n);
printf("Input m,n:");
scanf("%d%d",&m,&n);
number(m,n);
}break;
case 0:break;
}
}while(i!=0);
return 0;
}
int sign(int x)
{
int y;
if(x>0) y=1;
else if(x<0) y=-1;
else y=0;
return y;
}
double even(int n)
{
if(n%2==0) return 1;
else return 0;
}
int prime(int m){
int i,n;
if(m==1)return 0;
n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0){
return 0;
}
return 1;
}
double countdigit(int number,int digit)
{
int n,digit1,i,y=0;
double sum,sum1=0;
digit1=number*10;
scanf("%d",&n);
for(i=1;i<=n;i++){
digit1=digit1/10;
y=digit1%10;
if(y==digit){
sum1++;
}
}
printf("该数字中%d的个数为%.0lf",digit,sum1);
return sum;
}
int number(int m,int n){
for(m;m<n;m++){
int digit=m;
int digit1=0,digit2=0,digit3=0;
digit1=digit/100;digit%=100;
digit2=digit/10;
digit3=digit%10;
if(pow(digit1,3)+pow(digit2,3)+pow(digit3,3)==m){
printf("%d是水仙花数\n",m);
}
else printf("%d不是水仙花数\n",m);
}
return 0;
}