首页澳门新葡亰官方网站 › 澳门新葡亰官方网站测算办法中的一些前后相继

澳门新葡亰官方网站测算办法中的一些前后相继

加速法

C语言的学习基础,100个经典的算法

学生管理系统的几种实现方法(一位数组,二维数组,指针,结构体),二维结构体指针

一位数组:

#include <stdio.h>
#include<string.h>
#define N 5
void luru(float s[],int n);
void shuchu(float s[],int n);
void chaxun(float s[],int n);
void paixu(float a[],int n);
int mimayanzheng();
void caidan();

 

 

void main(){
    int x,y,k;
    float a[N];
    x=mimayanzheng();
    if(x==1){
        caidan();
        for(k=0;k!=5;k=y){
            printf("请输入选择:");
            scanf("%d",&y);
            switch(y){
                case 1 :luru(a,N);break;
                case 2 :shuchu(a,N);break;
                case 3 :chaxun(a,N);break;
                case 4 :paixu(a,N);break;
                case 5 :break;
            }
        }
    }

   

}
int mimayanzheng(){
    int i,flat;
    char m[7]="abc123",x[10];
    printf("请输入密码:");
    for(i=0;i<3;i++){
        flat=0;
        scanf("%s",&x);
        if(!strcmp(m,x)){
            flat=1;
            break;
        }
        else if(i<2)
            printf("请重新输入密码:");
    }
    return flat;
}

void caidan(){
    printf("+===============================+n");
    printf("+====学=生=成=绩=管=理=系=统====+n");
    printf("+===============================+n");
    printf("+===========1、  录入===========+n");
    printf("+===========2、  输出===========+n");
    printf("+===========3、  查询===========+n");
    printf("+===========4、  排序===========+n");
    printf("+===========5、  退出===========+n");
    printf("+===============================+n");
}

void luru(float s[],int n){
    int i;
    for(i=0;i<n;i++){
        printf("请输入第%d个同学的成绩:",i+1);
        scanf("%f",&s[i]);
    }
}

void shuchu(float s[],int n){
    int i;
    for(i=0;i<n;i++)
    printf("第%d个的同学成绩是:%f n",i+1,s[i]);
}

void chaxun(float s[],int n){
    int i,flat;
    float x;
    printf("请输入要查询的成绩:");
    scanf("%f",&x);
    for(i=0,flat=0;i<n;i++)
        if(x==s[i])
            flat =1;
    if(flat==1)
        for(i=0;i<N;i++){
            if(s[i]==x)
                printf("有此同学成绩,为第%d个同学的成绩n",i+1);
            continue;
        }
    else
        printf("没有此同学成绩n");
}

void paixu(float a[],int n){
    int i,j,k;
    float temp;
    for(j=0;j<n-1;j++){
        k=j;
        for(i=j+1;i<n;i++)
            if(a[i]<a[k])
                k=i;
            if(k!=j){
            temp=a[k];
            a[k]=a[j];
            a[j]=temp;
            }
    }
    printf("从小到大的排序是:");
    for(i=0;i<N;i++)
        printf("%f ",a[i]);
    printf("n");
}
 
 
 
 
 
二维数组:

#include <stdio.h>
#include<string.h>
#define a 2
#define b 3

void luru(float s[][b]);
void shuchu(float s[][b]);
void chaxun(float s[][b]);
void paixu(float m[][b]);
int mimayanzheng();
void caidan();

 

 

void main(){
    int x,y,k;
    float z[a][b];
    x=mimayanzheng();
    if(x==1){
        caidan();
        for(k=0;k!=5;k=y){
            printf("请输入选择:");
            scanf("%d",&y);
            switch(y){
                case 1 :luru(z);break;
                case 2 :shuchu(z);break;
                case 3 :chaxun(z);break;
                case 4 :paixu(z);break;
                case 5 :break;
            }
        }
    }

   

}
int mimayanzheng(){
    int i,flat;
    char m[7]="abc123",x[10];
    printf("请输入密码:");
    for(i=0;i<3;i++){
        flat=0;
        scanf("%s",&x);
        if(!strcmp(m,x)){
            flat=1;
            break;
        }
        else if(i<2)
            printf("请重新输入密码:");
    }
    return flat;
}

void caidan(){
    printf("+===============================+n");
    printf("+====学=生=成=绩=管=理=系=统====+n");
    printf("+===============================+n");
    printf("+===========1、  录入===========+n");
    printf("+===========2、  输出===========+n");
    printf("+===========3、  查询===========+n");
    printf("+===========4、  排序===========+n");
    printf("+===========5、  退出===========+n");
    printf("+===============================+n");
}

void luru(float s[a][b]){
    int i,j;
    for(j=0;j<a;j++){
        for(i=0;i<b;i++){
            printf("请输入第%d个同学的第%d科成绩:",j+1,i+1);
            scanf("%f",&s[j][i]);
        }
    }
}

void shuchu(float s[a][b]){
    int i,j;
    for(j=0;j<a;j++){
        for(i=0;i<b;i++){
           
printf("第%d个同学的第%d科成绩是%f:n",j+1,i+1,s[j][i]);
        }
    }
}

void chaxun(float s[a][b]){
    int i,j,flat;
    float x;
    printf("请输入要查询的成绩:");
    scanf("%f",&x);
    for(j=0;j<a;j++){
        for(i=0,flat=0;i<b;i++)
            if(x==s[j][i])
                flat =1;
    if(flat==1){
        for(j=0;j<a;j++){
            for(i=0;i<b;i++){
                if(s[j][i]==x)
                   
printf("有此同学成绩,为第%d个同学的第%d科成绩n",j+1,i+1);
            continue;
        }
        }
    }
    else
        printf("没有此同学成绩n");
    }
}

void paixu(float m[a][b]){
    int i,j,k,p;
    float temp;
    for(p=0;p<a;p++){
            for(j=0;j<b-1;j++){
                k=j;
                for(i=j+1;i<b;i++)
                    if(m[p][i]<m[p][k])
                        k=i;
                    if(k!=j){
                        temp=m[p][k];
                        m[p][k]=m[p][j];
                        m[p][j]=temp;
                    }
            }
    }
    printf("从小到大的排序是:n");
    for(j=0;j<a;j++){
        for(i=0;i<b;i++)
            printf("%f ",m[j][i]);
        printf("n");
    }
    printf("n");
}
 

 

 

指针:

#include <stdio.h>
#include<string.h>
#define N 5
void luru(double *s,int n);
void shuchu(double *s,int n);
void chaxun(double *s,int n);
void paixu(double *a,int n);
int mimayanzheng();
void caidan();

 

 

void main(){
    int x,y,k;
    double b[N];
    double *a;
    a=b;
    x=mimayanzheng();
    if(x==1){
        caidan();
        for(k=0;k!=5;k=y){
            printf("请输入选择:");
            scanf("%d",&y);
            switch(y){
                case 1 :luru(a,N);break;
                case 2 :shuchu(a,N);break;
                case 3 :chaxun(a,N);break;
                case 4 :paixu(a,N);break;
                case 5 :break;
            }
        }
    }

   

}
int mimayanzheng(){
    int i,flat;
    char m[7]="abc123",x[10];
    printf("请输入密码:");
    for(i=0;i<3;i++){
        flat=0;
        scanf("%s",&x);
        if(!strcmp(m,x)){
            flat=1;
            break;
        }
        else if(i<2)
            printf("请重新输入密码:");
    }
    return flat;
}

void caidan(){
    printf("+===============================+n");
    printf("+====学=生=成=绩=管=理=系=统====+n");
    printf("+===============================+n");
    printf("+===========1、  录入===========+n");
    printf("+===========2、  输出===========+n");
    printf("+===========3、  查询===========+n");
    printf("+===========4、  排序===========+n");
    printf("+===========5、  退出===========+n");
    printf("+===============================+n");
}

void luru(double * s,int n){
    int i;
    double k;
    for(i=0;i<n;i++){
        printf("请输入第%d个同学的成绩:",i+1);
        scanf("%lf",&k);
        * (s+i)=k;
    }
}

void shuchu(double *s,int n){
    int i;
    for(i=0;i<n;i++)
    printf("第%d个的同学成绩是:%lf n",i+1,*(s+i));
}

void chaxun(double *s,int n){
    int i,flat;
    double x;
    printf("请输入要查询的成绩:");
    scanf("%f",&x);
    for(i=0,flat=0;i<n;i++)
        if(x==*(s+i))
            flat =1;
    if(flat==1)
        for(i=0;i<n;i++){
            if(*(s+i)==x)
                printf("有此同学成绩,为第%d个同学的成绩n",i+1);
            continue;
        }
    else
        printf("没有此同学成绩n");
}

void paixu(double *a,int n){
    int i,j,k;
    double temp;
    for(j=0;j<n-1;j++){
        k=j;
        for(i=j+1;i<n;i++)
            if(*(a+i)<*(a+k))
                k=i;
            if(k!=j){
            temp=*(a+k);
            *(a+k)=*(a+j);
            *(a+j)=temp;
            }
    }
    printf("从小到大的排序是:");
    for(i=0;i<N;i++)
        printf("%f ",*(a+i));
    printf("n");
}
 
 
 
 
 
 
 
 
 
 
结构体:

#include <stdio.h>
#include<string.h>
#define N 5
void luru(struct xitong student[],int n);
void shuchu(struct xitong student[],int n);
void chaxun(struct xitong student[],int n);
void paixu(struct xitong student[],int n);
int mimayanzheng();
void caidan();
struct xitong{
    char xingming[10];
    int xuehao;
    float yuwen;
    float shuxue;
    float yingyu;
};

 

 

void main(){
    int x,y,k;
    struct xitong student [N];
    x=mimayanzheng();
    if(x==1){
        caidan();
        for(k=0;k!=5;k=y){
            printf("请输入选择:");
            scanf("%d",&y);
            switch(y){
                case 1 :luru(student,N);break;
                case 2 :shuchu(student,N);break;
                case 3 :chaxun(student,N);break;
                //case 4 :paixu(student,N);break;
                case 5 :break;
            }
        }
    }

   

}
int mimayanzheng(){
    int i,flat;
    char m[7]="abc123",x[10];
    printf("请输入密码:");
    for(i=0;i<3;i++){
        flat=0;
        scanf("%s",&x);
        if(!strcmp(m,x)){
            flat=1;
            break;
        }
        else if(i<2)
            printf("请重新输入密码:");
    }
    return flat;
}

void caidan(){
    printf("+===============================+n");
    printf("+====学=生=成=绩=管=理=系=统====+n");
    printf("+===============================+n");
    printf("+===========1、  录入===========+n");
    printf("+===========2、  输出===========+n");
    printf("+===========3、  查询===========+n");
    printf("+===========4、  排序===========+n");
    printf("+===========5、  退出===========+n");
    printf("+===============================+n");
}

void luru(struct xitong student[],int n){
    int i;
    for(i=0;i<n;i++){
       
printf("请输入第%d个同学的信息(姓名,学号,语文,数学,英语):",i+1);
        scanf("%s %d %f %f
%f",&student[i].xingming,&student[i].xuehao,&student[i].yuwen,&student[i].shuxue,&student[i].yingyu);
    }
}

void shuchu(struct xitong student[],int n){
    int i;
    for(i=0;i<n;i++)
    printf("第%d个的同学信息是:
n姓名:%sn学号:%dn语文:%fn数学:%fn英语:%fn",i+1,student[i].xingming,student[i].xuehao,student[i].yuwen,student[i].shuxue,student[i].yingyu);
}

void chaxun(struct xitong student[],int n){
    int i,flat;
    float x;
    printf("请输入要查询的成绩:");
    scanf("%f",&x);
    for(i=0,flat=0;i<n;i++)
       
if(x==student[i].yuwen||x==student[i].shuxue||x==student[i].yingyu)
            flat =1;
    if(flat==1)
        for(i=0;i<N;i++){
           
if(x==student[i].yuwen||x==student[i].shuxue||x==student[i].yingyu)
               
printf("有此同学成绩,为%s同学的成绩n",student[i].xingming);
            continue;
        }
    else
        printf("没有此同学成绩n");
}

一位数组: #include stdio.h #includestring.h #define N 5...

#include<stdio.h>
#include<math.h>
void main()
{
 float work_out(float x);
 float f1(float x);
 float a;
 printf("input origial:n");
 scanf("%f",&a);
 f1(a);
 printf("%0.3f",work_out(a));
}
float f1(float x)
{
 
 x=(sin(x))/(x);
 return(x);
}

C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法

float work_out(float x)
{
 float x1,x2,x3;
  do{
  x1=f1(x);
  x2=f1(x1);
  x3=x2-((x2-x1)*(x2-x1))/(x2-2*x1+x);
 }while(fabs(x3-x2)>=1e-2);
  return(x3);
}

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔

 

子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数

牛顿法

为多少?

#include<stdio.h>
#include<math.h>
void main()
{
 float work_out(float x1);
 float x1,a;
 printf("输入x的一个值:n");
 scanf("%f",&x1);
 a=work_out(x1);
 printf("输出计算结果:n");
 printf("%0.4f",a);
}
float work_out(float x1)
{
 float x0,f0,f1;
 do {
  x0=x1;
  f0=x0-cos(x0);
  f1=1+sin(x0);
  x1=x0-(f0/f1);
 }while(fabs(x1-x0)>=1e-3);
 return(x1);
}

 

 

__________________________________________________________________

弦截法

 

#include<stdio.h>
#include<math.h>
float f(float x)
{
 float y;
 y=x*(x*(x-1))-1;
 return(y);
}
float xpoint(float x1,float x2)
{
 float y;
 y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
 return(y);
}
float root(float x1,float x2)
{
 float x,y,y1;
 y1=f(x1);
 do{
  x=xpoint(x1,x2);
  y=f(x);
  if(y*y1>0)
  {
   y1=y;
   x1=x;
  }
  else
   x2=x;
 }while(fabs(y)>=1e-3);
  return(x);
}
void main()
{
 float x1,x2,f1,f2,x;
 do{
  printf("input x1 x2:n");
  scanf("%f,%f",&x1,&x2);
  f1=f(x1);
  f2=f(x2);
 }
 while(f1*f2>=0);
 x=root(x1,x2);
 printf("A of equation is %0.4fn",x);
}

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

 

 

迭代:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define n 3  
#define eps 0.5e-4  
#define Kmax 100
static double aa[n][n]={{10,-1,-2},{-1,10,-2},{-1,-1,5}};
 static double bb[n]={7.2,8.3,4.2};
void main()
{ int k,i,j;   double d,sum,norm;
  double a[n+1][n+1],b[n+1],x[n+1],y[n+1];
  for(i=1;i<=n;i++)
   { for(j=1;j<=n;j++)
   a[i][j]=aa[i-1][j-1];
     b[i]=bb[i-1];}
  for(i=1;i<=n;i++) x[i]=0;
  k=0;
  printf("n  k=%2d    X=",k);
  for(i=1;i<=n;i++) printf(" %f  ",x[i]);
   do
    {  k++;  if(k>Kmax)
{ printf("n The itetation failed !");break; }
       norm=0.0;
       for(i=1;i<=n;i++)
       { sum=0.0;
  for(j=1;j<=n;j++) if(j!=i) sum=sum+a[i][j]*x[j];
  y[i]=(b[i]-sum)/a[i][i];
  d=fabs(y[i]-x[i]);
  if(norm<d) norm=d;  
 }
      printf("n  k=%2d    X=",k);
      for(i=1;i<=n;i++) printf(" %f  ",y[i]);
      for(i=1;i<=n;i++) x[i]=y[i];
     }
    while(norm>=eps); 
    if (norm<eps)
     { printf("nn The result is:n");
      printf("n  k=%d  ",k);
      for(i=1;i<=n;i++) printf("   x[%d]=%f",i,x[i]);
      }
   getch();
}

___________________________________________________________________

三角
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define n 3
#define precision 1e-16
main()
{int i,j;double a[n+1][n+1],b[n+1];
 void LUdecomp();   void Solve();
 clrscr();
 printf("n Please input the matrix A:n");
 for(i=1;i<=n;i++)
  { printf("n row %d:",i);
    for(j=1;j<=n;j++)  scanf("%lf,",&a[i][j]);
   }
 printf("n Pleae input b[1]... b[n]:");
 for(i=1;i<=n;i++) scanf("%lf",&b[i]);
 LUdecomp(a);
 printf("n LU decomposition of Doolittle :nn");
   for(i=1;i<=n;i++)
   { for(j=1;j<=n;j++) printf("%12f",a[i][j]);  printf("n");
    }
 if(fabs(a[n][n])>precision)
  { Solve(a,b);  printf("n");
    for(i=1;i<=n;i++)  printf("   x[%d]=%f",i,b[i]);
  }
  else  printf("n LU decomposition method failed! n");
getch();
  }
void LUdecomp(double a[][n+1])
 { int i,j,k,s;
   for(k=1;k<=n;k++)
    { for(j=k;j<=n;j++)  for(s=1;s<=k-1;s++)
 a[k][j]-=a[k][s]*a[s][j];
      if((fabs(a[k][k])<precision)&&(k<n))
     { printf("n LU decomposition failed! n"); exit(0);}
      for(i=k+1;i<=n;i++)
       { for(s=1;s<=k-1;s++) 
a[i][k]-=a[i][s]*a[s][k];
      a[i][k]/=a[k][k];
 }
     }
  }
 void Solve(double a[][n+1],double b[])
  { int k,j;
    for(k=1;k<=n;k++) for(j=1;j<=k-1;j++)
   b[k]-=a[k][j]*b[j];
    for(k=n;k>=1;k--)
     { for(j=k+1;j<=n;j++) b[k]-=a[k][j]*b[j];
  b[k]/=a[k][k];
     }
  }

程序源代码:

高斯
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#define n 3  
#define precision 1e-16  
static double aa[n][n+1]={{1,2,-1,3},{1,-1,5,0},{4,1,-2,2}};
main()
{ int i,j,det;  double a[n+1][n+2],x[n+1];
  int GaussElimination_ColumnSelect();
  clrscr();
  for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)
     a[i][j]=aa[i-1][j-1];
det=GaussElimination_ColumnSelect(a,x);
  if(det!=0)
    for(i=1;i<=n;i++)
     printf("n  x[%d]=%fn",i,x[i]); printf("n");
  getch();
 }
int GaussElimination_ColumnSelect(double a[][n+2],double
x[n+1])
 { int i,j,k,r;   double c;
   for(k=1;k<=n-1;k++)
    { r=k;
      for(i=k;i<=n;i++) 
 if(fabs(a[i][k])>fabs(a[r][k]))   r=i;
if(fabs(a[r][k])<precision)
{printf("n det A = 0.Elimination  failed ! ");exit(0);}
      if(r!=k)
 {for(j=k;j<=n+1;j++) 
  { c=a[k][j];
a[k][j]=a[r][j]; a[r][j]=c;}
  }
      for(i=k+1;i<=n;i++)  
       { c=a[i][k]/a[k][k];
  for(j=k+1;j<=n+1;j++)
     a[i][j]=a[i][j]-c*a[k][j];
       }
     }
   if(fabs(a[n][n])<precision)
     {printf("n det A = 0. Algorithm failed !");exit(0);}
   for(k=n;k>=1;k--) 
    { x[k]=a[k][n+1];
      for(j=k+1;j<=n;j++)
 x[k]=x[k]-a[k][j]*x[j];
      x[k]=x[k]/a[k][k]澳门新葡亰官方网站,;
      }
   return(1);
 }

main()

 

{

 

long f1,f2;

int i;

f1=f2=1;

for(i=1;i<=20;i++)

 { printf("%12ld %12ld",f1,f2);

   if(i%2==0) printf("n");/*控制输出,每行四个*/

   f1=f1+f2;/*前两个月加起来赋值给第三个月*/

   f2=f1+f2;/*前两个月加起来赋值给第三个月*/

 }

}

上题还可用一维数组处理,you try!

 

题目:判断101-200之间有多少个素数,并输出所有素数。

 

__________________________________________________________________

 

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整

除,则表明此数不是素数,反之是素数。

 

___________________________________________________________________

 

程序源代码:

#include "math.h"

main()

{

 int m,i,k,h=0,leap=1;

 printf("n");

 for(m=101;m<=200;m++)

  { k=sqrt(m+1);

   for(i=2;i<=k;i++)

     if(m%i==0)

      {leap=0;break;}

   if(leap) {printf("%-4d",m);h++;

        if(h%10==0)

        printf("n");

        }

   leap=1;

  }

 printf("nThe total is %d",h);

}

 

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位

数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方

+5的三次方+3的三次方。

 

__________________________________________________________________

 

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

 

___________________________________________________________________

 

程序源代码:

main()

{

int i,j,k,n;

printf("'water flower'number is:");

 for(n=100;n<1000;n++)

 {

  i=n/100;/*分解出百位*/

  j=n/10%10;/*分解出十位*/

  k=n%10;/*分解出个位*/

  if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

   {

   printf("%-5d",n);

   }

 }

printf("n");

}

 

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

 

__________________________________________________________________

 

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完

成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正

整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

 

___________________________________________________________________

 

程序源代码:

/* zheng int is divided yinshu*/

main()

{

int n,i;

printf("nplease input a number:n");

scanf("%d",&n);

printf("%d=",n);

for(i=2;i<=n;i++)

 {

  while(n!=i)

  {

   if(n%i==0)

   { printf("%d*",i);

    n=n/i;

   }

   else

    break;

  }

}

printf("%d",n);

}

 

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60

-89分之间的用B表示,60分以下的用C表示。

 

__________________________________________________________________

 

程序分析:(a>b)?a:b这是条件运算符的基本例子。

 

___________________________________________________________________

 

程序源代码:

main()

{

 int score;

 char grade;

 printf("please input a scoren");

 scanf("%d",&score);

 grade=score>=90?'A'score>=60?'B':'C');

 printf("%d belongs to %c",score,grade);

}

 

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

 

__________________________________________________________________

 

程序分析:利用辗除法。

 

___________________________________________________________________

 

程序源代码:

main()

{

 int a,b,num1,num2,temp;

 printf("please input two numbers:n");

 scanf("%d,%d",&num1,&num2);

 if(num1  { temp=num1;

  num1=num2; 

  num2=temp;

 }

a=num1;b=num2;

while(b!=0)/*利用辗除法,直到b为0为止*/

 {

  temp=a%b;

  a=b;

  b=temp;

 }

printf("gongyueshu:%dn",a);

printf("gongbeishu:%dn",num1*num2/a);

}

 

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

 

__________________________________________________________________

 

程序分析:利用while语句,条件为输入的字符不为'n'.

 

___________________________________________________________________

 

程序源代码:

#include "stdio.h"

main()

{char c;

 int letters=0,space=0,digit=0,others=0;

 printf("please input some charactersn");

 while((c=getchar())!='n')

 {

 if(c>='a'&&c<='z'||c>='A'&&c<='Z')

  letters++;

 else if(c==' ')

  space++;

   else if(c>='0'&&c<='9')

       digit++;

     else

       others++;

}

printf("all in all:char=%d space=%d digit=%d others=%

dn",letters,space,digit,others);

}

 

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如

2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

 

__________________________________________________________________

 

程序分析:关键是计算出每一项的值。

 

___________________________________________________________________

 

程序源代码:

main()

{

 int a,n,count=1;

 long int sn=0,tn=0;

 printf("please input a and nn");

 scanf("%d,%d",&a,&n);

 printf("a=%d,n=%dn",a,n);

 while(count<=n)

 {

  tn=tn+a;

  sn=sn+tn;

  a=a*10;

  ++count;

 }

printf("a+aa+...=%ldn",sn);

}

 

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2

+3.编程找出1000以内的所有完数。

 

___________________________________________________________________

 

程序源代码:

main()

{

static int k[10];

int i,j,n,s;

for(j=2;j<1000;j++)

 {

 n=-1;

 s=j;

  for(i=1;i   {

   if((j%i)==0)

   { n++;

    s=s-i;

    k[n]=i;

   }

  }

 if(s==0)

 {

 printf("%d is a wanshu",j);

 for(i=0;i  printf("%d,",k);

 printf("%dn",k[n]);

 }

}

}

 

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,

求它在第10次落地时,共经过多少米?第10次反弹多高?

 

___________________________________________________________________

 

程序源代码:

main()

{

float sn=100.0,hn=sn/2;

int n;

for(n=2;n<=10;n++)

 {

  sn=sn+2*hn;/*第n次落地时共经过的米数*/

  hn=hn/2; /*第n次反跳高度*/

 }

printf("the total of road is %fn",sn);

printf("the tenth is %f metern",hn);

}

 

题目:一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的

一半又多吃了一个,到第十天的时候发现还有一个.

 

___________________________________________________________________

 

程序源代码:

/* 猴子吃桃问题 */

main()

{

int i,s,n=1;

for(i=1;i<10;i++)

{

s=(n+1)*2

n=s;

}

printf("第一天共摘了%d个桃n",s);

}

 

迭代法求方程根

___________________________________________________________________

 

/* 迭代法求一个数的平方根 */

#define Epsilon 1.0E-6 /*控制解的精度*/

#include<math.h>

main()

{

float a,x0,x1;

printf("请输入要求的数:");

scanf("%f",&a);

x0=a/2;

x1=(x0+a/x0)/2;

while(fabs(x1-x0)>=Epsilon)

  {

  x0=x1;

  x1=(x0+a/x0)/2;

  }

printf("%f的平方根:%f.5n",x1);

}

 

/* 上题的另一种算法 */

#define Epsilon 1.0E-6 /*控制解的精度*/

#include <stdio.h>

#include <math.h>

main()

{

float num,pre,this;

do

  {

  scanf("%f",&num);/*输入要求平方根的数*/

  }while(num<0);

if (num==0)

  printf("the root is 0");

else

  {

   this=1;

   do

   {

    pre=this;

    this=(pre+num/pre)/2;

    }while(fabs(pre-this)>Epsilon);/*用解的精度,控制循环次数*/

   }

printf("the root is %f",this);

}

 

用牛顿迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根

/* 牛顿迭代法 */

#define Epsilon 1.0E-6 /*控制解的精度*/

#include<math.h>

main()

{

   float x1,x0=1.5;

   x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);

   while(fabs(x1-x0>=Epsilon)

   {  

      x0=x1;

      x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);

   }

   printf("方程的根为%fn",x1);

}

 

用二分法求上题

/* 二分法 */

#define Epsilon 1.0E-5 /*控制解的精度*/

#include<math.h>

main()

{

   folat x1,x2,x0,f1,f2,f0;

   x0=(x1+x2)/2;

   f0=2*x0*x0*x0-4*x0*x0+3*x0-6;   /* 求中点的函数值 */

转载本站文章请注明出处:澳门新葡亰官方网站 http://www.radioritmo-bl.com/?p=1291

上一篇:

下一篇:

相关文章