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;
}
运行结果如下:
这个题比较难,需要多思考理解