C语言必会100题(3)。(古典问题)兔子问题/判断101到200之间的素数/打印出所有的“水仙花数”/将一个正整数分解质因数/利用条件运算符的嵌套完成学习成绩的转换

编程入门 行业动态 更新时间:2024-10-27 00:35:39

C语言必会100题(3)。(古典问题)兔子问题/判断101到200之间的素数/打印出所有的“水仙花数”/将一个正整数分解<a href=https://www.elefans.com/category/jswz/34/1746127.html style=质因数/利用条件运算符的嵌套完成学习成绩的转换"/>

C语言必会100题(3)。(古典问题)兔子问题/判断101到200之间的素数/打印出所有的“水仙花数”/将一个正整数分解质因数/利用条件运算符的嵌套完成学习成绩的转换

特此鸣谢:鱼C_小甲鱼(B站up主)不二如是(鱼C论坛大佬)
题目来源:
注:这些题在网上都可以搜到,题下面的代码大多是流传下来的答案(我重新排了一下版,增加了可读性),部分是本人经过深思熟虑后编写的。

11,(古典问题)兔子问题

1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
2.程序源代码:

  1. 第一种解:
#include <stdio.h>int main()
{int i;int count = 3;int month;long int a[10];a[0] = 2;a[1] = 2;printf("第1个月:2只\n");printf("第2个月:2只\n");for(i = 2; i < 10; i++){a[i] = a[i - 1] + a[i - 2];printf("第%d个月:%ld只\n", count, a[i]);count++;}printf("\n");printf("请输入您想查询的月数的兔子的总数:");scanf("%d", &month);if(month == 1 || month == 2){printf("这个月的兔子的总数为:2只");}else{printf("这个月的兔子的总数为:%ld\n", a[month - 1]);}return 0;
}
  1. 第二种解:
#include <stdio.h>int main()
{long f1 = 1, f2 = 1;int i;for(i = 1; i <= 20; i++){printf("%12ld %12ld", f1, f2);if(i % 2 == 0){printf("\n"); //控制输出,(f1,f2每次同时输出,所以在控制台是每行4个)每行四个}f1 = f1 + f2; //前两个月加起来赋值给第三个月f2 = f1 + f2; //前两个月加起来赋值给第三个月}return 0;
}

12,判断101到200之间的素数

1.题目:判断101-200之间有多少个素数,并输出所有素数。
2.程序源代码:

#include <stdio.h>
#include <math.h>int main()
{int i, j;int certain = 1;int count = 0;printf("101到200之间的素数有:\n");for(i = 101; i <= 200; i++){for(j = 2; j <= sqrt(i + 1); j++){if(i % j == 0)//不是素数{certain = 0;break;}}if(certain)//如果是素数{printf("%d ", i);count++;if(count % 4 == 0){printf("\n");}}certain = 1;}printf("\n");printf("共有%d个素数!\n", count);return 0;
}

13,打印出所有的“水仙花数”

1.题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153 = 1的三次方+5的三次方+3的三次方。
2.程序源代码:

  1. 第一种解:
#include <stdio.h>
#include <math.h>int main()
{int i;int x, y, z;printf("水仙花树有:\n");for(i = 100; i < 1000; i++){x = i % 10;y = i / 10 % 10;z = i / 100;if(pow(x, 3) + pow(y, 3) + pow(z, 3) == i){printf("%d ", i);}}return 0;
}
  1. 第二种解:
#include <stdio.h>int main()
{int i, j, k, n;printf("'water flower'number is:");for(n = 100; n < 1000; n++){ i = n / 100;//分解出百位j = n / 10 % 10;//分解出十位k = n % 10;//分解出个位if(i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k){printf("%-5d", n);}}return 0;
}

14,将一个正整数分解质因数

1.题目:将一个正整数分解质因数。例如:输入90, 打印出90 = 2 * 3 * 3 * 5。
2.程序分析:让用户输入n,对n进行分解质因数,应先找到一个最小的质数k,然后按照下述步骤完成:
(1) 如果n > k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n。
(2) 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
(3) 如果这个质数k恰好等于n,则说明分解质因数的过程已经结束,打印出即可。
3.程序源代码:

  1. 第一种解:
#include <stdio.h>
#include <math.h>int main()
{int certain = 1;int n;int k = 2;int num;printf("请输入一个正整数,我们会将其分解:\n");while(certain){scanf("%d", &n);if(n <= 0){printf("输入错误,请重新输入!\n");}else{certain = 0;}}certain = 1;num = n;if(n <= 2){printf("他的分解质因数是%d\n", n);}else{printf("%d = ", num);while(certain){if(n == k){certain = 0;}if(n % k == 0){if(n == k){printf("%d", k);}else{printf("%d * ", k);n = n / k;}}else{k++;}}}return 0;
}
  1. 第二种解:
#include <stdio.h>int main()
{int n, i;printf("please input a number:\n");scanf("%d", &n);printf("%d = ", n);for(i = 2; i <= n; i++){while(n != i){if(n % i == 0){printf("%d * ", i);n = n / i;}else{break;}}}printf("%d ", n);}

15,利用条件运算符的嵌套完成学习成绩的转换

1.题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
2.要求:(a>b)?a:b这是条件运算符的基本例子。
3.程序源代码:

  1. 第一种解:
#include <stdio.h>int main()
{int result;printf("请输入学生的成绩,我们将会对成绩分等级:\n");scanf("%d", &result);printf("%d分成绩的等级为:", result);(result >= 90) ? printf("A") : ( (result >= 60) ? printf("B") : printf("C") ) ;return 0;
}
  1. 第二种解:
#include <stdio.h>int main()
{int score;char grade;printf("please input a score\n");scanf("%d", &score);grade = score >= 90 ? 'A' : (score >= 60 ? 'B' : 'C');printf("%d belongs to %c", score, grade);return 0;
}

更多推荐

C语言必会100题(3)。(古典问题)兔子问题/判断101到200之间的素数/打印出所有的“水仙花数”/将一个正整数分解质因数/利用条件运算符的嵌套完成学习成绩

本文发布于:2024-02-25 18:55:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1699973.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:质因数   素数   水仙花   嵌套   学习成绩

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!