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(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

C语言例题系列-------第七天的相关文章

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

//15.有17个人围成一圈(编号为1-17),从第1号开始进行1.2.3报数,凡报3者退出, //下一个人又从1开始报数..........直到最后一个人时为止.请问此人原来的位置是多少号? #include<stdio.h> int main() { int p[18]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; int i=1,j=1,k=1,m=17; do { if(p[i]) { if(j++>=3)//报1个数 { p[i]

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

//19.100个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元, //每3个小学生花1元,问大,中,小学生的人数分配共有多少种不同的解 //(去掉某类学生为零的解)?  //这是我写的程序,答案是3种 /*#include<stdio.h> int main() { int i,j,k; int count=0; for(i=1;i<20;i++) { for(j=1;j<33;j++) { for(k=3;k<300;k+=3) {   if(5*

C语言例题系列------第十一天

//21.自然数对是指两个自然数的和与差都是平方数,如果8和17的和8+17=25与其差 //17-8=9都是平方数,则称8和17是自然数对(8,17).假定(A,B)与(B,A)是 //同一个自然数对且假定A>=B,求所有小于或等于100(即:A<=100,B<=100)的 //自然数对中B之和.  #include<stdio.h> #include<math.h> int main() { int A,B,sum,sub,y=0; for(B=1;B<

C语言例题系列---------第十二天

//23.已知24有8个正整数因子(1,2,3,4,6,8,12,24),而24正好被因子个数8整除. //求[1,100]之间第十个能被其因子数整除的数  //这是我写的代码,答案是56 /*#include<stdio.h> int main() { int i,j,a,b=0; for(i=1;i<=100;i++) { for(j=1,a=0;j<=i;j++) { if(i%j==0) a++; } if(i%a==0) b++; if(b>9) break; } 

C语言例题系列--------第十三天

//25. 从键盘输入3个整数,要求设3个指针变量p1,p2,p3,使p1指向3个数中的最大者, //p2指向次打大者,p3指向最小者,然后按由大到小的顺序输出这3个数. #include<stdio.h> void compare(int * p1,int *p2,int * p3) {   int t;   if(*p1<*p2)  {   t=*p1;   *p1=*p2;   *p2=t;   }   if(*p1<*p3)  {   t=*p1;   *p1=*p3;  

C语言例题系列--------第十四天

//27.有一个整型二维数组,大小为m x n,要求找出其中最大值所在的行和列以及该最大值. //请编写一个函数max,要求如下: //(1)以数组名和数组大小为该函数的形参 //(2)数组元素的值在main函数中输入,结果在函数max中输出  /*#include<stdio.h> int max(int x[3][4],int m,int n) { int max=x[0][0]; int i,j; for(i=0;i<m;i++) for(j=1;j<n;j++) if(ma

C语言例题系列--------第十五天

//29.输入3行字符(每行60个字符以内),要 //求统计出其中共有多少大写字.小写字母.空格及标点符号  #include<stdio.h> #include<string.h> int main() {  char str[3][60],(*p)[60];  int i,j,up,low,space,comma;  up=0;low=0;space=0;comma=0;  printf("input three strings\n");  for(i=0;

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

//1.输入一个正数a和一个负数b,求a+|b|的值,以浮点型输出,绝对值函数为fabs() #include<stdio.h> #include<math.h> int main()//此处的int代表的是返回值的类型,也就是return 0; { int a,b,sum; scanf("%d%d",&a,&b); sum=a+fabs(b); printf("sum=%d\n",sum); return 0; } //2.

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

//3.编写一个程序,从5个整数中找出最小的数. //(so easy!写不出来,找块豆腐,撞死自己算了,哈哈^_^) #include<stdio.h> int main() { int a,b,c,d,e,min; printf("请输入5个整数:\n"); scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); min=a; if(min>b)min=b; if(min>c)min