if(a%i==0)
return(0);
return
(1);
}
voidmain()
{
intj;
for(j=2;j<100;j++)
if(is_prime(j))
printf(“\n”);
}
5.使用递归方法,利用碾转相除法,求两个正整数的最大公约数,并在主函数调用该函数,输出计算结果。
(实验教程P64)
解:
#include
Intgcd(inta,intb)
{
if(a%b==0)
returnb;
else
returngcd(b,a%b);/*递归调用*/
}
voidmain()
{
intx,y,t;
printf(“Pleaseinput2number(x,y):
\n”);
scanf(“%d%d”,&x,&y);
while(x<0||y<0)/*如果是负数重新输入*/
{
printf(“ERROR!
Pleaseinput2number(x,y):
\n”);
scanf(“%d%d”,&x,&y);
}
t=gcd(x,y);/*函数调用*/
printf(“G,C,D(%d,%d)=%d\n”,x,y,t);
}
6.使用递归调用的方法计算n阶勒让德多项式的值。
(实验教程P66)
提示:
n阶勒让德多项式的递推公式为:
=
{
1(n=0)
fn(x)
X(n=1)
((2n-1)xfn-1(x)-(n-1)fn-2(x)/n(n>1)
解:
#include
floatfun(intn,intx);/*定义递归函数*/
{
intt;
if(n==0)/*如果n=0返回1*/
return
(1);
elseif(n==1)/*如果n=1返回x*/
return(x);
else/*否则递归计算*/
return(((2*n-1)*x*fun((n-1),x)-(n-1)*fun((n-2),x))/n;
}
voidmain()
{
intx,n;
printf(“Pleaseinputnandx:
\n”);
scanf(“%d%d”,&n,&x);
printf(“Theresultis:
%f\n”,fun(n,x));
}
7.编写程序,利用子函数实现计算字符串的长度。
(实验教程P92)
解:
程序代码如下:
#include
intlength(char*s);
voidmain()
{
chara[100];
inti;
printf(“Pleaseinputthestring:
\n”);
gets(a);
i=length(a);
printf(“\nThelengthofstringis%d”,i);
}
intlength(char*s)
{
char*p=s;
while(*p)
p++;
return(p-s);
}
8.编写程序,利用字符串实现两个字符串的合并。
(实验教程P93)
解:
程序代码如下:
#include“stdio.h”
char*link(char*p1,char*p2);
voidmain()
{
charstr1[100],str2[100];
printf(“Pleaseinputthefirststring:
\n”);
gets(str1);
printf(“nPleaseinputthesecondstring:
\n”);
gets(str2);
link(str1,str2);
printf(“\nThelinkedresultis:
\n”);
puts(str1);
}
char*link(char*p1,char*p2)
{
char*p;
p=p1;
while(*p1)
pl++;
while(*p2)
{
*p1=*p2;
P1++;
P2++;
}
*p1=’\0’;
return(p);
}
9.将一个整数字符串转换为一个整数,如“-1234”转换为-1234。
(实验教程P98)
解:
#include
#include
intchnum(char*p);
voidmain()
{
chars[6];
intn;
gets(s);
if(*s==’-’)
n=-chnum(s+1);
printf(“%d\n”,n);
}
chnum(char*p)
{
intnum=0,k,len,j;
len=strlen(p);
for(;*p!
=’\0’;p++)
{
k=*p-‘0’;
j=(--len);
while(j-->0)
k=k*10;
num=num+k;
}
Return(num);
}
10.编写计算个人所得税的程序输入一个纳税人的个人月收入,计算应纳的个人所得税。
(程序设计教程P65)
纳税是每个公民的义务。
我国的个人所得税税率表如下表所示:
级数
应纳税金额(月收入-1600)
税率%
1
不超过500元
5
2
500元~2000元
10
3
2001~5000元
15
4
5001~20000元
20
5
20001~40000元
25
6
40001元~60000元
30
7
60001元~80000元
35
8
80001元~100000元
40
9
超过100000元
45
解:
源程序清单如下:
#include”stdio.h”
voidmain()
{
doublesalary,s,tax;
printf(“pleaseinputyoursalaryonemonth:
”);
scanf(“%lf”,&salary);
s=salary-1600;
if(s<=500)
tax=s*0.05;
elseif(s<=2000)
tax=(s-500)*0.1+500*0.05;
elseif(s<=5000)
tax=(s-2000)*0.15+1500*0.1+500*0.05;
elseif(s<=20000)
tax=(s-5000)*0.2+3000*0.15+1500*0.1+500*0.05;
elseif(s<=40000)
tax=(s-20000)*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.\05;
elseif(s<=60000)
tax=(s-40000)*0.3+20000*0.25+15000*0.2+3000*0.15+1500*\0.1+500*0.05;
elseif(s<=80000)
tax=(s-60000)*0.35+20000*0.3+20000*0.25+15000*0.2+3000\*0.15+1500*0.1+500*0.05;
elseif(s<=100000)
tax=(s-80000)*0.4+20000*0.35+20000*0.3+20000