C语言学习笔记

写在开始

来几道比较快乐的题目吧。
(不按照难度排序)
1.求两个正整数的最小公倍数和最大公因数
2.求出所有水仙花数
3.判断一个正整数是不是素数
4.求出斐波拉契数列的前20项

一、scanf()函数

printf()函数是一个标准格式化输出的函数,前面已经讲过了,相对的有一个从命令行读入数据的函数:scanf()
scanf()函数与printf()函数的用法形式大致相同。
&称为取地址符,用于取出某个变量的地址。
eg:scanf("%d",&i)的意思就是取一个整数存在变量i的地址,也就是把值赋给i。其他类型的输入值,用不同的符号取,多个输入值按照顺序排列(和printf()一样)。
代码展示:

	int i=0;
	printf("请输入一个整数:\n");
	scanf("%d",&i);
	printf("%d",i);
	return 0;	

运行结果:

请输入一个整数:
1
1

本来给i赋值为0,取入值后变成了输入的值。

二、求两个正整数的最小公倍数和最大公因数

因为考虑到现在只学了这么多,那就都用穷举法,不用啥花里胡哨的东西。
穷举法求a和b最小公倍数:
1.如果a>=b(b>=a则相反)
2.令out=a(双等号中间加了一个空格)
3.如果out被a和b整除(取余为0)则:out就是最小公倍数
4.如果不能被两者同时整除,那么out++;返回步骤3
(取余符号%在第一次笔记的最后推荐的链接里面有)
穷举法求x和y最大公因数:
1.如果x>=y(y>=x则相反)
2.令out=y
3.如果out能同时整除x和y,则:out就是最大公因数
4.如果不能,那么out–;返回步骤3

代码:

//求两个正整数的最小公倍数和最大公因数 
//用穷举法 
#include<stdio.h>

int main()
{
	int i,j,multiple,factor;
	printf("请输入第一个正整数!\n"); 
	scanf("%d",&i);
	printf("请输入第二个正整数!\n"); 
	scanf("%d",&j);
	if(i<=j){
		multiple=j;
		factor=i;
	} 
	else{
		multiple=i;
		factor=j;
	}
	for(;multiple<=i*j;multiple++)
	{
		if((multiple%i)==0&(multiple%j)==0){
			break;
		}
	}
	for(;factor>=1;factor--)
	{
		if((i%factor)==0&(j%factor)==0){
			break;
		}
	}	
	printf("这两个数的最小公倍数是:%d\n",multiple);
	printf("这两个数的最大公因数是:%d\n",factor);
	return 0;
}

运行结果:

请输入第一个正整数!
4
请输入第二个正整数!
18
这两个数的最小公倍数是:36
这两个数的最大公因数是:2

三、求出所有水仙花数

水仙花数:
一个三位数,他的三位数分别的三次方的和是他本身那么他就是水仙花数。
代码:

//求出所有水仙花数 
//水仙花数是三位的自幂数
#include<stdio.h>

int main()
{
	int x,y,z,flag; 
	printf("水仙花数有:\n");
	for(int i=100;i<=999;i++)
	{
		flag=i;
		x=flag%10;
		flag=(flag-flag%10)/10; 
		y=flag%10;
		flag=(flag-flag%10)/10;
		z=flag;
		if(i==(x*x*x+y*y*y+z*z*z)){
			printf("%5d",i);
		}
	}
	return 0;
}

运行结果:

水仙花数有:
  153  370  371  407

四、判断一个正整数是不是素数

代码:

//判断一个正整数是不是素数
#include<stdio.h>

int main()
{
	int i;
	bool sign=0;
	printf("请输入这个正整数:\n");
	scanf("%d",&i);
	for(int j=2;j<i;j++)
	{
		if(i%j==0){
			sign=1;
			break;
		}
	}
	if(sign){
		printf("这不是一个素数。\n");
	}
	else{
		printf("这是一个素数。\n");
	}
	return 0;
}

运行结果:

请输入这个正整数:
7
这是一个素数。

五、求出斐波拉契数列的前20项

斐波拉契数列:
这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
代码:

//求出斐波拉契数列的前20项
#include<stdio.h>

int main()
{
	printf("斐波拉契数列前20项是:\n");
	int x=1,y=1,z;
	printf("%6d%6d",x,y);
	int flag=3;
	for(int i=3;i<=20;i++)
	{
		z=x+y;
		printf("%6d",z);
		x=y;
		y=z;
		if(flag==5){
			printf("\n");
			flag=0;
		}
		flag++;
	}
	return 0;
}

运行结果:

斐波拉契数列前20项是:
     1     1     2     3     5
     8    13    21    34    55
    89   144   233   377   610
   987  1597  2584  4181  6765

写在最后

如果您是初学者,切勿慌张,对初学者挺难的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值