当前位置:文档之家› c语言程序设计教程答案_周鸣争

c语言程序设计教程答案_周鸣争

c语言程序设计教程答案_周鸣争
c语言程序设计教程答案_周鸣争

第一章C语言概述

一、简答题

1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。

2.顺序结构,分支结构,循环结构

3.所谓算法就是为解决一个问题而采取的方法和步骤。

算法的特性:有穷性、确定性、输入、输出、可行性。

表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。

二、算法

1.瓶子A里盛有醋

瓶子B里盛有酱油

有一个空瓶C

将A中的醋倒入C

将B中的酱油倒入A

将C中的醋倒入B 2.输入一个数放在a中max = a

以下步骤重复9次:

输入一个数放在a中

如果a>max,max=a

打印max的值

3.如果a

temp=a

a=b

b=temp

如果 c>a

temp = a

a=c

c=temp

否则

如果c>b

temp=b

b=c

c=temp

打印a,b,c的值

4.i=1

以下程序循环100遍:

sum=sum+i

i=i+1

打印sum的值

5.如果(n除以3的余数为0 并且n除以5的余数为0)

n能够同时被3和5整除

否则

n不能够同时被3和5整除

6.i=101

以下语句循环50遍:

j=2

flag=1

当j<(i除以2的整数部分)时循环以下语句:

如果i除以j的余数为零

flag=0

退出该循环

如果flag==1

打印i的值

i=i+2

7.如果m

m=n

n=temp

i=n

做以下循环,直到m,n能够被i整除:

如果m能够被i整除并且n能够被i整除

i即是m和n的最大公约数

跳出循环

否则

i=i-1

打印i的值

8.data=b*b—4*a*c

如果data>0

否则如果data=0

x1=x2=—b/2

否则

无实数解

三、编程题

1.main()

{

printf(“##############################\n”);printf(“How do you do?\n”);

printf(“##############################\n”);

}

2.main()

{

int a,b,c;

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

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

}

第二章数据类型与表达式

一、单项选择题

1. B

2. C

3. A

4. A

5. D

6. B

7.A

8.C

9.D

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

1.

aabb cc abc

AN

2.

ab

9798

3. 9,11,9,10

4.

a=2,b=3,c=2

5.

s1=2.500000

s2=3

三、编程题

main()

{

char c1='c',c2='h',c3='i',c4='n',c5='a';

c1=c1+4;

c2=c2+4;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);

}

第三章顺序程序设计

选择题

1)B 2)D 3)D 4)A 5)A 6)B 7)B 8)A 9)D 10)C 11)D 12)A

填空题

1)b 2)261 3)25 21 37 4)abc 5)5.0,4,c=3 6)3

编程题

#define PI 3.1415926

main( )

{

float h, r, l, sv, sz ;

printf(“请输入圆的半径r,圆柱高h:\n”) ;

scanf(“%f,%f”,&r, &h) ;

l=2* PI *r ;

s= PI *r*r ;

sv=3.0/4.0* PI *r*r*r ;

sz= PI *r*r*h ;

printf(“圆周长为:l=%6.2f, 圆面积为:s=%6.2f\n”, l, s) ;

printf(“求体积为:sv=%6.2f, 圆柱体积为:sz=%6.2f\n”, sv, sz) ;

}

2、

main( )

{

float c, f ;

printf(“请输入一个华氏温度:\n”) ;

scanf(“%f”, &f) ;

c=5.0/9.0*(f-32) ;

printf(“摄氏温度为:%6.2f\n”, c) ;

}

第四章循环程序设计

一、选择题

1.D

2.D

3.D

4.C

5.D

6.A

7.B

8.B

9.A 10.D.11.B 12.A 13.B

14.C 15.C 16.A 17.A 18.B 19.D 20.D 21.A

二、填空题

1.585858

2.0

3.18

4.8921

5.20,0

6.6

7.1,3,2

8.Year%400==0

year%100!=0

count++

三、编程题

1.

main()

{

long a;

scanf(“%ld”,&a);

if (a>=10000&&a<=99999) printf(“这是个五位数”);else if (a>=1000&&a<=9999) printf(“这是个四位数”);else if (a>=100&&a<=999) printf(“这是个三位数”);else if (a>=10&&a<=99) printf(“这是个二位数”);else if (a>=0&&a<=9)

printf(“这是个一位数”);else

printf(“输入错误”);

}

3.

main()

{

int a;

int g,s,b;//个位、十位、百位printf("水仙花数有:\n");

for(a=100;i<=999;a++)

{g=a%10;

s=a/10%10;

b=a/100;

if (a==g*g*g+s*s*s+b*b*b) printf("%d ",a);

}

printf("\n");

}

4、

main()

{int i,n;

printf("input n:");

scanf("%d",&n);

printf("\n%d=",n);

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

{while(i!=n)

if(n%i==0)

{printf("%d*",i);n/=i;} else break;

}

printf("%d\n",n);

}

5、

#include “stdio.h”

main()

{

char c;

int w,x,y,z;

w=x=y=z=0;

while((c=getchar())!=’\n’)

{

if((c>’a’&&c<’z’)||(c>’A’&&c<’Z’)) w++;

else if (c==’ ’)

x++;

else if (c>’0’&&c<’9’)

y++;

else z++;

}

printf(“英文字母个数:%d\n”,w); printf(“空格个数:%d\n”,x); printf(“数字个数:%d\n”,y); printf(“其他字母个数:%d\n”,z); }

6、main()

{

float h=100,t=100;

int j;

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

{

t=t/2;

h=h+t*2;

}

printf(“共经过:%f 米\n”,h);

printf(“第十次反弹%f 米\n”,t/2);

}

第五章数组

一、单项选择题

1. B

2. A

3. C

4. C

5. D

6. B

7.C

8.B

9.C 10. B

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

1.S=368

2.

*****

*****

*****

*****

*****

3.S1=18

S2=10

4.!margorP

5.

数字0的出现次数是:3

数字1的出现次数是:2

数字2的出现次数是:2

数字3的出现次数是:2

数字4的出现次数是:0

数字5的出现次数是:1

数字6的出现次数是:1

数字7的出现次数是:1

数字8的出现次数是:1

数字9的出现次数是:1 三、编程题

1.#include "stdio.h"

main()

{int a[11];

int i,j,t;

printf("input 10 number:\n"); for (i=1;i<11;i++)

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

printf("\n");

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

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

if (a[j]

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

printf("the sorted number is:\n"); for (i=1;i<11;i++)

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

}

2.#include "stdio.h"

main()

{int a[11],i,b;

printf("imput 10 sorted number:\n"); for (i=0;i<10;i++)

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

printf("input an integer:\n");

scanf("%d",&b);

for (i=9;i>=0&&a[i]>b;i--)

a[i+1]=a[i];

a[i+1]=b;

printf("sorted numbers:\n");

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

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

}

3.#include "stdio.h"

main()

{int a[5],i,j,t;

printf("input 5 integer:\n");

for (i=0;i<5;i++) /*输入5个整数*/

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

for (i=0,j=4;i

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

for (i=0;i<5;i++) /*逆序存放后重新输出*/

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

}

4.#include "stdio.h"

main()

{int i,j,a[10][10]={{1},{1,1}};

for (i=2;i<10;i++) /*给二维数组每个元素赋值*/

{a[i][0]=1;

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

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

}

for (i=0;i<10;i++) /*输出二维数组*/

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

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

printf("\n");

}

}

5.#include "stdio.h"

main()

{int a[3][4],i,j,max,row,col;

printf("input 3*4 matrix:\n");

for (i=0;i<3;i++) /*输入3*4矩阵*/ for (j=0;j<4;j++)

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

max=a[0][0]; row=0; col=0;

for (i=0;i<3;i++) /*寻找矩阵中的最大值及其行列号*/

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

if (max

{max=a[i][j]; row=i, col=j;}

printf("\n数组中最大的数是%d,其行号是%d,列号是%d\n",max,row,col);

}

6.#define N 3

#define M 4

#include "stdio.h"

main()

{int a[N][M],i,j,k,max,row,col;

printf("input %d*%d matrix: \n",N,M);

for (i=0;i

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

for (i=0;i

{max=a[i][0]; row=i; col=0;

for(j=1;j

if (max

{max=a[i][j]; col=j;}

for (k=0;k

if (a[k][col]

break;

if (k==N) /*得到鞍点*/

{printf("the point is %d,row=%d,col=%d\n",max,row,col);break;}

}

if (i==N) /*没有鞍点*/

printf("no point\n");

}

7.#include "stdio.h"

main()

{int num=0,word=0;

/*word=0表示未出现单词,如出现单词就置word为1.num用来统计单词个数*/

char c;

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

while ((c=getchar())!='\n')

if (c==' ')

word=0;

else if (word==0)

{word=1; num++;}

printf("There are %d words in the line\n",num);

}

8.#include "stdio.h"

main()

{int i,j,uppn,lown,dign,span,othn;

/*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/

char text[3][80];

uppn=lown=dign=span=othn=0;

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

{gets(text[i]);

for(j=0;j<80&&text[i][j]!='\0';j++)

{if(text[i][j]>='A'&&text[i][j]<='Z')

uppn++;

else if(text[i][j]>='a'&&text[i][j]<='z')

lown++;

else if(text[i][j]>='0'&&text[i][j]<='9')

dign++;

else if(text[i][j]==' ')

span++;

else

othn++;

}

}

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

printf("%s\n",text[i]);

printf("uppn=%d\n",uppn);

printf("lown=%d\n",lown);

printf("dign=%d\n",dign);

printf("span=%d\n",span);

printf("othn=%d\n",othn);

}

9.#include "stdio.h"

main()

{int i,j;

char str1[20],str2[20];

printf("input two strings:\n");

gets(str1);

gets(str2);

j=strlen(str1); /*求字符串1的长度*/

for (i=0;str2[i]!='\0';i++,j++) /*字符串合并*/

str1[j]=str2[i];

str1[j]='\0'; /*加上字符串结束标志*/

puts(str1);

}

相关主题
文本预览
相关文档 最新文档