第四十一题:.定义一个含有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);
}
第四十三题:定义一个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);
}
第四十四题:编程计算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");
}
}
}
第四十六题:定义一个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);
}
第四十七题:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上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);
}
第四十八题:有1、2、3、4、0 五个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?
#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/1,3/2,5/3,8/5,13/8,21/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++)
{
if(i+100==j*j)
{
for(k=j;k<1000;k++)
{
if(i+168==k*k)
{
printf("%d\n",i);
}
}
}
}
}
}
第五十八题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
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");
}
}