C语言经典例题解析.docx
文本预览下载声明
代码算法积累:1:兔子数列覆盖思想,控制每行输出数据个数的办法#include stdio.hint main(){double f1,f2;//防止数据溢出int i;f1=f2=1;printf(%.0lf\t%0.lf\t,f1,f2);for(i=1;i=10;i++){f1=f1+f2;f2=f1+f2;if(i % 2 == 0)//每行输出4个数据,一次输了2个数据嘛{printf(\n);}printf(%.0lf\t%.0lf\t,f1,f2);// \t也可以用成 %12d 靠左嘛}return 0;}递归的办法:#include stdio.hint tuzi(int n) ; int a[100];int main(){int f1 = 1 , f2 = 1 ,n;scanf(%d,n);if( n == 1 || n == 2){printf(1\n);return 0 ;}tuzi(n);return 0;}int tuzi(int n){int z;if( n == 1 || n == 2){z = 1 ;}else { z = tuzi(n-2) + tuzi(n-1); }if( a[n] == 0 ) //打印出来的数据的办法{a[n] = 1 ;printf(%d\n,z);}return z ;}这种是用a[i] == 0 来控制的。。但是并不一定按顺序,只是1、2刚好是一样的。#include stdio.hint tol(int n) ;int a[13] = {0} ;int main(){int a,i,b;for( i = 1 ; i = 12 ; i++ ){printf(%4d,tol(i));} //调用12次来打印就是了printf(\nTotal=%d\n,tol(12));return 0;}int tol(int n){int z ;if( n == 1 ){z = 1 ;}else if( n == 2 ){z = 2 ;}else{z = tol( n - 2 )+tol( n - 1 ) ;}return z;}2;打星星,研究行数与输出个数的关系#include stdio.hint main(){int j,i,k;for(j=0;j6;j++){for(k=5;kj;k--){printf( );//每一轮打印空格数从5逐减. } for(i=0;i=j;i++)//j-i+1= {1,2,3,4,5,6} [每进行一轮外层循环,内层循环数+1] {printf(*);}printf(\n);//循环一次换行 }return 0; } 3:研究对输入字节的统计#include stdio.hint main(){char c;int n=0;for(n=0 ; c=getchar(),c != \n ; ){n++; //每进行了一次,循环内的变量就++}printf(%d,n);return 0;}4:统计各种字母出现的次数#include stdio.hint main(){int a[150]={0},i,c;//可以优化下数组a[i - 65]int j;while((j=getchar()) != \n)/*先用一个变量j存储ASCII码,再用一个变量i循环*/{for(i=65;i=122;i++)/*用这两 个变量相互比较,相等时,a【第一个变量j】++ */{if(j == i){a[i]++;}}}for(c=65;c=122;c++){if( a[c] != 0 ){printf(%c出现过%d次。,c,a[c]);}}return 0;}5:找数组中最大的数#include stdio.hint main(){int max,a[10],i,j,temp;for(i=0;i10;i++){scanf(%d,a[i]);}max=a[0];for(i=1;i10;i++){if(a[i]max){max=a[i];} /*把a【0】先给max,再用a【i】与max比较,*//*每次都把大的给max*/}printf(max number is %d,max);return 0;}6:给数组赋值的表示:for(i=0;i3;i++){for(j=0;j3;j++){printf(a[%d][%d]= ,i,j);scanf(%d,a[i][j]);}}7:利息计算公式:输入存款金额money,存期year和年利
显示全部