C语言循环分支数组练习

目录

一、打印三的倍数

二、从大到小输出

三、三角形判断

四、数9的个数

五、猜数字游戏

六、乘法口诀表

七、求最大值

八、分数求和

九、打印素数

十、打印闰年

十一、最大公约数

十二、打印空心正方形图案

十三、矩阵转置

十四、逆序输出

十五、输入10个整数,求平均值

十六、交换数组


一、打印三的倍数

写一个代码打印1-100之间所有3的倍数的数字


int main()
{
	int i = 0;
	for (i=1; i <=100; i++)
	{
		if (i % 3 == 0)
		{
			printf("%d\t", i);
		}

	}
}

二、从大到小输出

写代码将三个整数数按从大到小输出。

例如:

输入:2 3 1

输出:3 2 1

int main()
{
    int a, b, c;
    int temp = 0;
    scanf("%d %d %d", &a, &b, &c);
    if (a<b)
	{
		temp = a;
		a = b;
		b = temp;
	}
	if (a<c)
	{
		temp = a;
		a = c;
		c = temp;
	}
	if (b<c)
	{
		temp = b;
		b = c;
		c = temp;
	}
	printf("%d %d %d", a, b, c);
	

}

三、三角形判断

 int main()
    {
        int a=1, b=1, c=1;
 
        while (scanf("%d %d %d", &a, &b, &c) != EOF)
        {
            if (a + b > c && a + c > b && b + c > a)
            {
                if (a == b && b == c)
                {
                    printf("Equilateral triangle!\n");
                }
                else if (a == b || b == c || a == c)
                {
                    printf("Isosceles triangle!\n");
                }
                else
                {
                    printf("Ordinary triangle!\n");
                }
            }
            else
            {
                printf("Not a triangle!\n");
            }
        }
        return 0;
    }

四、数9的个数

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

int main()
{
	int i = 0;
	int count = 0;
	for(i=1; i<=100; i++)
	{
		if(i%10==9)
			count++;
		if(i/10==9)
			count++;
	}
	printf("%d\n", count);
    return 0;
}

五、猜数字游戏

//猜数字游戏
//1、使用do while 循环 打印菜单
//2、switch语句判断是否玩游戏
//3、用函数来封装游戏逻辑

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void game()
{
	//1、生成随机数
	int r=rand()%100+1;//生成1-100的随机数
	int guess = 0;
	//2、猜数字
	while (1) {
		printf("请猜数字");
		scanf("%d", &guess);
		if (guess>r)
		{
			printf("猜大了\n");
		}
		else if (guess<r)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了!!!\n");
			break;
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		printf("***************\n");
		printf("****1.play*****\n");
		printf("****0.exit*****\n");
		printf("***************\n");
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (input);
		return 0;
}

六、乘法口诀表

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

int main()
{
	int i = 0;
	int j = 0;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d\t", j, i, i*j);
		}
		printf("\n");
	}
	return 0;
}

七、求最大值

求10 个整数中最大值

//*设置一个值max假定他为最大值,把其他值与max比较,比max大就把这个大的值给max
int main()
{
	int i = 0;
	int arr[10] = { 12,45,32,56,18,2,89,33,20,65 };
	int max = 0;
	for (i = 0; i < 10; i++)
	{
		if (max < arr[i])
		{
			max = arr[i];
		}
	}
	printf("%d", max);
	return 0;
}

八、分数求和

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

//1、分母是1-100所以用for循环输出,分子不变
//2、因为是小数,所以分子要变成1.0,设置的sum为double类型
//3、设置一个flag变量为1;在每次加的时候去乘flag
int main()
{
	double sum = 0;
	int flag = 1;
	for (int i = 1;  i <=100 ;  i++)
	{
		sum = sum + 1.0 / i *flag;
		flag = -flag;
	}
	printf("%lf", sum);
}

九、打印素数

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

//怎么判断素数?
//产生2~i-1之间的数字,试除i
//1、输出100-200之间的数
//2、判断是否是素数 
//3、*设置一个变量flag标记
int main()
{
	int i = 0;
	int count = 0;
	for (i = 100; i <=200; i++)//素数不可能是偶数,所以这里可以写成i=101,i<=200;i+=2
	{
		int flag = 1;//假设i是素数
		int j = 0;
		for (j=2;j <= i-1; j++)//j<=sqrt(i) 开平方  要包含库函数includ <math.h>
		{
			if (i%j==0) {
				flag = 0;//不是素数
				break;
			}//不能在后面写if或者之间else,因为只测试了一个数字还有后面很多数字
		}
		if (flag == 1)
		{
			printf("%d\n", i);
			count++;
		}

	}
	printf("count=%d\n", count);
}

十、打印闰年

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

//打印1000-2000年之间的闰年
//能被4整除但不能被100整除,或者能被400整除的年份
int main() {
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if ((year % 4 == 0 && year % 100 != 0)||year % 400 == 0) {
			printf("%-5d",year);//%-5d的作用是空格
		}
		
	}
}

十一、最大公约数

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

例如:

输入:20 40

输出:20

//这里用到辗转相除法,设置两个数,a,b,用a%b,余数为c,
//在用b的值去%c,就是说把b的值给a ,把c的值给b,c为0的时候,最大公约数就是b
int main()
{
	int a = 80;
	int b = 50;
	int c = a%b;
	while (c != 0)
	{
		a = b;
		b = c;
		c = a % b;
	}
	printf("%d", b);
}

十二、打印空心正方形图案

输入:4

输出:

* * * * 
*     * 
*     * 
* * * * 

画图分析:我们可以把这个图案当成一个二维数组,在i = 0 或i= n-1,j= 0 或j= n-1的时候,打印*

int main()
{
    int n = 0;
    while(scanf("%d", &n) != EOF)
    {
        int i = 0;
        int j = 0;
        for(i=0; i<n; i++)
        {
            for(j=0; j<n; j++)
            {
                if(i==0 || i==n-1)
                    printf("* ");
                else if(j==0 || j==n-1)
                    printf("* ");
                else
                    printf("  ");
            }
            printf("\n");
        }
    }
    return 0;
}

十三、矩阵转置

例如:输入:2 3

1 2 3

4 5 6

输出:

1 4 
2 5 
3 6 

画图分析:我们还是把他看成二维数组,画图之后,清晰发现,矩阵转置就是他们横纵坐标调换

//就是i,j下标互换
int main() {
	int m, n;//m行n列
	while (scanf("%d %d", &m, &n) != EOF) { // 注意 while 处理多个 case
		int arr[10][10] = {0};
		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				scanf("%d", &arr[i][j]);
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				printf("%d ", arr[j][i]);
			}
			printf("\n");
		}

	}
	return 0;
}

十四、逆序输出

输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。

int main() {

	int arr[10] = { 0 };
	for (int i = 0; i < 10; i++) {
		scanf("%d", &arr[i]);
	}
	for (int i = 9; i >= 0; i--) {
		printf("%d ", arr[i]);
	}


	return 0;
}

十五、输入10个整数,求平均值

编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值。

int main() {
	int arr[10] = { 0 };
	int sum = 0;
	float avg = 0;
	for (int i = 0; i < 10; i++) {
		scanf("%d", &arr[i]);
		sum = sum + arr[i];	
	}
	avg = sum / 10.0;//注意数据类型
	printf("%f", avg);
	return 0;
}

十六、交换数组

将数组A中的内容和数组B中的内容进行交换。(数组一样大)

这个就和交换一个数一样,不过这是数组

int main()
{
	int tmp = 0;
	int arr1[6] = {12,26,54,31,9,8};
	int arr2[6] = { 33,29,45,18,65,30 };

	for (int i = 0; i < 6; i++)
	{
		tmp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = tmp;
		
	}
	for (int i = 0; i < 6; i++)
	{
		printf("%d ", arr1[i]);
	}
	printf("\n");
	return 0;
}

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值