46.定义一个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 max is %d, index is [%d][%d]\n\n",max,max_i,max_j);
printf("the min is %d, index is [%d][%d]\n\n",min,min_i,min_j);
}
47…输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于时需考虑多加一天。
#include<stdio.h>
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%40&&year%100!=0||year%4000)
days++;
printf("%d年%d月%d日第%d天",year,mouth,day,days);
}
48.有1、2、3、4、0 五个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?
#include<stdio.h>
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);
}
49.输入两个正整数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);
}
50…一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include <stdio.h>
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);
}
51.#include"stdio.h"
void main()
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=2i-1;j++)
printf("");
printf("\n");
}
for(i=3;i>=1;i--)
{
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
52.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
#include"stdio.h"
void main()
{
double a=2,b=1,sum=0,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);
}
53.给一个不多于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”);
}
54.对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;
}
for(i=0;i<10;i++)
printf("%d “,arr[i]);
}
55.将一个数组逆序输出
#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;
}
for(i=0;i<10;i++)
printf("%5d",arr[i]);
}
56.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
#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");
//输入那个要插入的数number
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]);
}
57.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include “stdio.h”
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+100j*j)
{
for(k=j;k<1000;k++)//判断i+168是否是k的平方
{
if(i+168k*k)
{
printf("%d\n",i);
}
}
}
}
}
}
58.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include <stdio.h>
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);
}
}
}
}
}
59.输入三个整数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);
}
60.输出99乘法表
#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");
}
}