【c语言】流程控制语句学习(4)

一、打印金字塔

1.打印字母金字塔

输出下面的字母金字塔

              A
            ABA
          ABCBA
        ABCDCBA
      ABCDEDCBA
    ABCDEFEDCBA 

 运行效果:

代码:

#include<stdio.h> 

int main()
{
	int i,j;
	//控制行数
	for(i = 1; i <= 6; i++)
	{
		//打印空格,总行数-1,
		for(j = 0; j < 6-i; j++)
		{
			printf(" ");	
		}
			
		//打印左边字母
		for(j = 'A'; j <= 'A'+i-1; j++)
		{
			printf("%c",j);	
		} 
		
		//打印右边字母
		for(j = 'A'+i-2; j >= 'A'; j--)
		{
			printf("%c", j);
		} 
		printf("\n");
	} 
 	
	return 0;
}

2.输入行数打印金字塔

通过输入的形式控制输出的金字塔行数

运行效果:

代码:

#include<stdio.h> 

int main()
{
	int i,j;
	int n;
	
	printf("请输入想要的行数:");
	scanf("%d",&n);
	printf("\n");
	
	//控制行数
	for(i = 1; i <= n; i++)
	{
		//打印空格,总行数-1,
		for(j = 1; j <= n-i; j++)
		{
			printf(" ");	
		}
			
		//打印左边字母
		for(j = 'A'; j <= 'A'+i-1; j++)
		{
			printf("%c",j);	
		} 
		
		//打印右边字母
		for(j = 'A'+i-2; j >= 'A'; j--)
		{
			printf("%c", j);
		} 
		printf("\n");
	} 
 	
	return 0;
}

二、冒泡排序

冒泡排序就是将一个数组中杂乱的数据按照从大到小或者从小到大进行排序。

如:将数组arr[10]={3,1,9,0,2,6,7,5,8,4};进行排序输出

运行效果:

代码:

#include<stdio.h>

int main()
{
	int arr[10]={3,1,9,0,2,6,7,5,8,4};
	int i,j;
	int temp;
	int n = sizeof(arr)/sizeof(arr[0]);//求元素个数 
	
	for(i = 0; i < n-1; i++)
	{
		for(j = 0; j < n-1-i; j++)
		{
			if(arr[j] > arr[j+1]) //这里是升序排序,降序则为小于 
			{
				// 交换相邻的元素
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}	
		}
	}
	
	//输出排序好的数组
	for(i = 0; i < n ; i++)
	{
		printf("%d ",arr[i]);	
	} 
	return 0;
}

三、二分查找

二分查找就是在有序的数组里面找到对应的数据然后输出下标。

如:查找数组arr[10]={0,1,2,3,4,5,6,7,8,9}中8的下标或者查找10在不在这个数组。

运行效果:

代码:

#include<stdio.h>

int main()
{
	int arr[]={0,1,2,3,4,5,6,7,8,9};
	int n;
	int mid; //元素下标 
	int low = 0;
	int high = sizeof(arr) / sizeof(arr[0])-1; 
	
	printf("请输入要查找的数据:");
	scanf("%d",&n);

	while(1)
	{
		if(low > high)
		{
			printf("找不到!");
			break; 
		}
		//计算mid
		mid = low + (high - low)/2;
		
		if(arr[mid] > n)
		{
			high = mid - 1; 	
		} 
		else if(arr[mid] < n)
		{
			low = mid + 1;
		}
		else
		{
			printf("找到了,对应的下标为:%d\n",mid);
		 	break;
		}
	}
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值