C语言程序设计参考答案与复习题(5)

2019-03-22 11:47

20 C程序设计基础习题集

习 题 七

1. 单项选择题

⑴ 下列数组声明语句中,正确的是【C】

A、int a[]={1,2,,4,5}; B、char a[5]={A,B,C,D,E}; C、int a[5]={1,2}; D、char a[5]=\

⑵ 数组声明语句为“int a[6];”,输入数组所有元素的语句应为【B】 A、scanf(\

B、for(int i=0;i<6;i++) scanf(\ C、for(int i=0;i<6;i++) scanf(\ D、for(int i=0;i<6;i++) scanf(\

⑶ 数组声明语句为“float a[3][4];”,引用第3行第1列的元素写作【A】 A、**(a+2) B、*(*a+2) C、a[3][1] D、*(a[3]+1) ⑷ 初始化多维数组的语句中,可以缺省的是【B】

A、最后1个下标界 B、第1个下标界 C、第2个下标界 D、以上都不对 ⑸ 数组声明为“int y[4][3];”,表达式“*(y+2)+2-*y”的值为【D】 A、10 B、20 C、16 D、8 ⑹ 数组声明为“char str1[20]=\”, 调用函数“strcpy(str1,str2);”后,字符串str1的串长是【C】 A、13 B、15 C、6 D、7 ⑺ 数组声明为“char str1[20]=\”, 调用函数“strcat(str1,str2);”后,字符串str1的串长是【A】 A、13 B、15 C、6 D、7 ⑻ 表达式“strcmp(\”的值为【C】 A、0 B、3 C、1 D、-3

2. 填空题。

⑴ 未初始化的int类型数组,其各元素的值是 0 。

⑵ 初始化时没有被赋值的字符类型数组元素,它们的值为 '\\0' 。 ⑶ 数组声明为“int a[6];”,数组元素a[1]是否又可以写作“*(a++)”? 原因是 不可以,数组名(地址常量)不可改变 。

⑷ 引用二维数组a第i行、j 列的元素(i、j为0表示第1行、第1列),可以写 作 *(*(a+i-1)+j-1) 或 a[i-1][j-1] 。

⑸ 数组声明为“int a[6][6];”,表达式“*a+i”是指 第1行第i+1个元素的地址、 “*(a+i)”是指 第i+1行第1个元素的地址、“**a”又是指a[0][0]。 ⑹ 数组声明为“float x[7][5];”,若x[6][4]是内存中从x[0][0]数起的第35个 元素,则x[4][4]是第 25 个元素。

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

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

程序设计基础习题集 21 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;

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

2

3

n-1

22 C程序设计基础习题集

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),删除字符串中所有的空格符。如输入字符串为 \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()

程序设计基础习题集 23

{ char str[20][30]; int i,j,k=0,k1; for(i=0;i<20;i++) gets(str[i]); 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[]=\

24 C程序设计基础习题集

int i,k=strlen(line);

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

输出结果为 123456789 2345678 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(\


C语言程序设计参考答案与复习题(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:事业单位财务管理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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