生活知识|怎么编程序,如何写程序编程


程序是如何编写的? /*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;
}
}

推荐阅读