今日练习如下:
1.矩阵交换行
#include<stdio.h>
int fun(int m,int n);
int a[5][5]={0};
int main()
{
int m,n;
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("请输入要交换的行数:");
scanf("%d%d",&m,&n);
if((m>0&&m<6)&&(n>0&&n<6))
{
fun(m,n);
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int fun(int m,int n)
{
int j;
int b;
for(j=0;j<5;j++)
{
b=a[m-1][j];
a[m-1][j]=a[n-1][j];
a[n-1][j]=b;
}
}
2.编写一个程序,求出1到100之间每位数的乘积小于每位数的和的数。例如:13满足1*3<1+3
#include<stdio.h>
int fun(int m);
int main()
{
int i;
for(i=10;i<100;i++)
{
if(fun(i)==1)
{
printf("%d ",i);
}
}
}
int fun(int m)
{
int a,b;
a=m/10;
b=m%10;
if(a*b<a+b)
{
return 1;
}
else
{
return 0;
}
}
3.编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,其中必有黑球,输出所有的可能方案
#include<stdio.h>
int main()
{
int black,red,white;
for(black=1;black<=6;black++)
{
for(red=0;red<=3;red++)
{
for(white=0;white<=5;white++)
{
if(black+red+white==8)
{
printf("黑球数量为:%d 红球数量为:%d 白球数量为:%d\n",black,red,white);
}
}
}
}
}
4.有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13.。。。。。求前20项的和
#include<stdio.h>
float fun(int m,int n);
int main()
{
float a[2][20]={{2},{1}};
int i;
for(i=1;i<20;i++)
{
a[0][i]=fun(a[0][i-1],a[1][i-1]);
a[1][i]=a[0][i-1];
}
float sum=0;
for(i=0;i<20;i++)
{
sum+=a[0][i]/a[1][i];
}
printf("%f",sum);
}
float fun(int m,int n)
{
float a;
a=m+n;
return a;
}
5.有一个4*3的二维数组,把其转置,变成3*4的二维数组,输出
#include<stdio.h>
int main()
{
int a[4][3]={1,2,3,4,5,6,7,8,9,0,1,2};
int s[3][4]={0};
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
s[j][i]=a[i][j];
}
}
for(j=0;j<3;j++)
{
for(i=0;i<4;i++)
{
printf("%d ",s[j][i]);
}
printf("\n");
}
}