目录
例题1:输出九九乘法口诀表
#include <stdio.h>
int main()
{
int i,j;
for (i = 1; i <= 9; i++) {//使用两次循环
for (j = 1; j <= i; j++) {
printf("%d*%d=%d ", j, i, i * j);
}
printf("\n");
}
return 0;
}
测试结果:
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4= 12 4*4= 16
1*5= 5 2*5= 10 3*5= 15 4*5= 20 5*5= 25
1*6= 6 2*6= 12 3*6= 18 4*6= 24 5*6= 30 6*6= 36
1*7= 7 2*7= 14 3*7= 21 4*7= 28 5*7= 35 6*7= 42 7*7= 49
1*8= 8 2*8= 16 3*8= 24 4*8= 32 5*8= 40 6*8= 48 7*8= 56 8*8= 64
1*9= 9 2*9= 18 3*9= 27 4*9= 36 5*9= 45 6*9= 54 7*9= 63 8*9= 72 9*9= 81
例题2:求解斐波那契数列
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8,........,这个数列从第3项开始,每一项都等于前两项之和。
2-1输出前n项的斐波那契数列
#include <stdio.h>
int main()
{
int f1 = 1, f2 = 1, f3,n;
printf("请输入前n项的斐波那契数列:");
scanf_s("%d", &n);
if (n == 1) {//n=1
printf("%d", f1);
}
else if (n == 2) {//n=2
printf("%d %d", f1, f2);
}
else
{
for (int i = 0; i < n; i++) {//n>=3
f3 = f1 + f2;
printf("%d ",f1);
f1 = f2;
f2 = f3;
}
}
return 0;
}
法二:优化处理
#include <stdio.h>
int main()
{
int f1 = 1, f2 = 1, f3, n;
printf("求前n项斐波那契数列,请输入n的值:");
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
f3 = f1 + f2;
printf("%d ", f1);
f1 = f2;
f2 = f3;
}
return 0;
}
测试结果:
请输入前n项的斐波那契数列:10
1 1 2 3 5 8 13 21 34 55
2-2输出小于n的斐波那契数列
#include <stdio.h>
int main()
{
int f1 = 1, f2 = 1, f3,n;
printf("请输入n的值:");
scanf_s("%d", &n);
if (n == 1) {//n=1
printf("%d", f1);
}
else if (n == 2) {//n=2
printf("%d %d", f1, f2);
}
else
{
for (int i = 0; i < n; i++) {//n>=3
f3 = f1 + f2;
if (f1 > n)//对n和f1进行判断
break;
printf("%d ",f1);
f1 = f2;
f2 = f3;
}
}
return 0;
}
法二:使用while()循环
#include <stdio.h>
int main()
{
int f1 = 1, f2 = 1, f3, n;
printf("输出小于等于n的斐波那契数列的值,请输入n的值:");
scanf_s("%d", &n);
while (f1 <= n)
{
f3 = f1 + f2;
printf("%d ", f1);
f1 = f2;
f2 = f3;
}
return 0;
}
测试结果:
请输入n的值:10
1 1 2 3 5 8
例题3:求解两个数的最小公倍数
#include <stdio.h>
int main()
{
int n, m;
printf("请输入n和m这两个数:");
scanf_s("%d %d", &n, &m);
for (int i = 2; i <= n*m; i++) {//使用循环进行判断求解
if (i % n == 0 && i % m == 0) {
printf("最小公倍数为:%d", i);
break;
}
}
return 0;
}
优化:最小公倍数的值得一个是时在max(n,m) 到n*m中产生
#include <stdio.h>
int main()
{
int n, m, max;
printf("请输入最小公倍数的n和m:");
scanf_s("%d %d", &n, &m);
max = n < m ? n : m;
for (int i = max; i <= n * m; i++) {
if (i % n == 0 && i % m == 0) {
printf("%d和%d的最小公倍数为:%d\n", n, m, i);
break;
}
}
return 0;
}
请输入n和m这两个数:32 4
最小公倍数为:32
例题4:求解两个数的最大公约数
#include <stdio.h>
int main()
{
int n, m;
printf("请输入n和m这两个数:");
scanf_s("%d %d", &n, &m);
for (int i =min(n, m); i >= 1; i--) {//使用循环进行判断求解
if (n % i == 0 && m % i == 0) {
printf("最大公约数为:%d", i);
break;
}
}
return 0;
}
int min(int a, int b) {
int min = a < b ? a : b;
return min;
}
/*输入两个数,并求解它们的最大公约数*/
#include <stdio.h>
int main()
{
int num1, num2;
scanf_s("%d %d", &num1, &num2);
int min = num1 < num2 ? num1 : num2;
for (int i = min; i >= 1; i--) {
if (num1 % i == 0 && num2 % i == 0) {
printf("最大公约数为:%d", i);
break;
}
}
return 0;
}
测试结果:
请输入n和m这两个数:129 24
最大公约数为:3
例题5:判断是否为回文序列
#include <stdio.h>
//回文序列121,123321,abccba……
int main() {
char str[100];
printf("请输入你的序列:");
fgets(str, sizeof(str), stdin);//获取字符串输入到字符数组str[]中
int n = strlen(str)-2;//最后一个字符的数组值
for (int i = 0; i < n; i++) {
if (str[i] == str[n]) {//进行回文序列的判断
n--;
}
else
{
printf("该序列非回文序列!");
return 0;
}
}
printf("该序列是回文序列!");
}
/*输入两个数,并求解它们的最大公约数*/
#include <stdio.h>
int main()
{
char num[100];
scanf("%s",num);
//printf("%d", strlen(num));
int n = strlen(num);
for (int i = 0; i < n; i++) {
if (num[i] == num[n]) {
n--;
}
else
{
printf("该序列非回文序列!");
return 0;
}
}
printf("该序列是回文序列!");
}
测试结果:
请输入你的序列:1221
该序列是回文序列!
例题6:判断两个正整数之间的素数
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数
#include"stdio.h"
#include"math.h"
main()
{
int number1, number2, i, n;
int array[100] = {0};
int x = 0;
printf("请输个两正整数:");
scanf("%d %d", &number1,&number2);
for (int m = number1; m <= number2; m++) {
n = (int)sqrt(m);//开平方
if (m == 1) {
continue;//1不是素数,跳出本次循环
}
for (i = 2; i <= n; i++) //2和3的开平方分别为1.414和1.732,不满足循环条件(i<=n)
{
if (m % i == 0)
break;
}
if (i > n) { //i=2,2和3满足(i>n),所以是素数
array[x] = m;
x++;
/* printf("%d是素数\n", m);*/
}
}
printf("%d和%d之间的素数有:",number1,number2);
for (int y = 0; y < x; y++) {
printf("%d ", array[y]);
}
}
测试结果:
请输个两正整数:1 10
1和10之间的素数有:2 3 5 7
例题7:简易计算器
#include<stdio.h>
//简易计算器,实现两数的加减乘除
int main() {
double n, m,result;
char str;
printf("请输入你的运算符(+ - * /):");
str = getchar();
printf("请输入你的两个数字:");
scanf_s("%lf %lf",&n,&m);
switch (str)
{
case 43:
result = n + m;
break;
case 45:
result = n - m;
break;
case 42:
result = n * m;
break;
case 47:
result = n / m;
break;
default:
printf("你输入的运算该程序不存在");
return;
}
printf("运算结果是:%lf", result);
return 0;
}
测试结果:
请输入你的运算符(+ - * /):*
请输入你的两个数字:23 65
运算结果是:1495.000000
例题8:求n的阶乘
#include<stdio.h>
//求n的阶乘
int main() {
int n, result = 1;
printf("请输入数字n:");
scanf_s("%d",&n);
for (int i = 1; i <= n; i++) {
result = result * i;
}
printf("%d!=%d", n,result);
return 0;
}
测试结果:
请输入数字n:5
5!=120
例题9:求n的阶乘和
#include<stdio.h>
//求n的阶乘
int main() {
int n, result = 1,sum=0;
printf("请输入数字n:");
scanf_s("%d",&n);
for (int m = 1; m <= n; m++) {
for (int i = 1; i <= m; i++) {//求每个小于等于n的阶乘
result = result * i;
}
sum = sum + result;
result = 1;//置1为了求每个小于等于n的阶乘
}
printf("%d的阶乘和:%d", n,sum);
return 0;
}
测试结果:
请输入数字n:4
4的阶乘和:33