寒假作业第41-60题

第四十一题:.定义一个含有30个整型元素的数组,按顺序赋予从2开始的偶数,然后按顺序以每5个数一组的形式求出平均值并输出。
#include "stdio.h"
void main()
 { 
     int arr[30],sum=0;
     int i,j;
     for(i=0;i<30;i++)
         arr[i]=2*i+2;
     for(i=0;i<30;i++)
     {
         sum+=arr[i];
         if((i+1)%5==0)
            {
                printf("the average is :=%d\n",sum/5);
                sum=0;
           }
     }
 }
第四十二题:退出圈子,下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。输入整数n和m,并按退出顺序输出退出圈子的人的编号。试编写相应程序。
#include 
#include 
void main()
{
    int m,n,i,cnt=0,CNT=0,flag;
    printf("please input the m and n:\n");
    scanf("%d%d",&m,&n);
    int *a=(int*)malloc(n*sizeof(int));
    for(i=0;i<n;i++)
        a[i]=i+1;
    while(1)
    {
        flag=CNT;
        for(i=0;i<n;i++)
        {
           if(a[i]!=0)
            {
                cnt++;
                CNT++;
            }
          if(cnt==m)
            {
               a[i]=0;
               cnt=0;
               printf("%d ",i+1);
           }
    }
    if(CNT==flag+1)
         break;
    }
    free(a);
}
第四十三题:定义一个33列的二维数组,从键盘输入9个数的值。输出其中最大值和最小值及其所在的行列坐标。
#include "stdio.h"
 void main()
 {
     int arr[3][3];
     int i,j,max,min;
     int max_i,max_j;
     int min_i,min_j;
     printf("please input the arr:\n");
     for(i=0;i<3;i++)
         for(j=0;j<3;j++)
             scanf("%d",&arr[i][j]); 
     for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
     max=arr[0][0];
     min=arr[0][0];
     for(i=0;i<3;i++)
        for(j=0;j<3;j++)
           {
               if(arr[i][j]>max)
               {
               max=arr[i][j];
               max_i=i;
               max_j=j;
            }
            if(arr[i][j]<min)
               {
               min=arr[i][j];
               min_i=i;
               min_j=j;
            }
           }
    printf("the result is :\n");
    printf("the max element is %d, index is [%d][%d]\n\n",max,max_i,max_j);
    printf("the min element is %d, index is [%d][%d]\n\n",min,min_i,min_j);
    }
第四十四题:编程计算3*3矩阵的主对角线元素和反向对角线元素之和。`在这里插入代码片`
#include "stdio.h"
 void main()
 {
     int arr[3][3];
     int i,j;
     int sum_1=0,sum_2=0;
     printf("please input the arr:\n");
     for(i=0;i<3;i++)
         for(j=0;j<3;j++)
             scanf("%d",&arr[i][j]); 
     for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
     for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            {
           if(i==j)
                 sum_1+=arr[i][j];
            if(i+j==2)
                 sum_2+=arr[i][j];
             }
    printf("\n the sum_1 is %d,  the sum_2 is %d  :\n",sum_1,sum_2);
} 
第四十五题: 用编程计算并输出杨辉三角形的前n行(要求n从键盘输入)输出杨辉三角形前n行(每一行每个数之间空一格,每行最后一个数不需要空格)
#include
void  main()
{
    int i,j,n=0,a[100][100]={1};
    printf("请输入杨辉三角的行数:");
     scanf("%d",&n);
     if(n>=1||n<=99)
     {
          for(i=1;i<=n;i++)
         {
             a[i][0]=1;
             for(j=1;j<i;j++)
             a[i][j]=a[i-1][j-1]+a[i-1][j];
         }
         for(i=0;i<=n;i++)
         {
             for(j=0;j<i;j++)
             printf("%5d",a[i][j]);
             printf("\n");
         }
     }
}
第四十六题:定义一个33列的二维数组,从键盘输入9个数的值。输出其中最大值和最小值及其所在的行列坐标。
#include "stdio.h"
 void main()
 {
     int arr[3][3];
     int i,j,max,min;
     int max_i,max_j;
     int min_i,min_j;
     printf("please input the arr:\n");
     for(i=0;i<3;i++)
         for(j=0;j<3;j++)
             scanf("%d",&arr[i][j]);
     for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
     max=arr[0][0];
     min=arr[0][0];
     for(i=0;i<3;i++)
        for(j=0;j<3;j++)
           {
               if(arr[i][j]>max)
               {
               max=arr[i][j];
               max_i=i;
               max_j=j;
            }
            if(arr[i][j]<min)
               {
               min=arr[i][j];
               min_i=i;
               min_j=j;
            }
           }
    printf("the result is :\n");
    printf("the max element is %d, index is [%d][%d]\n\n",max,max_i,max_j);
    printf("the min element is %d, index is [%d][%d]\n\n",min,min_i,min_j);
    }
第四十七题:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以35日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于时需考虑多加一天。
#include
main()
{
    int year,mouth,day,days=0;
    int w,m,d,y;
    printf("请输入年,月,日\n");
    scanf("%d%d%d",&y,&m,&d);
    mouth=m;
    year=y;
    day=d;
    switch(mouth)
        {
        case 1:days=0;break;
        case 2:days=31;break;
        case 3:days=59;break;
        case 4:days=90;break;
        case 5:days=120;break;
        case 6:days=151;break;
        case 7:days=181;break;
        case 8:days=212;break;
        case 9:days=243;break;
        case 10:days=273;break;
        case 11:days=304;break;
        case 12:days=334;break;
    }
    days+=day;
    if(mouth>2&&year%4==0&&year%100!=0||year%400==0)
       days++;
    printf("%d年%d月%d日第%d天",year,mouth,day,days);
    }
第四十八题:有12340  五个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?
#include
main()
{
    int i,j,k,count=0;
    for(i=1;i<5;i++)
    {
       for(j=0;j<5;j++)
        {
           for(k=0;k<5;k++)
           {
              if(i!=j&&j!=k&&i!=k)
                {
                    count++;
                    printf("%d%d%d    ",i,j,k);
                    if(count%5==0)
                        printf("\n");
                }
            }
        }
   }
   printf("\n一共有%d种方法",count);
}
第四十九题:输入两个正整数m和n,求其最大公约数和最小公倍数。
#include"stdio.h"
void main()
{
    int a,b,t,r,n;
    printf("please input the a and b:\n");
    scanf("%d%d",&a,&b);
    if(a<b)
    {
        t=b;
        b=a;
        a=t;
    }
    r=a%b;
    n=a*b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
    printf("这两个数的最大公约数为%d,最小公倍数为%d\n",b,n/b);
} 
第五十题:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include 
void main()
{
    double i,s=0,x=100,y;
    for(i=1;i<=10;i++)
    {
        y=x/2;
        s=s+x+y;
        x=y; 
    }
    s=s-y;
    printf("共经过:%lf米\n",s);
    printf("第十次反弹:%lf米\n",y);
}
第五十一题:打印下面图形
#include"stdio.h"
void main()
{
    int i,j;
    for(i=1;i<=4;i++)
    {
        for(j=1;j<=2*i-1;j++)
            printf("*");
        printf("\n");
    }
    
    for(i=3;i>=1;i--)
     {
         for(j=1;j<=2*i-1;j++)
          printf("*");
       printf("\n");
    } 
}
第五十二题:有一分数序列:2/13/25/38/513/821/13...求出这个数列的前20项之和。
#include"stdio.h"
void main()
{
    double a=2;
    double b=1;
    double sum=0;
    double temp=0;
    int i;
    for(i=1;i<=20;i++) 
    {
         sum+=a/b; 
         temp=a;
         a+=b;
         b=temp;
    }
    printf("the result is :%.2f\n",sum);
 } 
第五十三题:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#include"stdio.h"
void main( )
{
    long a,b,c,d,e,x;
    printf("请输入不多于5位的正整数:");
    scanf("%ld",&x);
    a=x/10000;
    b=x%10000/1000;
    c=x%1000/100;
    d=x%100/10;
    e=x%10;
    if (a!=0)
         printf("为5位数,逆序为: %ld %ld %ld %ld %ld\n",e,d,c,b,a);
    else if(b!=0) 
         printf("为4位数,逆序为: %ld %ld %ld %ld\n",e,d,c,b);
    else if(c!=0) 
         printf("为 3 位数,逆序为:%ld %ld %ld\n",e,d,c);
    else if(d!=0) 
         printf("为 2 位数,逆序为: %ld %ld\n",e,d);
    else if(e!=0) 
         printf("为 1 位数,逆序为:%ld\n",e);
    else
         printf("errer!\n"); 
}
第五十四题:对10个数进行排序(起泡排序)
#include "stdio.h"
 void main()
 {
     int arr[10];
     int i,j,temp;
     printf("please input the arr:\n");
    for(i=0;i<10;i++)
       scanf("%d",&arr[i]);
     for(i=1;i<10;i++)
         for(j=0;j<10-i;j++)
            if(arr[j]>arr[j+1])
            {
                temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
            }
    printf("the result is :\n");
    for(i=0;i<10;i++)
       printf("%d  ",arr[i]);        
 }
第五十五题:将一个数组逆序输出。
#include "stdio.h"
 void main()
 {
     int arr[10];
     int i,j;
     int temp;
    printf("please input the arr:\n");
     for(i=0;i<10;i++)
         scanf("%d",&arr[i]);  
     for(i=0,j=9;i<5;i++,j--)
           {
            temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
            }
    printf("the result is :\n");
    for(i=0;i<10;i++)
         printf("%5d",arr[i]);
 }
第五十六题:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 
#include "stdio.h"
 void main()
 {
     int i,j,temp,temp1,temp2;
     int number;
     int end;
     int a[9]={14,20,5,6,7,8,11,12};
     for(i=0;i<8;i++)
         for(j=0;j<8-i;j++) 
            if(a[j]<a[j+1])
               {
                   temp=a[j];
                   a[j]=a[j+1];
                   a[j+1]=temp;
               }
    for(i=0;i<8;i++)
        printf("%5d",a[i]);
    printf("\n");
    printf("Insert data:");
    scanf("%d",&number); 
    end=a[7];
    if(number<end)
       a[8]=number;
    else
    {
        for(i=0;i<8;i++)
        {
            if(a[i]<number)
            {
               temp1=a[i];
               a[i]=number;
               for(j=i+1;j<9;j++)
               {
                     temp2=a[j];
                     a[j]=temp1;
                     temp1=temp2;
               }
               break;
            }
        }
    }
    printf("\nNow,the array is :\n");
    for(i=0;i<9;i++)
        printf("%5d",a[i]);
    }
第五十七题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include
 void main()
 {
     int i;
    int j;
    int k;
    for(i=0;i<1000;i++)//我们要判断的数
    {
        for(j=0;j<1000;j++)  //判断i+100是否是j的平方数
        {
            if(i+100==j*j)
            {
                for(k=j;k<1000;k++)//判断i+168是否是k的平方
                {
                    if(i+168==k*k)
                    {
                        printf("%d\n",i);
                    }
                }
            }
        }
    }
 }
第五十八题:有1234个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
void main()
{
    int i,j,k;
    printf("\n");
    for(i=1;i<5;i++) 
    {
        for(j=1;j<5;j++)
         {
            for (k=1;k<5;k++) 
            { 
                if (i!=k&&i!=j&&j!=k) 
                {
                    printf("%d%d%d  ",i,j,k);
            
                }
            }
        }
    }
}
第五十九题:输入三个整数x,y,z,请把这三个数由小到大输出。
#include"stdio.h"
void main()
{
    int x,y,z,t;
    scanf("%d%d%d",&x,&y,&z);
    if(x>y)
    {t=x;x=y;y=t;}
    if(x>z)
    {t=z;z=x;x=t;}
    if(y>z)
    {t=y;y=z;z=t;}
    printf("small to big: %d %d %d\n",x,y,z);
 } 
第六十题:输出9*9乘法表。
#include"stdio.h"
void main()
{
    int i,j;
    for(i=1;i<10;i++)
        {
        
        for(j=1;j<=i;j++)
           printf("%d*%d=%d  ",i,j,i*j);
        printf("\n");
       }
}

你可能感兴趣的:(寒假作业第41-60题)