内容正文:
5.4 数组的应用举例
【基础巩固】
1. (填空)下面程序的输出结果是( )。
struct stu
{ int x,*y;
}*p;
int d[4]={10,20,30,40};
struct stu a[4]={50,&d[0],60, &d[1],70, &d[2] ,80,&d[3]};
main()
{ p=a;
printf("%d,",++p->x);
printf("%d,",(++p)->x);
printf("%d
",++(*p->y));
}
2. (填空)以下程序的运行结果是( )。
union un
{ int a;
int b;
};
union un s[4];
union un *p;
main()
{ int n=1,i;
for(i=0;i<4;i++)
{s[i].a=n; s[i].b=s[i].a+1; n=n+2;
}
p=&s[0];
printf("%d,",p->a);
printf("%d",++p->a);
}
【能力进阶】
3.程序设计
(1)将二维数组(5行5列)的右上半部分置零。
即:
(2)编一个程序,计算并输出下列数列的前24项,每行输出4项。
数列第1项的值1
数列第2项的值2
数列第k项的值=第k-l项的值十第k-2项的值,当k为奇数时,
数列第k项的值=第k-l项的值一第k-2项的值,当k为偶数时。
(3)编一个程序,输入一个3X3的实数矩阵,求两个对角线元素中各自的最大值。
(4)编一个程序,输入3个字符串(长度均不超过30)存入一个二维的字符型数组中,将第3个字符串连接到第2个字符率之后,然后再连接到第1个字符串之后,组成新的字符串存入一维的字符型数组中,然后输出该新的字符串(说明:本题不允许使用字符串连接函数)。
【自我评价】
【教师评价】
精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
5.4 数组的应用举例
【基础巩固】
1. (填空)下面程序的输出结果是( )。
struct stu
{ int x,*y;
}*p;
int d[4]={10,20,30,40};
struct stu a[4]={50,&d[0],60, &d[1],70, &d[2] ,80,&d[3]};
main()
{ p=a;
printf("%d,",++p->x);
printf("%d,",(++p)->x);
printf("%d
",++(*p->y));
}
答案:51,60,21
2. (填空)以下程序的运行结果是( )。
union un
{ int a;
int b;
};
union un s[4];
union un *p;
main()
{ int n=1,i;
for(i=0;i<4;i++)
{s[i].a=n; s[i].b=s[i].a+1; n=n+2;
}
p=&s[0];
printf("%d,",p->a);
printf("%d",++p->a);
}
答案:2,3
【能力进阶】
3.程序设计
(1)将二维数组(5行5列)的右上半部分置零。
即:
答案:
#include<stdio.h>
main()
{
int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(i<j)
{
printf("%3d",0);
}
else
{
printf("%3d",a[i][j]);
}
}
printf("
");
}
}
(2)编一个程序,计算并输出下列数列的前24项,每行输出4项。
数列第1项的值1
数列第2项的值2
数列第k项的值=第k-l项的值十第k-2项的值,当k为奇数时,
数列第k项的值=第k-l项的值一第k-2项的值,当k为偶数时。
答案:
void main()
{long int a[25]={0,1,2} ;
int i;
for(i=3;i<25;i++)
if( i% 2! == 0)
a[i]=a[i-l]+a[i-2];
else
a[i]=a[i一1]-a[i-2];
for (i= 1; i< 25; i++ )