C语言程序设计习题答案613.docx

上传人:b****4 文档编号:5521790 上传时间:2022-12-18 格式:DOCX 页数:18 大小:26.53KB
下载 相关 举报
C语言程序设计习题答案613.docx_第1页
第1页 / 共18页
C语言程序设计习题答案613.docx_第2页
第2页 / 共18页
C语言程序设计习题答案613.docx_第3页
第3页 / 共18页
C语言程序设计习题答案613.docx_第4页
第4页 / 共18页
C语言程序设计习题答案613.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序设计习题答案613.docx

《C语言程序设计习题答案613.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题答案613.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序设计习题答案613.docx

C语言程序设计习题答案613

C语言程序设计习题答案之阿布丰王创作

习题六数组

一、选择题

1~10:

BDBCDCDBAB

11~20:

BCDCCDABBC

21~30:

CCADCABBCB

31~41:

BDDDDCDCCBA

二、填空题

1.9、0

2.先行后列

3.连续的存储空间中

4.QuickC

5.(c=getchar())、‘A’+i或65+i

6.‘\0’、str1[i]-str2[i]

7.CDABC

8.1014

9.6

10.10000

01000

00100

00010

00001

11.600

12.AzyD

134somestring*test

三、编程题

1.定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。

答:

程序拜见文件Cprogram\xt6_3_01.c

#include"stdio.h"

#include"math.h"

main()

{inti,s0=0,s1=0,a[20];

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

a[i]=rand()%100;

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

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

s0=s0+a[i];

}

printf("sumis:

%dave=%f\n",s0,s0/10.0);

for(i=1;i<20;i+=2)

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

s1=s1+a[i];

}

printf("sumis:

%dave=%f\n",s1,s1/10.0);

}

2.设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出nofound。

答:

程序拜见文件Cprogram\xt6_3_02.c

#include"stdio.h"

#include"math.h"

main()

{inti,s,a[20];

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

a[i]=rand()%100;

scanf("%d",&s);

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

if(a[i]==s)

{printf("found:

a[%d]=%d\n",i,a[i]);

break;

}

if(i==20)

printf("nofound\n");

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

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

printf("\n");

}

3.设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它拔出到数组中。

答:

程序拜见文件Cprogram\xt6_3_03.c

#include"stdio.h"

#defineN10

main()

{inti,j,s,a[N]={17,15,13,11,9,7,5,3,1};//inta[N]={1,3,5,7,9,11,13,15,17};

scanf("%d",&s);

i=0;

if(a[0]

while(s>a[i])i++;

else

while(s

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

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

a[j]=s;

for(i=0;i

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

printf("\n");

}

4.编一程序,从一个已排好序的数组中删去某个位置上的元素。

答:

程序拜见文件Cprogram\xt6_3_04.c

#include"stdio.h"

#defineN10

main()

{inti,j,a[N]={1,3,5,7,9,11,13,15,17,19};

for(i=0;i

printf("\n");

scanf("%d",&i);

for(j=i;j

a[j]=0;

for(i=0;i

printf("\n");

}

5.将一个二维数组的行、列互换后存到另一个二维数组中并输出结果。

答:

程序拜见文件Cprogram\xt6_3_05.c

#include"stdio.h"

main()

{inti,j;

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},b[4][3];

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

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

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

printf("arraya:

\n");

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

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

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

printf("\n");

}

printf("arrayb:

\n");

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

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

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

printf("\n");

}

}

6.编一程序,在一个二维数组中,查找第一次出现的负数,并输出该数及其所在的行、列号。

答:

程序拜见文件Cprogram\xt6_3_06.c

#include"stdio.h"

main()

{inti,j,flag;

inta[3][4]={1,3,5,7,9,11,13,-15,17,19,-21,23};

flag=0;

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

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

if(a[i][j]<0)

{flag=1;

printf("found:

a[%d][%d]=%d\n",i,j,a[i][j]);

i=j=100;//可使双重循环提前结束

}

if(flag==0)

printf("nofound!

");

printf("arraya:

\n");

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

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

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

printf("\n");

}

}

7.编程将一个字符数组中的字母,按由大到小的顺序进行排序。

答:

程序拜见文件Cprogram\xt6_3_07.c

#include"stdio.h"

#include"string.h"

main()

{chart,s[]="ABCDIVBHFBVCNLKFDB";

inti,j,n;

puts(s);

n=strlen(s);

for(i=0;i

for(j=i+1;j

if(s[i]

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

puts(s);

}

8.输入一行字符,统计其中有多少个英语单词,单词之间用空格隔开。

答:

程序拜见文件Cprogram\xt6_3_08.c

#include"stdio.h"

#include"string.h"

main()

{chars[81];

intw,i,n;

gets(s);

i=0;n=0;w=0;

while(s[i]!

='\0')

{if(s[i]=='')

w=0;/*endofaword*/

else

if(w==0)

{w=1;n++;}/*beginofaword*/

i++;

}

printf("numberofword:

%d\n",n);

}

9.编程将两个一维数组中的对应元素的值相减后进行输出。

答:

程序拜见文件Cprogram\xt6_3_09.c

#include"stdio.h"

#include"math.h"

main()

{inti,a[10],b[10];

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

{a[i]=rand()%100;printf("%4d",a[i]);}

printf("\n");

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

{b[i]=rand()%100;printf("%4d",b[i]);}

printf("\n");

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

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

printf("\n");

}

10.有n个无序的数放在数组a中,请将相同的那些数删得只剩得一个,输出经过删除后的数据。

答:

程序拜见文件Cprogram\xt6_3_10.c

#include"stdio.h"

main()

{inti,j,k,a[10]={90,20,40,30,50,50,50,50,20,80};

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

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

printf("\n");

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

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

if(a[j]==a[i])

{a[j]=-888;}

k=0;

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

if(a[i]!

=-888)

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

a[k++]=a[i];}//不相同的有效元素只有K个了

printf("\n");

}

11.求二维数组中这样一个元素的位置:

它在行上最小,在列上也最小。

如果没有这样的元素则输出相应的信息。

答:

程序拜见文件Cprogram\xt6_3_11.c

#include"stdio.h"

#include"math.h"

main()

{intj,i,k,flag,fz=0,a[4][5];

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

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

{a[i][j]=rand()%100;

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

}

printf("\n");

}

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

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

{flag=1;

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

if(a[i][k]

{flag=0;break;}

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

if(a[k][j]

{flag=0;break;}

if(flag)

{fz++;printf("mina[%d][%d]=%d\n",i,j,a[i][j]);}

}

}

if(fz==0)

printf("nofound!

");

}

12.在一个二维数组中形成并输出如下矩阵:

11111

21111

A=32111

43211

54321

答:

程序拜见文件Cprogram\xt6_3_12.c

#include"stdio.h"

#defineN5

main()

{intj,i,a[N][N];

for(i=0;i

for(j=0;j

{if(i<=j)

a[i][j]=1;

elseif(j==0)

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

else

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

}

for(i=0;i

{for(j=0;j

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

printf("\n");

}

}

13.已知A是一个3╳4的矩阵,B是一个4╳5的矩阵,编程求A╳B得到的新矩阵C,并输出C矩阵。

答:

程序拜见文件Cprogram\xt6_3_13.c

#include"stdio.h"

main()

{intj,i,k,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

intb[4][5]={3,2,1,5,4,4,3,2,5,1,2,3,5,4,1,7,8,5,6,9},c[3][5];

printf("arrayA(3*4):

\n");

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

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

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

printf("\n");

}

printf("arrayB(4*5):

\n");

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

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

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

printf("\n");

}

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

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

{c[i][j]=0;

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

c[i][j]+=a[i][k]*b[k][j];

}

printf("arrayC(3*5)=A*B:

\n");

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

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

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

printf("\n");

}

}

14.编程输出两个字符串中对应位置上相同的字符。

答:

程序拜见文件Cprogram\xt6_3_14.c

#include"stdio.h"

main()

{inti;

chara[81]="acbsbdvhfejbvewvkbewljbv";

charb[81]="anbdxwdbviuerkjvbfidbvuiebik";

printf("string1:

%s\n",a);

printf("string2:

%s\n",b);

printf("string3:

");

i=0;

while(a[i]!

='\0'&&b[i]!

='\0')

{if(a[i]==b[i])

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

i++;

}

printf("\n");

}

15.设有一字符串已按升序排列在字符数组a中,请将另一字符串b中的字符按升序的规律插到数组a中。

答:

程序拜见文件Cprogram\xt6_3_15.c

#include"stdio.h"

#include"string.h"

main()

{inti,j,k;

chara[81]="acdfhjklmopxz";

charb[81]="anbdx";

printf("string1:

%s\n",a);

printf("string2:

%s\n",b);

i=0;

while(b[i]!

='\0')

{j=0;

while(a[j]

='\0')

j++;

k=strlen(a);

while(k>=j)

{a[k+1]=a[k];k--;}

a[j]=b[i];

i++;

}

printf("string3:

%s\n",a);

}

16.将已按升序排列的两个字符串a和b中的字符按升序归并到字符数组c中。

答:

程序拜见文件Cprogram\xt6_3_16.c

#include"stdio.h"

#include"string.h"

main()

{inti,j,k;

chara[81]="acdfhjklmopxz";

charb[81]="abdnx";

charc[81];

printf("string1:

%s\n",a);

printf("string2:

%s\n",b);

i=0;j=0;k=0;

while(a[i]!

='\0'&&b[j]!

='\0')

{if(a[i]

c[k++]=a[i++];

else

c[k++]=b[j++];

}

while(a[i])

c[k++]=a[i++];

while(b[j])

c[k++]=b[j++];

c[k]='\0';

printf("string3:

%s\n",c);

}

习题七函数

一、选择题

1~10:

BDCDDBDBAC

11~20:

AABBBABAAC

21~31:

CDAACDDABBA

二、填空题

1.函数声明

2.自动将其转换为函数定义时的类型

3.10

4.1100

5.9.000000

6.i<=n、s、0、f(k)

7.0.5*(x0+a/x0)、a,x1

8.Itis

9.2721

10.0246

11.k、-1

12.2、2

13.p=j、x[i][p]

14.5

15.7

16.24

17.age(n-1)+2、age(n)

18.m%10、m/10、m或m!

=0、r(m)

三、编程题

1.编一函数,判断某年是否为闰年,若是返回1,否则返回0。

答:

程序拜见文件Cprogram\xt7_3_01.c

#include

fun(intm)

{return(m%4==0)&&(m%100!

=0)||(m%400==0);}

main()

{intn;

for(n=1987;n<2009;n++)

if(fun(n))

printf("year:

%disaleap!

\n",n);

}

2.编写计算三角形面积的程序,将计算面积定义成函数。

三角形面积公式为:

A=

式中s=(a+b+c)/2

其中A为三角形面积,a、b、c为三角形的三条边的长度。

答:

程序拜见文件Cprogram\xt7_3_02.c

#include

#include

floatfun(floata,floatb,floatc)

{floatf,s;

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

if((s<=a)||(s<=b)||(s<=c))//或(a+b)>c&&(a+c)>b&&(b+c)>a

f=0;

else

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

returnf;

}

main()

{floata,b,c;

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

printf("areais:

%f\n",fun(a,b,c));

}

3.编写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两

个函数,并输出结果,两个整数由键盘输入。

答:

程序拜见文件Cprogram\xt7_3_03.c

#include

#include

intfmax(intm,intn)

{intr;

r=m%n;

while(r!

=0)

{m=n;n=r;r=m%n;}

returnn;

}

intfmin(intm,intn)

{returnm*n/fmax(m,n);}

main()

{inta,b;

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

printf("fmaxis:

%d\n",fmax(a,b));

printf("fminis:

%d\n",fmin(a,b));

}

4.编写函数,根据整型形参m的值,计算公式

t=1-

-

-…-

的值。

例如,若m=5,则应输出0.536389。

答:

程序拜见文件Cprogram\xt7_3_04.c

#include

floatfun(intm)

{floatt=1;

inti;

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

t=t-1.0/i/i;

returnt;

}

main()

{

printf("t(5)=%f\n",fun(5));

}

5.计算s=1+

+

+…+

n由终端输入,将计算n!

定义成函数。

答:

程序拜见文件Cprogram\xt7_3_05.c

#include

floatfun(intm)

{inti;

floats=0,t=1;

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

{t=t/i;s=s+t;}

returns;

}

main()

{printf("s(5)=%f\n",fun(5));}

6.编写函数,利用公式:

计算π的近似值,当某一项的值小于10-5时,认为达到精度要求。

答:

程序拜见文件Cprogram\xt7_3_06.c

#include

doublefun()

{intn;doublepi=1,t=1;

n=1;

do

{t=t*n/(2*n+1);

pi=pi+t;

n++;

}while(t>1e-5);

return2*pi;

}

main()

{printf("pi=%f\n",fun());}

7.编一函数,判断某一整数是否为回文数,若是返回1,否则返回0。

所谓回文数就是该数正读与反读是一样的。

例如12321就是一个回文数。

答:

程序拜见文件Cprogram\xt7_3_07.c

#include

#include

inthuiwen(intm)

{intt,n=0;

t=m;

while(t)

{n++;t=t/10;}//求出M是几位的数

t=m;

while(t)

{if(t/(int)pow(10,n-1)!

=t%10)//比较其最高位和最低位

return0;

else

{t=t%(int)pow(10,n-1);//去掉其最高位

t=t/10;//去掉其最低位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1