算法笔记:循环结构

算法笔记:循环结构

题目一

求1+2+3+…+100,要求用while语句实现

输出

要求的和,末尾输出换行

代码

#include<stdio.h>

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

题目二

求1+2+3+…+100,要求用do…while语句实现

代码

#include<stdio.h>

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

题目三

求1+2+3+…+100,要求用for语句实现

代码

#include<stdio.h>

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

题目四

输入一个正整数N,求1+2+…+N,要求在程序中使用break语句

代码

#include<stdio.h>

int main()
{
	int sum = 0;
	int N;
	scanf("%d",&N);
	for(int n = 0; n <= N;n++){
		sum += n;
	}
	printf("%d\n",sum);
}

题目五

编程实现求1+2+3+…和的程序,要求得到使使和数大于1000的最小正整数

输出

输出使1+2+3+…+N>1000的最小正整数N,末尾输出换行

代码

#include<stdio.h>

int main()
{
	int sum = 0;
	int n = 1;
	while(1){
		sum += n;
		n++;
		if (sum > 1000) break;
	}
	printf("%d\n",n-1);
}

题目六

输出以下4*5的矩阵

  1  2  3  4  5

  2  4  6  8 10

  3  6  9 12 15

  4  8 12 16 20

要求使用循环实现,注意每行输出5个数字,每个数字占3个字符的宽度,右对齐

代码

#include<stdio.h>

int main()
{
	int i,j;
	int n = 1;
	int m = 1;//用来定位每行第一个数
	for(i = 0;i < 4 ;i++){
		n = m + i;
		for(j = 0;j< 5;j++){
			printf("%3d",n);
			n = n + i + 1;
		}
		printf("\n");
	}
}

题目七

用如下公式

求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不累加)。

要求输出的结果总宽度占10位,其中小数部分为8位。

程序中使用浮点型数据时,请定义为双精度double类型。

如果需要计算绝对值,可以使用C语言数学库提供的函数fabs,如求x的绝对值,则为fabs(x).

输出

PI=圆周率的近似值

输出的结果总宽度占10位,其中小数部分为8位。

末尾输出换行。

代码

#include<stdio.h>
#include<math.h>

int main()
{
	double pi;
	int n = 1;
	double sum;
	while(1){
		sum = (double)pow(-1,n+1) / (2 * n -1);
		if (fabs(sum) < pow(10,-6)) break; // 判断语句必须放在这里,因为pow(10,-6)不参与累加
		pi += sum;
		n++;
	}
	printf("PI=%10.8f\n",pi*4);
}

题目八

输入一个正整数n,求Fibonacci数列的第n个数。Fibonacci数列的特点:第1,2个数为1,1。从第3个数开始,概述是前面两个数之和。即:

要求输入的正整数n不超过50

输出

Fibonacci数列的第n个数,末尾输出换行

代码

#include<stdio.h>

int main()
{
	int n;
	int i;
	int c;//数列的最后一个数
	int a = 1;
	int b = 1;
	scanf("%d",&n);
	for(i = 2;i < n;i++){
		c = a + b;
		a = b;
		b = c;
	}
	if(n == 1 || n == 2){// 当n为1或2的时候要另算
		c = 1;
	}
	printf("%d\n",c);
}

题目九

有如下分数序列

求出次数列的前20项之和。

请将结果的数据类型定义为double类型。

输出

小数点后保留6位小数,末尾输出换行。

代码

#include<stdio.h>

int main()
{
	double a = 2.0;// 分子
	double b = 1.0;// 分母
	double result;// 运算结果
	double num;// 分数
	int i;
	for(i = 0;i < 20;i++){
		num = a / b;
		result += num;
		int tmp;
		tmp = a;
		a = a + b;
		b = tmp;
	}
	printf("%.6f\n",result);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值