寒假作业21-40题

寒假作业21-40题

第二十一题:求5*5的二维数组的每行元素的平均值。
#include"stdio.h"
void main()
 {
     int arr[5][6];
     int i,j;  
     printf("please input the arr:\n");
     for(i=0;i<5;i++)
         for(j=0;j<5;j++)
             scanf("%d",&arr[i][j]);
     for(i=0;i<5;i++)
         arr[i][5]=0;
     for(i=0;i<5;i++)
       {
        for(j=0;j<5;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
     for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            arr[i][5]+=arr[i][j];
         arr[i][5]=arr[i][5]/5;
    }  
    printf("the result is :\n");
    for(i=0;i<5;i++)
      {
       for(j=0;j<6;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
第二十二题:

韩信点兵:在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。

据说韩信的数学水平也非常高超,他在点名的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

按从15报数,记下最末一个士兵报的数为1;

按从16报数,记下最末一个士兵报的数为5;

按从17报数,记下最末一个士兵报的数为4;

按111报数,最末一个士兵报的数是10;

你知道韩信至少有多少兵吗?试编写相应程序。
#include"stdio.h"
void main()
{
    int i;
    for(i=10;;i++)
    {
     if(i%5==1&&i%6==4&&i%7==4&&i%11==10)
       {
            printf("总人数为:%d\n",i);
            break;
       }
    }
}
第二十三题://求序列前n项的和:输入一个正整数n,输出2/1+3/2+5/3+8/5+.......的前n项之和(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子),保留2位小数。试编写相应程序。
#include"stdio.h"
void main()
{
    double a=2,t;
    double b=1;
    double sum=0;
    int    n=0,num=1;
    printf("请输入N:");
    scanf("%d",&n);
    while(num<=n)
    {
        sum=sum+a/b;
        t=b;
        b=a;
        a=t+b;
        num++;
    }
    printf("前%d项之和是:%.2f\n",n,sum);
}
第二十四题:求序列和,输入两个正整数a和n,求a+aa+aaa+aa....a(n个a)之和。比如输入23,输出246(2+22+222)。试编写相应程序。
#include"stdio.h"
void  main()
{
       int a,n,s=0; 
       printf("Input a: "); 
       scanf("%d",&a); 
       printf("Input n:");
       scanf("%d",&n); 
       while(n>=0)       
        { 
                s=a*n+s; 
                a=a*10; 
                n--; 
        } 
        printf("s= %d\n",s);
} 
第二十五题:兔子繁衍问题:一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到n对?试编写相应程序。
#include"stdio.h"
main()
{
	int i,j,n,a=0,b_3=0,b_1=1,b_2=0;
	scanf("%d",&n);
	for(i=1;j<n;i++)
		{
			b_3=b_2;
			b_2=b_1;
			a=a+b_3;
			b_1=a;	
			j=a+b_1+b_2;
		}
	printf("%d",i);
}
第二十六题:在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒放一次,B舰每隔6秒放一次,C舰每隔7秒放一次,假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。
#include<stdlio.h>
void main()
{
    int i,count=0;
    int all[141];
    for(i=0;i<141;i++)
       all[i]=0;
    for(i=0;i<=5*20;i+=5)
    {
       all[i]++;
    }
    for(i=0;i<=6*20;i+=6)
    {
       all[i]++;
    }
    for(i=0;i<=7*20;i+=7)
    {
       all[i]++;
    }
    for(i=0;i<141;i++)
    {
       if(all[i]!=0)
    {
           count++;
       printf("%4d",i);}
    }
    printf("count=%d",count);
}
第二十七题:有一个5*5的二维数组,要求找出每行上最大的元素,并将其值赋为0#include"stdio.h"
void main()
{
int a[5][5]={1,42,3,45,5,6,7,78,9,10,11,12,34,77,19,22,15,36,28,40,99,66,2,100,38},b[5];
int i,j;
    for(i=0;i<5;i++)
    {
      for(j=0;j<5;j++)
          printf("%5d",a[i][j]);
      printf("\n");
}
for(i=0;i<5;i++)
    {
   b[i]=a[i][0];
       for(j=1;j<5;j++)
           if(a[i][j]>b[i])
               b[i]=a[i][j];      
    }
    for(i=0;i<5;i++)
   {
     for(j=0;j<5;j++)
       if(a[i][j]==b[i])
           a[i][j]=0;
}
    printf("\n");
    for(i=0;i<5;i++)
    {
      for(j=0;j<5;j++)
          printf("%5d",a[i][j]);
      printf("\n");
}
}
第二十八题:从键盘输入10个正负相间的整数,输出个位数是奇数、十位数是偶数的所有数。
#include "stdio.h"
void main()
 {
  int arr[10];
  int i;
  printf("please input the numbers:\n");
  for(i=0;i<10;i++)
  scanf("%d",&arr[i]);
  for(i=0;i<10;i++)
      if(arr[i]%10%2!=0&&arr[i]/10%2==0)
          printf("%d\t",arr[i]);
 }
第二十九题:计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数)
#include<stdio.h>
#include<math.h>
int main()
{
    double a, b, x, y;
    scanf("%lf%lf%lf%lf",&a,&b,&x,&y);//读入
    printf("%.2f\n",sqrt((a - x) * (a - x) + (b - y) * (b - y)));   

} 
第三十题:输入两个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和。
#include "stdio.h"
void main()
{
    int m,n,sum=0,counter=0;
    int i,j;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    {
        for(j=2;j<i;j++)
            if(i%j==0)
               break;
        if(j==i)
            {
                sum=sum+i;
                counter++;
            }
    }
    printf("counter=%d,sum=%d\n",counter,sum);
}
第三十一题:从键盘中输入全班同学们的C语言课程的成绩,输入-1时停止,统计出各分数段的人数,并输出。(<6060-6970-7980-8990-100#include "stdio.h"
void main()
 { 
 int score[200];
 int counter1=0,counter2=0,counter3=0,counter4=0,counter5=0;
 int i=0;
 for(i=0;i<200;i++)
     {
             scanf("%d",&score[i]);
            if((score[i] == -1))
                 break;
            else if(score[i]>=90)
              counter1++;
            else if(score[i]>=80)
               counter2++;
            else if(score[i]>=70)
               counter3++;
            else if(score[i]>=60)
               counter4++;
            else 
               counter5++;
        }
 printf(" <60 is %d\n 60-69 is %d\n 70-79  is %d\n 80-89  is %d\n 90-100 is %d\n ",counter5,counter4,counter3,counter2,counter1);
}    
第三十二题:输入两个正整数a和n,编程求a+aa+aaa+aa…a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如fn(3,2)的返回值是36#include"stdio.h"
int fn(int a,int n)
{
     int s;
     while(n>=0)       
        { 
            s=a*n+s; 
            a=a*10; 
            n--; 
        } 
    return s;
}
void main()
{
    int a1,n1;
    int sum;
    printf("please input the a1 and n1:\n");
    scanf("%d%d",&a1,&n1);
    sum=fn(a1,n1);
    printf("sum=%d\n",sum);
}
第三十三题:输出指定范围内的Fibonacci数:输入两个正整数m和n(1<=m,n<=10000),输出m~n之间所有的Fibonacci数。
#include"stdio.h"
int fib(int n);
void printFN(int m,int n);
int main()
{
    int m,n,t;
    scanf("%d%d", &m,&n);
    printFN(m,n);
    return 0;
}
int fib(int n)
{
   if(n==1||n==2)
        return 1;
   if(n>2)
        return fib(n-1)+fib(n-2);
}
void printFN(int m,int n)
{
   int i=0,j,k=1,count=0;
   for(j=0;j<=21;j++)
   {    
        i++;
        if(fib(i)>=m && fib(i)<=n)
         {
            count++;
            printf("%d",fib(i));
         }
   }
   if(count==0)
    {
        printf("No Fibonacci number");
    }
}
第三十四题:验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。例如:6=3+38=3+5,…,18=5+13。将6~100之间的偶数都表示成两个奇素数之和,打印时一行打印3组。
#include"stdio.h"
#include"math.h"
int fun(int n)
{
    int i;
    if(n==2)
       return 1;
    if(n%2==0)
       return 0;
    for(i=3;i<=sqrt(n);i+=2)
       if(n%i==0)
         return 0;
    return 1;
 } 
 main()
 {
     int n,i,j,flag,counter=0;
     for(n=6;n<=100;n++)
     {   
         flag=0;
         for(i=2;i<=n/2;i++)
         {
             if(fun(i))
               if(fun(n-i))
                {
                printf("%d=%d+%d\t\t",n,i,n-i);
                counter++;
                ok=1; 
                if(counter%3==0)
                   printf("\n");
                } 
             if(i!=2)
                i++;
             if(flag)
               break;
         }
     }
  } 
第三十五题:求100~200间的全部素数。
#include"stdio.h"
#include"math.h"
int fun(int n)
{
    int i;
    if(n==2)
       return 1;
    if(n%2==0)
       return 0;
    for(i=3;i<=sqrt(n);i+=2)
       if(n%i==0)
         return 0;
    return 1;
 } 
main()
{
    int num,counter=0;
    for(num=100;num<=200;num++)    
      if(fun(num))
      {
          counter++;
        printf("%d\t",num);
          if(counter%5==0)
            printf("\n");
      }
}
第三十六题:按一定规律将电文变成密码: 将字母A变为E、将字母a变为e,即变成其后的第四个字母,W将变成A。字母按上述规律转换,非字母字符不变。输入一行字符,输出相应密码。
#include "stdio.h"
void main()
{ 
   char c;
   while((c=getchar())!='\n')
      { 
      if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
           { 
                   c=c+4;
                   if(c>'Z'&&c<='Z'+4||c>'z') 
                    c=c-26;
           }
         printf("%c",c);
      }
    printf("\n");
}
第三十七题:输入三个字符串,按由小到大的顺序输出。
(用指针处理,效率会更高一些。但此处不用指针。)
#include"stdio.h"
#include"string.h"
 void main()
{
    char st[20],string[3][20];
    int i,j,p;
    printf("input three string:\n");
    for(i=0;i<3;i++)
        gets(string[i]);
    printf("\n");
    
    for(i=0;i<3;i++)
    {
      p=i;
      strcpy(st,string[i]);
      for(j=i+1;j<3;j++)
        if(strcmp(string[j],st)<0)
           {
            p=j;
            strcpy(st,string[j]);
           }
      if(p!=i)
        {
        strcpy(st,string[i]);
        strcpy(string[i],string[p]);
        strcpy(string[p],st);
        }
      puts(string[i]);
   }
}
第三十八题:读入4*3的二维数组,分别求各行、各列及表中所有数之和。
#include "stdio.h"
 void main()
 {
     int arr[5][4];
     int i,j;
    printf("please input the arr:\n");
     for(i=0;i<4;i++)
         for(j=0;j<3;j++)
             scanf("%d",&arr[i][j]);
     for(i=0;i<4;i++) 
         arr[i][3]=0;
     for(j=0;j<3;j++)
         arr[4][j]=0;
     for(i=0;i<5;i++)
       {
        for(j=0;j<4;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      }     
    for(i=0;i<4;i++)
         for(j=0;j<3;j++)
         {   
             arr[4][3]+=arr[i][j];
            arr[i][3]+=arr[i][j];
             arr[4][j]+=arr[i][j];
        }     
    printf("the result is :\n");
    for(i=0;i<5;i++)
       {
        for(j=0;j<4;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      }      
 } 
第三十九题:将二维数组行列元素互换,存到另一个数组中。
#include "stdio.h"
 void main()
 {
     int arr[3][4];
     int arr_result[4][3];
     int i,j;
     printf("please input the arr:\n");
     for(i=0;i<3;i++)
         for(j=0;j<4;j++)
             scanf("%d",&arr[i][j]);
     for(i=0;i<3;i++)
       {
        for(j=0;j<4;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
     for(i=0;i<4;i++)
        for(j=0;j<3;j++)
            arr_result[i][j]=arr[j][i];
    printf("the result is :\n");
    for(i=0;i<4;i++)
       {
        for(j=0;j<3;j++)
             printf("%5d",arr_result[i][j]);
         printf("\n");   
      } 
 } 
第四十题:4*4的二维数组,分别求出主对角线、次对角线上元素之和。
#include "stdio.h"
 void main()
 {
     int arr[4][4];
     int i,j;
     int sum_1=0,sum_2=0;
     printf("please input the arr:\n");
     for(i=0;i<4;i++)
         for(j=0;j<4;j++)
             scanf("%d",&arr[i][j]);
     for(i=0;i<4;i++)
       {
        for(j=0;j<4;j++)
             printf("%5d",arr[i][j]);
         printf("\n");   
      } 
     for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            {
           if(i==j)
                 sum_1+=arr[i][j];
            if(i+j==3)
                 sum_2+=arr[i][j];
             }
    printf("\n the sum_1 is %d,  the sum_2 is %d  :\n",sum_1,sum_2);
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值