欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指定数组折半法查找元素; 输出水仙花数; 输出*****的指定形状

程序员文章站 2023-12-27 21:46:03
...

问题 1 . 在指定数组中采用折半法查找元素

其代码实现如下:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Binarysearch(int arr[], int size, int tofind) {  //自定义函数
	int left = 0;
	int right = size - 1;  
	int count = 0;
	while (left <= right) {   
		count++;  //记录查找次数
		int mid = (left + right) / 2;  // 中间元素
		if (arr[mid] > tofind) 
			right = mid - 1;
		else if (arr[mid] < tofind)
			left = mid + 1;
		else if (arr[mid] == tofind){
		
			printf("找到了arr[%d] = %d\n", mid,tofind);
			printf("%d次查找\n", count);
			return 1;
		}
		
	}
	printf("没有找到\n");  // 循环结束后未找到,则输出未找到
	return 0;
}


int main() {
	
	int arr[] = { 0,2,5,7,9,10,11,15 };
	
	int size = sizeof(arr) / sizeof(arr[0]);
	int ret = Binarysearch(arr, size, 1);  

	system("pause");
	
}

 

 

 

问题 2. 输出水仙花数。

问题说明:“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。   

代码实现如下:

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

int main() {
	int i = 0;

	for (i = 0; i <= 999; i++) {
		int count = 1;
		int num = i;
		int sum = 0;
			while (num / 10) {
				count++;
				num = num / 10;
			}

			num = i;
			while (num) {
				
				sum += pow(num % 10, count);
				num = num / 10;

			}
			if (sum == i) {
				printf("%d ", sum);
			}


	}
	system("pause");
	return 0;

}

问题 3.在屏幕上输出以下图案:
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*

问题解析:输出分两部分,先输出上班部分,后输出下班部分。其代码实现如下

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
	int i, j, n;  // n为要输出的行数值得一半
	scanf("%d", &n);
	for (i = 1; i < 2 * n - 1; i = i + 2) {
		for (j = 2*n; j > 2 * n - i; j--) {
			printf("*");
		}
		printf("\n");  // 打印上半部分
	}

	for (i = 0; i < 2*n; i = i+2) {
		for (j = 1; j < 2*n-i; j++) {
			printf("*");  
		}
		printf("\n");  //打印下半部分
	
	}

	system("pause");
	return 0;
}

 

 

 

 

 

 

 

上一篇:

下一篇: