首页 > 代码库 > C语言例题系列-------第七天

C语言例题系列-------第七天

//13、将10个整数数储存在一个数组中,设计一个程序输出这个数组的最大值和最小值
//书上的答案:
/*#include<stdio.h>
int main()
{
int max,min,a[10];
int i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
max=min=a[0];
for(i=1;i<=9;i++)
{
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
}
printf("The max is %d\nThe min is %d",max,min);
printf("\n");
}
*/
//我写的:
/*#include<stdio.h>
int main()
{
int i,j,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
printf("max=%d\nmin=%d",a[9],a[0]);
return 0;
}
*/
//14、将数列1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,1,5,10,10,5,1......延长到第55个
//1
//1,1
//1,2,1
//1,3,3,1
//1,4,6,4,1
//1,5,10,10,5,1
//(杨辉三角形)
//书上的答案,有点难理解,首先需要找到杨辉三角的规律,
//1+1=2,1+2=3,2+1=3,1+3=4,3+3=6,3+1=4.。。。
/*#include<stdio.h>
int main()
{
int i,j,k=2,n=3,a[60]={0,1,1,1};
while(n<55)
{
a[n+1]=1;//第k层的第1个元素
for(j=2;j<=k;j++)
a[n+j]=a[n-k+j-1]+a[n-k+j];//从第k+1行的第二个数起等于第k行的第一和第二个数的和,依次类推,
a[n+k+1]=1;        //a[n+j]是为了跳到下一行,也就是第k+1行,第k层的最后一个元素,
k++;           //进入下一层
n=n+k;                             
}
for(i=1,j=1,k=1;i<=55;i++)
{
printf("%d,",a[i]);
if(j++>=k)
{
printf("\n");
j=1;
k++;
}
}
return 0;
}
*/
//这是我写的程序

#include<stdio.h>
int main()
{
int a[100]={1},i,j,k;//之所以定义100个长度的数组,是为了防止后面发生数组越界
for(i=1;i<=10;i++)//用一个for循环来控制行数
{
for(j=i*(i-1)/2;j<=i*(i-1)/2+i-1;j++)//i*(i-1)/2代表每行的第一个数的下标,
a[i*(i-1)/2]=1;//i*(i-1)/2+i-1   //代表每一行最后那个数的下标,
{                  //每行的第一个数为1
a[j+i+1]=a[j]+a[j+1];//从第i+1行的第二个数起等于第i行的第一和第二个数的和,依次类推,
a[i*(i-1)/2+i-1]=1;//a[j+i+1]是下一行的第二个数的下标,每行的最后一个数为1
}
}
for(i=1;i<=10;i++)
{
for(j=i*(i-1)/2;j<=i*(i-1)/2+i-1;j++)//此处的for循环是每行数的起始下标到最后一个数的下标
{printf("%d ",a[j]);//输出每一行的数
}
printf("\n");//控制换行
}
printf("    杨辉三角    ");
printf("\n");
return 0;
}


本文出自 “鹏哥的博客” 博客,谢绝转载!

C语言例题系列-------第七天