当前位置:首页 > C语言练习与思考4习题答案
练习与思考4习题答案
4.1 选择题。
1、D 2、C 3、B 4、A 5、A
4.2 阅读下面的程序,写出程序运行结果。
1、 3 2、 x=93 3、 27 4、 7
15 25 5、 s=20
4.3 编程题。
(1)亲密数)若正整数A的所有因子(包括1但不包括自身)之和为B,而B的因子(包括1但不包括自身)之和为A,则称A和B为一对亲密数。编写一个函数求n以内的所有亲密数。
#include
void funfind(int p);
void main() { int n; printf(\请输入n(100 void funfind(int p) { int a,i,b,n; for(a=1;a } } b+=i; for(i=1,n=0;i if(n==a&&a (2)(回文素数)所谓一个回文素数是指对一个整数n从左向右和从右向左读其结果值相同 且是素数。求不超过1000的回文素数。要求用函数调用实现。 #include int isprime(int n); void main() { int i,j,k,t,s; printf(\不超过1000的回文素数有:\\n\); for(i=0;i<10;i++) for(j=0;j<10;j++) for(k=0;k<10;k++) { s=i*100+j*10+k; t=k*100+j*10+i; if(i==0&&j==0)//处理整数前两位为0的情况 t=t/100; else if(i==0)//处理整数的第一位为0的情况 t=t/10; if(s>10&&s==t&&isprime(s)) printf(\,s); } } int isprime(int n)//判断n是否为素数 { int i; for(i=2;i<(n-1)/2;i++) if(n%i==0) return (0); return(1); } (3)(哥德巴赫猜想)验证:1000以内的正偶数都能够分解为两个素数之和(即验证哥德巴赫猜想对1000以内的正偶数都成立)。 #include void main() { int i,n; for(i=4;i int isprime(int n)//判断n是否为素数 { int i; if(n<=1) return (0); if(n==2) return (1); if(n%2==0) return (0); for(i=3;i<(int)(sqrt(n)+1);i=i+2) if(n%i==0) return (0); return(1); } (4)(抓交通肇事犯)一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索定义一个函数求出车号。 #include void f(void) { int i,j,k,c; for(i=1;i<=9;i++) /*i:车号前二位的取值*/ for(j=0;j<=9;j++) /*j:车号后二位的取值*/ if(i!=j) /*判断二位数字是否相异*/ { k=i*1000+i*100+j*10+j; /*计算出可能的整数*/ for(c=31;c*c void main() { f(); } (5)(海伦公式)编写程序计算下列公式中的V的值,用带参数的宏来编程。 area=s(s?a)(s?b)(s?c) 其中s=(a?b?c)/2, a、b、c为三角形的三边。 #include #define s (a+b+c)/2 #define area(s) s*(s-a)*(s-b)*(s-c) void main() { float a,b,c; printf(\请输入三角形三边的边长:\); scanf(\,&a,&b,&c); if(fabs(a-b)
共分享92篇相关文档