https://blog.youkuaiyun.com/ivan804638781/article/details/52387884
- Description:求a和b的最大公约数
- gcd(a ,b)= gcd(b, a%b)
- 例:gcd(36,24) =gcd(24, 12 ) =gcd(12, 0 )(9)
- Funcion List:
- *****************************************************/
- #include <stdio.h>
- int gcd(int a, int b)
- //跳过,一般从主函数看起
- {
- int x, y, i;
- if (a > b)
- //先找到两个数中较大的那个,作为除数
- {
- y = b;
- x = a;
- }
- else
- {
- y = a;
- x = b;
- }
- while (1)
- {
- if (x % y == 0)
- //若余数不为0,则y还不是最大公约数
- {
- break;
- }
- i = x % y;
- //余数赋值给y
- x = y;
- //两个数中较小的值y赋值给x
- y = i;
- //循环,直到余数为0,则y就是最大公约数
- }
- return y;
- }
- int main()
- {
- int a, b;
- int i;
- scanf("%d%d", &a, &b);
- i = gcd(a,b);
- //得到最大公约数
- printf("最大公约数 = %d\n", i);
- return 0;
- }
- Description:求100~200间的所有素数,每行打印5个素数(11)
- Funcion List:
- *****************************************************/
- #include <stdio.h>
- int main()
- {
- int i, j, k = 0;
- int s1[100];
- for (i = 100; i <= 200; i++)
- {
- for (j = 2; j <= i; j++)
- //两个for循环,第一个循环是100-200每一个数,第二个循环是判断该数是否是素数
- {
- if (i == j)
- {
- s1[k++] = i;
- //若是就放入数组
- }
- if (i % j == 0)
- {
- break;
- //若不是就退出,换下一个数
- }
- }
- }
- i = 0, j = 1;
- while (k != 0)
- {
- printf("%d ",s1[i]);
- //输出素数
- if (j % 5 == 0)
- {
- printf("\n");
- //每五个一行
- }
- i++;
- j++;
- k--;
- //k:总共有k个素数
- }
- printf("\n");
- return 0;
- }
- Description:将整数转换为10进制、2进制、16进制的数字串(12)
- Funcion List:
- *****************************************************/
- #include <stdio.h>
- void two(int n);
- void ten(int n);
- void sixteen(int n);
- int main()
- {
- int n;
- scanf("%d", &n);
- two(n);
- ten(n);
- sixteen(n);
- return 0;
- }
- void two(int n)
- {
- int i = 0;
- int s1[100];
- while(n != 0)
- {
- s1[i] = n % 2;
- n = n / 2;
- i++;
- }
- for(i = i - 1; i >= 0; i--)
- {
- printf("%d", s1[i]);
- if(i % 4 == 0)
- {
- printf(" ");
- }
- }
- printf("\n");
- }
- void ten(int n)
- {
- int i = 0;
- int s1[100];
- while(n != 0)
- {
- s1[i] = n % 10;
- n = n / 10;
- i++;
- }
- for(i = i -1; i >= 0; i--)
- {
- printf("%d",s1[i]);
- }
- printf("\n");
- }
- void sixteen(int n)
- {
- int i = 0, j;
- char s1[100];
- while(n != 0)
- {
- switch(n % 16)
- //十六进制的余数,在>=10时,变为A-F可以用switch,其余相似
- {
- case 0:s1[i] = '0';break;
- case 1:s1[i] = '1';break;
- case 2:s1[i] = '2';break;
- case 3:s1[i] = '3';break;
- case 4:s1[i] = '4';break;
- case 5:s1[i] = '5';break;
- case 6:s1[i] = '6';break;
- case 7:s1[i] = '7';break;
- case 8:s1[i] = '8';break;
- case 9:s1[i] = '9';break;
- case 10:s1[i] = 'A';break;
- case 11:s1[i] = 'B';break;
- case 12:s1[i] = 'C';break;
- case 13:s1[i] = 'D';break;
- case 14:s1[i] = 'E';break;
- case 15:s1[i] = 'F';break;
- }
- n = n / 16;
- i++;
- }
for(i = i -1; i >= 0; i--)
{
printf("%c",s1[i]);
}
printf("\n");
}
- Description:整数数组的冒泡排序(从小到大)(13)
- Funcion List:
- *****************************************************/
- #include <stdio.h>
- #define N 5
- int main()
- {
- int i, j, t;
- int a[10];
- for (i = 0; i < N; i++)
- {
- scanf("%d", &a[i]);
- }
- for (i = 0; i < N - 1 ; i++) //N - 1 表示最后一个元素位置已经固定了
- {
- for (j = 0; j < N - 1 - i; j++)
- //冒泡排序,两个循环,每一次都把最大的数移到最上面,重复移N-1次,完成N个数排序
- {
- if (a[j + 1] < a[j])
- {
- t = a[j + 1];
- a[j + 1] = a[j];
- a[j] = t;
- }
- }
- }
- for (i = 0; i < 5; i++)
- {
- printf("%d\n", a[i]);
- }
- return 0;
- }
- Description:计算字符串中的单词数。
- 单词:由空格分开的连续字母数字串。
- Funcion List:
- *****************************************************/
- #include <stdio.h>
- int count_string(char *string)
- {
- int sum = 0;
- char *p = NULL;
- p = string;
- while(*p != '\n')
- {
- if((*p >= '0' && *p <= '9') || (*p >= 'a' && *p <= 'z'))
- {
- sum++;
- while((*p >= '0' && *p <= '9') || (*p >= 'a' && *p <= 'z'))
- {
- p++;
- }
- }
- p++;
- }
- return sum;
- }
- int main()
- {
- char string[1024] = "0010 hello world hello c 10086 ! \n";
- int sum = 0;
- sum = count_string(string);
- printf("count = %d\n",sum);
- return 0;
- }