C语言循环语句例题与应用

例题1.3:

求N(例如100)以内自然数的和,并输出结果。

【分析】
该问题可以用等差数列求和公式,也可用(for,while,do…while循环累加),对这个例题还可加以修改,用(函数递归)的方法进行累加,实现倒序累加。

源码:

#include<stdio.h>

int plus(N);

int main()
{
	int i = 1,sum = 0,N;
	printf("Please enter N number :\n");
	scanf("%d",&N);
/*	while(i <= N)
	{
		sum = sum + i;
		i++;
	}*/
	sum=plus(N);
	printf("Sum.of integers 1-%d: %d\n",N,sum);
	return 0;
} 

int plus(N)
{
	if(N == 1)
	{
		return 1;
	}
	else
	{
		return plus(N-1) + N;
	}
}

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述

相仿例题1.3:

本题要求编写程序,计算交错序列 1- 2 3 \frac{2}{3} 32+ 3 5 \frac{3}{5} 53- 4 7 \frac{4}{7} 74+ 5 9 \frac{5}{9} 95- 6 11 \frac{6}{11} 116+… 的前N项之和,结果保留三位小数

【分析】
通过观察交错序列,可以发现分子都为(1,2,3…N)的等差数列,分母呈(1,3,5,7,9…2N-1)的等差数列。同时,每个分式的符号呈(1,-1,1…)的等比数列,公比为-1。

源码:

#include<stdio.h>

int main()
{    
	int m = 1,N,b = 1;    
	double sum = 0; 
	double temp ,i;
	printf("Please enter N:\n");
	scanf("%d", &N);    
	for(i = 1.0; i <= N; i++)    
	{        
		temp = b * (i/m);		//在i/m中必须保证有一边是小数
		sum += temp;        
		b = -b;        
		m += 2;    
	}
	printf("%.3f \n", sum);         
	return 0 ; 
}
 

注意
在做题过程中注意浮点型的值,特别是在i/m中必须保证有一边是小数,否则在输出结果时系统会四舍五入。

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述

例题1.6

用C编程输出一个九九乘法表。

【分析】
本例题只需要运用镶套(for循环)语句即可达到目的

源码:

#include<stdio.h>
int main()
{
	printf("		Multiplication Table	\n");
	int i, j;
	for(i = 1;i <= 9; i++)
	{
		for(j = 1; j <= i; j++)
		{
			printf("%d*%d=%d \t",i,j,i*j);
		}
		printf("\n");
	}
} 

/*
int main()
{
	printf("		Multiplication Table	\n");
	for(int i = 1;i <= 9; ++i)
	{
		for(int j = 1;j < i; ++j)
		{
			printf("\t");
		}
		for(int j = i;j <= 9; ++j)
		{
			printf("%d \t", i*j); 
		}
		printf("\n");
	}
}*/
 

输出如下:

在这里插入图片描述

相仿例题1.6:

请使用嵌套语句输出金字塔形状与平行四边形形状。

【分析】
用嵌套语句输出金字塔形状与平行四边形形状,要考虑3点:

  1. 首先要控制输出三角形与平行四边形的行数,
  2. 其次控制三角形与平行四边形的空白位置,
  3. 最后是将其显示。

源码:

#include<stdio.h>

int addone();

int addone()
{
	int i ,j ,k ,a;
	printf("please enter triangle line : \n");
	scanf("%d" ,&a);
	for(i = 1;i <= a ;i++)
	{
		for(j = 1;j <= a-i ;j++)
		{
			printf(" ");
		}
		for(k =1;k <= 2*i-1 ;k++)       //如果把 i 改为 a 则为平行四边形 
		{
			printf("*");
		}
		printf("\n");
	}
}

int main()
{
	int i ,m ,s ,b;
	printf("please enter parallelogram line : \n");
	scanf("%d" ,&i);
	for(m = 1 ;m <= i ;m++)
	{
		for(s=1 ;s <= i-m ;s++)
		{
			printf(" ");
		}
		for(b = 1 ;b <= 2*i-1 ;b++)          //important
		{
			printf("*");
		}
		printf("\n");
	}
	printf("\n");
	addone();
	return 0;
}
 

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值