C语言程序设计教程(第二版)电子工业出版社,黄皮书课后答案

阅读: 评论:0

2024年2月4日发(作者:)

C语言程序设计教程(第二版)电子工业出版社,黄皮书课后答案

冰点论坛

习题1

1-1 填空题

1.

2.

3.

4.

函数

主函数main(),主函数main()

主函数main()

函数首部,函数体

5. {, }

6. /*, */

7. 顺序结构,选择结构,循环结构

8. .c, .obj, .exe

1-2 思考题

1. 结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构

2. 算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法

3. 语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。

4. 略

5. 略

1-3 编程题

1.

main()

{ float a=3, b=4, c=5, s, area;

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%f ” , area );

}

2.

main()

{ printf(“******************************”);

printf(“* hello world *”);

printf(“******************************”);

冰点论坛

}

习题2

2-1 单选题

1~5 DBDCA 6~10 DCABA 11~14 BCA A

2-2 思考题

1.2.00000

2.1,0.5

3.9,2

4.6

5.100,d

6.(1)20 (2)0 (3)60

7. (1)10,6,4 (2)6,9,15 (3)3,60,83

8. 55

9.70

习题3

3-1单选题

1-5 BBDAB 6-10 DDBDC 11-15 AADCA 16-20 CBACC

3-2填空题

1. 3

2. 0261

3. 0x10

4. 0

5. 2, 1 互换a,b的值

6. 6.6

7. –03

8. 7

9. 5.0,4,c=3

10. i=10,j=20

11. (1) 65

(2) 65,A

21-25 ABDBB

冰点论坛

(3) 56.123400,123.456001

(4) 3.141600

(5) 8765.432

(6) 5.86400e+02

(7) 3.14160e+00

(8) 3.1416

(9) 8765

(10) 3.1416,8765.43

12. a=2 b=5x=8.8 y=76.34c1=65 c2=97

3-3 编程题

1.

main()

{ int x, y ;

scanf(“%d%d” , &x, &y);

printf(“x yn”);

printf(“%4d%4dn”, x, y );

printf(“%4o%4on”, x, y );

printf(“%4x%4xn”, x, y );

}

2.

main()

{ float a, b, h, s;

scanf(“%f%f%f”, &a, &b, &h );

s=(a+b)*h/2 ;

printf(“%8.1fn”, s);

}

3.

main()

{ char c;

scanf(“%c”, &c );

printf(“%c, %c, %cn”, c-1, c,

}

4.

main()

{ int a, a1, a2, a3;

scanf(“%d”, &a );

a1=a%10 ; a=a/10;

a2=a%10; a=a/10;

c+1 );

冰点论坛

a3=a%10;

printf(“%d%d%dn”, a1, a2, a3);

}

5.

main()

{ double a, b, c, ave;

scanf(“%lf%lf%lf”, &a, &b, &c );

ave=(a+b+c)/3 ;

printf(“%8.2fn”, ave);

}

6.

main()

{ int a, b, c, t;

scanf(“%d%d%d”, &a, &b, &c );

t=a; a=c; c=b ; b=t ;

printf(“a=%d, b=%d, c=%dn”, a, b, c );

}

习题4

4-1单选题

1~5 BADAC 6~10 DDACD 11~15 BBBAB

4-2填空题

1.1

(x>0) y=1

else if (x==0) y=0

else y=-1

3.(1) a>0 || b>0 (2) x>0 && x<=10

(3) a==1.5 && b==1.5 && c==1.5 (4)p

4.(1)0 (2)1 (3)1 (4)0 (5)0

5. max=(max=a>b?a:b)>c?max:c

6.-4

7.1

8.5,0,3

9.85 belongs to B

10. (1) (a==0) (2) (b==0) (3) (disc<0)

冰点论坛

4-3 编程题

1.#include “math.h”

main()

{ float a,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c);

if (a+b>c && a+c>b && b+c>a)

{ s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“%f”,area);

}

}

2.main()

{ int x,y;

scanf(“%d,%d”,&x,&y);

if (x*x+y*y>1000)

printf(“%dn”,(x*x+y*y)/100);

else

printf(“%dn”,x+y);

}

()

{ int x,

scanf(“%d”,&x);

if(x%3==0 && x%5==0 && x%7==0)

printf(“yesn”);

else

printf(“non”);

}

4.#include “math.h”

main()

{ float x,y;

scanf(“%f”,&x);

if(x<-2) y=x*x-sin(x);

else if (x<=2) y=pow(2,x)+1;

else y=sqrt(x*x+x+1);

printf(“%fn”,y);

}

5. main( )

冰点论坛

{

long a,b,c,d,e,x;

scanf("%ld",&x);

a=x/10000;/*分解出万位*/

b=x%10000/1000;/*分解出千位*/

c=x%1000/100;/*分解出百位*/

d=x%100/10;/*分解出十位*/

e=x%10;/*分解出个位*/

if (a!=0) printf("there are 5, %ld %ld %ld %ld %ldn",e,d,c,b,a);

else if (b!=0) printf("there are 4, %ld %ld %ld %ldn",e,d,c,b);

else if (c!=0) printf(" there are 3,%ld %ld %ldn",e,d,c);

else if (d!=0) printf("there are 2, %ld %ldn",e,d);

else if (e!=0) printf(" there are 1,%ldn",e);

}

6.1.程序分析:

main( )

{

long ge,shi,qian,wan,x;

scanf("%ld",&x);

wan=x/10000;

qian=x%10000/1000;

shi=x%100/10;

ge=x%10;

if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/

printf("this number is a huiwenn");

else

printf("this number is not a huiwenn");

}

7. main()

{float p,w,s,d,f;

scanf(“%f,%,%f”,p,s,w);

if (s>3000) d=0.15

else if( s>=2000) d=0.1;

else if(s>=1000) d=0.08;

else if(s>=500) d=0.05;

else if(s>=250) d=0.02;

else d=0

f=p*w*s*(1-d);

printf(“%f”,f);

}

冰点论坛

习题5

5-1单选题

1~5 CDACB 6~10 DCAAB 11~16 DBDBCB

5-2填空题

1.2 0

2.k=5,s=4

3.333

4.How Are You

5.2#18#

6.(1) i<10 (2) j%3!=0

7.(1) flag*(float)k/(k+1) (2) flag=-flag

8.(1) s=0,t=1; (2) t=t*x/i*pow(-1,i+1); (3) printf(“%f”,s);

9.(1) max=x (2) x!=-1 (3) scanf("%d", &x)

10. (1) n=1 (2) s

5-3 编程题

1. (1) main()

{ int i; lont s=0;

for(i=1;i<=100;i++)

s+=i*i;

printf(“%ld”,s);

}

(2)main()

{ int i; lont p=1,s=0;

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

{p=p*i;

s+=p;

}

printf(“%ld”,s);

}

(3) main()

{ int i=1; lont p=1;float s=0;

do{

s+=1.0/p;

p*=++i;

}while(1.0/p>1e-6)

冰点论坛

printf(“%f”,s);

}

(4)main()

{ int i=1, flag=1,pi=0;

do{

s+=flag*1.0/(2*i-1);

i++;

}while(1.0/(2*i-1)>1e-6);

printf(”%f”,s);

}

()

{int m,n,t,a,b;

scanf(“%d,%d” ,&m,&n) ;

if (m

a=m;b=n;

t=m%n ;

while(t)

{ m=n ; n=t ;t=m%n;}

printf(”%d,%d”,n,a*b/n);

}

3. main()

{int x,y,s=1;

scanf(”%d,%d ”,&x,&y) ;

for( ;y>0 ;y--)s*=x ;

printf(”%d,%d,%dn ”,s%10,s/10%10,s/100%10);

}

()

{int i=1, k=2, sum=0;

do{

sum+=k;

k=k*2;

i++;

}while(sum<=100);

printf(”total=%fn”, 0.4*sum/(i-1));

}

5. main()

{ int x,y,z;

for( x=1 ; x<20 ;x++)

for( y=1 ;y<33 ;y++)

{ z=100-x-y ;

冰点论坛

if (z>=0 && (5*x+3*y+z/3)-100<1e-5)

printf(”x=%d,y=%d,z=%dn”,x,y,z) ;

}

}

6. main()

{int j,k ;

for( j=1 ;j<=4 ;j++)

{for(k=1;k<=4-j;k++;)printf(” ”);

for(k=1 ;k<=2*j-1 ;k++)

printf(”*”) ;

printf(”n”) ;

}

for( j=3;j>=1;j--)

{ for(k=1;k<=4-j;k++;)printf(” ”);

for(k=1;k<=2*j-1;k++)

printf(”*”);

printf(”n”);

}

}

7.分析:其实此问题的解法非常简单。从数学上来说,可以用穷举法。比如让x从2开始,判断表达式“(x%3==2 && x%5==3 && x%7==2)”是否成立,若不成立,让x自增1,直到某个x满足条件了,则这个x即为所求。

程序如下:

#include

main()

{

int x=2;

while(!(x%3==2 && x%5==3 && x%7==2))

{

x++;

}

printf("x=%dn",x);

}

程序运行结果:

x=23

8分析:定义一个字符变量c和一个整型变量n,c用于接受从键盘输入的非回车行字符,n用于统计从键盘输入的非回车符字符的个数,也就是说,以(c=getchar())!='n'为循环条件,反复进行“n++;”的运算。

程序代码如下:

#include

void main(){

冰点论坛

int n=0;

char c;

printf("input a string:n");

while((c=getchar())!='n') n++;

printf("%d",n);

}

9. 例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

main()

{

int i,j,k,n;

printf("'water flower'number is:");

for(n=100;n<1000;n++)

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf("%-5d",n);

}

}

printf("n");

}

()

{int x,y,z;

for( x=1 ;x<17 ;x++)

for(y=1 ;y<25 ;y++)

{ z=30-x-y ;

if( z>0 && 3*x+2*y+z==50)

printf("man=%d, woman=%d,child=%dn”,x,y,z);

}

}

习题6

6-1单选题

1-5 CBBAD 6-10 DBAAC 11-15 CCDDC 16-20 BBABC

冰点论坛

6-2填空题

1. 120

2. x

3. 3,2,2,3 4. /I

5. 8,17

6. 9

7. 1.0/(i*i)

8. fun-in:30,20,10

fun-end:1015,35,1050

10,20,30

9. 012345 10. 93636

6-3 编程题

1.

void zhuan( )

{ char ch;

while((ch=getchar())!=’n’)

{ if(ch>=’a’ && ch<=’z’) ch=ch-32;

putchar(ch);

}

}

2.

float expp(int n)

{ int k, fac=1;

float sum=0;

for(k=1; k<=n; k++)

{ fac*=k;

sum+=1.0/fac ;

}

return(sum);

}

3.

int xy3( int x, int y)

{ int k, num=1;

for(k=1;k<=y ; k++)

num*=x ;

num=num%1000 ;

return num ;

}

冰点论坛

4.

void factors( int n)

{ int k;

printf(“ %d its factors are: ” , n);

for(k=1; k

if( n%k==0)

printf( “%d , ” , k );

printf( “n”);

}

5.

int age( int n)

{ int c;

if(n==1) c=10 ;

else c=age(n-1)+2 ;

return c ;

}

习题7

7-1单选题

1-5 DBCCB 6-8 BDC

7-2填空题

1.

2.

3.

4.

c

60

1000 10

16

7-3 编程题

1.

#define F(a) a*a+ sqrt(3*a*a+2*a+1)

main()

{ float x, f;

scanf(“%f”, &x );

f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x) ;

printf(“%fn”, f);

}

冰点论坛

习题8

8-1单选题

1~15 CADAC 6~10 CCDAA 11~16 BCBBCD

8-2填空题

1 (1) @*&$ (2) 1 3 4 5 (3) 10010 (4) QuickC

2. (1) j+=2 (2) a[i]>a[j]

3.(1) r+b[k] (2) *x

8-3 编程题

1.#define N 10

main()

{ int a[N]={1,2,3,4,5,6,7,8,9,0},osum=0, qsum=0, j;

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

if( j%2) qsum+=a[j];

else osum+=a[j];

printf(“osum=%d,qsum=%dn”, osum,qsum);

}

2. #define N 10

main()

{ int a[N]={10,20,30,40,50,60,70,80,90}, j, k, x;

scanf(“%d”,&x);

for(j=0;j

if (x

for(k=N-1; k>j; k--)

a[k]=a[k-1];

a[j]=x;

for(j=0;j

printf(“%d”,a[j]);

}

3.#define N 10

main()

{ int a[N]={1,2,3,4,5,6,7,8,9,0}. b[N-1], j;

for( j=0;j

b[j]=a[j+1]-a[j];

for( j=0;j

(5)

10000

01000

00100

00010

00001

冰点论坛

{if(j%3==0)printf(“n”);

printf(“%d”,b[j]);}

}

4. #define M 3

main()

{int a[M][M]={{1,2,3},{4,5,6},{7,8,9}},j,sum1=0,sum2=0;

for( j=0;j

{sum1+=a[j][j];

sum2+=a[j][M-(j+1)];

}

printf(“%d,%dn”,sum1,sum2);

}

5. #define M 3

main()

{int a[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;

for( j=0;j

for(k=0;k

if (a[j][k]!=a[k][j]) { flag=0; break;}

if (flag) printf(“ok”);

else printf(”NO”);

}

6.#include “string.h”

main()

{ char c[10],j;

gets(c);

for(j=0; c[j];j++)

c[j]=(c[j]>=’a’ && c[j]<=’z’)? c[j]-32: c[j];

puts(c);

}

7. #include “string.h”

main()

{ char c1[10],c2[10],j;

gets(c1); gets(c2);

for(j=0; (c1[j]==c2[j]) && c1[j] && c2[j]; j++);

printf(“%dn”,c1[j]-c2[j]);

}

8. #include ”string.h”

#define M 3

#define N 80

冰点论坛

main()

{ char a[M][N],j,k,n[5]={0};

for( j=0;j

gets(a[j]);

for(j=0;j

for(k=0;a[j][k];k++)

if( a[j][k]>=’A’ && a[j][k]<=’Z’) n[1]++;

else if (a[j][k]>=’a’ && a[j][k]<=’z’) n[2]++;

else if (a[j][k]>=’0’ && a[j][k]<=’9’) n[3]++;

else if (a[j][k]=’ ’ ) n[4]++;

else

n[5]++;

for(j=0;j<5;j++)

printf(“%4d”, n[j]);

}

习题9

9-1单选题

1~5 DDBAC 6~10 BADCB 11~15 ADCDA 16~20 CCABD

9-2填空题

1 . (1) 2,1 (2) 10#30#5# (3) FOUR,O (4) 60

2. (1) 49 (2) AC (3)2 (4)2 (5)3,12,39 (6) 7 5 3 1 9 (7)15

(8)12,10,9,6,5,4,3,2,1 (9)

0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

0 5 2 2 7 13

(11)

3. (1)

4. (1)

1,1,1

1,1

3,3,3

3,3

(10)

1 0 0 0 1

0 1 0 1 0

0 0 1 0 0

0 1 0 1 0

1 0 0 0 1

*x (2) t

'0'或0 (2) n++或n+=1或n=n+1

5. ABCDCD

冰点论坛

6. 024

7. void fun(double b[][22])

或 void fun(double b[0][22])

或 void fun(double (*b)[22])

8. (1) f(x+y)/g(y-x)或(*f)(x+y)/g(y-x)或f(x+y)/(*g)(y-x)或(*f)(x+y)/(*g)(y-x)

(2) cos,sin,a,b

9-3 编程题

1. 按以下要求编写一个程序。定义三个变量用于存放输入的三个整数;另定义三个指向整型变量的指针变量,并利用它们实现将输入的三个整数按由小到大的顺序输出。

main()

{

int n1,n2,n3;

int *pointer1,*pointer2,*pointer3;

printf("please input 3 number:n1,n2,n3:");

scanf("%d,%d,%d",&n1,&n2,&n3);

pointer1=&n1;

pointer2=&n2;

pointer3=&n3;

if(n1>n2) swap(pointer1,pointer2);

if(n1>n3) swap(pointer1,pointer3);

if(n2>n3) swap(pointer2,pointer3);

printf("the sorted numbers are:%d,%d,%dn",n1,n2,n3);

}

swap(p1,p2)

int *p1,*p2;

{int p;

p=*p1;*p1=*p2;*p2=p;

}

2. 编写函数,得到两个整数相除的商和余数。要求通过指针在函数间传递商和余数这两个数据。

main()

{ int a,b,d ;float c;

void fun(int a,int b,float *c, int *d)

scanf(“%d,%d “,&a,&b);

fun(a,b,&c,&d);

printf(“%f%d”,c,d);

}

void fun(int a,int b,float *c, int *d)

{ if (b) { *c=(float)a/b; *d=a%b;}}

3. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。编写三个函数:①输入10个数;②进行处理;③输出10个数。

冰点论坛

main()

{void input (int *); void output (int *); void chuli (int *);

int a[10];

input(a); chuli(a); output(a);

}

void input(int *a)

{ int j;

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

scanf(”%d”, a+j);

}

void chuli(int *a)

{int j,minl=0,maxl=0;

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

{ if(a[maxl]<*(a+j)) maxl=j;

if(a[minl]>*(a+j)) minl=j;

}

j=a[0]; a[0]=a[minl];a[minl]=j;

j=a[9];a[9]=a[maxl];a[maxl]=j;

}

void output(int *a)

{int j;

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

printf(”%d”, *(a+i));

}

4.有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。

main()

{

int number[20],n,m,i;

printf("the total numbers is:");

scanf("%d",&n);

printf("back m:");

scanf("%d",&m);

for(i=0;i

scanf("%d,",&number[i]);

scanf("%d",&number[n-1]);

move(number,n,m);

for(i=0;i

printf("%d,",number[i]);

printf("%d",number[n-1]);

}

move(array,n,m)

int n,m,array[20];

冰点论坛

{

int *p,array_end;

array_end=*(array+n-1);

for(p=array+n-1;p>array;p--)

*p=*(p-1);

*array=array_end;

m--;

if(m>0) move(array,n,m);

}

5. 有n个小孩按顺序号排成一圈。从第1个小孩开始作1至3报数,凡是报数为3的小孩退出圈子,求出最后出圈子的那个小孩是原来第几号的那位。

#define N 10

#define M 3

main()

{ int a[N],j; void chuli(int *);

for( j=0;j

scanf(“%d”,&a[j]);

chuli(a);

for( j=0;j

printf(“%4d”,a[j]);

}

void chuli(int *a)

{ int j,k,t;

for(j=0;j

{ t=a[N-M+j];

for(k=N-M+j-1;k>=j;k--)

a[k+1]=a[k];

a[j]=t;

}

}

5.#define nmax 50

main()

{

int i,k,m,n,num[nmax],*p;

printf("please input the total of numbers:");

scanf("%d",&n);

p=num;

for(i=0;i

*(p+i)=i+1;

i=0;

k=0;

m=0;

while(m

冰点论坛

{

if(*(p+i)!=0) k++;

if(k==3)

{ *(p+i)=0;

k=0;

m++;

}

i++;

if(i==n) i=0;

}

while(*p==0) p++;

printf("%d is leftn",*p);

}

6.按下列要求输入和输出下列数据阵列:

输入阵列如下: 1 2 3 4

5 6 7 8

9 10 11 12

输出阵列如下:

12 11 10 9

8 7 6 5

4 3 2 1

# define M 3

#define N 4

main()

{ int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=a,t;

for(k=0,j=M*N-1;k

{ t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;}

for (k=0 ;k

{for(j=0 ;j

printf("%4d ",a[k][j]);

printf(“n”);

}

}

7..写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

main()

{

int len;

char *str[20];

printf("please input a string:n");

scanf("%s",str);

len=length(str);

printf("the string has %d characters.",len);

}

冰点论坛

length(p)

char *p;

{

int n;

n=0;

while(*p!='0')

{

n++;

p++;

}

return n;

}

8. 有一字符串,包含n 个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成另一个字符串。

#define N 10

#include “string.h”

main()

{char c1[N],c2[10];void copysubstr(char *, char *, int);

int m,k,n;

gets(c1);

n=strlen(c1);

scanf(”%d”, &m);

if (m>n) printf(“error”);

else

copysubstr(c1,c2,m);

puts(c1);puts(c2);

}

void copysubstr(char *c1,char *c2,int m)

{ int k;

c1=c1+m;

while(*(c1))

*(c2++)=*(c1++);

}

9. 请编写一个程序,运行时输出命令行参数的个数及参数名。

main(int argc,char *argv[])

{ int k;

printf(“argc=%d”,argc);

for (k=1;k

printf(“%s”,argv[k]);

}

10. 用指针数组操作将输入的八个字符串按由小到大的顺序。

冰点论坛

#include “string.h”

main()

{

char *str1[8],ch[8][20],k; void sort(char **);

for(k=0;k<8;k++)

{str1[k]=ch[k];

gets(str1[k]);}

sort(str1);

for(k=0;k<8;k++)

puts(str1[k]);

}

void sort(char **str1)

{ int k,j,t;char *c;

for(k=0;k<7;k++)

{ t=k;

for(j=k+1;j<8;j++)

if(strcmp(*(str1+t),*(str1+j))>0) t=j;

c=*(str1+t);

*(str1+t)=*(str1+k) ;

*(str1+k)=c ;

}

}

习题10

10-1单选题

1-5 CDBBC 6-10 BBBBA 11-15 DCCBD 16-20 CBABC

10-2填空题

1. 所有结构体成员所占存储空间的总和

2. 与占用存储空间最大的那个成员相等

3. (1) 结构体 (2) 3 (3) sa.a (4) 7 (5) psa=&sa

4. 80

5. struct node

6. double *

7. 0

8. malloc(11)

9. struct STRU

10. struct STRU

21-22 CB

冰点论坛

10-3 编程题

1.

struct student

{

long num;

char name[20];

char sex;

float score;

};

main()

{ struct student s[20], temp;

int j,k, man=0, woman=0;

float summan=0,sumwoman=0, aveman, avewoman;

for(k=0; k<20; k++)

{ scanf("%ld %s %c%f",&s[k].num,s[k].name,&s[k].sex,&s[k].score);

if(s[k].sex==’m’)

{ summan+=s[k].score; man++;}

else

{ sumwoman+=s[k].score;woman++ ;}

}

aveman=summan/man;

avewoman=sumwoman/woman;

printf("%dt%ft%dt%fn",man,aveman,woman,avewoman);

for(k=0; k<19; k++)

for(j=0;j<20-k;j++)

if(s[j].score

{ temp=s[j];s[j]=s[j+1];s[j+1]=temp;}

printf("the sorted numbers:n");

for(k=0;k<20;k++)

printf("%ldt%st%ct%5.1fn",s[k].num,s[k].name,s[k].sex,s[k].score);

}

2.

struct student

{

int num;

float score;

struct student *next;

};

typedef struct student STUD ;

STUD *nizhi(STUD *head)

{

冰点论坛

STUD *p, *q, *r;

p=head;q=p; r=q;

if(p->next!=NULL) p=;

else return(head);

while(p->next!=NULL)

{ q->next=r;

r=q;

q=p;

p=p->next; /*指针移向下一个结点*/

}

q->next=r; p->next=q;

head->next=NULL; head=p;

return(head);

}

习题11

11-1单选题

1-4 BADD

11-2填空题

1. 3d3d330

2. (1) 28 (2) 20 (3) 0 (4) -9

3. (1) 251 (2) 42 (3) 209 (4) –295 (5) 848

习题12

12-1单选题

1-5 BCDCA 6-8 ADA

12-2 填空题

1. rewind(文件指针)

2.

3.

4.

5.

"","rb"

stdin

字符串常量 字符数组名

文本文件 二进制文件

冰点论坛

6. 从fp所指向的文件中读6个4字节的数据,存储到起始地址为st的实型数组中(即st[0]~st[5]中)。

7. (1)"w" (2) str[i]-32 (3) "r"

8. fopen

9. Hell

10. (1) "r" (2) fgetc(fp) (3) time++

实验篇

实验1 顺序结构程序设计

(1) 略

(2) 略

(3) 略

(4)

#include "stdio.h"

main()

{

printf("n");

printf("4+---+---+---+n");

printf(" | | | |n");

printf("3+---+---+---+n");

printf(" | | | |n");

printf("2+---+---+---+n");

printf(" | | | |n");

printf("1+---+---+---+n");

printf(" 1 2 3 4n");

}

(5)略

实验2 选择结构程序设计

(1) 略

(2) 略

(3)

#include “stdio.h”

main()

{

unsigned int x;

printf("Please input an unsigned data:");

scanf("%d",&x);

冰点论坛

if (x%2==0)

printf("the data %d is an even!",x);

else

printf("the data %d is an odd!",x);

}

(4) #include "stdio.h"

main()

{

float a,b;

printf("Please input the data a and b:n");

scanf("%f%f",&a,&b);

if(a>10.0)

a=a-10.0;

else

{

a=a+10.0;

if(b>a)

;

else

b=a-b;

}

printf("a=%f, b=%fn",a,b);

}

(5)#include "stdio.h"

main()

{

float x,y;

printf("Please input the data x:n");

scanf("%f",&x);

if (x<0 && x!=-3)

y=x*x+x-6;

else

if(x>=0 && x<10 && x!=2 && x!=3)

y=x*x-5*x+6;

else

y=x*x-x-1;

printf("x=%f, f(x)=%fn",x,y);

}

(6)

#include "stdio.h"

main()

{

int t,a,b,c,d;

printf("Please enter the data:a,b,c,d:n");

冰点论坛

scanf("%d%d%d%d",&a,&b,&c,&d);

if(a

{t=a;a=b;b=t;}

if(a

{t=a;a=c;c=t;}

if(a

{t=a;a=d;d=t;}

if(b

{t=b;b=c;c=t;}

if(b

{t=b;b=d;d=t;}

if(c

{t=c;c=d;d=t;}

printf("the ordered data is:%d, %d, %d, %dn",a,b,c,d);

}

实验3 循环结构程序设计

(1) 略

(2) 略

(3)

#include "stdio.h"

main()

{ float r=0, area=0;

while(r<10 && area<90)

{

if (area>40)

printf("r=%f, area=%fn",r,area);

r=r+1;

area=3.1415926*r*r;

}

}

(4)

#include "stdio.h"

main()

{

int x,i=0;

scanf("%d",&x);

while(x>=0)

{

if(x<=100)

i++;

scanf("%d",&x);

冰点论坛

}

printf("the number is:%dn",i);

}

(5)

#include "math.h"

main()

{

double k=1.0,n=1.0,pi=0,t=1.0;

while (fabs(t)>=1e-4)

{

pi=pi+t;

n=n+2.0;

k=-k;

t=k/n;

}

pi=pi*4;

printf("pi=%lfn",pi);

}

(6)

#include

main()

{

int i,m,n;

for (n=1,i=1;i<10;i++)

{

m=2*n+2;

n=m;

}

printf("total=%dn",m);

}

(7)

#include "math.h"

#include "stdio.h"

#define M 10

main()

{

int n,i,k,sk,flag,s=0;

printf("Please input the data:n");

for(n=1;n<=M;n++)

{

scanf("%d",&k);

flag=1;

sk=sqrt(k);

for(i=2;i<=sk;i++)

冰点论坛

if(k%i==0)

{

flag=0;

break;

}

if(flag==1)

s=s+k;

}

printf("sum=%dn",s);

}

(8)

#include "stdio.h"

main()

{

int n,white,red,yellow,count=0;

printf("Please input the number of ball took:");

scanf("%d",&n);

printf("white red yellown");

for(white=0;white<=3;white++)

for(red=0;red<=3;red++)

{

yellow=n-white-red;

if(yellow>=0 && yellow<=6)

{

printf("%6d%6d%6dn",white,red,yellow);

count++;

}

}

printf("Total:%dn",count);

}

实验4 函数

(1) 略

(2) 略

(3)

#include "stdio.h"

void aa(int);

main()

{

int n;

printf("Please input the integer:n");

scanf("%d",&n);

aa(n);

冰点论坛

}

void aa(int x)

{

int m,n;

m=x%10;

n=x/10;

if(n>0)

aa(n);

printf("%d ",m);

}

(4)

使用全局变量:

#include "stdio.h"

int x,y;

int hef()

{

int u=x,v=y,a,b;

if(u>v)

{

a=u;

u=v;

v=a;

}

while((b=u%v)!=0)

{

u=v;

v=b;

}

return(v);

}

int led(int x,int y,int h)

{

return(x*y/h);

}

main()

{

int h,l;

scanf("%d%d",&x,&y);

h=hef(x,y);

printf("HCF=%dn",h);

l=led(x,y,h);

冰点论坛

printf("LCD=%dn",l);

}

不用全局变量:

#include "stdio.h"

int hef(int x,int y)

{

int a,b;

if(y>x)

{

a=x;

x=y;

y=a;

}

while((b=x%y)!=0)

{

x=y;

y=b;

}

return(y);

}

int led(int x,int y,int h)

{

return(x*y/h);

}

main()

{

int x,y,h,l;

scanf("%d%d",&x,&y);

h=hef(x,y);

printf("HCF=%dn",h);

l=led(x,y,h);

printf("LCD=%dn",l);

}

(5)

#include "stdio.h"

void lsum(int n);

void rsum(int n);

void lsumc(int n);

void rsumc(int n);

main()

{

冰点论坛

lsum(10000);

rsum(10000);

lsumc(10000);

rsumc(10000);

}

void lsum(int n)

{

int i,k=1;

double sum=0,t;

for(i=1;i<=n;i++)

{

t=1.0*k/i;

sum+=t;

k=-k;

}

printf("the lsum is:%lfn",sum);

}

void rsum(int n)

{

int i,k=-1;

double sum=0,t;

for(i=n;i>=1;i--)

{

t=1.0*k/i;

sum+=t;

k=-k;

}

printf("the rsum is:%lfn",sum);

}

void lsumc(int n)

{

int i; double sum=0;

for(i=1;i<=n-1;i++,i++)

sum+=1.0/i;

for(i=2;i<=n;i++,i++)

sum-=1.0/i;

printf("the lsumc is:%lfn",sum);

}

void rsumc(int n)

{

int i; double sum=0;

for(i=n;i>=2;i--,i--)

冰点论坛

sum-=1.0/i;

for(i=n-1;i>=1;i--,i--)

sum+=1.0/i;

printf("the rsumc is:%lfn",sum);

}

(6)

#include "stdio.h"

int monkey(int k)

{

int i,m,n;

for(n=1,i=1;i<=10-k;i++)

{

m=2*n+2;

n=m;

}

return(n);

}

main()

{

int day;

printf("Please input the day(1<=day<=10):n");

scanf("%d",&day);

printf("day: %d, total:%d",day, monkey(day));

}

(7)

#include "stdio.h"

void view1();

void view2();

main()

{

int op;

printf("n************************************n");

printf(" Menu section n");

printf(" (@) n");

printf(" ($) n");

printf(" n");

printf("************************************n");

printf("nPlease input selection:n");

while(1)

{

scanf("%d",&op);

if(op==1)

{ view1();

printf("nPlease input selection:");

冰点论坛

}

else if(op==2)

{

view2();

printf("nPlease input selection:");

}

else

return;

}

}

void view1()

{

int i;

for(i=1;i<15;i++)

putchar('@');

return;

}

void view2()

{

int i,j;

for(i=1;i<5;i++)

{

for(j=1;j

putchar(' ');

for(j=1;j<10;j++)

putchar('$');

printf("n");

}

return;

}

实验5 数组

(1) 略

(2) 略

(3)

#include "stdio.h"

main()

{

int a[10],i=0,j=9,x;

printf("Please input ten integers:n");

while(i<=j)

冰点论坛

{

scanf("%d",&x);

if(x%2==0)

{

a[i]=x;

i++;

}

else

{

a[j]=x;

j--;

}

}

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

printf("a[%d]=%d, ",i,a[i]);

}

(4)

#include "stdio.h"

main()

{

int a[10],b[2][5],i,j=0,k=0;

printf("Please input the array a:n");

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

scanf("%d",&a[i]);

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

{

if(a[i]%2==0)

{

b[0][j]=a[i];

j++;

}

else

{

b[1][k]=a[i];

k++;

}

}

for(j=0;j<=1;j++)

for(k=0;k<=4;k++)

printf("b[%d][%d]=%d ",j,k,b[j][k]);

}

(5)

#include "stdio.h"

冰点论坛

#define M 3

#define N 4

main()

{

int a[M][N],i,j,k;

printf("Please input the array a:n");

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

for(i=0;i

{

k=0;

for(j=1;j

if(a[i][j]>a[i][k])

k=j;

for(j=0;j

if(a[j][k]

break;

if(j==M)

printf("%d %d,%dn",a[i][k],i,k);

}

}

(6)

#include "stdio.h"

main()

{

int i = 0;

int quit_num = 0;

int n;

int m;

int num[100];

int *p = num;

int k = 0;

//总人数

//报数的最大数

//保存所有人的编号

//初始化指针,使其指向num数组

printf("Please input number of person: n = ");

scanf("%d", &n);

printf("Please input the number m = ");

scanf("%d", &m);

/*给所有的人编号为1到n */

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

{

*(p + i) = i + 1;

}

i = 0;

冰点论坛

/*当未退出人数大于1时 执行循环*/

while(quit_num < n - 1)

{

while (i

{

if(*(p+i)==0)

{

k++;

if(k==m)

{*(p+i)=0; quit_num++; k=0; }

}

i++;

}

i=0;

}

while (*p == 0) p ++; //查找留在圈中的人

}

printf("The last one’s number is : %dn" , *p);

实验6 指针

(1) 略

(2) 略

(3)

#include "stdio.h"

void max(int *,int *);

main()

{

int a,b,c,d,*pa,*pb,*pc,*pd;

pa=&a;pb=&b;pc=&c;pd=&d;

printf("Please input the data a,b,c,d:n");

scanf("%d%d%d%d",&a,&b,&c,&d);

max(pa,pb);

max(pa,pc);

max(pa,pd);

printf("the max number of the datas is:%dn",*pa);

}

void max(int *p,int *q)

{

int t;

if(*p<*q)

{

冰点论坛

t=*p;

*p=*q;

*q=t;

}

}

(4)

#include "stdio.h"

#define N 5

int sum(int *);

main()

{

int a[N],s=0,*p=a,i;

printf("Please input the array a:n");

for(i=0;i

scanf("%d",a+i);

s=sum(p);

printf("the sum of the array a is:%dn",s);

}

int sum(int *p)

{

int s,i;

for(i=0;i

s+=*(p+i);

return s;

}

(5)

#include "stdio.h"

void insert(int *,int,int);

main()

{

int i, a[6],x;

printf("Please input the array a:n");

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

scanf("%d",&a[i]);

printf("Please input the insert data x:n");

scanf("%d",&x);

insert(a, 5,x);

printf("the new array a:n");

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

printf("%d ",a[i]);

}

void insert(int *p, int n, int x)

{

冰点论坛

int i,j;

for(i=0;i

if(*(p+i)>x)

break;

for(j=n;j>i;j--)

*(p+j)=*(p+j-1);

*(p+i)=x;

}

实验7 结构体和共用体

(1) 略

(2) 略

(3)

#include "stdio.h"

struct list

{

char xh[4];

char xm[10];

char xb;

int nl;

struct list *next;

};

typedef struct list SLIST;

SLIST *creat_list()

{

SLIST *h,*s,*r;

int i;

h=(SLIST *)malloc(sizeof(SLIST));

r=h;

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

{

s=(SLIST *)malloc(sizeof(SLIST));

scanf("%s%s%d%c",s->xh,s->xm,&s->nl,&s->xb);

r->next=s;

r=s;

}

r->next=NULL;

return h;

}

void dele_list(SLIST *p,int age)

冰点论坛

{

SLIST *q=p->next;

while(q)

if(q->nl!=age)

{

p=p->next;

q=q->next;

}

else

{

p->next=q->next;

break;

}

}

main()

{

SLIST *head,*p;

int age;

head=creat_list();

printf("Please input the age:n");

scanf("%d",&age);

dele_list(head,age);

p=head->next;

while(p!=NULL)

{

printf("%s, %s, %c, %dn",p->xh,p->xm,p->xb,p->nl);

p=p->next;

}

}

实验8 文件

(1)略

(2)

#include "stdio.h"

main(int argc, char *argv[])

{ FILE *in,*out;

if(argc!=3){ printf("please enter the filename");exit(0);}

if((in=fopen(argv[1],"r"))==NULL)

{ printf("cannot open infilen");

exit(0); }

if((out=fopen(argv[2],"w"))==NULL)

{ printf("cannot open outfilen");

冰点论坛

exit(0); }

while(!feof(in)) fputc(fgetc(in),out);

fclose(in); fclose(out); }

C语言程序设计教程(第二版)电子工业出版社,黄皮书课后答案

本文发布于:2024-02-04 09:31:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170701031753106.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结构   输入   函数   字符   输出   个数
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23