赞
踩
1. 输入两个数,找出两个数的最大公约数和最小公倍数——
- #include <stdio.h>
-
- int GetComDivNum(int x, int y)
- {
- int i = 0;
- int min = 0;
-
- min = x < y ? x : y;
- for (i = min; i >= 1; i--)
- {
- if (0 == x % i && 0 == y % i)
- {
- break;
- }
- }
-
- return i;
- }
-
- int GetComMulNum(int x, int y)
- {
- int i = 0;
- int max = 0;
-
- max = x > y ? x : y;
- for (i = max; i <= x * y; i++)
- {
- if (0 == i % x && 0 == i % y)
- {
- break;
- }
- }
-
- return i;
- }
-
- int main(void)
- {
- int num1 = 0;
- int num2 = 0;
- int divnum = 0;
- int mulnum = 0;
-
- scanf("%d%d", &num1, &num2);
-
- divnum = GetComDivNum(num1, num2);
- mulnum = GetComMulNum(num1, num2);
-
- printf("最大公约数:%d\n", divnum);
- printf("最小公倍数:%d\n", mulnum);
-
- return 0;
- }
-
2. 输入年、月、日,获得该年剩余多少天——
- #include <stdio.h>
-
- int IsLeepYear(int tmpyear)
- {
- if ((0 == tmpyear % 4 && tmpyear % 100 != 0) || (0 == tmpyear % 400))
- {
- return 1;
- }
-
- return 0;
- }
-
- int GetDayOfYear(int tmpyear, int tmpmon, int tmpday)
- {
- int i = 0;
- int sum = 0;
- int a1[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- int a2[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-
- if (IsLeepYear(tmpyear))
- {
- for (i = 0; i < tmpmon-1; i++)
- {
- sum += a1[i];
- }
- }else
- {
- for (i = 0; i < tmpmon-1; i++)
- {
- sum += a2[i];
- }
- }
- sum += tmpday;
-
- return sum;
- }
-
- int GetLeftDayOfYear(int tmpyear, int tmpmon, int tmpday)
- {
- int sum = 0;
-
- if (IsLeepYear(tmpyear))
- {
- sum = 366;
- }
- else
- {
- sum = 365;
- }
-
- return sum - GetDayOfYear(tmpyear, tmpmon, tmpday);
- }
-
- int main(void)
- {
- int year = 0;
- int mon = 0;
- int day = 0;
- int leftday = 0;
-
- scanf("%d%d%d", &year, &mon, &day);
-
- leftday = GetLeftDayOfYear(year, mon, day);
- printf("%d年剩余%d天\n", year, leftday);
-
- return 0;
- }
-
3. 封装函数,以数组传递形式实现strlen、strcpy、strcat、strcmp——
- #include <stdio.h>
-
- int Mystrlen(char pstr[])
- {
- int i = 0;
- int cnt = 0;
-
- while (pstr[i] != '\0')
- {
- cnt++;
- i++;
- }
-
- return cnt;
- }
-
- int Mystrcpy(char pdst[], char psrc[])
- {
- int i = 0;
-
- while (psrc[i] != '\0')
- {
- pdst[i] = psrc[i];
- i++;
- }
- pdst[i] = '\0';
-
- return 0;
- }
-
- int Mystrcat(char pstr1[], char pstr2[])
- {
- int i = 0;
- int j = 0;
-
- while (pstr1[i] != '\0')
- {
- i++;
- }
-
- while (pstr2[j] != '\0')
- {
- pstr1[i] = pstr2[j];
- i++;
- j++;
- }
- pstr1[i] = '\0';
-
- return 0;
- }
-
- int Mystrcmp(char pstr1[], char pstr2[])
- {
- int i = 0;
-
- while (pstr1[i] == pstr2[i] && pstr1[i] != '\0')
- {
- i++;
- }
-
- return pstr1[i] - pstr2[i];
- }
-
- int main(void)
- {
- char str[32] = {0};
- char dst[32] = {0};
- int len = 0;
- int ret = 0;
-
- gets(str);
-
- len = Mystrlen(str);
- printf("len = %d\n", len);
-
- Mystrcpy(dst, str);
- printf("dst = %s\n", dst);
-
- Mystrcat(dst, str);
- printf("dst = %s\n", dst);
-
- ret = Mystrcmp(dst, str);
- printf("ret = %d\n", ret);
-
- return 0;
- }
-
4. 封装函数,以指针传递形式实现strlen、strcpy、strcat、strcmp
4.1 strlen
- #include <stdio.h>
-
- int MyStrlen(char *pstr)
- {
- int cnt = 0;
-
- while (*pstr != '\0')
- {
- cnt++;
- pstr++;
- }
-
- return cnt;
- }
-
- int main(void)
- {
- char str[32] = {0};
- int len = 0;
-
- gets(str);
-
- len = MyStrlen(str);
- printf("len = %d\n", len);
-
- return 0;
- }
-
4.2 strcpy
- #include <stdio.h>
- #include <string.h>
-
- int MyStrcpy(char *pdst, char *psrc)
- {
- while (*psrc != '\0')
- {
- *pdst = *psrc;
- psrc++;
- pdst++;
- }
-
- *pdst = '\0';
-
- return 0;
- }
-
- int main(void)
- {
- char src[32] = {0};
- char dst[32] = {0};
-
- gets(src);
-
- MyStrcpy(dst, src);
-
- printf("dst = %s\n", dst);
-
- return 0;
- }
-
4.3 strcat
- #include <stdio.h>
- #include <string.h>
-
- int MyStrcat(char *pstr1, char *pstr2)
- {
- while (*pstr1 != '\0')
- {
- pstr1++;
- }
-
- while (*pstr2 != '\0')
- {
- *pstr1 = *pstr2;
- pstr1++;
- pstr2++;
- }
- *pstr1 = '\0';
-
- return 0;
- }
-
- int main(void)
- {
- char str1[32] = {0};
- char str2[32] = {0};
-
- gets(str1);
- gets(str2);
-
- MyStrcat(str1, str2);
-
- printf("str1 = %s, str2 = %s\n", str1, str2);
-
- return 0;
- }
-
4.4 strcmp
- #include <stdio.h>
-
- int MyStrcmp(char *pstr1, char *pstr2)
- {
- while (*pstr1 == *pstr2 && *pstr1 != '\0')
- {
- pstr1++;
- pstr2++;
- }
-
- return *pstr1 - *pstr2;
- }
-
- int main(void)
- {
- char str1[32] = {0};
- char str2[32] = {0};
- int ret = 0;
-
- gets(str1);
- gets(str2);
-
- ret = MyStrcmp(str1, str2);
-
- printf("ret = %d\n", ret);
-
- return 0;
- }
-
5. 判断素数——
- #include <stdio.h>
-
- int IsPrimayNum(int n)
- {
- int i = 0;
-
- for (i = 2; i < n; i++)
- {
- if (0 == n % i)
- {
- return 0;
- }
- }
-
- return 1;
- }
-
- int main(void)
- {
- int num = 0;
-
- scanf("%d", &num);
-
- if (IsPrimayNum(num))
- {
- printf("Yes!\n");
- }
- else
- {
- printf("No!\n");
- }
-
- return 0;
- }
-
6. 封装函数实现斐波那切数列 1 1 2 3 5 8 13 21 34 55 ——
- #include <stdio.h>
-
- int Fibo(int num)
- {
- if (1 == num || 2 == num)
- {
- return 1;
- }else
- {
- return Fibo(num-1) + Fibo(num-2);
- }
- }
-
- int main(void)
- {
- int num = 0;
- int fibo = 0;
-
- scanf("%d", &num);
-
- fibo = Fibo(num);
-
- printf("fibo = %d\n", fibo);
-
- return 0;
- }
7. 递归实现汉诺塔——
- #include <stdio.h>
-
- int HanNuoTa(int n, char src, char tmp, char dst)
- {
- if (1 == n)
- {
- printf("%c -> %c\n", src, dst);
- }
- else
- {
- HanNuoTa(n-1, src, dst, tmp);
- HanNuoTa(1, src, tmp, dst);
- HanNuoTa(n-1, tmp, src, dst);
- }
-
- return 0;
- }
-
- int main(void)
- {
- int n = 0;
-
- scanf("%d", &n);
-
- HanNuoTa(n, 'A', 'B', 'C');
-
- return 0;
- }
-
8. 拆分数字各个位数,并将各个位数求和(除10(/10),再对10求余(%10))——
- #include <stdio.h>
-
- int fun(int tmp)
- {
- int sum = 0;
-
- while (tmp != 0)
- {
- sum += tmp % 10;
- tmp /= 10;
- }
-
- return sum;
- }
-
- int main(void)
- {
- int num = 0;
- int sum = 0;
-
- scanf("%d", &num);
-
- sum = fun(num);
-
- printf("sum = %d\n", sum);
-
- return 0;
- }
-
9. 封装一个函数传入数组和n,根据n的值将数组完成转换——
int a[5] = {1, 2, 3, 4, 5}
n=3 n=2
3 4 5 1 2 4 5 1 2 3
- #include <stdio.h>
-
- int OutputArray(int arrayp[], int tmplen)
- {
- int i = 0;
-
- for (i = 0; i < tmplen; i++)
- {
- printf("%d ", arrayp[i]);
- }
- putchar('\n');
-
- return 0;
- }
-
- int Fun(int arrayp[], int len, int n)
- {
- int i = 0;
- int j = 0;
- int tmp = 0;
-
- for (i = 0; i < n; i++)
- {
- tmp = arrayp[len-1];
- for (j = len-1; j > 0; j--)
- {
- arrayp[j] = arrayp[j-1];
- }
- arrayp[0] = tmp;
- }
- }
-
- int main(void)
- {
- int str[5] = {1, 2, 3, 4, 5};
- int len = 5;
- int n = 0;
-
- scanf("%d", &n);
-
- OutputArray(str, len);
- Fun(str, len, n);
- OutputArray(str, len);
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。