警院复试C程序设计学习笔记——第二章 算法

0.算法的基本概念

1.向屏幕输出1-100这几个整数的值

代码如下:

#include <stdio.h>
int main(void){
	/*	方法一 
	int i = 1;
	while(i <= 100){
		printf("%d\n", i);
		i = i + 1;
	}
	*/
	
	//	方法二 
	for(int i = 1; i <= 100; i++){
		printf("%d\n", i);
	}
		
	
	
	//i++和++i的区别	
	int i = 0;
	printf("%d\n", i++);	//输出0,说明i++先赋值后加1 
	printf("%d\n", i);
	i = 0;
	printf("%d\n", ++i);	//输出1,说明++i先加一后赋值 
	printf("%d\n", i);
	
	i = 0;
	printf("%d, %d\n", ++i, i);	//输出1,0,因为printf执行是从右往左执行的,要特别注意 
	return 0; 
}

执行结果如下:

2.求5的阶乘

知识点:

示例:求5的阶乘:

自然语言
方法一 
1.	2! 1x2
2. 	3! 2!x3
3。	4!	3!x4
4.	5!	4!x5

方法二
1.	1 →t
2. 	2 →i 
3.	t x i →t
4.	i + 1 →i
5.	当i <= 5 程序执行跳转步骤3开始执行。否则程序就跳转到步骤6开始执行
6.	输出t

伪代码表达方法二
begin

1 →t
2 →i
while i <= 5{
	t * i →t;
	i + 1 →i;
}
printf t

end

流程图:

 

3.求素数

要求:输入一个整数,判断这个数是否是素数

代码如下:

#include <stdio.h>
#include <math.h>
int main(void){
	int a;
	printf("请输入一个整数:");
	scanf("%d", &a);
	if(a <= 1)
		printf("这个数不是素数\n");
	else if(a == 2)
		printf("这个数是素数\n");
	else{
		double h = sqrt(a);			//sqrt的函数声明在math.h里,功能就是求一个数的平方根,其返回值是一个double型的数据 
		for(int i = 2; i <= h; i++){
			if(a % i == 0){
				printf("这个数不是素数\n");
				return 0;
			}
		}
		printf("这个数是素数\n");
	}
	return 0;
}

 执行结果如下:

4.求闰年

要求:输入一个整数,判断这个数是否是闰年(能被4整除但不能被100整除或者能被400整除的数为闰年)

代码如下:

#include <stdio.h>
int main(void){
	int a;
	printf("请输入一个整数\n");
	scanf("%d", &a);
	if(a%4 == 0 && a%100 !=0)
		printf("这个数是闰年\n") ;
	else if(a%400 == 0)
		printf("这个数是闰年\n");
	else 
		printf("这个数不是闰年\n");
		
}

运行结果如下:

5.判断一个数是否为回文数

 要求:判断一个数是否为回文数(正者念反着念都一样的数为回文数,比如121和1221都为回文数)

代码如下:

#include <stdio.h>
int main(void){
	int a;
	printf("请输入一个整数:");
	scanf("%d", &a);
	
	/* 用伪代码分析思路
	123 -> a;
	那么我们要求出其倒序排列的数,即321
	123%10/1 -> 3
	123%100/10 -> 2
	123%1000/100 -> 1
	得到其不同位的数字之后,需要用一个变量来接收倒序数
	然后比较两个数是否相同 
	*/ 
	int s = 0;
	for(int i = 1; i <= a; i *= 10){
		s = a%(10*i)/i + 10*s;
	}
	if(a == s)
		printf("这是一个回文数\n");
	else
		printf("这不是一个回文数\n");
		
		
	return 0;
}

运行结果如下:

这个题比较难,需要多思考理解

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值