简单练习题
1.获得4个最大数,请帮他编程找到最大的数。
输入描述:
一行,4个整数,用空格分开。
输出描述:
一行,一个整数,为输入的4个整数中最大的整数。
#include <stdio.h> int main() { int arr[4] = {0}; int i = 0; for(i=0; i<4; i++) { scanf("%d", &arr[i]); } //假设 int max = arr[0]; for(i=1; i<4; i++) { if(arr[i]> max) { max = arr[i]; } } printf("%d\n", max); return 0; }
首先,思路就是定义一个长度为4的数组用于存放输入的值,用一个for循环来实现输入按顺序存放到数组中,后我们假设最大值是max,把数组中第一个值给max,之后用for循环比较后三个和第一个值也就是max的大小,如果比max大,就把后面的值赋予给max,最后打印max即可。
我们在第二个for循环中其实也可以用三目运算符,来把大的值赋予给max。
先简单介绍一下三目运算符:
三目运算符(也称为条件运算符)是一个用来简化条件语句的运算符。它的语法形式如下:
条件表达式 ? 表达式1 : 表达式2;
这个运算符由三个部分组成,其中条件表达式可以是任何返回一个布尔值(非零即真)的表达式。如果条件为真,则执行表达式1并返回其值作为整个表达式的结果;如果条件为假,则执行表达式2并返回其值作为整个表达式的结果。
接下来我们用三目运算符来把大的值赋予给max
#include <stdio.h> int main() { int arr[4] = { 0 }; for (int i = 0; i < 4; i++) { scanf("%d", &arr[i]); } //假设 int max = arr[0]; for (int i = 1; i < 4; i++) { max = (max > arr[i]) ? max : arr[i]; } printf("%d\n", max); return 0; }
这样只需要每次用三目运算符和后三个值比较即可;简化了代码,看起来更简洁。
两次运行结果是一致的:
2.分数求和
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果。
法一:
#include<stdio.h> int main() { int i = 1; int j = 2; double sum1 = 0.0; double sum2 = 0.0; while (i <= 100) { sum1 = 1.0 / i + sum1; i = i + 2; } while (j <= 100) { sum2 = 1.0 / j + sum2; j = j + 2; } printf("%lf", sum1 - sum2); return 0; }
在这里我们可以看出来分母为奇数项时,都是加在一起,偶数项时,都是减在一起。
那首先第一种最简单的思路就是把奇数项和偶数项分开后加在一起,最后用奇数项的和减去偶数项的和,思路是最容易想到的。
法二:
#include<stdio.h> int main() { int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i <= 100; i++) { sum = flag * 1.0 / i + sum; flag = -flag; } printf("%lf", sum); return 0; }
第二种思路就是我们可以设置一个flag来调整奇数项和偶数项的正负号;那么我们只需要第一次设置的flag是1,再每次循环中求完和后让flag乘上一个-1即可控制奇数项和偶数项。
两种方式的运行结果都是一致的