目录
1.二分法求根
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define EPS 1e-6
float F( float x );
int main()
{
float x1,x2,x0,fx1,fx2,fx0=1;
scanf("%f,%f",&x1,&x2);
while( fabs(fx0)>EPS )
{
x0=(x1+x2)/2;
fx0=F(x0);
fx1=F(x1);
fx2=F(x2);
if( fx1*fx2>0 )
{
printf("No root!\n");
exit(0);
}
if( fx0*fx1<0 )
{
x2=x0;
continue;
}
if( fx0*fx2<0 )
{
x1=x0;
continue;
}
}
printf("x=%6.2f\n",x0);
return 0;
}
float F( float x )
{
float f;
f=x*x*x-x-1;
return f;
}
2.矩阵转置
题目内容:
某二维数组存放的数据构成一个n*n的方阵,其中n<=5。写程序,从键盘输入n的值(n<=5),该n*n矩阵中各元素的值按下面的公式计算:
a[i][j] = i * n + j + 1
其中,a[i][j]表示第i行第j列的元素。要求分别输出该矩阵和它的转置矩阵。
注意:定义数字大小N时,请用
#define N 10
输入格式: "%d"
输出提示:"The original matrix is:\n"
输出提示:"The changed matrix is:\n"
输出格式: 矩阵的列与列之间为%3d,行与行之间为\n
#include<stdio.h>
void Printorigin( int *p ,int m,int n );
void Printchange( int *p1,int *p2,int m,int n);
int main()
{
int i,j,n;
scanf("%d",&n);
int array1[n][n],array2[n][n];;
int *p1=*array1,*p2=*array2;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
array1[i][j]=i*n+j+1;
}
}
printf("The original matrix is:\n");
Printorigin( p1,n,n );
printf("The changed matrix is:\n");
Printchange( p1,p2,n,n );
Printorigin( p2,n,n );
return 0;
}
void Printorigin( int *p ,int m,int n )
{
int i,j;
for( i=0;i<m;i++ )
{
for( j=0;j<n;j++ )
{
printf("%3d",*(p+i*n+j));
}
printf("\n");
}
}
void Printchange( int *p1,int *p2,int m,int n)
{
int i,j;
for( i=0;i<m;i++ )
{
for(j=0;j<n;j++)
{
*(p2+i*n+j)=*(p1+j*n+i);
}
}
}
3.奇偶数分离
题目内容:
输入n个整数(n从键盘输入,假设n的值不超过100),按奇偶数分成两组并输出。输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。
函数原型如下所示:
void Seperate(int a[], int n); //数组a[]存放用户输入的n个整数
解题思路:用两个循环分别输出奇数和偶数,在输出第一个数时用"%d"格式字符,在输出其余数时用",%d"格式字符,用标志变量记录和判断是否是第一个奇数或偶数。
程序运行结果示例1:
Input n:7↙</