杨辉三角:
杨辉三角这一类的题型全都是找规律,无一例外;个人感觉这类找规律的题型完全是出题人闲得无聊,但是c语言考试无论是期中期末甚至考研都考
还是在这里做一个记录吧:
#include<stdio.h> #include<stdlib.h> int main(){ int a[14][14]; int n; scanf("%d",&n); for(int i=1;i<=n;i++) { a[i][1]=1;//因为三角形的构造原因,第一个数时1 a[i][i]=1;//最后一个数也是一,即a[i][i] } for(int i=1;i<=n;i++)//设定是以1为下标开始的,i代表行号 for(int j=2;j<=i-1;j++)//j代表列号,由于每一行的最右边都补1了,所以j只能到倒数第二个为止,否则覆盖了1 a[i][j]=a[i-1][j-1]+a[i-1][j];//规律:a[i][j]=a[i-1][j-1]+a[i-1][j] for(int i=1;i<=n;i++)//从第1行开始打印 { for(int k=1;k<=n-i;k++)//为了美观,我们需要在每一行前面补上空格保持格式 printf(" ");//一共5行(代表n行),第一行就需要补4个空格,第i行就要补n-i个空格 for(int j=1;j<=i;j++)//打印每行数字的个数:第一行1个,第二行2个,第三行3个 printf("%6d",a[i][j]); printf(" ");//每一行打印完成就换行 } printf(" "); }
给定一个整形数组b[0...N-1],b中连续相等元素构成的子序列称为平台。编写程序,求出b中最长平台的长度
#include<stdio.h> int main(){ int a[10]={1,1,2,3,3,3,4,4,4,4}; int n=10; int max=0;//最长子串长度 int cnt=1;//临时计数器,cnt定为1是因为自己本身就算一个长度 for(int i=1;i<n;i++) { if(a[i]==a[i-1])//自身等于前一个数,cnt++,并且把自身赋给max { cnt++;//临时计数器++ max=cnt;//将临时的计数器放入到长度计数器max中 printf("a[%d]:%d,cnt=%d,max=%d ",i,a[i],cnt,max); } else{ cnt=1;//前后不相等,重置为1 printf("a[%d]:%d,cnt=%d,max=%d ",i,a[i],cnt,max); } } printf("%d ",max); }