//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(void) { 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(void) { 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(void) { 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; }
时间: 2024-10-16 15:44:48