C语言练习100天
C_Stronger
相信能力是可以提高的----把不会的变会,把错误改对。
展开
-
C语言练习 day38- day39
day38 题目:求一个3*3矩阵对角线元素之和 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 实例 #include<stdio.h> #define N 3 int main() { int i,j,a[N][N],sum=0; printf("请输入矩阵(3*3):\n"); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i]原创 2022-05-31 20:00:00 · 184 阅读 · 0 评论 -
C语言练习 day36 - day37
day36 题目:求100之内的素数。 程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。 实例 #include<stdio.h> #include<math.h> int main() { int i,j,k,n=0; for(i=2;i<=100;i++) { k=(int)sqrt(i); for(j=2;j<=k;j++)原创 2022-05-30 22:49:15 · 172 阅读 · 0 评论 -
C语言练习 day33
day33 题目:判断一个数字是否为质数。 程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。 实例 #include<stdio.h> #include<math.h> #define MAX 1000 int prime[MAX]; int isPrimeNaive(int n) { if(n <= 1) return 0; for(int i = 2; i原创 2022-05-28 23:26:09 · 169 阅读 · 0 评论 -
C语言练习 day29 - day30
day29 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 学会分解出每一位数 实例 #include <stdio.h> int main( ) { long a,b,c,d,e,x; printf("请输入 5 位数字:"); scanf("%ld",&x); a=x/10000; /*分解出万位*/ b=x%10000/1000; /*分解出千位*/ c=x%1000/100;原创 2022-05-26 23:05:07 · 118 阅读 · 0 评论 -
C语言练习 day16 & day17
day16 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: (1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数; (2)求最大公约数用辗转相除法(又名欧几里德算法) 1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b, 令r=a mod b 设a=kc,b=jc,则k,j互素,否则c不是最大公约数 据上,r=a-mb=kc-mjc=(k-mj)c 可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾, 由此可知,b与r的最原创 2022-05-16 12:24:24 · 102 阅读 · 0 评论 -
C语言练习 day14 & day15
day14 题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。 (2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 实例 #include<stdio.h> int main() {原创 2022-05-15 12:15:00 · 118 阅读 · 0 评论 -
C语言练习 day12 & day13
题目:判断 101 到 200 之间的素数。 素数,指除了1和该数本身之外,不能被其他任何整数整除的数。例如,13 是素数,因为它不能被 2,3,4…,12整除。 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 实例 #include <stdio.h> int main() { int i,j; int count=0; for (i=101; i<=200; i++)原创 2022-05-14 12:15:00 · 131 阅读 · 0 评论 -
C语言练习 day8
题目:输出9*9口诀。 这道题很经典 程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。 实例 #include<stdio.h> int main() { int i,j,result; printf("\n"); for (i=1;i<10;i++) { for(j=1;j<=i;j++) { result=i*j; printf("%d*%d=%-3原创 2022-05-11 12:00:00 · 168 阅读 · 0 评论 -
C语言练习 day5
题目:输入三个整数x,y,z,请把这三个数由小到大输出。 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 实例 #include <stdio.h> int main() { int x,y,z,t; printf("\n请输入三个数字:\n"); scanf("%d%d%d",&x,&y,&z); if原创 2022-05-09 12:15:00 · 351 阅读 · 0 评论 -
C语言练习 day4
题目:输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 实例 #include <stdio.h> int main() { int day,month,year,sum,leap; printf("\n请输入年、月、日,格式为:年,月,日(2015,12,10)\n"); scanf("%d,%d,%d",&year,&mon原创 2022-05-08 12:15:00 · 146 阅读 · 0 评论 -
C语言练习 day3
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 自己先想想~ 程序分析: 假设该数为 x。 1、则:x + 100 = n², x + 100 + 168 = m² 2、计算等式:m² - n² = (m + n)(m - n) = 168 3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数 4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。原创 2022-05-07 11:45:00 · 197 阅读 · 0 评论