一、打印金字塔
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;
}
}
}