1.…输出9*9口诀。共9行9列,i控制行,j控制列

#include <stdio.h>
int main()
{
	int i, j,result;//定义2个循环变量,英文:结果

	for (i = 1; i <= 10; i++)//循环外层要等内层循环完才开始下一次
	{
		for (j = 1; j <= 10-i ; j++)//每次都循环都减少10-i次。输出会向坡度一样递减。
		{
			result= j * i;
			printf("%4d=%d*%1d", result, j, i);//保证输出不粘连。

		}
		printf("\n");//内层循环完一次换行一次。
	}
	return 0;
}

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21

#include <stdio.h>
int main()
{
	int i,f1=1, f2=1;
	for (i = 1; i < 12; i++)//第3个云。开始
	{
		printf("%12d%12d", f1, f2);//输出时分别输出f1 and f2,就完成
		if (i % 2 == 0)//每排4个数。
			printf("\n");
		f1 = f1 + f2;
		f2 = f1 + f2;//每一次都要加上最新跟新的一个数
		//把他重叠起来看,会发现f2=f1+f2(原来的f2) + f2(跟新的f2).............
	}
	return 0;
}

3。判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
     则表明此数不是素数,反之是素数

#include <stdio.h>//判断质数
#include <math.h>//要用系统函数
int main()
{
	int i, j,sum=0;
	int box;//存放处理好的数。
	int on_off = 1;//开关的意思。
	for (i = 101; i < 200; i++)
	{
		box = (int)sqrt(i);//强制类型转换。因为根号下一个数大概率不是一个整数要转化为整数。
		for (j = 2; j <= box; j++)//逐个排查循环。
		{
			if (i % j == 0)//质数判断的数学表达。
			{
				on_off = 0;//开关的作用在于识别数字是否符合要求。
				break;//跳出内层循环。
			}

			else
			{
				on_off = 1;
			}
		}
			
		if (on_off == 1)
		{	
			sum++;//计数循环。
			printf("第%d个质数是%d\t \t  ",sum, i);
		}
	}
	return 0;
}

4.一个数如果恰好等于它的因子之和,这个数就称为 “ 完数 ” 。例如 6=1 + 2 + 3. 编程
找出 1000 以内的所有完数。 */

#include <stdio.h >
#include <math.h>//数学函数
int main()

{
	static int k[10];//静态变量。//bu不会被改变的值。
	int i, j, n, s;
	for (j = 2; j < 1000; j++)//逐步走完每一个数
	{
		n = -1;
		s = j;
		for (i = 1; i < j; i++)//寻找每一个数的因素。判断条件:一个数的因素一定小于他自己。。
		{
			if ((j % i) == 0)//判断质数,
			{
				n++;

				s = s - i;//原则上每一次,每一次减去自己的因数,对应下面。

				k[n] = i;//保存每一个数的因素。

			}

		}
		if (s == 0)//减到0的时候,表示满足了条件,就输出了

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

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

				printf(" %d ", k[i]);

			printf("%d\n", k[n]);

		}

	}
	return 0;
}

5.

下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,
请在空白处完善程序。

#include <stdio.h>
#include <math.h>
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_s("%d", &a[i][j]);
			b[3 - j][i] = a[i][j];//******************关键转化。*****************************
		}printf("array b:\n");
		for (i = 0; i < 4; i++)//输出
		{
			for (j = 0; j < 4; j++)
				printf("%6d", b[i][j]);
			printf("\n");
		}
}

6.编程打印直角杨辉三角形

#include <stdio.h>

int main()
{
	int i, j, a[6][6];//定义一个数组的原因是建立一个已知空表格的形式,让数据有地方有规律的存放。
	//因为数据不能无中生有

	for (i = 0; i <= 5; i++)//打印函数三角形两边万年不变的1。。上下两个占用数珠不篡位。
		                                                                           
	{                                                                  
		a[i][i] = 1; a[i][0] = 1;
	}

	for (i = 2; i <= 5; i++)//除1外,一共4行。
	
		for (j = 1; j <= i - 1; j++)//每行的增加规律。//注意:每行j都要重新归位为1,
		
			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("%4d", a[i][j]);

		printf("\n");
	}

}

7.通过键盘输入 3 名学生 4 门课程的成绩,

#include <stdio.h>

#include <stdlib.h>

main()

{ float a[4][5],sum1,sum2;

int i,j;

for(i=0;i<3;i++)//3个人

for(j=0;j<4;j++)//4个科目

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");

}

}

8.*,实现将输入的字符串反序输出

#include <string.h>
#include <stdio.h>
int main()
//思想是循环赋值。(数组后面赋值给前面的)
{
	char str[] = "window";
	char ch;
	int len = strlen(str);//确定数组长度。
	for (int i = 0; i < len / 2; i++)//循环条件是i小于长度一半时交换,多了就交换回去了。
	{
		ch = str[i];//赋值
		str[i] = str[len - i - 1];//因为数组是从0开始的,所以要减1.
		str[len - i - 1] = ch;
	}
	puts(str);//put函数输出。
	return 0;
}

9.下面程序的功能是从字符数组s中删除存放在c中的字符

#include <stdio.h>

int main()

{
	char s[80], c;

	int j, k;

	printf("\nEnter a string : ");

	gets(s);//gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

	printf("\nEnter a character : ");

	c = getchar();//.读取字符,getchar()的功能最主要是c语言中读取字符的一个函数

	for (j = k = 0; s[j] != "\0"; j++)//

		if (s[j] != c)//条件判断。

			s[k++] = s[j];//不等于c才读入s[]数组。

	s[k] = '\0';//将最后一个k赋值为’\0,标志为字符串结束。

	printf("\n % s", s);

}

更多推荐

详见。C语言必背18个经典程序上