程序设计基础-c语言-
第四章数组-教材习题及其答案
编程将一个一维数组的值按逆序重新存放
#include
void main()
{
int i_data[10];
int m,i_temp;
printf("给定10个数,用空格分隔:");
scanf("%d %d %d %d %d %d %d %d %d %d",&i_data[0],&i_data[1],&i_data[2],&i_data[3],&i_data[4],&i_data[5],&i_data[6],&i_data[7],&i_data[8],&i_data[9]);
for(m=1;m<=10/2;m++) //有意写成10/2 已解决任意一维数组的逆序问题,为什么此处用m=1;m<=10/2,而不能m=0;m<10/2
{i_temp=i_data[m-1];//下面三条语句是典型的两数交换的方法
i_data[m-1]=i_data[10-m];
i_data[10-m]=i_temp;
}
for(m=0;m<10;m++)
{printf("%d ",i_data[m]);
}
printf("\n");
}
2.0 编程求Fibonacci数列的前二十项。FIBONACCI数列的定义 F0=0,F1=1,Fn=Fn-1+Fn-2
#include
void main()
{
int F[20];
int m,n,i_blanknum;
for(m=0;m<20;m++)
{switch(m)
{case 0:F[0]=0;
break;
case 1:F[1]=1;
break;
default: F[m]=F[m-1]+F[m-2];
}
}
printf("Fibonacci数列的前20项是:\n");
for(m=0;m<20;m++)
{printf("%d ",F[m]);
}
printf("\n");
//下面输出项,这是我加的效果
for(m=0;m<20;m++)
{printf("%d",m+1); //输出项的编号
//计算该项数据占几位
i_blanknum=1;//每个数据间占一个空格
n=F[m];
do
{i_blanknum=i_blanknum+1;
n=n/10;
}while(n!=0);
//减去该项编号数据占的位数
n=m+1;
do
{i_blanknum=i_blanknum-1;
n=n/10;
}while(n!=0);
//输出空格
while(i_blanknum>0)
{printf(" ");
i_blanknum--;
}
}
printf("\n");
}
在一个从小到大排列的数组中查找X,若x存在就将其测出,若不存在将其添加。使修改后的数组仍然有序,并输出到屏幕上啊
#include
#define Yes 1 //Yes说明x在数组中
#define No 0 //No说明x不在数组中
void main()
{
int i_data[10]={10,20,30,40,50,60,70,80,90};
int x,i,j;
int YN;//记录x是否在数组中
int Total=9;//数组元素实际个数
printf("请输入一个数:");
scanf("%d",&x);
YN=No;//假定不在数组中
//第1种情况:进行x在数组中查找和删除操作,要考虑数组中有多个x的值
i=0;
while(i
{if(x==i_data[i])
{YN=Yes;
for(j=i;j
{i_data[j]=i_data[j+1];
}
Total--;
}
else
{i++;
}
}
//第1中情况操作完成
if(YN==No) //说明第1种情况不存在,应进行第2种情况操作,即增加
{for(i=0;i
{if(x
{for(j=Total;j>i;j--)
{i_data[j]=i_data[j-1];
}
i_data[i]=x;
Total++;
break;
}
}
}
//下面输出
for(i=0;i