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 }
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 }
结果:
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 }
结果:
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 }
结果:
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 }
结果:
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 }
结果:
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 }
结果:
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 }
结果:
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 }
结果:
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 }
结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)