C语言必背15个经典程序
1、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
主要涉及知识点:循环选择的嵌套、输出的格式控制(可转变方式用数组、递归的方式实现)2、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
主要涉及知识点:循环嵌套、输出的格式控制
#include <stdio.h>2、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
主要涉及知识点:循环嵌套、输出的格式控制
#include <stdio.h>
int main()
{
int i,j,result;
for (i=1;i<10;i )
{
for(j=1;j<=i;j )
{
result=i*j;
int main()
{
int i,j,result;
for (i=1;i<10;i )
{
for(j=1;j<=i;j )
{
result=i*j;
#include <stdio.h>
int main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i )
{
printf("ld ld",f1,f2);
if(i%2==0)
printf("n");/*控制输出,每行四个*/
f1=f1 f2; /*前两个月加起来赋值给第三个月*/
f2=f1 f2; /*前两个月加起来赋值给第三个月*/
}
return 0;
}
2、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
主要涉及知识点:循环嵌套、输出的格式控制
#include <stdio.h>
int main()
{
int i,j,result;
for (i=1;i<10;i )
{
for(j=1;j<=i;j )
{
result=i*j;
printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/
}
printf("n"); /*每一行后换行*/
}
return 0;
}
3、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列*/
主要涉及知识点:一维数组、插入算法、数组元素的移动
#include <stdio.h>
int main()
{
int a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从a[1]开始存放数据*/
int x , i, j=6; /*j为元素个数*/
printf("Enter a number: ");
scanf("%d",&x);
a[0]=x;
i=j; /*从最后一个单元开始*/
while(a[i]>x)
{
a[i 1]=a[i];
i--;
} /*将比x大的数往后移动一个位置*/
a[ i]=x;
j ; /*插入x后元素总个数增加*/
for(i=1;i<=j;i )
printf("�",a[i]);
printf("n");
return 0;
}
4、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出。*/
主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
#include <stdio.h>
int main()
{
int a[4][4],b[4][4],i,j; /*a存放原始数组数据,b存放旋转后数组数据*/
printf("input 16 numbers: ");
/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
for(i=0;i<4;i )
{
for(j=0;j<4;j )
{
scanf("%d",&a[i][j]);
printf("m",a[i][j]);
b[3-j][i]=a[i][j];
}
printf("n");
}
printf("array b:n");
for(i=0;i<4;i )
{
for(j=0;j<4;j )
printf("m",b[i][j]);
printf("n");
}
return 0;
}
5、/*编程打印直角杨辉三角形*/
主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
#include <stdio.h>
int main()
{
int i,j,a[6][6];
for(i=0;i<=5;i )
{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<=5;i )
for(j=1;j<=i-1;j )
a[i][j]=a[i-1][j] a[i-1][j-1];
for(i=0;i<=5;i )
{
for(j=0;j<=i;j )
printf("M",a[i][j]);
printf("n");
}
return 0;
}
6、/*通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/
主要涉及知识点:二维数组的输入输出,及相应的处理
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a[4][5],sum1,sum2;
int i,j;
for(i=0;i<3;i )
for(j=0;j<4;j )
scanf("%f",&a[i][j]);
for(i=0;i<3;i )
{
sum1=0;
for(j=0;j<4;j )
sum1 =a[i][j];
a[i][4]=sum1/4;
}
for(j=0;j<5;j )
{
sum2=0;
for(i=0;i<3;i )
sum2 =a[i][j];
a[3][j]=sum2/3;
}
for(i=0;i<4;i )
{
for(j=0;j<5;j )
printf("%6.2f",a[i][j]);
printf("n");
}
return 0;
}
7、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。*/
主要涉及知识点:字符数组的输入输出,及相应的处理
#include <stdio.h>
#include <string.h>
int main()
{
char s[100];
int i,j,n;
printf("输入字符串:n");
gets(s);
n=strlen(s);
for(i=0,j=n-1;i<j;i ,j--)
if(s[i]!=s[j]) break;
if(i>=j) printf("是回文串n");
else printf("不是回文串n");
return 0;
}
8、/*下面程序的功能是从字符数组a中删除存放在其中的字符c。*/
主要涉及知识点:字符数组的输入输出,及相应的处理
#include <stdio.h>
int main()
{
char s[80],c;
int j,k;
printf("nEnter a string: ");
gets(s);
printf("nEnter a character: ");
c=getchar( );
for(j=k=0;s[j]!= '