//例2.1求1*2*3*4*5
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int sum=1;
for (int i = 1; i <= 5; i++) {//1-5
sum = sum * i;
}
printf("%d", sum);
return 0;
}
图2.1
//例2.3判断2000-2500年间的闰年并输出
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
for (int i = 2000; i <= 2500; i++) {
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {//能被4整除不能被100整除或能被100整除则为闰年
printf("%d是闰年\n",i);
}
i++;
}
return 0;
}
图2.2
//例2.4求和1-1/2+1/3-1/4...-1/100
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {//需要三项,分母,符号,总和
int deno;//分母
int sign=1;//符号
double sum=0;//总和
for (deno = 1; deno <= 100; deno++) {
sum = sum+sign * (1.0/deno);//类型不同,将整形写成小数类型
sign = sign * (-1);
}
printf("%lf", sum);//lf
return 0;
}
图2.3
//例2.5判断一个数是不是素数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>//根号函数
int main() {
int a;
scanf("%d", &a);//输入一个数
for (int i = 2; i <= sqrt(a);i++ )//优化循环,只判断最小有没有就行,<=!!!
{
if (a % i == 0) {
printf("%d不是素数", a);//能整除说明不是素数
return 1;
}
}
printf("%d是素数", a);
return 0;
}
图2.4
//习题一,两个数交换
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a, b, temp;
scanf("%d%d", &a, &b);//输入两个数
temp = a;
a = b;
b = temp;
printf("%d %d", a,b);//两数交换后的结果
return 0;
}
图2.5
//习题二求十个数中的最大数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int max =-100;//初始化最大值为一个非常小的数
int n;//待输入的数
for (int i = 0; i < 10; i++) {//总共十个数
scanf("%d", &n);
if (n > max) {//每一个数都与这个最大值比较
max = n;
}
}
printf("%d", max);
return 0;
}
图2.6
//习题三a,b,c按从大到小排列
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a, b, c;
int temp;
scanf("%d%d%d", &a, &b,&c);//输入三个数
if (a < b) {//确保a>b
temp = a;
a = b;
b = temp;
}
if (a < c) {//确保a>c
temp = a;
a = c;
c = temp;
}
if (b < c) {//确保b>c
temp = b;
b = c;
c = temp;
}
printf("%d %d %d", a, b, c);
return 0;
}
图2.7
//习题四从一加到100
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int sum=0;//初始化为0
for (int i = 1; i < 101; i++) {
sum = sum + i;
}
printf("%d", sum);
return 0;
}
图2.8
//习题5判断一个数n能否同时被3和5整除
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int n;
scanf("%d", &n);//输入一个数
if (n % 3 == 0 && n %5 == 0) {//整除表示余数为0
printf("能被同时整除");
}
else {
printf("不能被同时整除");
}
return 0;
}
图2.9
//习题6输出100-200之间的素数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
int flag;
for (int i = 100; i < 201; i++) {
flag = 0;//换新的数要重新将标记初始化
for (int j = 2; j < sqrt(i); j++) {
if (i % j == 0) {
flag = 1;//做标记
//能被整除,不输出
}
}
if(flag==0){//标记没被改说明没有能整除的
printf("%d\n",i);
}
}
return 0;
}
图2.10
//习题7求m,和n的最大公约数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int m, n;
int temp;
int flag = 0;
scanf("%d%d", &m, &n);//输入两个数
if (m < n) {//找出两个数中较小的数
temp = m;
m = n;
n = temp;
}
for (int i = n; i > 1; i--) {
if (m % i == 0 && n % i == 0) {
printf("%d", i); //找到满足的数了
flag = 1;//找到符合结果的做标记,并退出循环
break;
}
}
if (flag == 0) {
printf("无最大公倍数");
}
return 0;
}
图2.11
//习题8求ax^2+bx+c=0的根
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
int a, b, c;//最好定义成小数型
double d;
double x1, x2;
scanf("%d%d%d", &a, &b, &c);//输入三个数
d = b * b - 4 * a * c;
if (a == 0) {
printf("不是二元一次方程\n");
x1 = 1.0*c / b;//前面*1.0可以保留小数,必须要加1.0!!!
printf("有一个根为%lf", x1);
}
else {
if (d > 0) {//有两个不等实根
x1 =(-1.0*b+sqrt(d))/(2*a);//除号的前后都要加括号且*1.0
x2 = (-1.0*b-sqrt(d))/(2*a);
printf("有两个不等实根为%lf %lf", x1,x2);
}
else if (d == 0) {//有两个相等实根
x1 = x2 = (-1.0*b) / (2*a);
printf("有两个不等实根为%lf %lf", x1, x2);
}
else {
printf("无实根");
}
}
return 0;
}
图2.12