《浙工大C语言课本习题答案》(5)

2025-08-07

⑺ 声明“char str1[20]=\后,使字符串str1为\的赋 值表达式,应为 str1[7]='\\0' 。

⑻ 将包括空格在内的6个字符串输入到字符数组a[6][20]中,输入语句可以写作 for(i=0;i<6;i++) gets(a[i]); 。

3. 按照下列各题题意编程。

⑴ 输入平面上凸10边形各点x、y坐标,计算并输出各点之间距离之和。 解答: #include #include void main()

{ float x[10],y[10],s=0; int i;

for(i=0;i<10;i++) scanf(\ for(i=0;i<9;i++)

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

s+=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); printf(\ }

⑵ 编程,计算多项式 a0+a1x+a2x+a3x+...+ an-1x的和(n≤30)。 解答: #include void main()

{ float a[30],x,y; int i,n,t; scanf(\

for(i=0;i

for(i=1;i

⑶ 输入n(n≤20)个数,按绝对值从小到大排序后输出。 解答: #include #include void main()

{ float a[20],temp; int i,j,k;

for(i=0;i<20;i++)scanf(\ for(i=0;i<19;i++) {

k=i; for(j=i+1;j<20;j++)if(fabs(a[j])

for(i=0;i<20;i++)printf(\ printf(\ }

⑷ 输入一个5行、6列的数组,先以5行6列的格式输出该数组,然后找出该数组中值最小的元素、输出该元素及其两个下标值。

解答: #include void main()

{ float a[5][6],min; int i,j,k,l;

2

3

n-1

21

for(i=0;i<5;i++) for(j=0;j<6;j++)scanf(\ for(i=0;i<5;i++) {

for(j=0;j<6;j++) printf(\ }

min=a[0][0];k=0;l=0;

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

if(a[i][j]

⑸ 输入一个5行、6列的数组,将每1行的所有元素都除以该行上绝对值最大的元素,然后输出该数组。

解答: #include #include void main()

{ float a[5][6],max; int i,j;

for(i=0;i<5;i++) for(j=0;j<6;j++) scanf(\ for(i=0;i<5;i++) { max=a[i][0];

for(j=1;j<6;j++) if(fabs(a[i][j])>fabs(max))max=a[i][j]; for(j=0;j<6;j++)a[i][j]/=max; }

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

for(j=0;j<6;j++)printf(\ printf(\ } }

⑹ 输入一个字符串(串长不超过60),删除字符串中所有的空格符。如输入字符串为 \i= x1 + y ; \,处理后的字符串为 \。 解答: #include #include void main()

{ char s[61]; int i,n,k; gets(s); while(1){

k=0; n=strlen(s);

while(s[k++]!=' ' && k

if(k

printf(\ }

⑺ 输入20个字符串到字符数组str[20][30],统计其中相同字符串个数的最大数。

解: #include #include void main()

{ char str[20][30]; int i,j,k=0,k1; for(i=0;i<20;i++) gets(str[i]);

22

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

k1=0; for(j=i+1;j<20;j++) if(strcmp(str[i],str[j])==0) k1++; if(k1>k)k=k1; }

printf(\ }

4. 写出下列程序的输出结果

程序⑴ #include void main()

{ int m[]={1,2,3,4,5,6,7,8,9},i,j,k; for(i=0;i<4;i++) {

k=m[i]; m[i]=m[8-i]; m[8-i]=k;

for(j=0;j<9;j++) printf(\ putchar('\\n'); } }

输出结果为 9 2 3 4 5 6 7 8 1

9 8 3 4 5 6 7 2 1 9 8 7 4 5 6 3 2 1 9 8 7 6 5 4 3 2 1

程序⑵ #include void main()

{ int x[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}},i,j; for(i=0;i<4;i++) for(j=0;j<4;j++)

*(*(x+i)+j)/=*(*(x+i)+i); for(i=0;i<4;i++) {

for(j=0;j<4;j++) printf(\ putchar('\\n'); } }

输出结果为 1 2 3 4 0 1 5 6 0 9 1 8 0 0 0 1

程序⑶ #include #include void main()

{ char line[]=\ int i,k=strlen(line);

for(i=0;i<4;i++) { line[k-i]='\\0'; puts(line+i);} }

输出结果为 123456789 2345678

23

34567 46

5. 根据下列各题题意填空,将程序补充完整。

⑴ 输入10个数,输出其中与平均值之差的绝对值为最小的数。 #include #include void main()

{ float a[10],s,d,x; int i;

for(i=0;i<10;i++) scanf(\ s=0;

for(i=0;i<10;i++) s+=a[i]; s/=10; d=fabs(a[0]-s); x=a[0] ; for(i=1;i<10;i++) if(fabs(a[i]-s)

d= fabs(a[i]-s) ; x=a[i]; }

printf(\ }

⑵ 输出如下形式的二项式系数表(以6行为例)。要求表的行数在运行时输入,若小于1或者大于10则重新输入。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 程序如下:

#include void main()

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

while( scanf(\ for(i=0;i

for(j=1;j

for(j=0;j<=i;j++) printf(\ putchar('\\0') ; } }

⑶ 输入一个字符串(串长不超过60),将字符串中连续的空格符保留1个。如输入字符串为 \,输出字符串为 \。 #include #include

24

void main() { char b[61]; int i; gets(b);

for(i=1; b[i]!='\\0' ;i++) if(b[i-1]==' '&&b[i]==' ') {

strcpy (b+i-1,b+i); i--; /* 提示: 此处填入正确的函数名 */ }

puts(b) ; }

6. 输入2个数组,每个数组不超过10个元素,将只在其中一个数组出现的数输出。

解答: #include void main()

{ float a[10],b[10]; int m,n,i,j; scanf(\ for(i=0;i

for(j=0;j

putchar(\ for(i=0;i

for(j=0;j

putchar('\\n'); } 7. 输入10个数到数组a[10],用插入法按值从大到小排序(第1个数直接存入a[0],在输入

第i个数之前,先将已输入的i-1个数在a[1]至a[i-1]中按值从大到小排序)。

解答:#include void main()

{ float a[10],x; int i,j,k,n; for(i=0;i<10;i++) { scanf(\

if(i==0) { a[0]=x; n=0; } else {

for(j=0;j<=n;j++) if(x>a[j]) {for(k=n;k>=j;k--)a[k+1]=a[k];break;}

a[j]=x; n++; } }

for(i=0; i<10; i++) printf(\ putchar('\\n'); }

25


《浙工大C语言课本习题答案》(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《逻辑学导论》期末考试

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219