程序是如何编写的? /*1、 编程解决如下数学问题:有12升水, 怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤 。 (20分)
a12 b8 c5
12 0 0
* * * ( "*"表示当前状态下每个容器的盛水量)
......
6 6 0
# include <stdio.h>
# include <stdlib.h>
void move(int *x,int *y,int aMax,int bMax)
{
if(aMax>bMax)
{
if(*x+*y>bMax)
{
*x = *x-(bMax-*y);
*y = *y+(bMax-*y);
}
else
{
*y = *y+*x;
*x = *x-*x;//如果颠倒两个的顺序就会造成无法输出
}
}
else
{
*y = *y + *x;
*x = *x - *x;
}
}
main()
{
int aMax=12,bMax=8,cMax=5;
int a=12,b=0,c=0;
int i=1;
printf(" a12 b8 c5:\n");
printf("%7d%7d%7d\n",a,b,c);
while(i)
{
move(&a,&b,aMax,bMax);
printf("%7d%7d%7d\n",a,b,c);
if(a==6&&b==6)
goto step2;
move(&b,&c,bMax,cMax);
printf("%7d%7d%7d\n",a,b,c);
if(a==6&&b==6)
goto step2;
move(&c,&a,cMax,aMax);
printf("%7d%7d%7d\n",a,b,c);
if(a==6&&b==6)
goto step2;
move(&b,&c,bMax,cMax);
printf("%7d%7d%7d\n",a,b,c);
if(a==6&&b==6)
goto step2;
}
step2:
printf("the water has been sorted!\n");
return 0;
}*/
/*2、 编程实现:有二维数组a[3][3]={{5.4, 3.2, 8}, {6, 4, 3.3}, {7, 3, 1.3}},
将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a[0][0], 第2行同除以a[1][1], ...),
按行输出新数组 。 (20分)
# include <stdio.h>
main()
{
double a[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}}; //可以在定义时初始化, 在后来就不行了
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i==j)
a[i][j]=a[i][j];
else
a[i][j]=a[i][j]/a[i][i];
}
a[i][i]=1;
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6.2f",a[i][j]);
printf("\n");
}
}*/
/*3、编程:设x取值为区间[1,20]的整数, 求函数f(x)=x-sin(x)- cos(x)的最大值,
要求使用自定义函数实现f(x)功能 。 (20分)
#include <stdio.h>
#include <math.h>
double f(long double x);
main()
{
double a[50];
int i,index,j;
long double temp;
for(i=0;i<20;i++)
a[i] = f(i+1);
for(i=0;i<19;i++)
{
index = i;
for(j=i+1;j<20;j++)
if(a[j]>a[index])
index = j;
temp = a[index];
a[index] = a[i];
a[i] = temp;
}
printf("the max is %6.2f",a[0]);
printf("\n");
return 0;
}
double f(long double x)
{
x = x - sin(x) - cos(x); //他输入的是弧度数, 而我用计算器算的是角度值, 所以结果会不一样
return x;
}*/
//冒泡排序
/*# include <stdio.h>
# include <math.h>
void swap(int *x,int *y);
main()
{
int i,j;
int a[50];
printf("please input the num:");
printf("\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
swap(&a[j],&a[j+1]);
printf("after sorted the num is:");
printf("\n");
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");]
return 0;
}
void swap(int *x,int *y)
{
int p;
p = *x;
*x = *y;
*y = p;
}
*/
//选择排序
/*# include <stdio.h>
# include <stdlib.h>
main()
{
int i,j,temp,index;
int a[50];
printf("input the num :");
printf("\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
index = i;
for(j=i+1;j<10;j++)
{
if(a[j]<a[index])
index = j;
temp = a[index];
a[index] = a[i];
a[i] = temp;
}
}
推荐阅读
- 生活知识|水泥怎么去除,大块水泥怎么去除
- 生活知识|爱剪辑怎么用,爱剪辑离线使用
- 母婴知识|孩子多大可以送托儿所,宝宝几岁能送到托儿所
- 母婴知识|手足口传染多大的孩子,手足口会传染大龄儿童吗
- 母婴知识|蒋雯丽孩子多大,蒋文里有孩子吗
- 母婴知识|高圆圆孩子今年多大了
- 母婴知识|星露谷物语孩子能长多大,星露谷物语各男主出轨
- 母婴知识|小伙子是指多大的人,喜欢的女孩子叫我小伙子
- 母婴知识|盖优乐适合多大孩子吃
- 母婴知识|何炅有孩子吗 多大