算法笔记 2-4 代码

时间:2019-02-20
本文章向大家介绍算法笔记 2-4 代码,主要包括算法笔记 2-4 代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

算法笔记@Ada_Lake

算法笔记代码保留地~~~

2.4小节——C/C++快速入门->循环结构

问题 A: 例题5-1-1 连续自然数求和

  1. 题目描述 ,求1+2+3+…+100
    要求用while语句实现
  2. 输入,无
  3. 输出,要求的和,末尾输出换行。 (注意末尾的换行)
    No real roots!
  4. 样例输入,
  5. 样例输出, 5050

我的理解
太基础了

**以下是代码**
// Ada
#include <stdio.h>

int main(){
	int i = 1, sum = 0;
	
	while( i <= 100 ) {
		sum = sum + i;
		i++;
	}
	printf("%d\n", sum);
	
	return 0;
} 

问题 B: 例题5-1-2 连续自然数求和

  1. 题目描述 ,求1+2+3+…+100,
    要求用do…while语句实现
  2. 输入,无
  3. 输出,计算结果,注意末尾输出换行。
  4. 样例输入,
  5. 样例输出, 5050

我的理解
先循环后判断

**以下是代码**
// Ada
#include<stdio.h>

int main(){
	int i = 1, sum = 0;
	
	do {
		sum = sum + i;
		i++;
	}while( i <= 100 );
	
	printf("%d\n", sum);
	
	return 0;
} 

问题 C: 例题5-1-3 连续自然数求和

  1. 题目描述 ,求1+2+3+…+100
    要求用for语句实现
  2. 输入,无
  3. 输出,计算结果,末尾输出换行。
  4. 样例输入,
  5. 样例输出, 5050

我的理解
三个数相比较,平级关系用if

**以下是代码**
// Ada
#include<stdio.h>

int main(){
	int sum = 0;
	
	for( int i = 1; i <= 100; i++) {
		sum = sum + i;	
	}
	
	printf("%d\n", sum);
	for
	return 0;
} 

问题 D: 例题5-1-4 连续自然数求和

  1. 题目描述 ,输入一个正整数N,求1+2+…+N,即求
    要求在程序中使用break语句。
  2. 输入,要求输入的数据一定是一个正整数。
  3. 输出,计算的结果,连续N个自然数的和,末尾输出换行。
  4. 样例输入, 100
  5. 样例输出, 5050

我的理解
要用到break,应当是判断条件不符合时或者有其他情况跳出。如果是用for循环,则只有一个判断但已经在for里面了。而while 和 do while 相比用 while
以下是代码

// Ada
#include<stdio.h>

int main(){
	int N, sum = 0, i = 1;
	scanf("%d", &N); 
	while( N >= 0 ){
		sum = sum + i;
		i++;
		if ( i > N){
			break;
		}
	}
	printf("%d\n", sum);
	
	return 0;
} 

问题 E: 例题5-1-5 连续自然数求和

  1. 题目描述 ,编程实现求1+2+3+…和的程序,要求得到使和数大于1000的最小正整数。
  2. 输入,无
  3. 输出,输出使1+2+3+…+N>1000的最小正整数N,末尾输出换行。
  4. 样例输入,
  5. 样例输出, 45

我的理解
没有明确表明判断条件,因此用while

**以下是代码**
// Ada
#include<stdio.h>

int main(){
	int sum = 0, N = 1;
	
	while ( sum <= 1000 ) {
		N++;
		sum = sum + N;
	}
	printf("%d\n", N);
	
	return 0;
} 
**这里注意!!要先N加1,后运算sum.**

case里放的是表达式,但目前我看到的都是0-10的整数,因此使用时要想办法让判断条件由小于10000-100000变为0-10

**以下为代码**
// Ada
#include<stdio.h>

int main(){
	
	double I, bouns, bonus1, bonus2, bouns3, bouns4, bouns5;
	int b;
	scanf("%lf", &I); 
	bonus1 =  I * 0.1;
	bonus2 =  ( 100000 * 0.1 ) + ( ( I - 100000 ) * 0.075 );
	bouns3 = ( 100000 * 0.1 ) + ( 100000 * 0.075 ) + ( ( I - 200000 ) * 0.05 );
	bouns4 = ( 100000 * 0.1 ) + ( 100000 * 0.075 ) + ( 200000 * 0.05) + ( 200000 * 0.03) + ( ( I - 600000 ) * 0.015 );
	bouns5 = ( 100000 * 0.1 ) + ( 100000 * 0.075 ) + ( 200000 * 0.05) + ( 200000 * 0.03) + ( 400000 * 0.015) + ( ( I - 1000000 ) * 0.010 );
	b = I/100000;
	
	switch(b){
		case 0:
		case 1:
			bouns = bonus1;
			break; 
		case 2:
		case 3:
			bouns = bonus2;
			break;
		case 4:
		case 5:	
			bouns = bouns3;
			break;
		case 6:
		case 7:	
		case 8:
		case 9:						
			bouns = bouns4;
			break;
		case 10:
			bouns = bouns5;	
			break;

	} 
	printf("%.2f\n", bouns);

	return 0;
}