C语言程序设计(张淑华、朱丽莉版)课后习题参考答案[本站推荐]

时间:2019-05-12 17:24:04下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计(张淑华、朱丽莉版)课后习题参考答案[本站推荐]》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言程序设计(张淑华、朱丽莉版)课后习题参考答案[本站推荐]》。

第一篇:C语言程序设计(张淑华、朱丽莉版)课后习题参考答案[本站推荐]

C语言程序设计(张淑华、朱丽莉主编)课后习题解答

(仅供参考)

一、选择题

1.B

2.D

3.B

4.A

5.B 6.C

7.C

二、填空题

1..obj

2.函数

3./* */

4.#include

int a,b;

a,b

三、简答题(略)

一、选择题

1.B

2.B

3.A

4.D

5.A 6.C

7.C

8.A

9.C

10.B 11.A

12.A

13.C

14.A

15.C

二、填空题

1.变量

2.存储数据的单元

3.非0、0

4.(1)a>=0

(2)0 5.1

6.1

7.-30

8.38

9.4 , 7 10.-6 177772

11.9.9

12.7

三、写出下列程序的运行结果

1.0,0,5

2.18

3.64

512

4.5 5.d4,c

四、编程题

1.#include

#define PI 3.1415926

void main()

{

float r,s;

printf(“Please input circinal radiin”);

scanf(“%f”,&r);

s=PI*r*r;

printf(“r=%.2f,s=%.2fn”,r,s);

} 2.#include

void main()

{

char c1,c2;

printf(“Please input a majusculen”);

scanf(“%c”,&c1);

c2=c1>’A’&&c1<’Z’?c1+32:c1;

printf(“%cn”,c2);

} 3.#include

void main()

{

int a=0,b;

scanf(“%c”,&b);

b=b&a;

printf(“b=%dn”,b);

}

一、选择题

1.C

2.C

3.A

4.C

5.D 6.原题第2行应为 c=(c-=a-5),(a=b,b+3);答案为B 否则输出结果为5,0,5 7.D

8.C

9.A

10.B

二、填空题

1.-50 300、a=-50,b=300

a=-50

b=300 2.10 20 30、10,20,30、a=10,b=20,c=30 3.15、0、0

三、写出下列程序的运行结果

1.a=789.654321,a= 789.65,a= 789.65432100,a=789.654321 2.b=15,b=17,b=f

3.c=1,x=0,y=0,z=1

4.21

20,20 5.在TC环境下为216,125

在VC环境下为 216,180 6.a=A,b=d,c=F

7.8.x=4.500000,y=4,x+y=8.500000

四、编程题

1.#include

void main()

{

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

printf(“

HAPPY NEW YEAR!

n”);

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

} 2.

9,4,12,12

(1)#include

void main()

{

int a=5,b=8,c=10,m,max;

m= a>b?a:b;

max=c>m?c:m;

printf(“max=%dn”,max);

}

(2)#include

void main()

{

int a,b,c,m,max;

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

max=a>b?a:(b>c?b:c);

printf(“max=%dn”,max);

}

一、选择题

1.D

2.D

3.C

6.A

7.C

8.C

二、填空题

1.6、5、5

2.(a%3==0||a%7==0)

三、写出下列程序的运行结果

1.4

2.64

3.a=7,b=4

四、编程题

1.另见填空题3

#include

void main(){ float a,b,c,t;

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

if(a>b)

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

if(a>c)

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

if(b>c)

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

printf(“%.2f,%.2f,%.2fn”,a,b,c);

} 2.#include

void main()

4.A

9.D 3.(1)a>b

4.46

5.D

10.B

(2)a=c;(3)a,b,c

5.*#

{

int a,b;

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

if(a%b==0)

printf(“%d is divisible by %dn”,a,b);

else

printf(“%d is not divisible by %dn”,a,b);

} 3.(1)#include

void main()

{ int x,y;

scanf(“%d”,&x);

if(x>-5&&x<0)

y=x;

printf(“y=%dn”,y);

else if(x==0)

y=x-1;

printf(“y=%dn”,y);

else if(x>0&&x<10)

y=x+1;

printf(“y=%dn”,y);

else

printf(“Data out of rangen”);

}(2)#include

void main(){ int x,y;

scanf(“%d”,&x);

switch(x)

{

case-1:

case-2:

case-3:

case-4:y=x;printf(“y=%dn”,y);break;

case 0:y=x-1;printf(“y=%dn”,y);break;

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:y=x+1;printf(“y=%dn”,y);break;

default: printf(“Data out of rangen”);

} 4.#include

void main(){

long num;

int indiv,ten,hundred,thousand,tenthousand,place;/*分别代表个位、十位、百位、千位、万位和位数*/

printf(“Please Input a integer(0~99999):”);

scanf(“%ld”,&num);

if(num>9999)

place=5;

else if(num>999)

place=4;

else if(num>99)

place=3;

else if(num>9)

place=2;

else

place=1;

printf(“place=%dn”,place);

printf(“For each digit:”);

tenthousand=num/10000;

thousand=(int)(num-tenthousand*10000)/1000;hundred=(int)(num-tenthousand*10000-thousand*1000)/100;ten=(int)(num-tenthousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-tenthousand*10000-thousand*1000-hundred*100-ten*10);

switch(place)

{

case 1:printf(“%d”,indiv);break;

case 2:printf(“%d,%d”,ten,indiv);break;

case 3:printf(“%d,%d,%d”,hundred,ten,indiv);break;

case 4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);break;

case 5:printf(“%d,%d,%d,%d,%d”,tenthousand,thousand,hundred,ten,indiv);

} }

一、选择题

1.D

2.C

3.D

4.B

5.C 6.B

7.C

8.B

9.B

10.B

二、填空题

1.(1)x>=0 或!(x<0)

(2)x

(2)j%3 或 j%3!=0 3.(1)pi

(2)fabs(t)

(3)4

三、写出下列程序的运行结果

1.1

2.y=-1

3.4

4.a=2,b=8

5.*7 6.45

7.1

8.s=0

四、编程题

1.#include

void main(){

int i,j,k;for(i=1;i<=4;i++)/*输出上面4行*号*/ { for(j=1;j<=5-i;j++)

printf(“ “);/*输出*号前面的空格*/

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

printf(“*”);/*输出*号*/

printf(“n”);/*输出完一行*号后换行*/ }

} 2.

#include “stdio.h” void main(){

int num,n1,n2,p=1;

scanf(“%d”,&num);while(num){ n1=num/10;

n2=num%10;

p*=n2;

num=n1;}

printf(“num=%d,p=%dn”,num,p);} 3.

#include “stdio.h” void main(){

int i;

float s1,s2,s3,s4,s5,sum,avg;

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

{

printf(“Please enter a five subjects scoren”);

scanf(“%f,%f,%f,%f,%f”,&s1,&s2,&s3,&s4,&s5);

sum=0;

sum+=s1+s2+s3+s4+s5;

avg=sum/5;

printf(“%d individuals,the average score is %.2fn”,i,avg);

} }

一、选择题

1.D

2.C

3.D

4.D

5.B 6.A

7.C

8.D

9.A

二、填空题

1.地址常量

2.非0

3.3.(1)j=9

(2)j>=0

4.(1)0

(2)6 5.(1)gets(temp);

(2)strcpy(temp,str);

6.(1)i<3

(2)a[i][i] 7.(1)&a[i]

(2)i%4==0

(3)printf(“n:”);

8.(1)s[i]>=48 && s[i]<=57 或s[i]>='0' && s[i]<='9'

(2)d[j]=0;或d[j]='';

三、写出下列程序的运行结果

1.13715

2.s=15

3.58

4.11

5.7 0 6.how

7.max=9,row=1,col=0

8.6,4,3,2,are you? I am fine

四、编程题

1.#include

#define N 10

void main(){ int a[32],x,k,r,i;

printf(“Please input an integer:“);

k=-1;

do

{ r=x%2;

a[++k]=r;

x/=2;

}

while(x>=1);

for(i=k;i>=0;i--)printf(“%1d”,a[i]);printf(“n”);

} 2.#include

#define N 10

void main(){ int a[N+1]={10,20,30,40,50,60,70,80,90,100};

int t1,t2,num,i,j;

printf(“array a:n”);for(i=0;i

printf(“n”);

printf(“Insert data:”);

scanf(“%d”,&num);

if(num>a[N-1])

a[N]=num;

else

{ for(i=0;i

{ if(a[i]>num)

{ t1=a[i];

a[i]=num;

for(j=i+1;j

{ t2=a[j];a[j]=t1;t1=t2;}

break;

}

}

}

printf(”Current array a:n”);for(i=0;i

#define N 6

void main(){ int i,j,a[N][N];for(i=1;i

a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i

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

printf(”n”);

} } 4.

#include “stdio.h”

void main()

{ char s[80],t[80],d;

int i,j;

printf(“Please enter a string:n”);

gets(s);

printf(“delete?n”);

d=getchar();

for(i=j=0;s[i]!='';i++)

if(s[i]!=d){ t[j]=s[i];j++;} t[j]='';printf(“%sn”,t);

} 5.#include “stdio.h”

#define N 8

void main()

{

int s[N][3],i,j,k,m,t1;

float a[N],sum,t2;

for(i=0;i

{

printf(“Please enter the %d-th three subjects scoren”,i);

sum=0;

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

{

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

sum+=s[i][j];

}

a[i]=sum/3;

}

for(i=0;i

{

k=i;

for(j=i+1;j

if(a[k]

if(k!=i)

{ for(m=0;m<3;m++)

{ t1=s[i][m];s[i][m]=s[k][m];s[k][m]=t1;} /*交换整行的值*/

t2=a[i];a[i]=a[k];a[k]=t2;

}

}

for(i=0;i

{

printf(“%d-th ”,i);

for(j=0;j

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

}

printf(“%.2fn”,a[i]);

}

一、选择题

1.C

2.A

3.B

4.B

5.A 6.D

7.C

8.D

9.C

10.C

二、填空题 1.struct STRU t[20];

2.x.x、x.y、x.z.y、x.z.z

3.4,8

三、写出下列程序的运行结果

1.6

2.0

3.4E5S

4.21

5.Zhao,m,85,90

四、编程题

1.#include “stdio.h”

#define N 45

struct student

{

char name[20];

char sex[7];

int age;

int score;

}std[N];

void main()

{

int i,max=0,rowi;

for(i=0;i

{

printf(“Please enter the data of the %d-th student:n”,i);

printf(“name:”);

scanf(“%s”,std[i].name);

printf(“sex:”);

scanf(“%s”,std[i].sex);

printf(“age:”);

scanf(“%d”,&std[i].age);

printf(“score:”);

scanf(“%d”,&std[i].score);

if(max

{

max=std[i].score;

rowi=i;

}

}

printf(“name:%s ”,std[rowi].name);

printf(“sex:%s ”,std[rowi].sex);

printf(“age:%d ”,std[rowi].age);

printf(“score:%dn”,std[rowi].score);

} 2.#include “stdio.h”

#define N 5

struct student {

char name[20];

char sex[7];

int score;}std[N];void main(){

int i,ml=0,fml=0;

float sum=0,avg;

for(i=0;i

{

printf(“Please enter the data of the %d-th student:n”,i);

printf(“name:”);

scanf(“%s”,std[i].name);

printf(“sex:”);

scanf(“%s”,std[i].sex);

if(std[i].sex[0]=='m'||std[i].sex[0]=='M')

ml+=1;else

fml+=1;

printf(“score:”);

scanf(“%d”,&std[i].score);

sum+=std[i].score;}

avg=sum/N;

printf(“The number of male students:%dn”,ml);

printf(“The number of female students are:%dn”,fml);} printf(“The average scores are:%.2fn”,avg);

一、选择题

1.A

2.C

3.D

4.A

5.C 6.A

7.D

二、填空题

1.(1)high=mid-1

(2)low=mid+1

2.(1)int m

(2)m%i==0

(3)return s 3.(1)max=x[i][j]

(2)max

三、写出下列程序的运行结果

1.625

2.Qian,p,95,92

3.2

4.12

5.h=8

四、编程题

1.#include “stdio.h”

void main()

{

int prime(int);

int x;

printf(“nPlease input an integer:”);

scanf(“%d”,&x);

if(prime(x))

printf(“n%d is prime.n”,x);

else

printf(“n%d is not prime.n”,x);} int prime(int n){

int flag=1,i;

if(n%i==0)

for(i=2;i<=n-1 && flag==1;i++)

flag=0;

return(flag);

} 2.#include “stdio.h”

void delask(char a[])

{ int i,j;

char b[80];

for(i=j=0;a[i]!='';i++)

if(a[i]!='*')

{

while(a[i]!=''){

b[j]=a[i];

j++;

i++;}

break;

}

b[j]='';

for(i=0;b[i]!='';i++)

a[i]=b[i];

a[i]='';

}

void main()

{

char s[80];

printf(“Please enter a string:n”);

scanf(“%s”,s);

delask(s);

printf(“%sn”,s);

}

3.#include “stdio.h”

struct date

{

int day;

int month;

int year;

};

int days(struct date dt)

{

int y,m,d,ds[12]={31,28,31,30,31,30,31,31,30,31,30,31},i,s=0;

y=dt.year;

m=dt.month;

d=dt.day;

if(y%4==0 && y%100!=0||y%400==0)

ds[1]=29;

/* 计算每月的天数是本年第几天 */

switch(m)

{ case 1:for(i=0;i

s+=ds[i];

s+=d;

break;

case 2:for(i=0;i

s+=ds[i];

s+=d;

break;

case 3:for(i=0;i

s+=ds[i];

s+=d;

break;

case 4:for(i=0;i

s+=ds[i];

s+=d;

break;

case 5:for(i=0;i

s+=ds[i];

s+=d;

break;

case 6:for(i=0;i

s+=ds[i];

s+=d;

break;

case 7:for(i=0;i

s+=ds[i];

s+=d;

break;

case 8:for(i=0;i

s+=ds[i];

s+=d;

break;

case 9:for(i=0;i

s+=ds[i];

s+=d;

break;

case 10:for(i=0;i

s+=ds[i];

s+=d;

break;

case 11:for(i=0;i

s+=ds[i];

s+=d;

break;

case 12:for(i=0;i

s+=ds[i];

s+=d;

break;

}

return(s);

}

void main()

{

struct date ymd;

int dys;

printf(“Input year month and dayn”);

scanf(“%d,%d,%d”,&ymd.year,&ymd.month,&ymd.day);

dys=days(ymd);

printf(“Today is the first %d days in the middle of this year.n”,dys);

}

一、选择题

1.A

2.D

3.A

4. D

5.B

二、写出下列程序的运行结果

1.10

2.9

3.***

4.12 6. 1

三、编程题

1.#include “stdio.h”

#define N 10

float fmax=0,fmin=0;

float average(float fscore[],int n)

{

int i;

float faver,fsum=fscore[0];

fmax=fmin=fscore[0];

for(i=1;i

{

if(fscore[i]>fmax)

6.A

5.8

fmax=fscore[i];

else if(fscore[i]

fmin=fscore[i];

fsum+=fscore[i];

}

faver=fsum/n;

return(faver);

}

void main()

{

float fave,fnumb[N];

int i;

for(i=0;i

scanf(“%f”,&fnumb[i]);

fave=average(fnumb,N);

printf(“max=%.2f min=%.2f average=%.2fn”,fmax,fmin, fave);

} 2.此题有误,用宏定义较难实现。以下程序仅供参考 #include “stdio.h” void main(){

char strg[30]=“C Language Program”,c;

int i=0;

while((c=strg[i])!='')

{

i++;

if(c>='a' && c<='z')

c=c-32;

else

if(c>='A' && c<='Z')

c=c+32;

printf(“%c”,c);

}

printf(“n”);} 3.#include “stdio.h”

#include “math.h”

#define S(a,b,c)((a+b+c)/2)

#define AREA(a,b,c)sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))

void main()

{

float a,b,c;

printf(“Please input a,b,c:”);

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

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

printf(“%.2fn”,AREA(a,b,c));

else

printf(“It is not a triangle!n”);

}

一、选择题

1.B

2.D

3.D

4.D

5.C 6.A

7.A

8.C

9.D

10.A 11.A

12.B

13.C

14.A

15.C

二、写出下列程序的运行结果

1.2

2.0

3.10 5.CBADGFE

6.30,30

7.The data:

i=5

c=B

三、编程题

1.#include

#include

void fun(char *s,int *a,int *b)

{

while(*s!='')

{

if(*s>=65 && *s<=90)

*a+=1;

/* 可用(*a)++;*/

if(*s>=97 && *s<=122)

*b+=1;

/* 可用(*b)++;*/

s++;

}

}

void main()

{

char s[100];

int upper=0,lower=0;

printf(“请输入一串字符:n”);

gets(s);

fun(s,&upper,&lower);

printf(“upper=%d,lower=%dn”,upper,lower);

}

2.#include

void fun(int *p1,int *p2)

{

int p;

p=*p1;

*p1=*p2;

*p2=p;

}

void main()

{

int a,b,*p11,*p22;

4.8 8.4 4 4 45 6 7 8 9 10

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

p11=&a;p22=&b;

if(a

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

}

十一

一、选择题

1.B

2.D

3.B

4.C

5.C 6.C

7.C

8.A

9.D

10.B

二、写出下列程序的运行结果

1.1,2,3,0,0,1,2,3,0,0,2.this_is_a_test

20.010000

三、编程题

1.#include “stdio.h”

#include “stdlib.h”

void main()

{

FILE *fp;

char ch;

if((fp=fopen(“test”,“w”))==NULL)

{

printf(“Cannot open the file!n”);

exit(0);

}

printf(“Input a string:n”);

while((ch=getchar())!='!')

{

if(ch>='a' && ch<='z')

ch=ch-32;

fputc(ch,fp);

}

fclose(fp);

/* 以下是从文件中读出数据,并在屏幕上显示。在本题中可不写 */

fp=fopen(“test”,“r”);

while((ch=fgetc(fp))!=EOF)

putchar(ch);

printf(“n”);

fclose(fp);

} 2.#include “stdio.h”

#include “stdlib.h”

#define N 5

struct student

{

char num[10];

char name[9];

int score[3];

float avg;

}stu[N];

void main()

{

int i,j,sum;

FILE *fp;

for(i=0;i

{

printf(“Please input the data of the %d-th studentsn”,i);

printf(“studentID:”);

scanf(“%s”,stu[i].num);

printf(“name:”);

scanf(“%s”,stu[i].name);

sum=0;

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

{

printf(“score %d:”,j);

scanf(“%d”,&stu[i].score[j]);

sum+=stu[i].score[j];

}

stu[i].avg=sum/3.0;

}

/* 将数据写入文件 */

fp=fopen(“stud”,“w”);

for(i=0;i

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

printf(“File write error!n”);

fclose(fp);

/* 以下是从文件中读出数据,并在屏幕上显示。在本题中可不写 */

fp=fopen(“stud”,“r”);

for(i=0;i

{

fread(&stu[i],sizeof(struct student),1,fp);

printf(“%-10s %-10s”,stu[i].num,stu[i].name);

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

printf(“%8d ”,stu[i].score[j]);

printf(“%6.2fn”,stu[i].avg);

}

fclose(fp);

}

第二篇:C语言程序设计教程课后习题答案

C语言程序设计教程课后习题答案

第一章 C语言程序设计概述 -习题答案 算法的描述有哪些基本方法?

1、自然语言

2、专用工具C语言程序的基本结构是怎样的?举一个例子说明。

1、C语言程序由函数构成;

2、“/*”与“*/”之间的内容构成C语言程序的注释部分;

3、用预处理命令#include、#define可以包含有关文件或预定义信息;

4、大小写字母在C语言中是有区别的;

5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。C语言有什么特点?

1、具有结构语言的特点,程序之间很容易实现段的共享;

2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;

3、运算符丰富,包含的范围很广;

4、数据类型丰富;

5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;

6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;

7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。★指出合法与不合法的标识符命名。

AB12--√ leed_3--a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×说明下列Turbo C热键的功能。

F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。

①main()

{printf(“********************n”);printf(“ welcome you n”);printf(“ very good n);printf(”********************n“);} ②main()

{ int a,b,c,t;printf(”please input three numbers;“);scanf(”%d,%d,%d“,&a,&b,&c);/*教材S是错误的*/ t=max(max(a,b),c);printf(”max number is:%dn“,t);} int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);} 答

运行结果:

******************** welcome you very good ******************** 运行结果:

please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/ max number is:4 7 一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

main()8 在Turbo C环境下进行程序调试时,可以使用Run下拉菜单的___命令或按___键转到用户屏幕查看程序运行结果。

1、User screen

2、Alt+F5 9 ★C语言对标识符与关键字有些什么规定?

1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。

2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。C源程序输入后是如何进行保存的?

是以C为扩展名保存的纯文本文件。

第二章 C语言程序的基本数据类型与表达式 -习题答案 ★指出下列常数中哪些是符合C语法规定的。

''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--×请找出下列程序中的错误,改正后写出程序运行结果。

①void main(){int x,y=z=5,aver;x=7 AVER=(x+y+z)/3 printf(”AVER=%dn“,aver);} ②void main()

{ char c1='a';c2='b';c3='c';int a=3.5,b='A' printf(”a=%db='“endn”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 答

main(){int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(“AVER=%dn”,aver);}

运行结果:AVER=5 ②main()

{ char c1='a', c2='b', c3='c';int a=3,b='A';printf(“a=%d,b='%c'”end“n”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);}

运行结果:a=3,b='A'“end”

aabcc abc 3 写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。int 99

-1 char 'h'

unsigned int

float

55.78

long int

答 int 99 104 66 55 68-1 char 'c' 'h' 'B' '7' 'D'

unsigned int 99 104 66 55 68 65535

float 99.00 104.00 66.00 55.78 68.00-1.00

long int 99 104 66 55 68-1

★写出程序运行结果。

①void main(){int i,j;i=8,j=10;printf(“%d,%d,%d,%dn”,i,j,++i,j++);} ②main()

{ int a=1,b=2,c=30;;printf(“%d,%d,%d,%dn”,a=b=c,a=b==c,a==(b=c),a==(b==c));} 注意:a=b=c,a=b==c之间应为逗号,教材有误 答

运行结果: 9,11,9,10 运行结果: 30,1,0,0

③void main()

{int a=10,b=20,c=30,d;d=++a<=10||b-->=20||c++;printf(“%d,%d,%d,%dn”,a,b,c,d);}

运行结果: 11,19,30,1

★写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3)

⑵n++,a+=a-=a*=a ⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a

⑼a+b,18+(b=4)*3,(a/b,a%b)

⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾a

⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?

①m=(a=4,4*5)与m=a=4,4*5 ②(float)(a/b)与(float)a/b ③(int)a+b与(int)(a+b)④m%=2+a*3与m=m%2+a*3 ⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b 答

①前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;

②前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。

③因为a、b均为整数,其前后两个表达式的计算结果是一致的。

④前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;另外,前一表达式的m只被赋过一次值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。⑤前后表达式的计算结果应该是一致的:a=2, b=3, m=6 7 条件表达式x>0?x:-x的功能是什么?

如果x的值是一正数,则表达式的值为x值;如果x的值是一非正数,则表达式的值为-x。其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。用一个条件表达式描述从a、b、c中找出最大都赋给max.答

max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x为int型变量,则执行以下语句后x的值为()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下类型说明语句: char w;int x;float y;double z;则表达式w*x+z-y的结果为()类型。A.float B.char C.int D.double 答 D.第三章 顺序结构程序设计 -习题答案 变量k为float类型,调用函数scanf(“%d”,&k),不能使变量k得到正确数值的原因是___。

格式修饰符与变量类型不一致。因为%d输入的数据类型应该为十进制整数,而&k为占用4个字节的float类型变量的地址。★a=1234,b=12,c=34,则执行“printf(“|%3d%3d%-3d|n”,a,b,c);”后的输出是___。

|1234 1234 |

分析如下:

①%3d为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。

②%-3d为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。★设有“int a=255,b=8;”,则“printf(“%x,%on”,a,b);”输出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”则输出为FF,10。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“%x”则输出小写,如果是“%X”则输出大写。

②如果希望在输出十六进制时输出前导符0x或0X,则以上输出语句应改“printf(“%#x,%on”,a,b);”为或“printf(“%#X,%on”,a,b);”。本条解释不必须掌握。★以下程序输出的结果是___。main(){ int a1=1,a2=0,a3=2;printf(“%d,%d,%dn”,a1,a1+a2+a3,a3-a1);} 答 1,3,1 5 printf函数中用到格式符%5s,其中5表示输出字符占用5列。如果字符串长度大于5,则按___输出;如果字符串长度小于5,则按___输出。

①实际 ②左端补空格 6 ★已定义变量如下: int a1,a2;char c1,c2;若要求输入a1、a2、c1和c2的值,正确的输入函数调用语句是___。

scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);7 输入两个整型变量a、b的值,输出下列算式以及运算结果___。a+b、a-b、a*b、a/b、(float)a/b、a%b 每个算式占一行。如a=10,b=5,a+b输出为:10+5=15 答

设int a=10,b=5;以下为输出语句及结果: ①printf(“%d+%d=%dn”,a,b,a+b);10+5=15 ②printf(“%d-%d=%dn”,a,b,a-b);10-5=5 ③printf(“%d*%d=%dn”,a,b,a*b);10*5=50 ④printf(“%d/%d=%dn”,a,b,a/b);10/5=2 ⑤printf(“%(float)d/%d=%fn”,a,b,(float)a/b);(float)10/5=2.000000 ⑥printf(“%d%%%d=%dn”,a,b,a%b);10%5=0 8 ★输入一个非负数,计算以这个数为半径的圆周长和面积。答

#define PI 3.1415926 main(){ float r,l,area;printf(“Input a positive:”);scanf(“%f”,&r);l=2*PI*r;area=PI*r*r;printf(“l=%ftarea=%fn”,l,area);} 9 输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。

main(){ int x,y;printf(“Input a number(100-999):”);scanf(“%d”,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意分析此处算法*/

第三篇:自考Java语言程序设计(一)课后习题及答案

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........自考Java语言程序设计

(一)课后习题及答案

自考Java语言程序设计

(一)第一章Java语言概述课后习题

一、Java语言概述

1.Java语言有哪些特点?

2.什么叫做类?什么叫做对象?

3.简述Java的运行机制。

4.简述Java应用程序的开发流程。

5.当初Sun公司发展Java的原因是:来源:www.xiexiebang.comumber_1 =

new ComplexNumber(3,-5);

ComplexNumber cNumber_2 = 本文来源:考试大网

new ComplexNumber(2,2);

double d = 10.0;

System.out.println(cNumber_1.toString()+ “ 加 ”

+ cNumber_2.toString()+ “ 等于 ”

+ cNumber_1.complexAdd(cNumber_2).toString());

System.out.println(cNumber_1.toString()+ “ 加 ”

+ d + “ 等于 ”

+ cNumber_1.complexAdd(d).toString());

System.out.println(cNumber_1.toString()+ “ 减 ”

+ cNumber_2.toString()+ “ 等于 ”

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........+ cNumber_1.complexMinus(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 减 ” + d + “ 等于 ” + cNumber_1.complexMinus(d).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + cNumber_2.toString()+ “ 等于 ” + cNumber_1.complexMulti(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + d + “ 等于 ” + cNumber_1.complexMulti(d).toString());} } class ComplexNumber { //域

private double m_dRealPart;private double m_dImaginPart;//构造方法

ComplexNumber(){ m_dRealPart = 0.0;m_dImaginPart = 0.0;} ComplexNumber(double r,double i){ m_dRealPart = r;m_dImaginPart = i;} ComplexNumber(ComplexNumber c){ m_dRealPart = c.getRealPart();m_dImaginPart = c.getImaginaryPart();} //get,set方法

double getRealPart(){ return m_dRealPart;} double getImaginaryPart(){ return m_dImaginPart;} void setRealPart(double d){

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........m_dRealPart = d;} void setImaginaryPart(double d){ m_dImaginPart = d;} //复数运算方法

ComplexNumber complexAdd(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart + c.getRealPart(), this.m_dImaginPart + c.getImaginaryPart());} ComplexNumber complexAdd(double c){ return new ComplexNumber(this.m_dRealPart + c, this.m_dImaginPart);} ComplexNumber complexMinus(ComplexNumber c){ return new ComplexNumber(this.m_dRealPartc.getImaginaryPart());} ComplexNumber complexMinus(double c){来源:www.xiexiebang.com return new ComplexNumber(this.m_dRealPart-c, this.m_dImaginPart);} ComplexNumber complexMulti(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart * c.getRealPart()

-this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart()+ this.m_dImaginPart * c.getRealPart());} ComplexNumber complexMulti(double c){ return new ComplexNumber(this.m_dRealPart * c, this.m_dImaginPart * c);} //toString()public String toString()

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........{

return “(” + m_dRealPart + “ + ”

+ m_dImaginPart + “ i” + “)”;

}

}

8.答:接口是用来实现类间多重继承功能的结构。接口与类相似,但是接口中只能包括常量和抽象方法。定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。

9.答:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。

10.答:接口可以被继承。

SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();两个。

自考Java语言程序设计

(一)第七章Java常用类库介绍课后习题

七、Java 常用类库介绍

1.指出下列陈述是对还是错,并做出解释。

(1)当String对象用= = 比较时,如果String包括相同的值则结果为true。

(2)一个String类的对象在其创建后可被修改。

2.对于下列描述,各写出一条语句完成要求的任务

(1)比较s1中的串和s2中的串的内容的相等性;

(2)用+=向串s1附加串;

(3)判断s1中串的长度;来源:考试大

3.说明capacity()与length()用法上的差异?

4.如果ch为StringBuffer对象,ch=“Java Apple”,下列结果为何?

(1)ch.insert(3,’p’)(2)ch.append(“Basic”)

(3)ch.setlength(5)(4)ch.reverse()

5.Math类中提供用来常数π和e的静态属性分别是什么?

6.下面关于Vector类的说法正确的是()

(1)类Vector在java.util包中。

(2)一个向量(Vector)对象存放的是一组有序的对象。

(3)一个向量(Vector)对象大小可以根据存放的元素个数的增加而自动增加。

(4)一个向量(Vector)对象中每个元素可以是不同类型的对象。

7.有三个字符串,编写程序找出其中最大者。

8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。

9.设定5个字符串,要求只打印那些以字母“b”开头的串,编写程序完成。

10.设定一个有大小写字母的字符串和一个查找字符,使用类 String方法IndexOf()来判断在该字符串中该字符出现的次数。

参考答案

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........1.答:

(1)错。用= =操作符比较String对象实际上是判断它们在内存中是否为同一对象,并不是判断它们的值是否相同。

(2)错。String类的对象是常量。它们被创建后不可被修改。

2.答:

(1)s1.equals(s1,s2);

(2)s1+=s2;

(3)s1.length();

3.答:capacity()返回字符串对象的当前缓冲区的长度,length()返回字符串对象字符的长度。考试大收集整理

4.答:

(1)结果:Javpa Applet

(2)结果:Javpa AppletBasic

(3)结果:ch长度变为5

(4)结果:apvaJ

5.答:PI、E

6.答:(3)

7.public class max1

{

public static void main(String args[])

{

String s1= “Hello Java”;

String s2= “Java Applet”;

String s3= “Java”;

String s;

if(s1.compareTo(s2)<0)

s=s2;

else s=s1;

if(s.compareTo(s3)<0)

s=s3;

Systrm.out.println(“big=”+s);

}

}

8.public class out

{

public static void main(String args[])

{

String s1= “Hello Java”;

StringBuffer bufup=new StringBuffer();

StringBuffer buflow=new StringBuffer();

for(int I=0;I

{if(s1.charAt(i)<97)

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........{bufup.append(s1.charAt(i));bufup.append(' ');} else { buflow.append(s1.charAt(i));buflow.append('');} } System.out.println(“s1= ”+s1);System.out.println(“ uppercase= ”+bufup);System.out.println(“ lowercase= ”+buflow);} } 9.

public class prin_b { public static void main(String args[]){ String s1=“hello”;String s2=“bee”;String s3=“java”;String s4=“brove”;String s5=“bag”;if(s1.indexOf('b')= =0)System.out.println(s1);if(s2.indexOf('b')= =0)System.out.println(s2);if(s3.indexOf('b')= =0)System.out.println(s3);if(s4.indexOf('b')= =0)System.out.println(s4);if(s5.indexOf('b')= =0)System.out.println(s5);} } 10.

public class ppp { public static void main(String args[]){ String s1=“abcdefghi”;int num=0;for(int i=0;i {i=s1.indexof('e',i);num++;

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........}

System.out.print(“ s1=”+s1+“e=”);

if(num= =0)

System.out.println(“ no found”);

else System.out.println(num);

}

}

自考Java语言程序设计

(一)第八章Java异常处理及输入输出流简介课后习题

八、Java异常处理及输入输出流简介

1.列出5个常见的异常。

2.写出Java语言的异常处理机制的优点。

3.为什么异常处理技术不应该用于常规的程序控制?

4.引起异常产生的条件是什么?

5.异常没有被捕获将会发生什么?

6.编写一个程序,以说明catch(Exception e)如何捕获各种异常。

7.下面的代码段中finally语句块会被执行吗?

public class ExceptionExam3

{

public static void main(String [] args)

{

try

{

int [] a=new int[3];

System.exit(0);

}

catch(ArrayIndexOutOfBoundsException e)

{System.out.println(“发生了异常”);}

finally

{System.out.println(“Finally”);}

}

}

8.throws的作用是什么?

9.应在程序的什么地方使用异常处理?

10.下面的代码有什么错误吗?

class ExceptionExam{„}

throw new ExceptionExam();

11.异常类型匹配的处理方式。程序功能:首先输出“这是一个异常处理的例子”,然后在你程序中主动地产生一个 ArithmeticException 类型被0 除而产生的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e的方法getMessage 给出异常的具体类型并显示出来。

12.根据所给创建自定义异常类的使用格式,编写一个自定义异常的小程序。

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........13.什么叫流?流式输入输出有什么特点?

14.Java流被分为字节流、字符流两大流类,两者有什么区别?

15.File类有哪些构造函数和常用方法?

16.利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入。

17.编写一个程序,在当前目录下创建一个子目录test,在这个新创建的子目录下创建一个文件,并把这个文件设置成只读。

18.位置指针的作用是什么?RandomAccessFile类提供了哪些方法实现对指针的控制?

19.编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他符号的字符数。

20.编写一个程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文件中。采集者退散

21.编写一个程序,从键盘输入10个整数,并将这些数据排序后在标准输出上输出。

参考答案

1.答:内存耗尽、数组下标超出边界、被0除、非法的方法参数、算法溢出处。来源:考试大的美女编辑们

2.答:(1)Java通过面向对象的方法进行异常处理,把各种异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态特 性的复杂提供了强有力的控制方式。(2)Java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性。(3)Java的异常处理机制使得异常事件可以沿调用栈自动向上传播,而不是C语言中通过函数的返回值来传播,这样可以传递更多的信息,并且简化了代码的编写。(4)由于把事件当成事件处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。

3.答:a.异常处理用于不经常发生但通常导致程序终止的情况,因此要求编程人员为编译器的优化执行实现异常处理。b.常规控制结构的控制流程通常比异常的更为清晰、交流更高。c.在发生异常,并且没有释放异常发生之前分配的资源时,堆栈是展开的,所以会出现一些问题。d.“额外的”异常会妨碍真正错误类型的异常。这种使程序员更难 以跟踪大量的异常。

4.答:异常产生的方式有3种。第一种是在某些内部错误时,Java虚拟机可以产生异常,该异常不在你的程序控制范围内,通常不作处理。第二种是由程序代码中的错误引起,这种异常需要你的程序处理。第三种是通过使用throw语句手动生成的异常。

5.答:未捕获的异常最终会导致程序非正常终止。

6.public class ExceptionExam

{

public static void main(String [] args)

{

try

{

int i=0;

i=3/i;//将产生算术异常。

}

catch(ArithmeticException e)//找到了匹配的异常,执行该catch块。

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........{

System.out.println(“发生了ArithmeticException异常”);

}

catch(AarryIndexOutOfBoundsException e)//不是匹配的异常,且不会再捕获

//异常,如果发生数组索引超出范围所产生的异常,将执行该catch块。

{

System.out.println(“发生了AarryIndexOutOfBoundsException异常”);

}

catch(Exception e)

//前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。

{

System.out.println(“发生了异常”);

}

finally

{ System.out.println(“执行d Finally”);}

}

}

7.答:无论是出于何种原因,只要执行离开try/catch代码块,就会执行finally代码块。即无论try是否正常结束,都会执行 finally定义的最后的代码。如果try代码块中的任何代码或它的任何catch语句从方法返回,也会执行finally代码块。但本题中在try代 码块中执行了“System.exit(0);”语句,执行了这一语句后,Java虚拟机(JVM)将被终止。那么finally语句块一定不会被执行。

8.答:在某些情况下,如果一个方法产生自己不处理或无法处理的异常,它就必须在throws子句中声明该异常。

9.答:通常,可以采用两种方式来报告错误:返回值和异常。在Java中异常处理很常用,虽然返回错误代码在某些情况下是一种有效的方式,但是异常处理可以提供强大的结构化方法来处理异常。所以需要处理代码中的错误时就可以采用异常的方法进行处理。

10.答:ExceptionExam不是继承(扩展)Throwable的子类,只有Throwable的子类可以由throw抛出。所以,这一段代码会出错。

11.public class ExceptionExam1

{

public static void main(String [] args)

{

try

{int i=0;

i=3/i;

}

catch(ArithmeticException e)

{

System.out.println(“异常是:”+e.getMessage());

}

finally

{

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........System.out.println(“finally 语句被执行”);

}

}

}

注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception 是ArithmeticException 的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。

12.class Excp1 extends Exception

{}

class Excp2 extends Excp1

{}

public class ExceptionExam7

{

public static void main(String [] args)throws Exception

{

try

{

throw new Excp2();

}

catch(Excp2 e)

{

System.out.println(“catch1”);

throw new Excp1();

}

catch(Excp1 e)

{

System.out.println(“catch2”);

throw new Exception();

}

catch(Exception e)

{

System.out.println(“catch3”);

}

finally

{

System.out.println(“finally”);

}

}

}

说明:自定义异常类,关键是选择继承的超类——必须是Exception或者其子类。用异常代表错误,而不要再使用方法返回值。

13.答:所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来源和目标的数据都统一抽象为数据流。数据流可分为输入流和输出流,输

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........入流代表从其他设备流入计算机的数据序列,输出流代表从计算机流向外部设备的数据序列。

流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。所以流和队列一样,只能以“先进先出”的方式对其中的数据进行读写,而不能随意选择读写的位置。

14.答:两者都作为Object类的直接子类,基本输入流(无效Stream)和基本输出流(OutputStream)是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字符流的类。

15.答:构造函数有:

(1)public File(String pathname):创建一个对应于参数pathname的File类对象。参数pathname是包含目录和文件名的字符串。如果没有文件名,则代表目录。

(2)public File(String parent , String child):该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称。

(3)public File(File parent, String child):该构造函数与上面一个不同在于将parent的参数类型由String变为File,代表parent是一个已经创建的File类文件对象(指向目录)。

常用方法有:

(1)public boolean canWrite():返回文件是否可写。

(2)public boolean canRead():返回文件是否可读。

(3)public boolean createNewFile():当文件不存在时创建文件。

16.import java.io.*;

class CopyFile{

public static void main(String[] args){

String file1,file2;

int ch = 0;

try {

file1=args[0];

file2=args[1];

File无效Stream fis = new File无效Stream(file1);

FileOutputStream fos=new FileOutputStream(file2);

while((ch=fis.read())!=-1)

fos.write(ch);

fis.close();

fos.close();

}

catch(FileNotFoundException e){

System.out.println(“源文件:未找到!”);

}catch(ArrayIndexOutOfBoundsException e){

System.out.println(“缺少运行参数!”);

System.exit(-1);

}

catch(IOException e){

System.out.println(e.toString());

}

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........}

}

17.答:

import java.io.*;

public class NewFile{

public static void main(String args[]){

File f=new File(“test”);

if(f.exists()&&f.isDirectory())

System.err.println(“目录:”+f.toString()+“已经存在!”);

else{

if(f.mkdir()){

System.out.println(“目录”+f.getAbsolutePath()+“创建结束!”);

File f2=new File(f,“my.txt”);

try{

f2.createNewFile();

f2.setReadOnly();

}catch(IOException e){

System.out.println(e.toString());

}

System.out.println(“文件:”+f2.getAbsoluteFile()+“创建结束!”);

}

else

System.out.println(“目录”+f.getAbsoluteFile()+“创建失败!”);

}

}

}

18.答:要实现对文件的随机读取,也就是在文件的任何位置执行读写数据的操作,需要一个指针来指定读写的位置。在创建 RandomAccessFile类对象的同时,系统自动创建了一个指向这个文件开头的指针,当执行读写操作后,指针自动指向被读写数据之后的第一个字节 处。指针初始值是0,每读/写一个字节,指针自动增加1。RandomAccessFile类提供了一些控制指针移动的方法。

public long getFilePointer();获取当前指针指向文件的位置。考试大论坛

pulbic void seek(long pos);将指针移动到参数pos指定的位置。

public int skipBytes(int n);指针从当前位置向后移动n个字节位置,并返回指针实际移动的字节数。

19.答:

import java.io.*;

public class Count{

public static void main(String[] args)

{

int x=0,y=0,z=0;

int ch;

try{

while((ch=System.in.read())!='r'){

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')x++;else if(ch>='0'&&ch<='9')y++;else z++;} }catch(IOException e){ System.out.println(e.toString());} System.out.println(“英文字母:”+x);System.out.println(“数字字符:”+y);System.out.println(“其它字符:”+z);} } 20.答:

import java.io.*;public class InFile{ public static void main(String[] args){ int ch;try{ FileOutputStream out=new FileOutputStream(“a.txt”);while((ch=System.in.read())!='r'){ System.out.write(ch);out.write(ch);} out.close();System.out.write('n');}catch(IOException e){ System.out.println(e.toString());} System.out.println(“输出至文件完毕!”);} } 21.答:

import java.io.*;public class Sort{ public static void main(String args[]){ int a[]=new int[10];byte b[]=new byte[10];int t;String str;

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........System.out.println(“请输入10个整数:”);

try{

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

{System.out.print(“No.”+(i+1)+“: ”);

System.in.read(b);

str=new String(b);

str=str.trim();

a[i]=Integer.parseInt(str);

}

}catch(IOException e){

System.out.println(e.toString());

}

catch(NumberFormatException e){

System.out.println(e.toString());

}

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

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

{

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

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

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

System.out.println(a[i]+“t”);

}

}

自考Java语言程序设计

(一)第九章JavaApplet概述课后习题

九、Java Applet概述

1.下列方法中,哪一个不是Applet的基本方法()

A、init()B、run()C、stop()D、start()

2.在Java中判定Applet的来源的方法有()

A、getcodebase()B、get文档base()

C、getCodeBase()D、get文档Bade()

3.下面关于Applet的说法正确的是

A、Applet也需要main方法

B、Applet必须继承自javawt.Applet

C、Applet能访问本地文件

D、Applet程序不需要编译

4.Applet类的直接父类是()

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........()

A.Component类

B.Container类

C.Frame类

D.Panel类

5.判断:一个Applet编译后的类名是Test.class,运行此小程序的命令是Java Test。

6.编写同时具有Applet与Application的特征的程序。具体方法是:作为Application要定义main()方法,并且把 main()方法所在的类定义一个类。为使该程序成为一个Applet,main()方法所在的这个类必须继承Applet类或JApplet类。www.xiexiebang.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........A.FlowLayoutB.BorderLayout

C.GridLayoutD.CardLayout

10.编写程序,创建下面的GUI(不必为各组件提供功能)。考试大收集整理

参考答案

1: false

2:true

3:true

4.true

5:版面管理器

6.图形用户界面

7.mouseReleased

8.C

9.B

10.import javawt.*;

public class Chp9_3_A extends Frame{

TextField t=new TextField();

String[] op={“7”,“8”,“9”,“/”,“4”,“5”,“6”,“*”,“1”,“2”,“3”,“-”,“0”,“.”,“=”,“+”};

Button[] btn=new Button[16];

Panel p=new Panel();

public Chp9_3_A(){

setLayout(new BorderLayout());

p.setLayout(new GridLayout(4,4));

for(int i=0;i

btn[i]=new Button(op[i]);

p.add(btn[i]);

}

add(t,BorderLayout.NORTH);

add(p,BorderLayout.CENTER);

setSize(400,300);

}

public static void main(String[] args){

new Chp9_3_A().setVisible(true);

}

}

自考Java语言程序设计

(一)第十二章课后习题

十二、常用组件之一________命令按钮与标签框

1.判断:标签是是一个容器。()

2.判断:在Swing用户界面的程序设计中,容器可以被添加到其它容器中去。()

3.用户不能修改的文本称为_______。

4.关于awt和swing说法正确的是:来源:考试大

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........A、awt在不同操作系统中显示相同的风格。B、swing在不同的操作系统中显示相同的风格 C、javawt的子类

D、awt和swing都支持事件模型

5.下列_________用户图形界面组件在软件安装程序中是常见的。a.滑块

b.进度条来源:考试大 c.对话框 d.标签

6.包含可单击按钮的类的Java类库是__________。a.AWT b.Swing c.二者都有来源:www.xiexiebang.com d.二者都没有

7.下面的__________用户界面组件不是容器。a.JScrollPane b.JFrame考试大-全国最大教育类网站(www.xiexiebang.com)c.JWindows d.JScrollBar 8.创建下面的GUI,颜色列表框为红色、绿色和蓝色(不必为各组件提供功能)。参考答案 1.false 2.true 3.标签 4.B D 5.B 6.C 7.D 8.参考程序如下: import javawt.*;public class Chp9_3_B extends Frame{ Choice ch;Checkbox bg,fg;Button btnOK,btnCancel;Panel p,p1,p2;public Chp9_3_B(){ p=new Panel();p.setLayout(new GridLayout(2,1));p1=new Panel();p2=new Panel();p1.setLayout(new FlowLayout());p2.setLayout(new FlowLayout());ch=new Choice();ch.add(“红色”);

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........ch.add(“绿色”);ch.add(“蓝色”);bg=new Checkbox(“背景”);fg=new Checkbox(“前景”);p1.add(bg);p1.add(fg);btnOK=new Button(“确定”);btnCancel=new Button(“取消”);p2.add(btnOK);p2.add(btnCancel);p.add(p1);p.add(p2);add(ch,BorderLayout.NORTH);add(p,BorderLayout.CENTER);setSize(400,300);} public static void main(String[] args){ new Chp9_3_B().setVisible(true);} }

自考Java语言程序设计

(一)第十三章课后习题

十三、常用组件之二 _______单行文本框与多行文本框,单选框和复选框

1.判断:列表对象总包含滚动条。()

2.判断:面板的默认管理器是BorderLayout。

3.____________类用于创建一组单选按钮。来源:考试大

4.欲编写如下图的一个界面,用于显示用户指定的图像: 如果在区域A中只能放置一个

AWT组件,从各组件的本来功能角度考虑,最好使用哪种组件:

A、TextArea

B、Panel

C、Applet

D、Canvas

5.Java应用程序中的默认外观是_________。

A.Motif

B.Windows

C.METAl

6.创建下面的GUI,要求在文本框中输入分数,单击“求和”按钮后在结果文本框中显示总分。

7.编写一个将华氏温度转换为摄氏温度的程序。应从键盘输入华氏温度,然后通

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........过文本显示转换后的摄氏温度。使用下面的公式进行温度转换:

摄氏温度=5/9Χ(华氏温度-32)

8.编写一个程序,使用户能够使用鼠标在applet中绘制一个矩形。按住鼠标左键,确定矩形的左上角,然后拖动鼠标,在需要的位置(即矩形右下角)释放鼠标。另外,在状态栏中显示矩形面积。

参考答案

1.false

2.true

3.CheckboxGroup

4.D

5. C

6.参考程序如下:

import javawt.*;来源:考试大

import javawt.event.*;

public class Chp9_3_C extends Frame implements ActionListener{

TextField textField1,textField2,textField3;

Button button1=new Button(“求和”);

Panel panel1,panel2;

public Chp9_3_C(){

textField1=new TextField();

textField2=new TextField();

textField3=new TextField();

panel1=new Panel();

panel2=new Panel();

panel1.setLayout(new GridLayout(3,2));

panel2.setLayout(new FlowLayout());

panel1.add(new Label(“数学: ”));

panel1.add(textField1);

panel1.add(new Label(“英语: ”));

panel1.add(textField2);

panel1.add(new Label(“总分: ”));

panel1.add(textField3);

panel2.add(button1);

add(panel1,BorderLayout.CENTER);

add(panel2,BorderLayout.SOUTH);

button1.addActionListener(this);

setSize(300,200);

setVisible(true);

}

public static void main(String[] args){

new Chp9_3_C();

}

public void actionPerformed(ActionEvent e){

int n1,n2,sum;

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........n1=Integer.parseInt(textField1.getText());n2=Integer.parseInt(textField2.getText());sum=n1+n2;textField3.setText(“"+sum);} } 6.参考程序如下: import javawt.*;import javawt.event.*;public class Chp9_3_D extends Frame{ TextField textField1,textField2;Button button1;public Chp9_3_D(){ textField1=new TextField(30);textField2=new TextField(30);button1=new Button(”转换“);setLayout(new FlowLayout());add(new Label(”华氏温度:“));add(textField1);add(new Label(”摄氏温度:“));add(textField2);textField2.setEditable(false);add(button1);setSize(400,300);pack();button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ button1_actionPerformed(e);} });addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public static void main(String[] args){ new Chp9_3_D().setVisible(true);} private void button1_actionPerformed(ActionEvent e){ double d=Double.parseDouble(textField1.getText());double h=5.0/9.0*(d-32);textField2.setText(”“+h);}

更多优质自考资料尽在百度贴吧自考乐园俱乐部

(http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........}

7.参考程序如下:

import javapplet.Applet;

import javawt.*;

import javawt.event.*;

public class Chp9_3_E MouseListener,MouseMotionListener{

int x1,y1,x2,y2;

public void init(){

addMouseListener(this);

addMouseMotionListener(this);

}

public void paint(Graphics g){

g.drawRect(x1,y1,x2,y2);

int area=Math.abs(x2-x1)*Math.abs(y2-y1);

showStatus(”矩形面积: "+area);

}

//implementation of MouseListener

public void mousePressed(MouseEvent e){

x1=e.getX();

y1=e.getY();

}

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

//implementation of MouseMotionEvent

public void mouseDragged(MouseEvent e){

x2=e.getX();

y2=e.getY();

repaint();

}

public void mouseMoved(MouseEvent e){}

}

extends Applet implements

第四篇:c语言程序设计课后习题答案 第7章

/*练习7-1*/ #include main(){ int a[10],n,sum=0,i;float ave;printf(“enter n:n”);scanf(“%d”,&n);printf(“enter %d ge zheng shu:n”,n);for(i=0;i

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

sum=sum+a[i];

} ave=1.0*sum/n;printf(“ave=%.2fn”,ave);}

/*练习7-2*/ #include main(){

int a[10],n,i;printf(“enter n:n”);scanf(“%d”,&n);printf(“enter %d ge zheng shu:n”,n);for(i=0;i

printf(“第%d个:n”,i+1);

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

printf(“倒序:n”);

while(a[i]!=0)

{

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

a[i]=a[i]/10;

}

printf(“n”);} } /*练习7-3*/ #include main(){

int a[5],x,i,k=0;printf(“enter 5 ge zheng shu:n”);for(i=0;i<5;i++)

scanf(“%d”,&a[i]);printf(“enter x:n”);scanf(“%d”,&x);

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

if(a[i]==x)

{

printf(“xia biao wei : %dn”,i);

k=1;

}

if(k==0)

printf(“Not Foundn”);}

/*练习7-4*/ #include main(){

int a[10],n,i,k=0,x,max;printf(“enter n:n”);scanf(“%d”,&n);printf(“enter %d ge zheng shu:n”,n);for(i=0;i

scanf(“%d”,&a[i]);max=a[0];for(i=1;i<=n-1;i++)

if(max

{

max=a[i];

k=i;

}

printf(“max=%d

xia biao=%d”,max,k);

x=a[n-1];

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

a[k]=x;

printf(“n”);

for(i=0;i

printf(“

%d

”,a[i]);

printf(“n”);}

/*练习7-11*/ #include main(){ char str[80];int i,j,count=0;printf(“输入一个以回车符结束的字符串:n”);i=0;while((str[i]=getchar())!='n')

i++;str[i]='';printf(“再输入一个字符:n”);str[80]=getchar();for(j=0;j<=i-1;j++)

if(str[80]==str[j])

count++;printf(“%c字符在字符串中出现的次数为:%dn”,str[80],count);for(j=0;j<=i-1;j++)

putchar(str[j]);printf(“n”);

}

/*习题七 1*/ #include main(){ int x,y,n,a[10],i,min,max;printf(“输入 n:n”);scanf(“%d”,&n);printf(“输入%d个整数:n”,n);for(i=0;i

scanf(“%d”,&a[i]);min=0;for(i=1;ia[i])

min=i;max=0;for(i=1;i

max=i;x=a[min];a[min]=a[0];a[0]=x;

y=a[max];a[max]=a[n-1];a[n-1]=y;for(i=0;i

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

printf(“n”);

}

/*习题七 2*/ #include main(){ int x,n,a[10],i,j,max;printf(“输入 n:n”);scanf(“%d”,&n);printf(“输入%d个整数:n”,n);for(i=0;i

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

for(i=1;i

max=i-1;

for(j=i;j

max=j;x=a[max];a[max]=a[i-1];a[i-1]=x;} for(i=0;i

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

printf(“n”);

}

/*习题七 4*/ #include main(){ int m,n,a[6][6],i,j,b[6]={0};

printf(“输入m:n”);scanf(“%d”,&m);printf(“输入n:n”);scanf(“%d”,&n);

printf(“输入%d和%d的矩阵:n”,m,n);for(i=0;i

for(j=0;j

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

b[i]=b[i]+a[i][j];} } printf(“shu chu:n”);

for(i=0;i

for(j=0;j

printf(“

%d”,a[i][j]);

printf(“n”);} printf(“shu chu hang he :n”);for(i=0;i

printf(“%4d”,b[i]);

printf(“n”);

}

/*习题7.6*/ #include main(){ char str[80];int i,j;printf(“输入一个以回车符结束的字符串:n”);i=0;while((str[i]=getchar())!='n')

i++;printf(“倒序输出:n”);

for(j=i-1;j>=0;j--)

putchar(str[j]);

printf(“n”);

}

/*新7.6*/ #include main(){ int a[10],i,n;printf(“输入整数n:n”);scanf(“%d”,&n);printf(“输入%d个整数:n”,n);for(i=0;i

scanf(“%d”,&a[i]);} printf(“倒序输出:n”);for(i=0;i

/*习题7.7*/ #include main(){ char str[80];int i,j,count=0;printf(“输入一个以回车符结束的字符串:n”);i=0;while((str[i]=getchar())!='n')

i++;printf(“输出其中的大写辅音字母:n”);

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

if(str[j]>='B'&&str[j]<='Z'&&str[j]!='E'&&str[j]!='I'&&str[j]!='O'&&str[j]!='U')

{

putchar(str[j]);

count++;

}

printf(“n”);

printf(“大写辅音字母数量为:%dn”,count);}

/*习题7.8*/ #include main(){ char str[80];int i,j,count=0;printf(“输入一个以回车符结束的字符串:n”);i=0;while((str[i]=getchar())!='n')

i++;printf(“输出相应交换后的字符串:n”);

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

if(str[j]>='A'&&str[j]<='Z')

str[j]=155-str[j];

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

putchar(str[j]);printf(“n”);}

第五篇:《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案

――武汉大学出版社

习题1参考答案

一、选择题 1.A 2.D

二、填空题

1.BASIC、FORTRAN、AL_GOL60和COBOL 2.8 3.关键字

4.编辑、编译、链接和运行

三、简答题 1.答:

(1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。

(2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。

(4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。

(5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。(6)C语言与汇编语言相比,可移植性好。

(7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。

2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。3.答:

(1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。(2)工业控制。由于C语言具有简洁、灵活、代码效率高、能进行位操作等优点,C语言大量应用在单板机、单片机上,以及嵌入式领域等。

(3)图形图像处理。C语言在内存管理和进程控制方面有丰富的指令,而且它能提供快速运行的代码,因而C语言适合进行图形程序设计。

(4)教学领域。C语言是理想的结构化程序设计语言,其描述能力强,应用十分广泛,因此广泛应用于教学领域。许多计算机相关课程,如数据结构及算法大多是用C语言进行描述的。

习题2参考答案

一、选择题 1.A 2.A 3.C

二、填空题

1.基本数据类型、构造数据类型、指针类型、空类型 2.反斜线“\”

3.枚举数据类型(Enumerated Data Type)

三、简答题 1.答:

在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类。

基本类型是数据类型的基础,由它可以构造出其他复杂的数据类型。基本类型的值不可以再分解为其他类型。C语言的基本类型包括整型、实型(浮点型)、字符型和枚举型。

C语言的构造类型包括数组类型、结构类型和联合类型。构造类型是根据已定义的一种或多种数据类型用构造的方法定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”或“元素”都是一个基本数据类型,或又是一个构造类型。

指针是一种特殊而又具重要作用的数据类型,其值表示某个量在内存中的地址。虽然指针变量的取值类似于整型量,但这是两种完全不同类型的量,一个是变量的数值,一个是变量在内存中存放的地址。

在调用函数时,被调用函数通常应向调用函数返回一个函数值。返回的函数值具有一定的数据类型,应在函数定义的函数说明中给以说明。例如,在例1-1中给出的max函数定义中,函数头为“int max(int a,int b,int c)”,其中写在函数名max之前的类型说明符“int”表示该函数的返回值为整型量。但是,也有一类函数,被调用后并不向调用函数返回函数值,这种函数可以定义为“空类型”(也称“无值型”),其类型说明符为void。

习题3参考答案

一、选择题 1.C 2.B 3.B 4.D

二、填空题

1.4字节,1字节,4字节,8字节 2.20 3.6

4.26

5.256

三、简答题

1.C语言的基本类型包括整型、实型(浮点型)、字符型和枚举型。

2.定义符号常量和定义变量都要指定数据类型,系统将为其分配一定的存储空间。其不同之处在于:定义符号常量必须给出常量值,且以后不能修改本常量的值;而变量可以在定义变量的同时赋初值,以后可以修改该变量。

3.常量就是在程序的运行过程中该量是不可修改的量;变量在程序的运行过程中允许对该变量的值进行修改。

四、程序题

1.程序运行结果为: 10 10 11-10-11 2.程序运行结果为:

3,12,4,4

习题4参考答案

一、选择题

1.C 2.D 3.C 4.C 5.B 6.D 7.B 8.C 9.B

二、填空题

1.!&&

||

2.0 1 3.1 4.4 5.-1

三、编程题

1.给出等级成绩′A′、′B′、′C′、′D′、′E′,假设,90分以上为′A′,80~89分为′B′,70~79分为′C′,60~69分为′D′,60分以下为′E′,输入一个等级成绩,问属于哪一个分数段。参考代码如下: main(){

int score,m,n;

char grade;

n=1;

while(n)

{ printf(“Please enter the score:”);

scanf(“%d”,&score);

if((score>100)||(score<0))printf(“n Wrong!n”);

else n=0;

}

if(score==100)m=9;

else m=(score-score%10)/10;

switch(m)

{ case 0:case 1:case 2:case 3:case 4:case 5:grade='E';break;

case 6:grade='D';break;

case 7:grade='C';break;

case 8:grade='B';break;

case 9:grade='A';

}

printf(“score=%d,grade=%cn”,score,grade);}

2.编程序打印出以下图形: 1 121 12321 „

***21 参考代码如下: #include main(){

int i,j;

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

{

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

printf(“%d”,j);

for(j=i-1;j>0;j--)

printf(“%d”,j);

printf(“n”);

} } 3.用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案各换多少枚? [提示:设5分、2分和1分的硬币各换x,y,z枚,依题意有x+y+z=100,5x+2y+z=150,由于每一种硬币都要有,故5分硬币最多可换28枚,2分硬币最多可换73枚,1分硬币可换100-x-y枚,x,y,z只需满足第2个方程即可打印,对每一组满足条件的x,y,z值,用计数器计数即可得到兑换方案的数目。] 参考代码如下: main(){

int x,y,z,s=0;

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

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

for(z=1;z<=148;z++)

{

if(150==5*x+2*y+z)

if(100==x+y+z){

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

s++;}

}

printf(“s=%dn”,s);}

4.编程:从键盘输入正整数n,输出1+(1+2)+(1+2+3)+„„+(1+2+3+„+n)。参考代码如下: #include main(){ int n,i,s=0,t=0;printf(“Please enter n=”);scanf(“%d”,&n);for(i=1;i<=n;i++)

{

t=t+i;

s=s+t;

} printf(“s=%dn”,s);}

习题5参考答案

一、选择题

1.B 2.A 3.A 4.D 5.C 6.B 7.A 8.A

二、填空题

1.按行的顺序依次存放的 2.0 3.4 4.6

三、编程题

1.有一个多项式:Pn(x)=a0xn+a1xn-1+„+an

它们的系数a0,a1,„,an存放在一个一维数组中。编制程序,输入系数和x的值,计算并输出Pn(x)。参考代码如下: #define N 4 main(){ int a[N+1],p,x,i;

printf(“Please enter a[%d],...,a[0]:n”,N);

for(i=N;i>=0;i--)

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

printf(“Please enter x=n”);

scanf(“%d”,&x);

p=a[N];

for(i=N;i>0;i--)

{

p=p*x+a[i-1];

}

printf(“Pn(x)=%dn”,p);} 2.打印以下的杨辉三角形(要求打印6行)。1 11 121 1331 14641 15101051 参考代码如下: #include #include #define N 6 main(){

int i,j,max[N][N];

for(i=0;i

{

for(j=0;j

{ max[i][0]=1;

max[i][i]=1;

}

}

for(i=2;i

{

for(j=1;j

{ max[i][j]=max[i-1][j-1]+max[i-1][j];}

}

for(i=0;i

{

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

{ printf(“%d”,max[i][j]);}

printf(“n”);

} } 3.编写程序,将一个数插入到有序的数列中去,插入后的数列仍然有序。参考代码如下:/*假设原有5个数*/ #include

main()

{ int a[6]={1,2,6,10,15};

int n,i,j;

printf(“Please enter the insert number:”);

scanf(“%d”,&n);

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

if(n>a[i])

continue;

else

break;

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

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

a[i]=n;

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

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

printf(“n”);

}

4.编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found。参考代码如下: #include

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10};

int n,i,j,k=0;

printf(“Please enter the number:”);

scanf(“%d”,&n);

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

{ while(n==a[i]){k=1;j=i;break;}

}

if(k==1)

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

else

printf(“no found.n”);} 5.编程将下列矩阵中的元素向右移动一列,最右一列移至第一列。

10 12 [提示:用二维数组v存放矩阵中元素,数组v可在定义时初始化;有两种方法实现这种移动:一种方法是将移动后的元素放在另一个二维数组中;另一种方法是利用一个中间变量仍将移动后的元素放在数组v中。] #include void main(){ int i,j;

int a[2][3]={1,4,6,8,10,12};

int b[2][3];

b[0][0]=a[0][2];

b[0][1]=a[0][0];

b[0][2]=a[0][1];

b[1][0]=a[1][2];

b[1][1]=a[1][0];

b[1][2]=a[1][1];

printf(“a[2][3]:”);

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

{ printf(“n”);

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

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

}

printf(“nresult:n”);

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

{ printf(“n”);

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

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

}

printf(“n”);

getch();} 6.利用公式c(i,j)a(i,j)b(i,j)计算m×n的矩阵A和m×n的矩阵B之和,已知a(i,j)为矩阵A的元素,b(i,j)为矩阵B的元素,c(i,j)为矩阵C的元素,i1,2,...,m,j1,2,...,n。[提示:用二维数组元素做函数参数编程实现矩阵相加。] #include #include #define M 2 #define N 2 int a[M][N];int b[M][N];int c[M][N];void matrix(int a[][M],int b[][N]);main(){

int i,j,t;

clrscr();

printf(“Please input a[%d][%d]n”,M,N);

for(i=0;i

for(j=0;j

{ scanf(“%d”,&t);

a[i][j]=t;

}

printf(“Please input b[%d][%d]n”,M,N);

for(i=0;i

for(j=0;j

{ scanf(“%d”,&t);

b[i][j]=t;

}

matrix(b,c);

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

for(i=0;i

{ printf(“n”);

for(j=0;j

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

}

printf(“n”);

printf(“b[%d][%d]”,M,N);

for(i=0;i

{ printf(“n”);

for(j=0;j

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

}

printf(“n”);

printf(“c[%d][%d]=A+B:”,M,N);

for(i=0;i

{ printf(“n”);

for(j=0;j

printf(“%5d”,c[i][j]);

} } void matrix(int a[][M],int b[][N]){ int i,j,k,t;

for(i=0;i

for(j=0;j

c[i][j]=a[i][j]+b[i][j];}

习题6参考答案

一、选择题

1.A 2.D 3.D

二、填空题

1.指针

取地址 2.3 3.9876

876 4.24

三、编程题

1.输入3个整数,按从大到小的次序输出。参考代码如下: main(){

int a[3],i,j,t;

printf(“Please enter three number:n”)

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

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

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

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

if(a[j]

{ t=a[j];a[j]=a[j+1];a[j+1]=t;}

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

printf(“%dn”,a[i]);} 2.编写将n阶正方矩阵进行转置的函数。在主函数中对一个4行4列的矩阵调用此函数。参考代码如下: int array[4][4];convert(int array[4][4]){

int i,j,t;

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

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

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

} } main(){ int i,j;printf(“Input array:n”);for(i=0;i<4;i++)

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

scanf(“%d”,&array[i][j]);printf(“noriginal array :n”);for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

printf(“%5d”,array[i][j]);

printf(“n”);} convert(array);printf(“convert array:n”);for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

printf(“%5d”,array[i][j]);

printf(“n”);

} } 3.有三个整型变量i,j, k,请编写程序,设置三个指针变量p1,p2,p3,分别指向i, j,k。然后通过指针变量使i,j,k三个变量的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。要求输出i,j, k的原值和新值。参考代码如下: main(){

int i, j , k, temper;

int *p1, *p2, *p3;

printf(“Please input 3 integers:n”);

scanf(“%d%d%d”,&i, &j, &k);

p1=&i;p2=&j;p3=&k;

printf(“before changed ,the 3 numbers are:n”);

printf(“i=%d, j=%d,k=%dn”,i, j, k);

temper=*p1;*p1=*p3;*p3=*p2;*p2=temper;

printf(“after changed ,the 3 numbers are:n”);

printf(“i=%d, j=%d,k=%dn”,i, j, k);}

4.用指针编写程序,把输入的字符串按逆顺序输出。参考代码如下: #include #include char *s=“1a2b3c4d”;void main(){

int i,j;

char t;

for(i=0,j=strlen(s)-1;i

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

printf(“%sn”,s);}

习题7参考答案

一、选择题 1.C 2.B 3.C

二、填空题 1.float 2.自动(auto)3.12 4.9.000000

二、编程题

1.编写函数,已知三角形的三个边长,求三角形的面积。参考代码如下: #include #include main(){

float a,b,c,s,area;

printf(“Please enter three sides:n”);

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

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

{

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

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

printf(“area=%.2fn”,area);

}

else printf(“It is not a triangle!n”);}

2.编程计算p=k!(m-k)!的值。参考代码如下: #include void main(){

int k,m;

long p;

printf(“Please enter k,m:”);

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

p=f(k)*f(m-k);

printf(“%dn”,p);} int f(int n){

if(n>1)

return n*f(n-1);

else

return 1;}

3.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。并在主函数中调用该函数时,使用数组作为实际参数。参考代码如下: #define N 3 int array[N][N];convert(int array[N][N]){

int i,j,t;

for(i=0;i

for(j=i+1;j

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

} } main(){ int i,j;printf(“Input array(3*3):n”);for(i=0;i

for(j=0;j

scanf(“%d”,&array[i][j]);printf(“noriginal array:n”);for(i=0;i

{ for(j=0;j

printf(“%5d”,array[i][j]);

printf(“n”);} convert(array);printf(“convert array:n”);for(i=0;i

{ for(j=0;j

printf(“%5d”,array[i][j]);

printf(“n”);

} }

4.设计一个函数,用以计算下面数列前n项之和(以n为形参变量)。2/

1、3/

2、5/

3、8/

5、13/

8、21/

13、„。参考代码如下: #define N 6 main(){

int n=N,i=1;

float s=0;

while(i<=n)

{

s=s+(i+1.0)/i;

i++;

}

printf(“s(%d)=%.5fn”,n,s);}

5.如果一个数恰好等于它的因子之和,则该数称为“完数”。例如:6的因子是1、2、3,而6=1+2+3。编程序输出1000之内的所有完数。输出形式是:“6它的因子是1,2,3”。参考代码如下: main(){

static int k[100];

int i,j,n,s;

for(j=2;j<1000;j++)

{

n=-1;

s=j;

for(i=1;i

{

if((j%i)==0)

{

n++;

s=s-i;

k[n]=i;

}

}

if(s==0)

{

printf(“%d is a wanshu”,j);

for(i=0;i

printf(“%d,”,k[i]);

printf(“%dn”,k[n]);

}

} }

一、选择题

1.C 2.A 3.A 4.B

二、填空题

8参考答案

习题1.pt=s1;pt->student.no=1001;2.0,1,2,100,101,102 3.结构体变量

4.Four, Three,Four

三、编程题

1.有10个学生,每个学生的数据包括学号(num)、姓名(name[9])、性别(sex)、年龄(age)、三门课成绩(score[3]),要求在main()函数中输入这10个学生的数据,并对每个学生调用函数count()计算总分。参考代码如下: #include #include #define N 2 struct student { int num;char name[9];char sex;int age;int score[3];}stu[N];main(){ int count(int s[]);

int i,j;

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

{

printf(“num:”);

scanf(“%d”,&stu[i].num);

printf(“name:”);

scanf(“%s”,&stu[i].name);

printf(“sex:”);

scanf(“%s”,&stu[i].sex);

printf(“age:”);

scanf(“%d”,&stu[i].age);

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

{ printf(“score[%d]:”,j+1);scanf(“%d”,&stu[i].score[j]);

}

}

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

printf(“stu[%d] sum=%dn”,i,count(stu[i].score));} int count(int s[])

{

int i,sum=0;

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

sum=sum+s[i];

return sum;

}

2.口袋中有若干红、黄、蓝、白、黑5种颜色的球,每次从口袋中取出3个球,编程打印出得到3种不同颜色的球的所有可能取法。参考代码如下: main(){ enum color{red,yellow,blue,white,black};

enum color i,j,k,pri;

int n=0,loop;

for(i=red;i<=black;i++)

for(j=red;j<=black;j++)

if(i!=j)

{ for(k=red;k<=black;k++)if((k!=i)&&(k!=j))

{ n=n+1;

printf(“%-4d”,n);

for(loop=1;loop<=3;loop++)

{ switch(loop)

{ case 1:pri=i;break;

case 2:pri=j;break;

case 3:pri=k;break;

default:break;

}

switch(pri)

{ case red: printf(“%-10s”,“red”);break;

case yellow: printf(“%-10s”,“yellow”);break;

case blue: printf(“%-10s”,“blue”);break;

case white: printf(“%-10s”,“white”);break;

case black: printf(“%-10s”,“black”);break;

default:break;

}

}

printf(“n”);

}

} printf(“ntotal:%5dn”,n);} 3.25个人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。参考代码如下: #include main(){ int *a;

int i,j,position=1,total=0,chage;

a=(int *)malloc(25*sizeof(int));

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

a[i]=i+1;

while(1)

{ position+=2;

while(position>25-total)

position=position-25+total;

chage=a[position-1];

for(j=position;j<25-total;j++)

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

a[25-total-1]=chage;

total++;

if(total==25)

{ for(i=0;i<25-1;i++)printf(“%d->”,a[25-i-1]);printf(“%dn”,a[0]);printf(“the last one is %dn”,a[0]);return 0;

}

} }

4.建立一个链表,每个结点包括:学号、姓名、成绩。(1)输入一个学号,检索该学生的有关信息;(2)从链表中删去成绩低于40分的学生。参考代码如下: #include #include struct stu {

int no;

char name[9];

int score;

struct stu *next;};struct stu *create(){ struct stu *head,*p,*q;

int n,s;

head->next=NULL;

p=head;

while(1)

{ printf(“no,name,score:”);

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

if(n==0&&s==0)

break;

else

{ q=(struct stu *)malloc(sizeof(struct stu));

q->no=n;q->score=s;q->next=NULL;

p->next=q;p=q;

}

}

return head;} struct stu *search(struct stu *h,int n){ struct stu *p=h->next;

while(p!=NULL&&P->NO!=n)

p=p->next;

return p;} struct stu *delete(struct stu *head,char *s){

struct stu *p1,*p2;

if(head==NULL){

printf(“nempty list!n”);

goto end;} p1=head;while(pi->score>40 && p1->next!=NULL){ p2=p1;p1=p1->next;

free(p1);

}

return head;} main(){ int n;

struct stu *q;

printf(“enter number:”);

scanf(“%d”,&n);

q=create(n);

printf(“list:n”);

while(q!=NULL)

{

printf(“%sn”,q->name);

q=q->next;

} }

习题9参考答案

一、选择题

1.D 2.C 3.A

二、填空题 1.L=18.849558

S=28.274337

三、解答题

预处理命令的功能是什么?包括哪几部分?#include预处理命令的两种格式分别为什么? 答:预处理命令的功能是告诉编译系统在对源程序进行编译之前应该做些什么。预处理命令主要包括文件包含、宏定义和条件编译三个部分。#include预处理命令

格式一:#include<包含文件名> 格式二:#include”包含文件名”

习题10参考答案

一、选择题

1.C 2.B 3.A

二、填空题 1.二进制文件 2.顺序 随机 3.hello, 4.picursound

三、编程题

1.从键盘输入学生姓名,寻找学生记录是否存在,并输出相应信息。参考代码如下: #include #include #define N 10 struct student {

char name[9];

int num;

int age;

char sex;}stu[N];void main(){ int i;

char s[10];

FILE *fp;

if((fp=fopen(“stu”,“rb”))==NULL)

{ printf(“Can not open file!n”);

exit(0);

}

gets(s);

for(i=0;i

{ fseek(fp,i*sizeof(struct student),0);

fread(&stu[i],sizeof(struct student),1,fp);

while(s==stu[i].name)

printf(“%s,%d,%d,%dn”,stu[i].name,stu[i].num,stu[i].age,stu[i].sex);

}

fclose(fp);} 2.有两个磁盘文件a和b,各存放一行字母。要求将两个文件的内容读到内存中,并将其合并到一起(按字母顺序排列),然后输出到一个新文件。参考代码如下: #include “stdio.h” main(){ FILE *fp;

int i,j,n;

char c[160],t,ch;

if((fp=fopen(“A”,“r”))==NULL)

{ printf(“file A cannot be openedn”);

exit(0);

}

printf(“n A contents are :n”);

for(i=0;(ch=fgetc(fp))!=EOF;i++)

{ c[i]=ch;putchar(c[i]);

}

fclose(fp);

if((fp=fopen(“B”,“r”))==NULL)

{ printf(“file B cannot be openedn”);

exit(0);

}

printf(“n B contents are :n”);

for(i=0;(ch=fgetc(fp))!=EOF;i++)

{ c[i]=ch;

putchar(c[i]);

}

fclose(fp);

n=i;

for(i=0;i

for(j=i+1;j

if(c[i]>c[j])

{ t=c[i];c[i]=c[j];c[j]=t;}

printf(“n C file is:n”);

fp=fopen(“C”,“w”);

for(i=0;i

{ putc(c[i],fp);

putchar(c[i]);

}

fclose(fp);}

3.编写将字符串“Turbo C”、“BASIC”、“FORTRAN”、“COBOL”以及“PL_1”写入文件中去的程序。参考代码如下: #include #include #define N 30 void main(){ FILE *fp;

char c,file[N];

scanf(“%s”,file);

if((fp=fopen(file,“w”))==NULL)

{ printf(“Can not open filen”);

exit(0);

}

c=getchar();

c=getchar();

while(c!='n')

{ fputc(c,fp);putchar(c);

c=getchar();

}

putchar(N);

fclose(fp);}

4.设文件student.dat中存放着学生的基本情况,这些情况由以下结构体描述: struct student { long int num;/*学号*/ char name[10];/*姓名*/ int age;/*年龄*/ char speciality[20];/*专业*/ };

请编写程序,输出学号在97010~97020之间的学生学号、姓名、年龄和专业。参考代码如下: #include “stdio.h” struct student

{ long int num;

char name[10];

int age;

char speciality[20];

};

FILE *fp;

main()

{ struct student st;

fp=fopen(“student.dat”,“rb”);

if(fp==NULL)

printf(“file not foundn”);

else

{ while(!feof(fp))

{ fread(&st,sizeof(struct student),1,fp);

if(st.num>=970101&&st.num<=970135)

printf(“%ld,%s,%d,%sn”,st.num,st.name,st.age,st.speciality);

}

} }

下载C语言程序设计(张淑华、朱丽莉版)课后习题参考答案[本站推荐]word格式文档
下载C语言程序设计(张淑华、朱丽莉版)课后习题参考答案[本站推荐].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐