目录
一、从1到N的正整数打印:比较算法复杂度
1.循环算法
#include <stdio.h>
void PrintN( int N );
int main ()
{ int N;
scanf("%d", &N);
PrintN( N );
return 0;
}
void PrintN( int N )
{ int i ;
for ( i=1; i<=N; i++ ){
printf("%d\n", i );
}
return;
}
2.递归
#include <cstdio>
void PrintN2( int N );
int main ()
{ int N;
scanf("%d", &N);
PrintN2( N );
return 0;
}
void PrintN2( int N )
{ if ( N )
{
PrintN2( N - 1 );
}
}
结果,直接输出1000000,超出电脑内存范围,程序不再运行。
二、多项式在定点x处的值
#include <stdio.h>
#include <time.h>
#include <math.h>
clock_t start, stop;
double duration;
#define MAXN 10
#define MAXk 1e7
double f1( int n, double a[], double x );
double f2( int n, double a[], double x );
int main ()
{ int i;
double a[MAXN];
for ( i=0; i<MAXN; i++) a[i] = (double)i;
start = clock();
for ( i=0; i<MAXk; i++ )
f1(MAXN-1, a, 1.1);
stop = clock();
duration = ((double)(stop - start))/CLK_TCK/MAXk;
printf("ticks1 = %f\n", (double)(stop - start));
printf("duration1 = %6.2e\n", duration);
start = clock();
for ( i=0; i<MAXk; i++ )
f2(MAXN-1, a, 1.1);
stop = clock();
duration = ((double)(stop - start))/CLK_TCK/MAXk;
printf("ticks2 = %f\n", (double)(stop - start));
printf("duration2 = %6.2e\n", duration);
return 0;
}
double f1( int n, double a[], double x )
{
int i;
double p = a[0];
for ( i=1; i<=n; i++ )
p += (a[i] * pow(x, i));
return p;
}
double f2( int n, double a[], double x )
{
int i;
double p = a[n];
for ( i=n; i>0; i-- )
p = a[i-1] + x*p;
return p;
}
三、C语言输入和输出
#include <stdio.h>
int main()
{
printf("23+43=%d\n", 23+43);
return 0;
}
#include <stdio.h>
int main()
{
int price = 0;
printf("how money? ");
scanf("%d", &price);
int change = 100 - price;
printf("give back %d\n", change);
return 0;
}