习题9(函数)
1、编写函数intlen:功能为求任意整数的位数,即长度。
编程实现:对任意输入的整数求其位数。
#include <stdio.h>
int intlen(long n)
{
int s,i;
for(i=0,s=n;s!=0;i++)
s=s/10;
return i;
}
void main()
{
long x;
printf("请任意输入一个整数:");
scanf("%ld",&x);
printf("%ld是个%d数\n",x,intlen(x));
}
2、编写函数fact:功能为求任意一个正整数的阶乘
编程实现:求1!+3!+5!+7!+n!
#include <stdio.h>
int fact(int n)
{
int i,s=1;
for(i=1;i<=n;i++)
{ s=s*i;
}
return s;
}
void main()
{
int i,x,sum=0;
printf("请输入一个正整数:");
scanf("%d",&x);
for(i=1;i<=x;i+=2)
sum=fact(i)+sum;
printf("1!+3!+...的结果为:%d\n",sum);
}
3、编写函数hui:功能为判断一个正整数是否是回文数
编程实现:对任意输入的正整数判断是否是回文数
#include <stdio.h>
int hui(long num)
{
long s,first=0,end;
s=num;
while(s!=0)
{
end=s%10;
first=first*10+end;
s=s/10;
}
if(first==num)
return 1;
else
return 0;
}
void main()
{
long x;
printf("请输入一个正整数:");
scanf("%ld",&x);
if(hui(x))
printf("%ld是个回文数\n",x);
else
printf("%ld不是个回文数\n",x);
}
4、编写函数isprime:功能为判读一个任意整数是否是素数。
编程实现:把任意一个正整数分解成两个素数之和。
#include <stdio.h>
#include <math.h>
int isprime(int n)
{
int i=2;
while(i<sqrt(n))
{
if(n%i==0)
return 0;
i++;
}
return 1;
}
void main()
{
int sum,i,j,n;
printf("请输入一个大于2的整数:");
scanf("%d",&n);
if(n>=2)
{
for(i=2;i<n/2;i++)
{
j=n-i;
if(isprime(i)&&isprime(j))
{
sum=i+j;
printf("%d分解后的素数对之和为:%d=%d+%d\n",n,sum,i,j);
}
}
}
}
5、编写函数level:功能为求密码等级。
密码等级规则是以下要求满足一条等级就加1有数字、有大写字母、有小写字母、有标点、长度大于6;最高密码等级为5。
编程实现:任意输入一个密码,根据等级输出提示信息,若等级是1或2则输出“您密码设置弱,请更改密码!”;若等级是3或4则输出“您密码设置较强,还可以更改密码让其更强!”;若等级是5则输出“您密码设置很强,请继续保持!”。
#include <stdio.h>
char level (char n[128])
{
int i,count;//count是统计等级
int x1=0,x2=0,x3=0,x4=0,x5=0;//1-5级
for(i=0;i<128;i++)
{
if(n[i]>='0'&&n[i]<='9')
x1=1;
if(n[i]>='a'&&n[i]<='z')
x2=1;
if(n[i]>='A'&&n[i]<='Z')
x3=1;
if((n[i]>=32&&n[i]<=47)||(n[i]>=58&&n[i]<=40)||(n[i]>=91&&n[i]<=96)||(n[i]>=123&&n[i]<=126))
x4=1;
if(strlen(n)>6)
x5=1;
if(n[i]=='\n')
break;
}
count=x1+x2+x3+x4+x5;
switch(count)
{
case 1 :
printf("您密码设置弱,请更改密码!");
case 2 :
printf("您密码设置弱,请更改密码!");
break;
case 3 :
printf("您密码设置较强,还可以更改密码让其更强!");
case 4 :
printf("您密码设置较强,还可以更改密码让其更强!");
break;
case 5 :
printf("您密码设置很强,请继续保持!");
break;
default :
printf("您密码设置弱,请更改密码!");
}
}
void main()
{
char m[20];
printf("请输入您的密码:");
gets(m);
level(m);
}