習題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);
}
小胖專屬學習分享