2021-02-24

25.兔子繁衍问题:一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到n对?试编写相应程序。
#include<stdio.h>
void main()
{
int N,a=2,b=0,c=0,i=1;
scanf("%d",&N);
if(N>1)
{
while(c<2*N)
{ c=a+b;
b=a;
a=c;
i++;
}
printf("%d",i);
}
else printf(“1”);
}
26.在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒放一次,B舰每隔6秒放一次,C舰每隔7秒放一次,假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。

#include<stdlib.h>
#include<stdio.h>
void main()
{
int i,count=0;
int all[141];
for(i=0;i<141;i++)
all[i]=0;
for(i=0;i<=520;i+=5)
{
all[i]++;
}
for(i=0;i<=6
20;i+=6)
{
all[i]++;
}
for(i=0;i<=720;i+=7)
{
all[i]++;
}
for(i=0;i<141;i++)
{
if(all[i]!=0)
{
count++;
printf("%4d",i);}
}
printf(“count=%d”,count);
}
27.有一个5
5的二维数组,要求删除每行上的最大值,将剩余的数据输出。
#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");
}
}
28.从键盘输入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%20)
printf("%d\t",arr[i]);
}
29.计算两点间的距离:给定平面任意两点坐标(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)));
}
30.输入两个正整数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);
}
31.从键盘中输入全班同学们的C语言课程的成绩,输入-1时停止,统计出各分数段的人数,并输出。(<60、60-69、70-79、80-89、90-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);
}
32.输入两个正整数a和n,编程求a+aa+aaa+aa…a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如fn(3,2)的返回值是33。
#include"stdio.h”
int fn(int a,int n)
{
int s;
while(n>=0)
{
s=an+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);
}
33.输出指定范围内的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(n1||n2)
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("%5d",fib(i));
}
}
if(count0)
{
printf(“No Fibonacci number”);
}
}
34.验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。例如:6=3+3,8=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%20)
return 0;
for(i=3;i<=sqrt(n);i+=2)
if(n%i
0)
return 0;
return 1;
}

main()
{
int ok,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("%5d=%d+%d\t\t",n,i,n-i);
counter++;
ok=1;
if(counter%30)
printf("\n");
}
if(i!=2)
i++;
if(flag)
break;
}
}
}
35.求100~200间的全部素数。
#include"stdio.h"
#include"math.h"
int fun(int n)
{
int i;
if(n
2)
return 1;
if(n%20)
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");
}
}
36.按一定规律将电文变成密码: 将字母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");
}
37…输入三个字符串,按由小到大的顺序输出。
#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]);

}
}
38.读入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");   
  }      

}
39.将二维数组行列元素互换,存到另一个数组中。
#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");   
  } 

}
40.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);

}
41.定义一个含有30个整型元素的数组,按顺序赋予从加粗样式2开始的偶数,然后按顺序以每5个数一组的形式求出平均值并输出。
#include “stdio.h”
void main()
{
int arr[30],sum=0;
int i,j;
for(i=0;i<30;i++)
arr[i]=2i+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;
}
}
}
42.退出圈子,下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。输入整数n和m,并按退出顺序输出退出圈子的人的编号。试编写相应程序。`
#include <stdio.h>
#include <stdlib.h>
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(cntm)
{
a[i]=0;
cnt=0;
printf("%d ",i+1);
}
}
if(CNT
flag+1)
break;
}
free(a);
}
43.定义一个3行3列的二维数组,从键盘输入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);
}
44.编程计算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);

}
45.用编程计算并输出杨辉三角形的前n行(要求n从键盘输入)输出杨辉三角形前n行
#include<stdio.h>
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");
     }
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值