【每天例题】蓝桥杯 C语言 杨辉三角形

蓝桥杯 C语言 杨辉三角形

题目

 

题目要求

 

 由分析可得:

杨辉三角形组成:

a[i][1]=a[i][i]=1;

a[i+1][j+1]=a[i][j]+a[i][j+1]  //i>=2,j>=2

代码(该代码只能通过40%,可能为二维数组存放空间不够)

#include<stdio.h>
int main()
{
	int a[100][100];
	int i,j,count=0;
	int n;
	scanf("%d",&n);
	for(i=0;i<100;i++)//建立杨辉三角形
	{
		for(j=0;j<=i;j++)
		{
			if(i==j||j==0)
			{
				a[i][j]=1;//每一行的第一个及对角线位置的数字都为1
			}
			else
			{
				a[i][j]=a[i-1][j-1]+a[i-1][j]; 
			} 
		}
	}
	for(i=0;i<100;i++)//计算数第一次出现的位置
	{
		for(j=0;j<=i;j++)
		{
			count++;
			if(a[i][j]==n)
			{
			goto end;//当我们找到数第一次出现的位置时,直接跳出一整个大循环
			}
		}
	}
	end:
	printf("%d",count);
	return 0;
 } 

  

 C语言中,goto与break的用法及区别:

goto语句在两种情况下非常适用:

1.跳出多重循环。
2.跳向共同的出口位置,进行退出前的处理操作。

但是:过多的使用goto语句及其标识符会导致程序的可读性变差,使得程序的结构混乱不堪,很难去理解程序执行的什么功能。

使用goto语句时只允许在一个单入口单出口的模块内向前跳转,尽量不要向后跳转,更不要出现跳转交叉的情况。

C语言中break的用法有两种:

1.出现在循环内时,循环终止,且程序流将继续执行紧接着循环后的语句。

2.终止switch语句中的一个case。

注意:

1.如果出现在嵌套循环(即一个循环内嵌套另一个循环),break语句会终止最内层的循环,跳到上层循环。

2.如果循环中有if函数,则直接跳出 if语句重新回到循环中。如果 if 语句嵌套,则返回上一级语句。

运行结果

 

posted @ 2023-04-03 09:05  山远尽成云  阅读(198)  评论(0)    收藏  举报