⑺ 声明“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
{ 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
{ float a[30],x,y; int i,n,t; scanf(\
for(i=0;i for(i=1;i ⑶ 输入n(n≤20)个数,按绝对值从小到大排序后输出。 解答: #include { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 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 { 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 { 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