练习--基础循环算法题

1、给定两个数,求这两个数的最大公约数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//给定两个数,求这两个数的最大公约数

int main()
{
	int a;		//第一个数字
	int b;		//第二个数字
	scanf("%d%d", &a, &b);
	if (a<b)
	{
		int tmp = a;
		a = b;
		b = tmp;
	}
	int i = b;	//循环变量
	while (i <= a && i <= b)
	{
		if (a%i == 0 && b%i == 0){
			printf("%d\n", i);
			break;
		}
		i--;
	}
	return 0;
}

2、打印1000年到2000年之间的闰年

#include <stdio.h>

int main()
{
	int i = 1000;	//循环变量,相当于年份,1000到2000
	while (i <= 2000)
	{
		if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
		{
			printf("%d ", i);
		}
		i++;
	}
	return 0;
}

3、写一个代码:打印100~200之间的素数

#include <stdio.h>

int main()
{
	int j;		//内循环变量2到i
	int i = 100;		//外循环变量100到200
	int flag=0;		//标记变量,0代表不是素数,1代表是素数
	for (i; i <= 200; i++)
	{

		for (j=2; j < i; j++)
		{
			if (i%j == 0)
			{
				flag = 0;
				break;
			}
			else{
				flag = 1;
			}

		}
		if(flag != 0)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

4、编写程序数一下 1到 100 的所有整数中出现多少个数字9

#include <stdio.h>

int main()
{
	int i = 0;	//十位上的数字
	int j;		//个位上的数字
	int n = 0;	//数字9的个数
	for (i; i < 10; i++)
	{
		for (j=0; j < 10; j++)
		{
			if (j == 9)
			{
				n++;
			}
			if (i == 9)
			{
				n++;
			}
		}
	}
	printf("%d\n", n);
	return 0;
}

5、计算1 / 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 …… + 1 / 99 - 1 / 100 的值,打印出结果

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

int main()
{
	int i;	//用于每项相加的循环变量
	int j;	//给数组的每个数赋值的变量
	float sum = 0;	//总和
	float arr[100];	//数组,存放每项的数字
	for (j = 0; j <= 99; j++)
	{
		arr[j] = 1.0 / (j + 1);
	}
	for (i = 0; i <= 99; i++)
	{
		sum = sum + pow(-1,i)*arr[i];
	}
	printf("%f", sum);
	return 0;
}

6、求10 个整数中最大值

#include <stdio.h>

int main()
{
	int i;	//内循环变量
	int j;	//外循环变量
	int arr[10] = {5,4,6,25,45,26,16,75,12,73};		//容量为10的数组
	for (j = 0; j <= 9; j++)
	{
		for (i = j+1; i <= 9; i++)
		{
			if (arr[j] < arr[i])
			{
				int t = 0;
				t = arr[j];
				arr[j] = arr[i];
				arr[i] = t;
			}
		}
	}
	printf("十个数从大到小排序依次为:");
	for (int i = 0; i <= 9; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n十个整数中最大值为:%d\n", arr[0]);
	return 0;
}

7、在屏幕上输出9 * 9乘法口诀表

#include <stdio.h>

int main()
{
	int a;	//a*b=c
	int b;
	int c;
	for (b = 1; b < 10; b++)
	{
		for (a = 1; a <= b; a++)
		{
			c = a*b;
			printf("%d*%d=%d	", a, b, c);
		}
		printf("\n");
	}
	return 0;
}

8、猜数字游戏

#include <stdio.h>

int main()
{
	int a = 102;	//数字
	int b = 0;	//要猜的数字
	int i;	//循环变量
	for (i = 1; i < 100; i++)
	{
		printf("请输入你猜的数字:");
		scanf("%d", &b);
		if (b < a)
		{
			printf("猜小了\n");
		}
		else if (b > a)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
	printf("你共猜了%d次", i);
	if (i <= 10){
		printf(",是个大佬\n");
	}
	else
	{
		printf(",菜鸡一枚\n");
	}
	return 0;
}

9、编写代码在一个整形有序数组中查找具体的某个数 要求:找到了就打印数字所在的下标,找不到则输出:找不到。

#include <stdio.h>

//普通查找
int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };	//有序整型数组
	int a = 8;	//想找到的具体数
	int i;	//数组下标
	for (i = 0; i < 10; i++)
	{
		if (arr[i] == a)
		{
			printf("找到数字了,下标为 %d\n", i);
			break;
		}
	}
	if (i == 10)
	{
		printf("找不到此数字\n");
	}
	return 0;
}

//二分法查找
int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };	//有序整型数组
	int left=0;		//左标记
	int right = sizeof(arr)/sizeof(arr[0])-1;	//右标记
	int mid;	//中标记
	int a = 8;	//想找到的具体数
	int i;
	for (i = 0; i < 10; i++)
	{
		mid = (left + right) / 2;
		if (arr[mid] < a)
		{
			left = mid + 1;
		}
		else if (arr[mid]>a)
		{
			right = mid - 1;
		}
		else 
		{
			printf("找到了数字了,下标为 %d\n", mid);
			break;
		}
		if (left > right || right < left)
		{
			printf("找不到此数字\n");
			break;
		}
	}
	return 0;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值