045 求二元一次不定方程

求解二元一次不定方程ax + by = c 的解,其中a、 b 、 c要求从键盘中输入,其中a>0,b>0且a>=b,

  • 定理1:现有不定方程a * x + b * y = c,a,b,c均为整数,若d=GCD(a,b)(GCD表示取a,b的最大公约数),d|c(d整除c),那么二元一次不定方程必定有解,且有无数解。
  • 定理2:若不定方程a * x + b * y = c有整数解,则通解的形式必定为X=x0 + b/d * n, Y = y0 - a/d * n。其中x0,y0为不定方程的一个整数解。


#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>void result (int a, int b, int c, int *x2, int *y2)
{int x[100], y[100], z[200];int i, j, d, t, gcd;x[0] = 0;y[0] = 1;for(i = 0; i < 100; i++){z[i] = a / b;d = a % b;a = b;b = d;if(d == 0){gcd = a;                  //辗转法求最大公约数break;}if(i == 0)                 //判断a是否被b整除{x[1] = 1;y[1] = z[0];}else{x[i + 1] = z[i] * x[i] + x[i - 1];y[i + 1] = z[i] * y[i] + y[i - 1];}}for(t = -1, j = 1; j < i; j++){t = -t;    }*x2 = -t * x[i];*y2 = t * y[i];if(c % gcd != 0)         //判断c是否能够整除a和b最大公约数{printf("无解\n");exit(0); }t = c / gcd;*x2 = *x2 * t;*y2 = *y2 * t;
}void test(int a, int b, int c, int x, int y){if(a * x + b * y == c ){printf("结果正确\n");}else{printf("结果错误\n");} }main()
{int a, b, c, x2, y2;printf("输入a, b, c:\n");scanf("%d%d%d", &a, &b, &c);result(a, b, c, &x2, &y2);test(a, b, c, x2, y2);printf("x = %d, y = %d\n",x2, y2);  printf("\n");}

046 可逆素数

可逆素数:将一个素数的各位数字顺序地倒过来构成地反序数仍然是素数

// —————————————— 官方————————————————————
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>int ss(int s)
{int n;if(s == 1){return 0;}if(s == 2){return 1;}for(n = 2; n < s; n++){if(s % n == 0){return 0;}else if(s != n + 1){continue;    }else {return 1;}}}main()
{int a = 0, i, n = 0, n1, n2, n3, n4;for(i = 1000; i <= 9999; i++){if( ss(i) == 1){///这个将数逆反推荐n4 = i % 10;n3 = (i % 100 ) / 10;n2 = (i / 100) % 10;n1 = i / 1000;if(ss(1000 * n4 + 100 * n3 + 10 * n2 + n1) == 1 && (1000 * n4 + 100 * n3 + 10 * n2 + n1) > i ){n++;printf(" %d ", i);if(n % 10 == 0){printf("\n");}}}    } printf("\n");}
/     ——————————————————      ME __________________
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>int ss(int s)                   //自定义函数判断是否为素数
{int n;if(s == 1){return 0;}if(s == 2){return 1;}for(n = 2; n < s; n++)                   对大于2的数进行判断{if(s % n == 0){return 0;}else if(s != n + 1){continue;   }else {return 1;}}}main()
{int a, i, j, t, b, n;for(i = 1000; i <= 9999; i++){a = ss(i);if(a == 1){j =i;                           //取千位t = j / 1000;j = j % 1000;b = t ;t = j / 100;                  //取百位j = j % 100;b += t * 10;t = j / 10;                    //取十位j = j % 10;                   //取个位b += t * 100;b += j * 1000;a = ss(b);                 //判断逆反是不是素数if(a == 1  && b > i){n++;printf(" %d ", i);if(n % 5 == 0){printf("\n");}}}  } printf("\n");}

048 判断闰年

从键盘上输入一个表示年份的整数,判断该年份是否闰年。

  • 公元年分非4的倍數,為平年,或
  • 公元年分為4的倍數但非100的倍數,为闰年,或
  • 公元年分為100的倍數但非400的倍數,为平年,或
  • 公元年分為400的倍數但非3200的倍數,为闰年,或
  • 公元年分為3200的倍數但非80000年的倍數,為平年,或
  • 公元年分為80000的倍數為閏年。

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int year = 0 ;scanf("%d", &year);//判断条件if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){printf("%d是闰年", year);}else{printf("%d是平年", year);}printf("\n");}

049 黑纸与白纸

有A\B\C\D\E 五个人,每个人额头上都贴了一张黑色或白色的纸,5人相对而坐,每个人可以看见其他额头上的纸颜色,但都不知道自己额头上纸的颜色,
A:“我看见有3个人额头上贴的是白纸,一个人贴黑。
B:"我看见其他4人贴都是黑纸
C:”我看见一个人贴白色,其他3人黑色
D:"我看见4人贴白色
E:“我不发表
现在知道头贴黑纸人说假话,贴白纸人说真话,问各自贴的纸?


#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int a, b, c, d, e;for(a = 0; a <= 1; a++){for(b = 0; b <= 1; b++){for(c = 0; c <= 1; c++){for(d = 0; d <= 1; d++){for(e = 0; e <= 1; e++){//判断条件if(((a && b + c + d + e == 3) || (!a && b + c + d + e != 3)) && ((b && a + c + d + e == 0) || (!b && a + c + d + e != 0))&& ((c && b + a + d + e == 1) || (!c && b + a + d + e != 1))&& ((d && b + c + a + e == 4) || (!d && b + c + a + e != 4))){printf("a = %d ; b= %d ; c= %d; d=%d; e=%d",a, b, c, d, e);}## 标题}} } }}printf("\n");}

049 阿姆斯特朗数

阿姆斯特朗数:水仙花数,是指一个三位数,其各数字的立方和等于该数本身,例如:153是一个水仙花数,因为 153 = 1立方+ 5 立方+ 3立方。
编程求出所有水仙花数。

//官方
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int i, n1, n2, n3;for(i = 100 ; i <= 999; i++){n1 = i % 10;n2 = (i % 100) / 10;n3 = i / 100;if(n1 * n1 *n1 + n2 * n2 * n2 + n3 * n3 * n3 == i){printf("%5d\n",i);}}printf("\n");}
//———————————————— ME——————————————
在for 中没有将sum 赋初值,导致sum变量一直增加,导致sum 不会= i.#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int i, sum = 0, n = 0;for(i = 100 ; i <= 999; i++){sum = 0;n = i % 10;sum += (int)pow(n, 3);n = (i % 100) / 10;sum += (int)pow(n, 3);n = i / 100;sum +=(int) pow(n, 3);if(sum == i){printf("%5d\n",i);}}printf("\n");}

050 最大公约数和最小公倍数

从键盘中输入两个正整数a和b,求其最大公约数和最小公倍数

s最小公倍数=两整数的乘积/最大公约数

最小公倍数:
  两个或多个[整数]公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
  
最大公约数:
  两个或多个[整数]公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。

辗转相除法
有两整数a和b:

  • a%b得余数c
  • 若c=0,则b即为两数的最大公约数
  • 若c≠0,则a=b,b=c,再回去执行1
//
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int a, b, t, c, m;scanf("%d%d", &a, &b);if(a < b){t = b; b = a;a = b;}m =a * b;               //保存两数乘积,以备求公倍数使用c = a % b;while(c != 0){a = b;b = c;c = a % b;}printf("最大公约数%d\n", b);printf("最大公倍数%d\n",  m / b);printf("\n");}

051 求一元二次方程的根

求一元二次方程ax平方 +bx + c=0/的根,由键盘输入系数求根
提示:这种问题类似给出公式计算,可以按照输入数据、计算、输出三步方案来设计运行程序:


#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{double a, b, c, d, x1, x2;scanf("%lf%lf%lf", &a, &b, &c); ///在该处忘记加&取地址符,以及输入的%错误。d = b * b - 4 * a * c;if(d > 0){x1 = (- b + sqrt(d)) / (2 * a);x2 = (- b - sqrt(d)) / (2 * a);printf("x1= %f, x2= %f\n", x1, x2);}else if(d == 0){x1 = x2 = -(b / (2 * a)) ;printf("x1= %f, x2= %f\n", x1, x2);}else if(d < 0){printf("该方程无解\n");}printf("\n");}

052 自然对数的底e的计算

自然数对数的底 e= 2.71828128… ,e的计算公式是e = 1 + 1/ 1! + 1/2 ! + 1/3 !+…,要求当最后一项小于10 (-10)次方时结束/


#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{float e = 1.0 , n = 1.0;int i =1;while(1 / n > pow(10,-10) ){e += 1 / n;i++;n = i * n;          //阶乘}printf("%f",e);printf("\n");}

053 满足 abcd = (ab + cd )平方的数

假设abcd 是一个四位数,将它分成2段,即ab和cd,使之相加求和再平分,求满足该关系的四位数。

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int abcd, ab, cd;for(abcd = 1000; abcd <= 9999; abcd++){//分别计算2位数:ab = abcd / 100;      cd = abcd % 100;if(abcd == (ab + cd) * (ab + cd)){printf("%d\n", abcd);}}printf("\n");}

054 整数加减法练习

练习者自己选择是进行加法还是减法运算,然后输入进行多少以内的加法或减法运算,具体数值会由计算机随机产生,输入答案,计算机会根据输入的数据判断结果是否正确。

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int a, b, c, sign, max;char sign1;printf("请选择运算符(1 or other; 1 : -, other : +) \n");scanf("%d", &sign);printf("请选择最大的数(< 10000) \n");scanf("%d", &max);srand((unsigned long )time(0));a = rand() % max;b = rand() % max;while((a < b) && (sign == 1)){a = rand() % max;b = rand() % max;} sign1 = (sign == 1?'-':'+');printf("\n %d%c%d=", a, sign1, b);scanf("%d", &c);if((sign == 1) && (a - b == c) || (sign != 1) && (a + b == c) ){printf("计算正确\n");}else{printf("计算错误\n");} printf("\n");}

055 判断整数倍

编程判断输入的数是否既是5又是7的整数倍,如果是输出YES,不是输出NO。


#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int a;scanf("%d", &a);if(a % 7 == 0 && a % 5 == 0){printf("YES \n");} else{printf("NO \n");}printf("\n");}

056 阶梯问题

在你面前有一条长长的阶梯:如果每步跨2阶;那么最后剩1阶;如果每步跨3阶;那么最后剩2阶;如果每步跨5阶;那么最后剩4阶;如果每步跨6阶;那么最后剩5阶;只有每步跨7阶,最后才正好走完,一阶不剩,请问这条阶梯至少有多少阶?(求所有3位阶梯数)

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int i;for(i = 100; i <= 999; i++){//判断:if(i % 2 == 1 && i % 3 == 2 && i % 5 == 4 && i % 6 == 5 && i % 7 == 0){printf("阶梯数: %d\n", i);}}printf("\n");}

057 乘积大于和的数

编程求10~ 100之间满足各位上数的和的所有数,并将结果以每行5个的形式输出,

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int i, m = 0, k = 0, s = 1, n = 0;for(i = 10; i <= 100; i++){s = 1;k = 0;m = i;while(m){s *= m % 10;k += m % 10;m /= 10;}if(s > k){n++;printf("数:%d", i);if(n % 5 == 0){printf("\n");}}} printf("\n");}

在for语句中,忘记赋s,k 的初始值值(只在变量初始化中赋值),这造成执行后面的循环中的 s、k承接上一个s,k的值。

058 求各位数之和为5的数

编程求100~1000之间满足各数字之和是5的所有数,以5个数字的形式输出。

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>main()
{int i, m = 0, sum = 0, n = 0;for(i = 100; i <= 1000; i++){sum = 0;m = i;while(m){sum += m % 10;m /= 10;     }if(sum == 5){n++;printf("数:%d", i);if(n % 5 == 0){printf("\n");}}}printf("\n");}

一些技术要点:https://blog.csdn.net/qq_41070511/article/details/110677069
参考文献:
二元一次不定方程的快速解法:https://blog.csdn.net/uniqueleion/article/details/81280156

最大公约数:
链接:https://www.jianshu.com/p/53a9685eb411

C语言经典编程282例08相关推荐

  1. C语言经典编程282例01

    前提: 因为之前都是接触概念较多,现在从实际来操作. 01 Hello world 说到第一个程序不得不从Hello world 开始! #include<stdio.h>main() { ...

  2. c++语言经典编程282例,《C语言经典编程282例(C语言学习路线图)》怎么样_目录_pdf在线阅读 - 课课家教育...

    第1章 初识C语言 实例001 第一个c语言程序 实例002 一个完整的c语言程序 实例003 输出名言 实例004 用tc 2.0打开文件 实例005 计算正方形的周长 第2章 简单的c程序 实例0 ...

  3. c语言经典编程282例xiazai,C语言经典编程282例源码(入门级)

    [实例简介] [实例截图] [核心代码] 目 录 第1章 初识C语言1 实例001 第一个C语言程序2 实例002 一个完整的C语言程序2 实例003 输出名言3 实例004 用TC 2.0打开文件4 ...

  4. c语言经典编程282例有用吗,C语言经典编程282例

    内容简介 前言 第1章 初识C语言 实例001 第一个C语言程序 实例002 一个完整的C语言程序 实例003 输出名言 实例004 用TC 2.0打开文件 实例005 计算正方形的周长 第2章 简单 ...

  5. 为备考二级C语言做的代码练习---辅导资料《C语言经典编程282例》--(1)

    因为二级考试的时候用的C语言编译器是VC++6.0 真是日了狗了 用这个编译器 这是我第2个C编译器吧,第一个用的是啊哈C编译器..第二个是VS++6.0 然后在win下用VS2013感觉挺不错的 毕 ...

  6. Mr.J--C语言经典编程100例

    C语言,一般为初学者的首选语言,说简单也简单,但是要真正学好C语言,也是一件很难的事,懂了这些100个例题,也就算是入门了吧,毕竟语言要学的太多,这只是基础. [程序1] 题目:古典问题:有一对兔子, ...

  7. c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf

    c语言经典算法100例pdf版 C 语言经典算法 100 例 C 语言编程经典 100 例 A:[程序1] 题目:有1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程 ...

  8. 新颖的c语言题目,新颖版c语言经典习题100例(全面面)

    新颖版c语言经典习题100例(全面面) (66页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档C语言习题100例(最新整理版) ...

  9. c语言编程经典实例利润,C语言经典编程实例100题解答

    C语言经典编程实例100题 答案+答案 C语言经典编程实例100题C语言程序实例100个(一) [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数,都是多少, 1.程序 ...

  10. java编程源代码_java经典编程300例源代码下载

    java经典编程300例源代码是针对java编程的编程源代码.以基础知识为框架,介绍了各部分知识所对应的常用开发实例,并进行了透彻解代码解析和知识扩展4部分,每一部分都进行了细致的说明.__java经 ...

最新文章

  1. 1215.2——单链表
  2. Android自定义Shape
  3. 网络广告联盟和网站联盟全解析
  4. find命令过滤 no such_linux find -exec rm -r 报No such file or directory
  5. zabbix proxy mysql_zabbix proxy 配置
  6. mysql 字符转换函数是_MySQL日期和字符串转换函数
  7. 通信与计算机技术的联系,通信技术与计算机技术融合发展论文
  8. 信息学奥赛C++语言:火柴盒
  9. java properties文件 安全_java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] | 学步园...
  10. rem是怎么计算的(转载)
  11. Infinity loop in cursor iteration
  12. Pandas文件读取详解
  13. 基于docker的wekan部署
  14. 西部数据移动硬盘哪个型号好_西部数据移动硬盘怎么样(西数移动硬盘系列区别)...
  15. 怎样通过物理地址查IP地址
  16. ROS源代码之Publish底层实现(一)
  17. html 图像热点在线处理,html area图片热点的使用介绍附相关属性一览表
  18. python如何表示小数_小数的定点表示(附python程序)
  19. OSINT + Python #x3D; 自定义黑客
  20. 阿里云SLB之:基于TCP协议的SLB应用场景(十)

热门文章

  1. java判断文件是否被占用_java判断一个文件是否正在被其他程序使用(调用)?...
  2. 硬件工程师入门和进阶
  3. HTML——使用表格制作个人简历
  4. java 社交网站_java学习之电影《社交网络》Facemash算法实现
  5. 向大众推荐的字处理器,TEXMACS
  6. MSP430F415IRTDR
  7. android 系统wifi连接不上,安卓手机wifi连不上的处理操作
  8. Pintech品致钳形交直流电流探头的操作步骤是什么
  9. 【大数据Spark_SparkSQL系列_1】Spark SQL基础(五星重要)
  10. Pycharm打开已有项目配置python环境