C语言程序设计实验与习题答案 联系客服

发布时间 : 星期一 文章C语言程序设计实验与习题答案更新完毕开始阅读f4627ffd7f21af45b307e87101f69e314332faeb

...

int i,j,k; for(i=1;i<=6;i++) {

for(k=1;k<=20-(2*i-1)/2;k++) printf(\for(j=1;j<=2*i-1;j++) printf(\printf(\} }

(2) 编写一个程序输出所有

5 位数字的回文。

方法一:

#include void main() {

long x,a,t; //x: 原5 位整数,a:用来暂存 x,t: 把 a 反序后的数 int i,num=0; //i: 表示原 5 位数的某一位 ,num: 回文数的个数 for(x=10000;x<=99999;x++) //每次取出 1 个 5 位整数 {

a=x; //把取出的 5 位整数保存到 a t=0; //t 用来存放反序后的数 while(a>0) { i=a; //取出当前数的最后一位到 i

t=t*10+i; //把取出的 i 组装到 t a=a/10; }

...

...

if(x==t)

{printf(\if(num==0) //原来的 5 位整数等于反序后的数 t num++;} printf(\//每行输出 10 个数

} } 方法二:

/*求 5 位整数中所有回文 */

#include void main() {

long int n,m,t=0;

for(n=10000;n<=99999;n++) {

if(hw(n)==1)

{ printf(\t++;

if(t%5==0) printf(\/*每行输出 5 个数*/

} } }

int hw(long int a) /*hw 函数测试 a 是否是回文 */

{

long int m,r=0; m=a; while(m) {

r=r*10+m; m/=10; }

if(a==r) return 1; /*是回文返回 1 */ else

return 0; /*是回文返回 0 */ }

(3) 编程计算 e=1+1/1!+1/2!+1/3!+ , (即最后一项 1/n!<1e-6 就停止循环)。

...

!。精度为+1/n 1e-6

...

提示:注意 1/n!=1/(n-1)!*1/n ;利用循环加上每一次的分项。

#include void main()

{ long i;

double e,t;

e=1.0

;

t=1.0;

for(i=1;

t>1e-6 ;i++)

{t/=(double)i;

e+=t; }

printf(\

}

2. ⑴

①a[10]=x; ②break; ③a[k]=x;

附:算法简析 main() {

int x,i,j,k;/* 感觉似乎 j 定义了没什么作用 int a[11]={8,18,28,38,48,58,68,78,88,98};

printf(\请输入需要插入的一个整数: \

scanf(\

a[10]=x;/* 把 x 放到数据串最末位置 */

for(i=0;i<10;i++)

...

*/

...

if(x

时退出 */

寻找 x 的插入点,当发现插入点

for(i=10;i>k;i--)/* 将插入点以及其后的每个数据后移一个

单位(给 x 腾位) */

/* 实例演示——腾位

8 18 28 38 48 58 68 78 88 98 (x)

8 18 28 38 38 48 58 68 78 88 98

↑ 插入点

*/

a[i]=a[i-1];

a[k]=x;/* 将 x 放到插入点位置 */

for (i=0;i<11;i++)

printf(\printf(\

}

⑵①i%7==0||i==0 ②n++ ③i%5==0

3.

⑴a.将 continue;改为 break; b.将 i=k-1; 改为 j=k-1; c.将 j=k+1; 改为 i=k+1;

d.将 for(i=0;i<10;i++) 改为 for(i=0;i<9;i++);

附:算法简析

#include

void main() {int x, i,j,k;

...