1-10

1、

 

 分析:

素数的概念:素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。

合数的概念:大于1的整数中,除了1和自身外,还能被其他正整数整除的数。也可表述为:在大于1的整数中,除了1和自身两个约数外,还有其他约数的正整数。

复制代码
 1 # include <stdio.h>
 2 # include <math.h>
 3 int isPrime(int num) {
 4     //素数:大于1,除了1和本身,无其他因子
 5     //合数:大于1,除了1和本身,还有其他因子
 6     if (num == 1) {
 7         return 0;
 8     }
 9     else {
10         int m = sqrt(num);
11         for (int i = 2; i <= m; i++) {
12             if (num % m == 0) {
13                 return 0;//合数
14             }
15         }
16         return 1;//质数
17     }
18         
19 }
20 int main() {
21     int num = 0;
22     scanf_s("%d", &num);
23     while (num != -1) {
24         int ret = isPrime(num);
25         if (ret == 1) {
26             printf("is prime\n");
27         }
28         else {
29             printf("no\n");
30         }
31         scanf_s("%d", &num);
32     }
33     return 0;
34 }
View Code
复制代码

2、

 

 代码:

复制代码
 1 # include <stdio.h>
 2 /// <summary>
 3 /// 把当前num的各位数组存放到数组bArr中,并存放位数
 4 /// </summary>
 5 /// <param name="num"></param>
 6 /// <param name="bArr"></param>
 7 /// <param name="bArrLen"></param>
 8 void getPerBite4(int num,int bArr[],int *bArrLen) {
 9     while (num>0)
10     {
11         bArr[*bArr] = num % 10;
12         *bArrLen +=1;//这里不能使用++,使用++就是指针的递增
13         num /= 10;
14     }
15 }
16 
17 /// <summary>
18 /// 求x的y次方
19 /// </summary>
20 /// <param name=""></param>
21 /// <param name=""></param>
22 /// <returns></returns>
23 int pow(x, y) {
24     int mul = 1;
25     for (int i = 1; i <= y; i++) {
26         mul *= x;
27     }
28     return mul;
29 }
30 
31 /// <summary>
32 /// 判断是不是水仙数
33 /// </summary>
34 /// <param name="num"></param>
35 /// <param name="bArr"></param>
36 /// <param name="bArrLen"></param>
37 void isNarNum(int num, int bArr[], int bArrLen) {
38     int sum = 0;
39     for (int i = 0; i < bArrLen; i++) {
40         sum += pow(bArr[i], bArrLen);
41     }
42     if (sum == num) {
43         printf("%d\n", num);
44     }
45 }
46 
47 int main() {
48     for (int i = 1; i <= 2000; i++) {
49         int bArr[10] = { 0 };
50         int bArrLen = 0;
51         getPerBite4(i, bArr, &bArrLen);
52         isNarNum(i, bArr, bArrLen);
53     }
54     return 0;
55 }
View Code
复制代码

结果:

3、

 代码:

复制代码
 1 # include <stdio.h>
 2 
 3 void isPerfectNum(int num) {
 4     int sum = 0;
 5     for (int i = 1; i < num; i++) {
 6         if (num % i == 0) {
 7             sum += i;
 8         }
 9     }
10     if (sum == num) {
11         printf("%d\n", num);
12     }
13 }
14 
15 
16 int main() {
17     for (int i = 2; i <= 2000; i++) {
18         isPerfectNum(i);
19     }
20     return 0;
21 }
View Code
复制代码

结果:

 

4、

代码:

复制代码
 1 # include <stdio.h>
 2 /// <summary>
 3 /// 最小公倍数=乘积/最大公约数
 4 /// 最大公约数用辗转相除法求得
 5 /// </summary>
 6 /// <param name="num1"></param>
 7 /// <param name="num2"></param>
 8 /// <returns></returns>
 9 int getLowestComMul(int num1, int num2) {//初始时,num1>=num2
10     int mulNum = num1 * num2;
11     int mod=1;
12     while (mod != 0) {
13         mod = num1 % num2;
14         num1 = num2;
15         num2 = mod;
16     }//执行完毕时,num1就是最大公约数
17     return mulNum / num1;
18 }
19 
20 int main() {
21     int n, m;
22     scanf_s("%d%d", &n, &m);
23     while (n!=-1 && m!=-1)
24     {
25         if (n < m) {
26             int temp = n;
27             n = m;
28             m = temp;
29         }
30         printf("%d\n",getLowestComMul(n, m));
31         scanf_s("%d%d", &n, &m);
32     }
33     return 0;
34 }
View Code
复制代码

结果:

 

5、

 代码:

复制代码
 1 # include <stdio.h>
 2 
 3 int main() {
 4     double distance = 0;
 5     double height = 10.0;
 6     double boundHeight = height / 2;
 7     while (boundHeight > 0) {
 8         distance += 2 * boundHeight;
 9         boundHeight /= 2;
10     }
11     distance += height;
12     printf("%f", distance);
13     return 0;
14 }
View Code
复制代码

结果:

 

 6、

 代码:

复制代码
 1 # include <stdio.h>
 2 /// <summary>
 3 /// 斐波那契数列
 4 /// </summary>
 5 /// <returns></returns>
 6 
 7 int main() {
 8     int i, a, b, c, n;
 9     a = 1;
10     b = 1;   /* 前两项已知为1,直接输出  */
11     printf("输入前n项(n):");
12     scanf_s("%d", &n);      /* 输入需要输出到前几项  */
13     printf("%d\n%d\n", a, b);    /* 先输出前两项     */
14     for (i = 2; i < n; i++)      /* 因为输出了前两项  所以直接从第三项开始循环输出  */
15     {
16         c = a + b;   /* 前两项相加   */
17         printf("%d\t", c);
18         a = b;
19         b = c;
20     }
21     return 0;
22 }
View Code
复制代码

结果:

7、

 代码:

复制代码
 1 # include <stdio.h>
 2 
 3 /// 判断一行字符串中除了冠词A外有多少单词
 4 
 5 /// <summary>
 6 /// 判断字符串是否是单词
 7 /// (1)长度为1 (2)是字符a或A
 8 /// </summary>
 9 /// <param name="str"></param>
10 /// <returns></returns>
11 int isWord(char* pWord, int lenWord) {
12     if (lenWord == 1 && (*pWord == 'A' || *pWord == 'a')) {
13         return 0;
14     }
15     return 1;
16 }
17 
18 /// <summary>
19 /// 遍历字符串,返回其中的单词个数
20 /// 先以空格为分隔符把每个“单词”分割开来,然后判定是不是真正的单词
21 /// </summary>
22 /// <param name="str"></param>
23 /// <returns></returns>
24 int wordCount(char* str) {
25     int wNum = 0;
26     while (*str!='\0')
27     {
28         char wordArr[10] = { 0 };
29         int wordLen = 0;
30         //str!='\0'目的:防止把最后一个字符串末尾的结束符计入计算
31         while (*str!='\0' && *str!=' ')
32         {
33             wordArr[wordLen] = *str;
34             wordLen++;
35             str++;
36         }
37         int ret = isWord(wordArr, wordLen);
38         if (ret == 1)
39             wNum++;
40         //当前遍历完一个单词,指向空格
41         while (*str != '\0' && *str == ' ')
42             str++;
43     }
44     return wNum;
45 }
46 
47 int main() {
48     char sentence[1000];
49     gets(sentence);
50     printf("%s\n", sentence);
51     int wNum = wordCount(sentence);
52     printf("%d\n", wNum);
53     return 0;
54 }
View Code
复制代码

结果:

8、

 代码:

复制代码
 1 # include <stdio.h>
 2 /// <summary>
 3 /// 握手问题
 4 /// </summary>
 5 /// <param name="team1"></param>
 6 /// <param name="team2"></param>
 7 void getSchedule(char team1[], char team2[]) {
 8     for (int i = 0; i < 3; i++) {
 9         for (int j = 0; j < 3; j++) {
10             if (team1[i] == 'a' && team2[j] == 'd')
11                 continue;
12             else if (team1[i] == 'c' && (team2[j] == 'd' || team2[j] == 'f'))
13                 continue;
14             else
15                 printf("%c\t%c\n", team1[i], team2[j]);
16         }
17     }
18 }
19 int main() {
20     char team1[] = {'a','b','c'};
21     char team2[] = {'d','e','f'};
22     getSchedule(team1, team2);
23     return 0;
24 }
View Code
复制代码

 结果:

9、

 代码:

复制代码
 1 #pragma warning(disable:4996)
 2 #pragma warning(disable:6031)
 3 #include <stdio.h>
 4 #include <string.h>
 5 /// <summary>
 6 /// 字符串交换
 7 /// </summary>
 8 /// <param name="str1"></param>
 9 /// <param name="str2"></param>
10 void strSwap(char* str1, char* str2) {
11     char strTemp[100];
12     strcpy(strTemp, str1);
13     strcpy(str1, str2);
14     strcpy(str2, strTemp);
15 }
16 
17 /// <summary>
18 /// 3个字符串比较
19 /// 思想:ab比较,确定小和大;ac比较确定小和大;bc比较确定小和大
20 /// </summary>
21 /// <param name="strLow"></param>
22 /// <param name="strMid"></param>
23 /// <param name="strHigh"></param>
24 void strSort(char* strLow, char* strMid, char* strHigh) {
25     char strTemp[100];
26     if (strcmp(strLow, strMid) > 0)
27         strSwap(strLow, strMid);
28     if (strcmp(strLow, strHigh) > 0)
29         strSwap(strLow, strHigh);
30     if (strcmp(strMid, strHigh) > 0)
31         strSwap(strMid, strHigh);
32     
33 }
34 
35 int main() {
36     
37     char strLow[100];
38     char strMid[100];
39     char strHigh[100];
40     scanf("%s", strLow);
41     scanf("%s", strMid);
42     scanf("%s", strHigh);
43     strSort(strLow, strMid, strHigh);
44     printf("%s\t%s\t%s\n", strLow, strMid, strHigh);
45     return 0;
46 }
View Code
复制代码

结果:

10、

 代码:

复制代码
 1 #pragma warning(disable:4996)
 2 #pragma warning(disable:6031)
 3 #include <stdio.h>
 4 #include <string.h>
 5 
 6 void countFun(char* wordArr, int wordLen) {
 7     int cLetter=0;
 8     int cUpper=0;
 9     int cNum=0;
10     int cTab=0;
11     int cOther = 0;
12     for (int i = 0; i < wordLen; i++) {
13         if (wordArr[i] >= 'a' && wordArr[i] <= 'z')
14             cLetter++;
15         else if (wordArr[i] >= 'A' && wordArr[i] <= 'Z')
16             cUpper++;
17         else if (wordArr[i] >= '0' && wordArr[i] <= '9')
18             cNum++;
19         else if (wordArr[i] == ' ')
20             cTab++;
21         else
22             cOther++;
23     }
24     printf("%d\t%d\t%d\t%d\t%d\n", cLetter, cUpper, cNum, cTab, cOther);
25 }
26 
27 void countCharIn(char* str) {
28     while (*str != '\0') {
29         char wordArr[10] = { 0 };
30         int wordLen = 0;
31         while (*str != '\0' && *str != '\n') {
32             wordArr[wordLen] = *str;
33             wordLen++;
34             str++;
35         }
36         countFun(wordArr, wordLen);
37         while (*str != '\0' && *str == '\n')
38             str++;
39     }
40     
41 }
42 int main() {
43     char senten[100] = { "abc123 \n1098jk .[\n \n" };
44     printf("%s\n", senten);
45     printf("小写\t大写\t数字\t空格\t其他\n");
46     countCharIn(senten);
47     return 0;
48 }
View Code
复制代码

结果:

 

posted @   船长华莱士  阅读(328)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示