快速导航
输入两个数,求这两个数的最大公约数
常见的方法有两种:辗转相除法和辗转相减法。
其实还有一种方法:枚举法,但是这种方法我们并不常用,所以在这里主要介绍两种方法。
①辗转相除法
关于辗转相除,这里转载一张图来更好的理解:
代码实现
- int main()
- {
- int a = 0;
- int b = 0;
- //输入
- scanf("%d %d", &a, &b);
- while (b)//当a%b为0时循环结束,此时a的值就是最大公约数
- {
- int tmp = a % b;//记录初识的a%b
- a = b;
- b = tmp;
- }
- printf("%d\n", a);
- return 0;
- }
②辗转相减法
执行代码
- int main()
- {
- int a = 0;
- int b = 0;
- scanf("%d %d", &a, &b);
- while (a != b)
- {
- if (a > b)
- a = a - b;
- else
- b = b - a;
- }
- printf("%d\n", a);
- return 0;
- }
打印1000-2000的闰年
闰年的判断方法:
1.非整百年份:能被4整除的是闰年。(如2004年就是闰年,2001年不是闰年)
2.整百年份:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
详情见百度百科:闰年(历法中的名词)_百度百科
判断流程
执行代码
- int main()
- {
- int y = 0;
- for (y = 1000; y <= 2000; y++)
- {
- if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
- printf("%d ", y);
- }
- return 0;
- }
运算符的优先级也是一门学问,但是可以通过加()来减少不必要的麻烦。
打印100-200之间的素数
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。
判断流程
执行代码
- int main()
- {
- int i = 0;
- for (i = 100; i <= 200; i++)
- {
- //素数判断
- int j = 0;
- for (j = 2; j < i; j++)
- {
- if (i % j == 0)
- break;
- }
- if (i == j)//i==j时是素数,第二个for循环走完
- printf("%d ", i);
- }
- return 0;
- }
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
这道题相对简单,下面我们直接上代码:
- int main()
- {
- int i = 0;
- double sum = 0;
- for (i = 1; i <= 100; i++)
- {
- int flag = i;//拷贝一份i的值
- if (flag % 2 == 0)
- flag = -flag;
- sum += 1.0 / flag;
- }
- printf("%.2f\n", sum);
- return 0;
- }
这里需要注意的是:在for循环内部,一定要先拷贝一份i的值,不能对i直接操作,否则可能会造成死循环。
输入十个数,输出十个数中的最大值
程序流程图
执行代码
- int main()
- {
- int arr[10] = { 0 };
- int i = 0;
- //输入
- for (i = 0; i < 10; i++)
- {
- scanf("%d", &arr[i]);
- }
- //将最大值初始化为数组第一个元素,与后面的元素进行比较
- int max = arr[0];
- for (i = 1; i < 10; i++)
- {
- if (arr[i] > max)
- max = arr[i];
- }
- printf("%d\n", max);
- return 0;
- }
在屏幕上输出9*9乘法口诀表
这道题也是相对简单的,需要注意的就是打印时的对齐问题,下面直接上代码:
- int main()
- {
- int i = 0;
- for (i = 1; i <= 9; i++)
- {
- int j = 0;
- for (j = 1; j <= i; j++)
- {
- printf("%d*%d=%-2d ", i, j, i * j);
- }
- printf("\n");
- }
- return 0;
- }
%-2d为左对齐,没有负号的时候为右对齐,下面看一下打印的效果:
以上就是C语言的基础编程题了,如果这些题你都能准确快速的写出来,那你的C语言功底还是很扎实的,希望我的文章对你有所帮助,欢迎👍点赞 ,📝评论,🌟关注,⭐️收藏 。