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个经典程序上
发布评论