用函数实现模块化步伐设计习题

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出效果。两个整数由键盘输入
  1. //写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
  2. #include <stdio.h>
  3. int getGCD(int a, int b)
  4. {
  5.         int iMax = 0, iMin = 0;//定义最大最小值并初始化
  6.    
  7.         if (a > b)//分别获取最大最小值
  8.         {
  9.                 iMax = a;
  10.                 iMin = b;
  11.         }
  12.         else
  13.         {
  14.                 iMax = b;
  15.                 iMin = a;
  16.         }
  17.         int iRet = iMax % iMin;//取余
  18.         while (iRet)
  19.         {
  20.                 iMax = iMin;//余数不为0时,用最小值去对余数取余
  21.                 iMin = iRet;
  22.                 iRet = iMax % iMin;
  23.         }
  24.         return iMin;//余数为0则输出最小值
  25. }
  26. int getLCM(int a, int b)
  27. {
  28.         return a * b / getGCD(a, b);//LCM = num1 * num2 / GCD
  29. }
  30. int main(void)
  31. {
  32.         int a = 0, b = 0;//定义并初始化
  33.         scanf("%d%d", &a, &b);//输入
  34.         printf("GCD:%d\nLCM:%d\n", getGCD(a, b), getLCM(a, b));//调用求取GCD和LCM并输出
  35.         return 0;
  36. }
复制代码
在VS编译器内会报C4996错误,解决见下文:(下同)
C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 博客园 (cnblogs.com)
运行效果:

 
求方程 ax^2+bx+c=0 的根,用三个函数分别求当:b^2-4ac大于0,等于0和小于0时的根并输出效果。从主函数输入 a,b,c 的值
  1. //求方程 ax ^ 2 + bx + c = 0 的根,用三个函数分别求当:
  2. //b ^ 2 - 4ac大于0,等于0和小于0时的根并输出结果。从主函数输入 a, b, c 的值
  3. #include <stdio.h>
  4. #include <math.h>
  5. void Dmin(int a, int b, int iDera)//两个不等的复数根
  6. {
  7.         double x1 = (0 - b) / (2.0 * a);
  8.         double x2 = pow(-iDera, 0.5) / (2.0 * a);
  9.    
  10.         printf("\nx1 = %lf+%lfi\nx2 = %lf-%lfi\n", x1, x2, x1, x2);
  11. }
  12. void Dmax(int a, int b, int iDera)//两个不等的实数根
  13. {
  14.         double x1 = ((0 - b) + pow(iDera, 0.5)) / (2.0 * a);
  15.         double x2 = ((0 - b) - pow(iDera, 0.5)) / (2.0 * a);
  16.         printf("\nx1 = %lf\nx2 = %lf\n", x1, x2);
  17. }
  18. void Dequal(int a, int b)//两个相等的实数根
  19. {
  20.         double x = (0 - b) / (2.0 * a);
  21.    
  22.         printf("\nx = %lf\n", x);
  23. }
  24. int main(void)
  25. {
  26.         int a = 0, b = 0, c = 0;//定义并初始化
  27.         scanf("%d%d%d", &a, &b, &c);//输入
  28.         int iDera = b * b - 4 * a * c;//求取△
  29.         if (0 == iDera)
  30.                 Dequal(a, b);
  31.         else if (iDera > 0)
  32.                 Dmax(a, b, iDera);
  33.         else
  34.                 Dmin(a, b, iDera);
  35.         return 0;
  36. }
复制代码
运行效果:
两个不等的实数根:

两个相等根:

两个不等的复数根:

 
写一个判定素数的函数,在主函数输入一个整数时,输出是否为素数的信息
  1. //写一个判断素数的函数,在主函数输入一个整数时,输出是否为素数的信息
  2. #include <stdio.h>
  3. bool isPrimeNumber(int num)
  4. {
  5.         for (int i = 2; i < num; i++)
  6.         {
  7.                 if (0 == num % i)//能整除则不为素数
  8.                         return false;
  9.         }
  10.         return true;//都不能整除则为素数
  11. }
  12. int main(void)
  13. {
  14.         int num = 0;//定义并初始化
  15.         scanf("%d", &num);//输入
  16.    
  17.         if (isPrimeNumber(num))
  18.                 printf("yes\n");
  19.         else
  20.                 printf("no\n");
  21.         return 0;
  22. }
复制代码
运行效果:

 
写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换
  1. //写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换
  2. #include <stdio.h>
  3. void Trans(int arr[3][3])
  4. {
  5.         printf("\n\n");
  6.         for (int j = 0; j < 3; j++)//倒置输出
  7.         {
  8.                 for (int i = 0; i < 3; i++)
  9.                         printf("%d ", arr[i][j]);
  10.                 printf("\n");
  11.         }
  12. }
  13. int main(void)
  14. {
  15.         int arr[3][3] = { 0 };//定义并初始化
  16.         for (int i = 0; i < 3; i++)//输入
  17.                 for (int j = 0; j < 3; j++)
  18.                         scanf("%d", &arr[i][j]);
  19.         Trans(arr);
  20.         return 0;
  21. }
复制代码
运行效果:

 
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串
[code]//写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串#include void reverseFunc(char charBuff[1024]){        char ch[1024];        int i = 0;        for (; i < 1024; i++)//备份        {                ch = charBuff;                if ('\0' == charBuff)                        break;        }        for (int j = 0; j

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表