本文目录一览:
推荐几本好的C语言方面的书
- 《The C Programming Language》(《C程序设计语言》) ¥30
(美)Brian W.Kernighan,Dennis M.Ritchie (KR)著 机械工业出版社 - 《C Primer Plus》(中文版) ¥60
(美)Stephen Prata 著 人民邮电出版社 - 《C语言入门经典》 ¥55
(美)霍顿(Horton,I.)著 - 《Programming in C》(《C语言编程》) ¥59
(美)Stephen Kochan 著 电子工业出版社 - 《Pointers On C》(《C指针》)
- 《Expert C Programming》(《C专家编程》)
- 《C Traps and Pitfalls》(《C缺陷和陷阱》) 第一本绝对是学习C语言必看的书,而且相对来说比较便宜,当然如果买英文版的就更好了(我在书店看的英文版是35RMB)
C语言程序设计教程答案~有追加悬赏100分!
- 【C语言】《C语言程序设计教程(第二版)》习题答案 说明
- 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。
第1章 程序设计基础知识
一、单项选择题(第23页)
1-4.CBBC 5-8.DACA
二、填空题(第24页)
- 判断条件
- 面向过程编程
- 结构化
- 程序
- 面向对象的程序设计语言
- 有穷性
- 直到型循环
- 算法
- 可读性
- 模块化
- 对问题的分析和模块的划分
三、应用题(第24页)
- 源程序:
main()
{
int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */
printf("cock hen chick\n");
for(i=1;i<=20;i++)
for(j=1;j<=33;j++)
for(k=1;k<=33;k++)
if (i+j+k*3==100 && i*5+j*3+k==100)
printf(" %d %d %d\n",i,j,k*3);
}
执行结果:
cock hen chick
4 18 78
8 11 81
12 4 84
- 现计算斐波那契数列的前20项。 递推法 源程序:
main()
{
long a,b;
int i;
a=b=1;
for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/
{
printf("%8ld%8ld",a,b);
a=a+b;
b=b+a;
}
}
递归法 源程序:
main()
{
int i;
for(i=0;i<=19;i++)
printf("%8d",fib(i));
}
fib(int i)
{
return(i<=1?1:fib(i-1)+fib(i-2));
}
执行结果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
- 源程序:
#include "math.h"
main()
{
double x,x0,deltax;
x=1.5;
do {
x0=pow(x+1,1./3);
deltax=fabs(x0-x);
x=x0;
} while(deltax>1e-12);
printf("%.10f\n",x);
}
执行结果:
1.3247179572
- 源程序略。(分子、分母均构成斐波那契数列) 结果是32.66026079864
- 源程序:
main()
{
int a,b,c,m;
printf("Please input a,b and c:");
scanf("%d %d %d",&a,&b,&c);
if(a<b){m=a;a=b;b=m;}
if(a<c){m=a;a=c;c=m;}
if(b<c){m=b;b=c;c=m;}
printf("%d %d %d\n",a,b,c);
}
执行结果:
Please input a,b and c:123 456 789
789 456 123
- 源程序:
main()
{
int a;
scanf("%d",&a);
printf(a%21==0?"Yes":"No");
}
执行结果:
42
Yes
第2章 C语言概述
一、单项选择题(第34页)
1-4.BDCB 5-8.AABC
二、填空题(第35页)
- 主
- C编译系统
- 函数 函数
- 输入输出
- 头
- .OBJ
- 库函数
- 文本
三、应用题(第36页)
sizeof
是关键字,stru
、_aoto
、file
、m_i_n
、hello
、ABC
、SIN90
、x1234
、until
、cos2x
、s_3
是标识符。- 源程序:
main()
{
int a,b,c;
scanf("%d %d",&a,&b);
c=a;
a=b;
b=c;
printf("%d %d",a,b);
}
执行结果:
12 34
34 12
第3章 数据类型与运算规则
一、单项选择题(第75页)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB
二、填空题(第77页)
- 补码
- ±(10^-308~10^308)
- int(整数)
- 单目 自右相左
- 函数调用
- a或b
- 1
- 65,89
三、应用题(第78页)
- 10 9
- 执行结果:
11
12
1
第4章 顺序结构程序设计
一、单项选择题(第90页)
1-5.DCDAD 6-10.BACBB
二、填空题(第91页)
- 一
- 5.169000
- (1)-2002500 (2)I=-200,j=2500 (3)i=-200
j=2500 - a=98,b=765.000000,c=4321.000000
- 略
- 0,0,3
- 3
scanf("%lf%lf%lf",&a,&b,&c);
- 13 13.000000,13.000000
a=a^c;c=c^a;a=a^c;
(这种算法不破坏b的值,也不用定义中间变量。)
三、编程题(第92页)
- 仿照教材第27页例2-1。
- 源程序:
main()
{
int h,m;
scanf("%d:%d",&h,&m);
printf("%d\n",h*60+m);
}
执行结果:
9:23
563
- 源程序:
main()
{
int a[]={-10,0,15,34},i;
for(i=0;i<=3;i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);
}
执行结果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
- 源程序:
main()
{
double pi=3.14159265358979,r=5;
printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);
}
执行结果:
r=5 A=31.4159265359 S=49.3480220054
- 源程序:
#include "math.h"
main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if (a+b>c && a+c>b && b+c>a)
{
double s=(a+b+c)/2;
printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));
}
else printf("Data error!");
}
执行结果:
4 5 6
SS=9.9215674165
- 源程序:
main()
{
int a=3,b=4,c=5;
float d=1.2,e=2.23,f=-43.56;
printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);
}
- 源程序:
main()
{
int a,b,c,m;
scanf("%d %d %d",&a,&b,&c);
m=a;
a=b;
b=c;
c=m;
printf("%d %d %d\n",a,b,c);
}
执行结果:
5 6 7
6 7 5
- 源程序:
main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.);
}
执行结果:
6 7 9
average of 6,7 and 9 is 7.33
- 不能。修改后的源程序如下:
main()
{
int a,b,c,x,y;
scanf("%d %d %d",&a,&b,&c);
x=a*b;
y=x*c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
printf("x=%d,y=%d\n",x,y);
}
第5章 选择结构程序设计
一、单项选择题(第113页)
1-4.DCBB 5-8.DABD
二、填空题(第115页)
- 非0 0
- k==0
if (abs(x)<4) printf("%d",x);else printf("error!");
if((x>=1 && x<=10)||(x>=200 && x<=210) && x%1)printf("%d",x);
- k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%。)
- 8! Right!11
- $$$a=0
- a=2,b=1
三、编程题(第116页)
- 有错。正确的程序如下:
main()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("min=%d\n",a<b?(b<c?c:b):(a<c?c:a));
}
- 源程序:
main()
{
unsigned long a;
scanf("%ld",&a);
for(;a;printf("%d",a%10),a/=10);
}
执行结果:
12345
54321
- (1)源程序:
main()
{
int x,y;
scanf("%d",&x);
if (x>-5 && x<0)
y=x;
if (x>=0 && x<5)
y=x-1;
if (x>=5 && x<10)
y=x+1;
printf("%d\n",y);
}
(2)源程序:
main()
{
int x,y;
scanf("%d",&x);
if(x<10)
if(x>-5)
if(x>=0)
if(x>=5)
y=x+1;
else
y=x-1;
else
y=x;
printf("%d\n",y);
}
(3)源程序:
main()
{
int x,y;
scanf("%d",&x);
if(x<10)
if(x>=5)
y=x+1;
else if(x>=0)
y=x-1;
else if(x>-5)
y=x;
printf("%d\n",y);
}
(4)源程序:
main()
{
int x,y;
scanf("%d",&x);
switch(x/5)
{
case -1:
if(x!=-5)
y=x;
break;
case 0:
y=x-1;
break;
case 1:
y=x+1;
}
printf("%d\n",y);
}
- 本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。 现给出Delphi源程序和C++ Builder源程序。 Delphi源程序:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text:=datetostr(now);
button1click(form1);
end;
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天";
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit2->Text=DateToStr(Now());
Button1Click(Form1);
}
执行结果:(运行于Windows下) 5. 源程序:
main()
{
unsigned a,b,c;
printf("请输入三个整数:");
scanf("%d %d %d",&a,&b,&c);
if(a==b && a==c)
printf("构成等边三角形\n");
else if(a+b>c && a+c>b && b+c>a)
if(a==b || a==c || b==c)
printf("构成等腰三角形\n");
else
printf("构成一般三角形\n");
else
printf("不能构成三角形\n");
}
执行结果:
请输入三个整数:5 6 5
构成等腰三角形
- 源程序:
main()
{
int x,y;
scanf("%d",&x);
if(x<20)
y=1;
else
switch(x/60)
{
case 0:
y=x/10;
break;
default:
y=6;
}
printf("x=%d,y=%d\n",x,y);
}
- 源程序:
main()
{
unsigned m;
float n;
scanf("%d",&m);
if(m<100)
n=0;
else if(m<600)
n=0.06;
else
n=(m/100+0.5)/100;
printf("%d %.2f %.2f\n",m,m*(1-n),m*n);
}
执行结果:
450
450 429.75 20.25
- 2171天(起始日期和终止日期均算在内) 本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。
- 源程序:
#include "math.h"
main()
{
unsigned long i;
scanf("%ld",&i);
printf("%ld %d\n",i%10,(int)log10(i)+1);
}
执行结果:
99887
7 5
- 源程序:
main()
{
unsigned long i;
unsigned j[10],m=0;
scanf("%ld",&i);
for(;i;){j[m++]=(i+2)%10;i/=10;}
for(;m;m--)
i=i*10+j[m-1];
printf("%ld\n",i);
}
执行结果:
6987
8109
(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)
第6章 循环结构程序设计
一、单项选择题(第142页)
1-4.BCCB 5-8.CBCA
二、填空题(第143页)
- 原题可能有误。如无误,是死循环
- 原题有误。如果把b=1后面的逗号改为分号,则结果是8。
- 20
- 11
- 2.400000
- ##*#$
- 8 5 2
- ①d=1.0 ②++k ③k<=n
- ①x=0 ②xa[min]
三、编程题(第145页)
- 源程序:
main()
{
int i=1,sum=i;
while(i<101)
{
sum+=i=-i-2;
sum+=i=-i+2;
}
printf("%d\n",sum);
}
执行结果:
51
- 源程序:
main()
{
double p=0,n=0,f;
int i;
for(i=1;i<=10;i++)
{
scanf("%lf",&f);
if (f>0)
p+=f;
else
n+=f;
}
printf("%lf %lf %lf\n",p,n,p+n);
}
- 源程序:
main()
{
unsigned a;
scanf("%ld",&a);
for (;a;printf("%d,",a%10),a/=10);
printf("\b \n");
}
执行结果:
23456
6,5,4,3,2
- 源程序:
main()
{
unsigned long a,b,c,i;
scanf("%ld%ld",&a,&b);
c=a%1000;
for(i=1;i<b;i++)
c=c*a%1000;
if(c<100)
printf("0");
if(c<10)
printf("0");
printf("%ld\n",c);
}
执行结果:
129 57
009
- 略
- 原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + … (1)源程序:
main()
{
double e=1,f=1;
int n;
for(n=1;n<=20;n++)
{
f/=n;
e+=f;
}
printf("e=%.14lf\n",e);
}
执行结果:
e=2.71828182845905
(2)源程序:
main()
{
double e=1,f=1;
int n;
for(n=1;f>1e-4;n++)
{
f/=n;
e+=f;
}
printf("e=%.4f\n",e);
}
执行结果:
e=2.7183
- 源程序:
main()
{
unsigned long a=0,b=1,c=0;
int i,d;
scanf("%d",&d);
for (i=1;i<=(d+2)/3;i++)
printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));
}
本题还可以用递归算法(效率很低),源程序如下:
unsigned long fun(int i)
{
return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);
}
main()
{
int i,d;
scanf("%d",&d);
for(i=1;i<=d;i++)
printf("%10ld",fun(i));
}
执行结果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
- 源程序:
main()
{
int i;
for(i=1010;i<=9876;i+=2)
if(i/100%11 && i%100%11 && i/10%100%11 && i/1000!=i%10 && i/1000!=i/10%10 && i/100%10!=i%10)
printf(" %d",i);
}
执行结果:
1024 1026 1028 1032 1034 1036 …… …… 9874 9876
- 源程序:
main()
{
int i,j,k;
printf("apple watermelon pear\n");
for(i=1;i<=100;i++)
for(j=1;j<=10;j++)
if((k=100-i-j)*2==400-i*4-j*40)
printf("%4d%7d%9d\n",i,j,k);
}
执行结果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
- 源程序:
#include "stdio.h"
#define N 4 /* N为阶数,可以改为其他正整数 */
main()
{
int m=N*2,i,j;
for(i=1;i<m;printf("\n"),i++)
for(j=1;j<m;)
putchar(N-abs(i-N)>=abs(j++-N)?' ':'*');
}
如果把N值改为5,则执行结果如下:
*
***
*****
*******
*********
*******
*****
***
*
作者:宁西贯通 2006-5-7 23:41 回复此发言
说明 注意:上面最后一题的输出结果应该是由星号组成的一个菱形,
第7章 数 组
一、单项选择题(第192页)
1-4.BBCC 5-8.AABA
二、填空题(第194页)
- 1
2
4
8
16
32
64
128
256
512 - ①a[age]++ ②i=18;i<26
- ①break ②i==8
- ①a[i][j] ②i<3 ③j<5
- ①b[j]=a[j][0] ②b[j]<a[j][k] 6.a[k++]=a[j]
三、编程题(第196页)
- 源程序:
main()
{
int a[4][4],i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i==j || i+j==3)
s+=a[i][j];
printf("%d\n",s);
} /* 注:5×5矩阵不能照此计算! */
执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
68
- 源程序:
main()
{
int i,a[36];
a[0]=2;
for(i=1;i<=29;i++)
a[i]=a[i-1]+2;
for(;i<=35;i++)
a[i]=a[(i-30)*5+2];
for(i=0;i<=35;i++)
printf("%d\t",a[i]);
}
执行结果:
2 4 6 8 10 12 14 16 18 20
22 24 26 28 30 32 34 36 38 40
42 44 46 48 50 52 54 56 58 60
6 16 26 36 46 56
- 源程序:
#include "stdlib.h"
#include "time.h"
main()
{
int a[30],i,m=0;
randomize();
for(i=0;i<=29;i++)
{
a[i]=rand();
if(m<a[i])
m=a[i];
printf("%d\t",a[i]);
}
for(i=0;i<=29;i++)
if(a[i]==m)
a[i]=-1;
printf("\n-----------------\n");
for(i=0;i<=29;i++)
if(~a[i])
printf("%d\t",a[i]);
printf("\n");
}
执行结果:
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
32499 29305 22340 5927 13031 2161 2583 31855 22977 14283
4851 22038 6992 11394 20887 27381 6293 18347 16414 10210
-----------------
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
29305 22340 5927 13031 2161 2583 31855 22977 14283 4851
22038 6992 11394 20887 27381 6293 18347 16414 10210
- 源程序:
main()
{
int i,n=0,b[16];
scanf("%d",&i);
for(;i;i>>=1)
b[n++]=i&1;
for(;n;)
printf("%d",b[--n]);
}
执行结果:
9876
10011010010100
本题也可以不用数组。源程序如下:
#include "stdio.h"
main()
{
int i,n;
scanf("%d",&i);
for(n=16;n;n--)
{
asm ROL i,1
putchar(i&1|48);
}
} /* ROL是循环左移的汇编指令 */
- 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{
int a[M][N],i,j,t[M];
randomize();
/*生成M行N列随机数*/
for(i=0;i<M;printf("\n"),t[i++]=0)
for(j=0;j<N;j++)
printf("%4d",a[i][j]=random(50));
/*找出每行的最小数,t[M]是第M行的最小数所在的列数*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(a[i][t[i]]>a[i][j])
t[i]=j;
/*比较每个最小数在其所在的列上是否也是最小*/
for(j=0;j<M;j++)
for(i=0;i<M;i++)
{
if(i==j)
continue;
if(a[j][t[j]]>a[i][t[j]])
{
t[j]=-1;
break;
}
}
printf("-------------------\n");
/*输出在行和列上均为最小的数*/
for(i=0;i<M;i++)
if(t[i]!=-1)
printf("a[%d,%d]=%d\n",i,t[i],a[i][t[i]]);
}
执行结果:
13 19 13 20 0 1
20 41 6 16 35 30
3 5 37 8 23 15
6 36 24 29 18 1
1 5 28 21 46 34
-------------------
a[0,4]=0
a[1,2]=6
a[3,5]=1
a[4,0]=1
- 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 7
main()
{
int a[M][N],i,j,t=0;
randomize();
for(i=0;i<M;i++)
{
a[i][N-1]=0;
for(j=0;j<N-1;j++)
{
printf("%4d",a[i][j]=random(91)+10);
a[i][N-1]+=a[i][j];
}
printf("%4d\n",a[i][N-1]);
}
for(i=1;i<M;i++)
if(a[i][N-1]>a[t][N-1])
t=i;
if(t)
for(j=0;j<N;j++)
{
i=a[0][j];
a[0][j]=a[t][j];
a[t][j]=i;
}
printf("-----------------\n");
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
执行结果:
89 17 32 95 35 20 288
39 48 22 27 73 22 231
51 87 39 71 84 46 378
84 94 97 77 27 26 405
69 50 56 89 37 46 347
-----------------
84 94 97 77 27 26 405
39 48 22 27 73 22 231
51 87 39 71 84 46 378
89 17 32 95 35 20 288
69 50 56 89 37 46 347
- 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{
int a[M][N],i,j;
struct data{int value,x,y;}max,min;
max.value=0;
min.value=100;
randomize();
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]=random(100)+1);
if(max.value<a[i][j])
{
max.value=a[i][j];
max.x=i;
max.y=j;
}
if(min.value>a[i][j])
{
min.value=a[i][j];
min.x=i;
min.y=j;
}
}
printf("-----------------\n");
i=a[0][N-1];
a[0][N-1]=max.value;
a[max.x][max.y]=i;
i=a[M-1][0];
a[M-1][0]=min.value;
a[min.x][min.y]=i;
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
执行结果:
51 53 74 65 30 40
30 26 50 6 61 27
47 16 54 58 76 19
57 74 44 92 71 48
73 57 60 32 73 67
-----------------
51 53 74 65 30 92
30 26 50 73 61 27
47 16 54 58 76 19
57 74 44 40 71 48
6 57 60 32 73 67
- 源程序:
main()
{
char s[255];
int i,j,b=1;
printf("Input a string:");
scanf("%s",s);
i=strlen(s);
for(j=1;j<=i/2;j++)
b=b&&(s[j-1]==s[i-j]);
printf(b?"Yes\n":"No\n");
}
执行结果:
Input a string:level
Yes
- 源程序:
main()
{
char s[255],t,max=0,min=0,l,i;
printf("Input a string(length>4):");
gets(s);
l=strlen(s);
for(i=0;i<l;i++)
{
if(s[max]<s[i])
max=i;
if(s[min]>s[i])
min=i;
}
t=s[1];
s[1]=s[max];
s[max]=t;
if(min==1)
min=max;
t=s[l-2];
s[l-2]=s[min];
s[min]=t;
printf("%s\n",s);
}
执行结果:
Input a string(length>4):C++Builder
Cu+Beild+r
- 源程序:
main()
{
char m[13][10]={"****","January","February","March",
"April","May","June","July","August","September",
"October","November","December"};
int i,j,k,a,s,n;
printf("Please input an integer(100..999):");
scanf("%d",&n);
printf("%d:%d+%d+%d=%d, %d%%13=%d, %s\n", n,i,j,k,s=(i=n/100)+(j=n/10%10)+(k=n%10),s,a,m[a=(s%13)]);
}
执行结果:
Please input an integer(100..999):539
539:5+3+9=17, 17%13=4, April
第8章 函 数
一、单项选择题(第241页)
1-5.BCCAA 6-10.CCDDD 11-15.ACACB
二、填空题(第243页)
- 看不出原题的意图。因为要计算1~n的累加和,n应是一个≥1的正整数。可是题目中却出现了n=0的情况。除非另加规定当n=0时1~n的累加和为0,或者把原题中的计算式改为计算0~n的累加和。据此猜测,原题应填为:①return(0) ②return(n+sum(n-1)) 根据题意,如下程序较为合理:
int sum(int n)
{
if(n==0)
return(0); /* 0是出错标志 */
else if(n==1)
return(1);
else
return(n+sum(n-1));
}
- ①return(1) ②return(n*facto(n-1))
三、编程题(第244页)
- 源程序:
main()
{
int i,a,b,c;
for(i=100;i<999;i++)
if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)
printf("%d\t",i);
}
执行结果:
153 370 371 407
- 源程序(非递归算法):
#define P 13 /* P可以改为其他正整数 */
main()
{
int a[P],r,c;
for(r=0;r<=P;r++)
{
a[r]=1;
for(c=r-1;c>=1;a[c--]+=a[c-1]);
printf("%*d",(P-r)*3+1,a[0]);
for(c=1;c<=r;printf("%6d",a[c++]));
printf("\n");
}
}
执行结果:
(应该排列成一个三角形,是贴吧造成现在这个样子的,不是程序有问题)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
- 源程序(递归算法):
#include "stdio.h"
void printOCT(unsigned long n)
{
unsigned long i;
if(i=n>>3)
printOCT(i);
putchar((n&7)+48);
}
main()
{
unsigned long i;
scanf("%ld",&i);
printOCT(i);
}
执行结果:
1234567890
11145401322
本题也可以不用递归算法,源程序请参考第7章第三题4。
回复:【C语言】《C语言程序设计教程(第二版)》习题答案
但是不同时间印刷的版本课后题不太一样呢,象我们的是1999年12月第2版,2005年12月第69次印刷的。没有选择填空,应用题和楼主不知道有多少相同的,因为看不到原题。这个比较麻烦呢。 作者:210.77.204.* 2006-5-9 18:38 回复此发言
回复:【C语言】《C语言程序设计教程(第二版)》习题答案
你对照一下主编和出版社,看看对吗?(见说明的第一条。) 我不是说叫你有问题另发帖子吗?
第9章 指 针
一、单项选择题(第276页)
1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD
二、填空题(第278页)
- ①int * ②*z
- *p++
- ①'\0' ②++
- ①q=p+1 ②q<p+10 ③q>max ④q<min
三、编程题(第280页)
- 源程序:
main()
{
int i=0;
char c[20];
do{
scanf("%s",c);
i++;
}while(strcmp(c,"stop"));
printf("%d\n",i);
}
执行结果:
This car ran form Nanyang
to Luoyang without a stop
10
- 源程序:
main()
{
char s[255],c[255]={0};
int i;
gets(s);
for(i=0;s[i];c[s[i++]]++);
for(i=0;i<255;i++)
if(c[i])
printf("%c=%d\t",i,c[i]);
}
执行结果:
abcedabcdcd
a=2 b=2 c=3 d=3 e=1
急需c语言程序设计教程第四版实验指导与习题解答课后习题答案,谢谢!!
你把这个拿去试试,我到网上找了一个帮你改的,看看可以不,
#include<stdio.h>
int main()
{
//int a[10][10];
int n;
printf("please input the line:\n");
scanf("%d\n",&n);
getchar();
int i,j;
for(i=0;i<n;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}