C语言100道练习题打卡(1)

这篇具有很好参考价值的文章主要介绍了C语言100道练习题打卡(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1

有1,2,3,4四个数字,能组成多少个互不相同且不重复的三位数,都是多少

#include<stdio.h>
//有1,2,3,4四个数字,能组成多少个互不相同且不重复的三位数,都是多少

int main()
{
	int i, j, k;
	printf("\n");
	int count = 0;
	for (i = 1; i < 5; i++)
	{
		for (j = 1; j < 5; j++)
		{
			for (k = 1; k < 5; k++)
			{
				if (i != k && k != j && j != k)
				{
					printf("%d %d %d\n", i, j, k);
					count++;
				}
			}
		}
	}
	printf("count = %d", count);
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

2

题目:

根据企业利润计算奖金,从键盘输入利润,计算应发放奖金金客,公式如下:
1)利润低于或等于10万元时,奖金可提10%;
2)利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
3)20万到40万之间时,高于20万元的部分,可提成5%;
4)40万到60万之间时高于40万元的部分,可提成3%;
5)60万到100万之间时,高于60万元的部分,可提成1.5%;
6)高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润,求应发放奖金总数?

#include<stdio.h>
int main()
{
	double profit, bonus1, bonus2, bonus3, bonus4, bonus5,bonus;

	printf("请输入企业的利润为:");
	scanf_s("%lf", &profit);

	//计算每个利润段的奖金基数
	bonus1 = 100000 * 0.1;//利润低于或等于10万元时,奖金可提10%;
	bonus2 = bonus1 + 100000 * 0.075;//利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
	bonus3 = bonus2 + 100000 * 0.05;//20万到40万之间时,高于20万元的部分,可提成5%;
	bonus4 = bonus3 + 100000 * 0.03;//40万到60万之间时高于40万元的部分,可提成3%;
	bonus5 = bonus4 + 100000 * 0.015;//高于100万元时,超过100万元的部分按1%提成

	if (profit <= 100000)
	{
		bonus = profit * 0.1;
	}
	else if (profit <= 200000)
	{
		bonus = bonus1 + (profit-100000) * 0.75;
	}
	else if (profit <= 400000)
	{
		bonus = bonus2 + (profit - 200000) * 0.05;
	}
	else if (profit <= 600000)
	{
		bonus = bonus3 + (profit - 400000) * 0.03;
	}
	else if (profit <= 1000000)
	{
		bonus = bonus4 + (profit - 600000) * 0.015;
	}
	else if(profit>1000000)
	{
		bonus = bonus5 + (profit - 1000000) * 0.01;
	}

	printf("提成为:bonus=%lf\n", bonus);
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

3 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少

#include<stdio.h>

/*分析:一个整数,它加上100后是一个完全平方数
再加上168又是一个完全平方数,请问该数是多少
设该数为x
1,x+100=n*n;x+100+168=m*m
2,m*m-n*n=(m+n)(m-n)=168
3,设m+n=i;m-n=j,则i*j=168,那么i和j都是偶数
4,m=(i+j)/2,n=(i-j)/2,i和j均是大于2的偶数
6,由于i*j=168,j>=2,得到1<i<168/2+1
接下来将i的所有数字循环计算即可*/

int main()
{
	int i, j, n, m,x;
	for (i = 1; i < 168 / 2 + 1; i++)
	{
		if (168 % i == 0)
		{
			j = 168 / i;
			if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)//m,n均是偶数
			{
				m = (i + j) / 2;
				n = (i - j) / 2;
				x = n * n - 100;
				printf("%d\n", x);
				printf("%d+100 = %d*%d\n", x, n, n);
				printf("%d+168 = %d*%d\n", x, m, m);
			}
		}
	}
	
	return 0;
}

 C语言100道练习题打卡(1),c语言,算法

 4  题目:输入某年某月某日,判断这一天是这一年的第几天

#include<stdio.h>

/*分析:
输入某年某月某日,判断这一天是这一年的第几天
年:判断是否是闰年,
月:闰年的2月有28天
天:一个月有30或31天
设这一天为这一年的第x天

以3月5日为例,应该把前两个月的天数相加后,加上五天,即为本年的第几天
特殊情况:闰年且输入月份大于3时需要考虑多加一天*/

int main()
{
	int day, year, month, sum, leap;
	printf("请输入日期:格式为:年,月,日\n");
	scanf_s("%d,%d,%d", &year, &month, &day);

	switch (month)
	{
	case 1:
		sum = 0;
		break;
	case 2:
		sum = 31;
		break;
	case 3:
		sum = 59;
		break;
	case 4:
		sum = 90;
		break;
	case 5:
		sum = 120;
		break;
	case 6:
		sum = 151;
		break;
	case 7:
		sum = 181;
		break;
	case 8:
		sum = 212;
		break;
	case 9:
		sum = 243;
		break;
	case 10:
		sum = 273;
		break;
	case 11:
		sum = 304;
		break;
	case 12:
		sum = 334;
		break;
	default:
		printf("请重新输入");
		break;
	}

	sum = sum + day;//某月加上某天

	//判断是不是闰年
	if ((year % 400 == 0) || (year % 4 == 0 && year % 100 == 0))
	{
		leap = 1;
	}
	else
	{
		leap = 0;
	}

	//如果是闰年且月份大于2,总天数应该加一天
	if (leap == 1 && month > 2)
	{
		sum++;
	}
	printf("这是这一年中的第%d天", sum);
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

5  题目:输入三个整数x,y,z,请把这三个数由小到大输出

方法一:

#include<stdio.h>
int main()
{
	int x, y, z;
	printf("请输入三个整数: \n");
	scanf_s("%d,%d,%d", &x, &y, &z);

	printf("从小到大排序:\n");
	if (x < y)
	{
		if (y < z)
		{
			printf("%d,%d,%d", x, y, z);
		}
		else
		{
			printf("%d,%d,%d", x, z, y);
		}
	}
	else if (y < x)
	{
		if (x < z)
		{
			printf("%d,%d,%d", y, x, z);
		}
		else
		{
			printf("%d,%d,%d", y, z, x);
		}
	}
	
	return 0;
}

 方法二:

#include<stdio.h>
int main()
{
	int x, y, z,t;
	printf("请输入三个整数: \n");
	scanf_s("%d,%d,%d", &x, &y, &z);

	if (x > y)
	{
		t = x;
		x = y; 
		y = t;
	}
	if (x > z)
	{
		t = z;
		z = x;
		x = t;
	}
	if (y > z)
	{
		t = y;
		y = z;
		z = t;
	}
	printf("从小到大排序:%d %d %d\n", x, y, z);
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

 6  用*号输入字母C的图案

#include<stdio.h>
int main()
{
	int i, j, k;
	int n = 5;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if ((i == 0 || i == n - 1) || (j == 0 && i != n / 2) || (j == n - 1 &&i!= n / 2))
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}
	return 0;
}

C语言100道练习题打卡(1),c语言,算法 

7  输出九九乘法表

#include<stdio.h>
int main()
{
	//九九乘法表,i控制行,j控制列
	int i, j, result;

	for (i = 0; i < 10; i++)
	{
		for (j = 1; j <= i; j++)
		{
			result = i * j;
			printf("%d * %d = % -3d ", j, i, result);
		}
		printf("\n");
	}
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

8 输出象棋棋盘

#include<stdio.h>
/*分析:
国际想起棋盘由64个黑白相间的格子组成,分为8行8列。
用i控制行,j控制列,根据i+j的和的变化来控制输出黑方格或白方格
*/

int main()
{
	int i, j;
	for (i = 0; i < 8; i++)
	{
		for (j = 0; j < 8; j++)
		{
			if ((i + j) % 2 == 0)
			{
				printf("%c%c", '*', '*');//**表示黑方格
			}
			else
			{
				printf("  ");
			}
		}
		printf("\n");
	}
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

9 打印楼梯图形 和笑脸

 题目:打印楼梯,同时在楼梯上方打印两个笑脸

//题目:打印楼梯,同时在楼梯上方打印两个笑脸
//用11来表示两个笑脸;用i控制行,用j控制列
//j根据i的变化来控制输出黑方格的个数
#include<stdio.h>
int main()
{
	int i, j;
	printf("11\n");//用11来表示两个笑脸
	for (i = 1; i < 11; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%c%c", 70, 70);
		}
		printf("\n");
	}
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

10 兔子生崽

方法1:

#include<stdio.h>
/*有一对兔子,从出生后第3个月都圣一对兔子,小兔子长到第三个月后又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)*/

/*分析:兔子的个数规律为数列1,1,2,3,5,8,13,21....,即下个月是上两个月之和*/
int main()
{
	int f1 = 1, f2 = 1, i;

	for (i = 1; i <= 20; i++)
	{
		printf("%12d%12d", f1, f2);
		if (i % 2 == 0)
			printf("\n");
			f1 = f1 + f2;
			f2 = f1 + f2;
	}
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

这让我想起来青蛙跳台阶的案例,我们再来回顾一下吧

题目:一只青蛙要从第一级台阶开始,每次可以跳上一级或者两级,直到跳完所有的台阶。我们需要找出青蛙有多少种跳法

方法1;

int Fib(int x)
{
	int i = 1;
	int j = 1;
	int z = 1;
	while (x > 0)
	{
		z = i + j;
		i = j;
		j = z;
		x--;
	}
	return z;
}
int main()
{
	int n = 0;
	printf("青蛙跳的台阶数为:\n");
	scanf_s("%d", &n);
	int ret = Fib(n);
	printf("青蛙跳台阶的方法有%d种", ret);
	return 0;
}

方法2:

 利用递归方式

int Fib(int x)
{
	if (x == 1)
		return 1;
	else if (x == 2)
		return 2;
	else
		return Fib(x - 1) + Fib(x - 2);
}
int main()
{
	int n = 0;
	printf("青蛙跳的台阶数为:\n");
	scanf_s("%d", &n);
	int ret = Fib(n);
	printf("青蛙跳台阶的方法有%d种", ret);
	return 0;
}

C语言100道练习题打卡(1),c语言,算法

11 判断101到200之间的素数

#include<stdio.h>

/*分析:
判断素数的方法:
用一个数分比如取出2到sqrt(这个数),如果能被整除,则表明此数不是素数
*/


int main()
{
	int i,j;
	int count = 0;

	for (i = 101; i <= 200; i++)
	{
		for (j = 2; j < i; j++)
		{
         //如果j能被i整除再跳出循环
			if (i % j == 0)
			{
				break;
			}
		}
     //判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整除的数
			if (j >= i)
			{
				count++;
				printf("%d ", i);
				//每五个数换行
				if (count % 5 == 0)
					printf("\n");
			}
		
	}
	return 0;
}

 C语言100道练习题打卡(1),c语言,算法

 12 水仙花数

打印水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个水仙花数,因为153 = 1的三次方+5的三次方+3的三次方

#include<stdio.h>
/*
利用for循环控制100~999个数,每个数分解出个位,十位,百位
*/

int main()
{
	int x, y, z, i;
	for (i = 100; i < 1000; i++)
	{
		x = i % 10;
		y = i / 10 % 10;
		z = i / 100 % 10;

		if (i == (x * x * x + y * y * y + z * z * z))
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

C语言100道练习题打卡(1),c语言,算法文章来源地址https://www.toymoban.com/news/detail-852128.html

到了这里,关于C语言100道练习题打卡(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C 语言练习题更新

    目录(先不要看答案,首先自己做才能更好的领悟,做不来没关系) 题目一:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。 题目

    2024年02月14日
    浏览(36)
  • 练习题----顺序栈算法

    ​输入一个包括 \\\'(\\\' 和 \\\')\\\' 的字符串string ,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件: A. 左括号必须用相同类型的右括号闭合。 B. 左括号必须以正确的顺序闭合。 C. 每个右括号都有一个对应的相同类型的左括号。 ​该题需

    2024年04月26日
    浏览(32)
  • 习题练习 C语言(暑期)

    今天为大家分享我暑假期间所练习的一些小题目! 相信大家看完之后都会有所提升的! 加油! 以下不正确的定义语句是( ) A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0}; B: char c2[] = {‘x10’, ‘xa’, ‘8’}; C: char c1[] = {‘1’,‘2’,‘3’,‘4’,‘5’}; D: int y[5+3]={0, 1, 3, 5, 7, 9}; 题目解

    2024年02月10日
    浏览(41)
  • 习题练习 C语言

    首先我们要了解什么是offsetof宏: . 此具有函数形式的宏返回数据结构或联合类型中成员成员的偏移值(以字节为单位)。 . 返回的值是size_t类型的无符号整数值,其字节数位于指定成员与其结构开头之间。 什么意思呢,可以看到下面这张图片: 下面我们来看到这一习题:

    2024年02月14日
    浏览(40)
  • C语言习题练习

    首先我们要了解什么是offsetof宏: . 此具有函数形式的宏返回数据结构或联合类型中成员成员的偏移值(以字节为单位)。 . 返回的值是size_t类型的无符号整数值,其字节数位于指定成员与其结构开头之间。 什么意思呢,可以看到下面这张图片: 下面我们来看到这一习题:

    2024年02月15日
    浏览(41)
  • C语言/C++练习题

    题目:从键盘输入年份和月份,输出这个月的天数。 【样例输入】2023 1 【样例输出】31 【样例输入】2020 2 【样例输出】29 提示:当输入的月份为2月份时,需要判断该年年份是否为闰年。 判断闰年的条件:年份为4的倍数并且不是100的倍数,或者年份是400的倍数。 ​ 在控制

    2024年02月06日
    浏览(35)
  • 【C语言】练习题整理:11

    今天是10道选择题 下面代码段的输出结果是: -12 自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。 如x=y=z,由于“=”的右结合性,应先执行y=z,再执行x=(y=z)运算。 C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。 计算顺序是

    2024年02月11日
    浏览(39)
  • C语言之数组练习题

    第1关:数组插入元素 300 任务要求 参考答案 评论106 任务描述 相关知识 数组 数组元素的表示方法 编程要求 测试说明 任务描述 本关需要你将一个数插入到一组已经排好序的数组并输出。 相关知识 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式

    2024年02月05日
    浏览(46)
  • <算法学习>动态规划练习题

    本篇文章为初学动态规划时的练习题。参考优质博客学习后根据伪代码描述完成代码。记录一下用于以后复习。 给定一个有n行数字组成的数字三角形. 试设计一个算法, 计算出从三角形的顶至底的一条路径, 使该路径经过的数字和最大. 算法设计: 对于给定的n行数字组成的三角

    2024年01月17日
    浏览(36)
  • Matlab:遗传算法,模拟退火算法练习题

    1、遗传算法 (1) 遗传算法 是一种基于自然选择原理和自然遗传机 制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终 得到最优解或准最优解。它必须

    2024年01月21日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包