P261~264
一、选择题
1~4 A C B B 5 ABC 6 D
二、填空题
1、5
2、720
3、g=4
g=3
k=6
4、文件包含,宏定义,条件编译
5、7,-13
三、程序设计题
第一题
#include//习题10.1 #include int perfect(int n) { int i,count=0,x1,x2,x3; double x; for(i=101;i<=n;i++)//double sqrt(999)=31.6 { x=sqrt(i); if(x==(int)x){//强制转换类型,如果不需要转换就相等,说明是完全平方数 x1=i%10; x2=i/10%10; x3=i/100; if((x1==x2)||(x2==x3)||(x1==x3)){ count++; printf("%dn",i); } } } return count; } int main(void) { int n; printf("Enter n(101~999):"); scanf("%d",&n); printf("在101~%d之间存在两位数字相同且是完全平方数的有%d个。",n,perfect(n)); return 0; }
第二题
#include//习题10.2 double fact(int n) { double result=1; if(n==1){ result=1; }else{ result=n*fact(n-1); } return result; } int main(void) { int n,i; double sum=0; printf("Enter n:"); scanf("%d",&n); for(i=1;i<=n;i++) { sum+=fact(i); } printf("1!到%d!的和为;%.lf",n,sum); return 0; }
第三题
#include//习题10.3 #include double pow_x(double x,int n) { double result; if(n==0){ result=1; }else{ result=x*pow_x(x,n-1); } return result; } int main(void) { int n,i; double x; printf("请输入实数x和正整数n:"); scanf("%lf%d",&x,&n); printf("pow(%.lf,%d)=%.2lf",x,n,pow_x(x,n)); return 0; }
第四题
#include//习题10.4 #include double f(double x,int n) { double result; if(n==1){ result=x; }else { result=-x*f(x,n-1); } return result; } int main(void) { int n,i; double x,sum; printf("请输入实数x和正整数n:"); scanf("%lf%d",&x,&n); for(i=1;i<=n;i++) { sum+=f(x,i); } printf("%.2lf",sum); return 0; }
第五题
#include//习题10.5 double ack(double m,double n) { if(m==0){ return n+1; }else if(n==0&&m>0){ return ack(m-1,1); }else if(n>0&&m>0){ return ack(m-1,ack(m,n-1)); } } int main(void) { double m,n; int i; printf("Enter m,n:"); scanf("%lf%lf",&m,&n); printf("Ackermenn=%lf",ack(m,n)); return 0; }
第六题
#include//习题10.6 int Fab(int n) { if(n==0){ return 0; }else if(n==1){ return 1; }else { return Fab(n-2)+Fab(n-1); } } int main(void) { int n; printf("Enter n:"); scanf("%d",&n); printf("f(%d)=%d",n,Fab(n)); return 0; }
第七题
#include//习题10.7 void dectobin(int n) { if(n==0){ // printf("十进制0对应的二进制为:%d",0);//0对应的二进制没有输出 }else { dectobin(n/2); printf("%d",n%2); } } int main(void) { int n; printf("Enter n:"); scanf("%d",&n); dectobin(n); return 0; }
第八题
#include//习题10.8 void reverse(int n) { if(n<=9){ printf("%d",n); }else { printf("%d",n%10); reverse(n/10); } } int main(void) { int n; printf("Enter n:"); scanf("%d",&n); reverse(n); return 0; }
第九题(待完善)
包含主函数的,命名为prime_count.c
#include#include"prime.c" int main(void) { int n,a[10],count1=0,i,x; printf("Enter n(n<10):"); scanf("%d",&n); printf("Enter %d numbers:",n); for(i=0;i 判断素数的,命名为prime.c,两个放在同一个文件夹中
void prime(int n)//是素数返回1 { int i,j,count=0; if(n<=1){ puts("%d不是素数!",n); }else if(n==2){ count++; puts("%d是素数!",n); }else { for(i=2;i=n/2){ count++; puts("%d是素数!",n); }else puts("%d不是素数!",n); } puts("共有%d个素数",count); } 第十题
定义s计算三角形面积
#include//习题10.10 定义计算s #include #define S(a,b,c) (a+b+c)/2.0 int main(void) { double a,b,c,s,Area; printf("Enter a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); s=S(a,b,c); Area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("三角形的面积为:%lf",Area); return 0; } 定义area计算三角形面积
#include//习题10.10 定义计算area #include #define area(s,a,b,c) sqrt(s*(s-a)*(s-b)*(s-c)) int main(void) { double a,b,c,s,Area; printf("Enter a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); s=(a+b+c)/2; Area=area(s,a,b,c); printf("三角形的面积为:%lf",Area); return 0; } 第十一题
#include//习题10.11 int count=0; void select(int a[],int option,int value); void input(int a[]); void output(int a[]); void insert(int a[],int value); void remove(int a[],int value); void modify(int a[],int value); void query(int a[],int value); int main(void) { int option,value,a[100]; input(a); printf("[1]插入n"); printf("[2]删除n"); printf("[3]修改n"); printf("[4]查找n"); printf("[other option]结束n"); while(1){ printf("请输入你选择的函数编号:"); scanf("%d",&option); if(option<1||option>4 ){ break; } printf("请输入参数:"); scanf("%d",&value); select(a,option,value); printf("n"); } printf("Thanks!"); return 0; } void select(int a[],int option,int value)//调用对应编号的函数 { switch(option){ case 1:insert(a,value);break; case 2:remove(a,value);break; case 3:modify(a,value);break; case 4:query(a,value);break; } } void input(int a[])//输入 { printf("请输入数组元素数量:"); scanf("%d",&count); printf("请输入一个有序数组:"); for(int i=0;i



