(31)C语言实例1

1.使用 printf() 输出 “Hello, World!”。

#include <stdio.h>
int main()
{
   // printf() 中字符串需要引号
   printf("Hello, World!");
   return 0;
}

结果:

Hello, World!

2.输出整数

#include <stdio.h>
int main()
{
    int number;
 
    // printf() 输出字符串
    printf("输入一个整数: ");  
    
    // scanf() 格式化输入
    scanf("%d", &number);  
    
    // printf() 显示格式化输入
    printf("你输入的整数是: %d", number);
    return 0;
}

结果:

输入一个整数: 45
你输入的整数是: 45

3.输出单个字符

#include <stdio.h>
 
int main() {
   char c;        // 声明 char 变量
   
   c = 'A';       // 定义 char 变量
   
   printf("c 的值为 %c", c);
   
   return 0;
}

结果:

c 的值为 A

4.输出浮点数

#include <stdio.h>
 
int main() {
   float f;             // 声明浮点数变量
   
   f = 12.001234;       // 定义浮点数变量
   
   printf("f 的值为 %f", f);
   
   return 0;
}

结果:

f 的值为 12.001234

5.输出双精度(double)数

#include <stdio.h>
 
int main() {
   double d;            // 声明双精度变量
   
   d = 12.001234;       // 定义双精度变量
   
   printf("d 的值为 %le", d);
   
   return 0;
}

结果:

d 的值为 1.200123e+01

6.两个整数相加

#include <stdio.h>
int main()
{
    int firstNumber, secondNumber, sumOfTwoNumbers;
    
    printf("输入两个数(以空格分割): ");
 
    // 通过 scanf() 函数接收用户输入的两个整数
    scanf("%d %d", &firstNumber, &secondNumber);
 
    // 两个数字相加
    sumOfTwoNumbers = firstNumber + secondNumber;
 
    // 输出结果
    printf("%d + %d = %d", firstNumber, secondNumber, sumOfTwoNumbers);
 
    return 0;
}

结果:

输入两个数(以空格分割): 1 2
1 + 2 = 3

7.两个浮点数相乘

#include <stdio.h>
int main()
{
    double firstNumber, secondNumber, product;
    printf("输入两个浮点数: ");
 
    // 用户输入两个浮点数
    scanf("%lf %lf", &firstNumber, &secondNumber);  
 
    // 两个浮点数相乘
    product = firstNumber * secondNumber;  
 
    // 输出结果, %.2lf 保留两个小数点
    printf("结果 = %.2lf", product);
    
    return 0;
}

结果:

输入两个浮点数: 1.2 2.345
结果 = 2.81

8.字符转 ASCII 码(A是65,a是97)

#include <stdio.h>
int main()
{
    char c;
    printf("输入一个字符: ");
 
    // 读取用户输入
    scanf("%c", &c);  
    
    // %d 显示整数
    // %c 显示对应字符
    printf("%c 的 ASCII 为 %d", c, c);
    return 0;
}

结果:

输入一个字符: a
a 的 ASCII 为 97

9.两数相除,如果有余数,输出余数。

#include <stdio.h>
 
int main(){
 
    int dividend, divisor, quotient, remainder;
 
    printf("输入被除数: ");
    scanf("%d", &dividend);
 
    printf("输入除数: ");
    scanf("%d", &divisor);
 
    // 计算商
    quotient = dividend / divisor;
 
    // 计算余数
    remainder = dividend % divisor;
 
    printf("商 = %d\n", quotient);
    printf("余数 = %d", remainder);
 
    return 0;
}

结果:

输入被除数: 5
输入除数: 2= 2
余数 = 1

10.数值比较

#include <stdio.h>
 
int main() {
   int a, b;
 
   a = 11;
   b = 99;
 
   // 也可以通过以下代码实现让用户在终端输入两个数
   // printf("输入第一个值:");
   // scanf("%d", &a);
   // printf("输入第二个值:");
   // scanf("%d", &b);
 
   if(a > b)
      printf("a 大于 b");
   else
      printf("a 小于等于 b");
 
   return 0;
}

结果:

a 小于等于 b
#include <stdio.h>
 
int main() {
   int a, b, c;
 
   a = 11;
   b = 22;
   c = 33;
 
   if ( a > b && a > c )
      printf("%d 最大", a);
   else if ( b > a && b > c )
      printf("%d 最大", b);
   else if ( c > a && c > b )
      printf("%d 最大", c);
   else   
      printf("有两个或三个数值相等");
 
   return 0;
}

结果:

33 最大

11.使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。

#include <stdio.h>
 
int main()
{
    int integerType;
    float floatType;
    double doubleType;
    char charType;
 
    // sizeof 操作符用于计算变量的字节大小
    printf("Size of int: %ld bytes\n",sizeof(integerType));
    printf("Size of float: %ld bytes\n",sizeof(floatType));
    printf("Size of double: %ld bytes\n",sizeof(doubleType));
    printf("Size of char: %ld byte\n",sizeof(charType));
 
    return 0;
}

结果:

Size of int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of char: 1 byte

计算 long long, long double 字节大小。

#include <stdio.h>
int main()
{
    int a;
    long b;
    long long c;
 
    double e;
    long double f;
 
 
    printf("Size of int = %ld bytes \n", sizeof(a));
    printf("Size of long = %ld bytes\n", sizeof(b));
    printf("Size of long long = %ld bytes\n", sizeof(c));
 
    printf("Size of double = %ld bytes\n", sizeof(e));
    printf("Size of long double = %ld bytes\n", sizeof(f));
 
    return 0;
}

结果:

Size of int = 4 bytes 
Size of long = 8 bytes
Size of long long = 8 bytes
Size of double = 8 bytes
Size of long double = 16 bytes

12.交换两个数的值(使用临时变量)

#include <stdio.h>
 
int main()
{
      double firstNumber, secondNumber, temporaryVariable;
 
      printf("输入第一个数字: ");
      scanf("%lf", &firstNumber);
 
      printf("输入第二个数字: ");
      scanf("%lf",&secondNumber);
 
      // 将第一个数的值赋值给 temporaryVariable
      temporaryVariable = firstNumber;
 
      // 第二个数的值赋值给 firstNumber
      firstNumber = secondNumber;
 
      // 将 temporaryVariable 赋值给 secondNumber
      secondNumber = temporaryVariable;
 
      printf("\n交换后, firstNumber = %.2lf\n", firstNumber);
      printf("交换后, secondNumber = %.2lf", secondNumber);
 
      return 0;
}

结果:

输入第一个数字: 1
输入第二个数字: 2

交换后, firstNumber = 2.00
交换后, secondNumber = 1.00

不使用临时变量:

#include <stdio.h>
 
int main() {
   int a, b;
 
   a = 11;
   b = 99;
 
   printf("交换之前 - \n a = %d, b = %d \n\n", a, b);
 
   a = a + b;  // ( 11 + 99 = 110)  此时 a 的变量为两数之和,b 未改变
   b = a - b;  // ( 110 - 99 = 11)  
   a = a - b;  // ( 110 - 11 = 99)
 
   printf("交换后 - \n a = %d, b = %d \n", a, b);
}

结果:

交换之前 - 
 a = 11, b = 99 

交换后 - 
 a = 99, b = 11 

13.判断奇数/偶数

#include <stdio.h>
 
int main()
{
    int number;
 
    printf("请输入一个整数: ");
    scanf("%d", &number);
 
    // 判断这个数除以 2 的余数
    if(number % 2 == 0)
        printf("%d 是偶数。", number);
    else
        printf("%d 是奇数。", number);
 
    return 0;
}

结果:

请输入一个整数: 5
5 是奇数。

14.循环区间范围内的奇数/偶数
通过循环输出指定区间范围的偶数:

#include <stdio.h>
 
int main() {
   int i;
 
   for(i = 1; i <= 10; i++) {
      if(i%2 == 0)
         printf(" %2d\n", i);
   }
   return 0;
}

结果:

2
4
6
8
10

通过循环输出指定区间范围的奇数。

#include <stdio.h>
 
int main() {
   int i;
 
   for(i = 1; i <= 10; i++) {
      if(i%2 != 0)
         printf("%d\n", i);
   }
   return 0;
}

结果:

1
3
5
7
9

15.判断输入的字母是元音,还是辅音。
英语有26个字母,元音只包括 a、e、i、o、u 这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。

#include <stdio.h>
 
int main()
{
    char c;
    int isLowercaseVowel, isUppercaseVowel;
 
    printf("输入一个字母: ");
    scanf("%c",&c);
 
    // 小写字母元音
    isLowercaseVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
 
    // 大写字母元音
    isUppercaseVowel = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');
 
    // if 语句判断
    if (isLowercaseVowel || isUppercaseVowel)
        printf("%c  是元音", c);
    else
        printf("%c 是辅音", c);
    return 0;
}

结果:

输入一个字母: G
G 是辅音

16.通过屏幕我们输入三个数字,并找出最大的数。

#include <stdio.h>
 
int main()
{
    double n1, n2, n3;
 
    printf("请输入三个数,以空格分隔: ");
    scanf("%lf %lf %lf", &n1, &n2, &n3);
 
    if( n1>=n2 && n1>=n3 )
        printf("%.2f 是最大数。", n1);
 
    if( n2>=n1 && n2>=n3 )
        printf("%.2f 是最大数。", n2);
 
    if( n3>=n1 && n3>=n2 )
        printf("%.2f 是最大数。", n3);
 
    return 0;
}

结果:

请输入三个数,以空格分隔: 1 2 3
3.00 是最大数。

17.求一元二次方程:ax2+bx+c=0 的根。
输入三个实数a,b,c的值,且a不等于0。

#include <stdio.h>
#include <math.h>
 
int main()
{
        float a,b,c,x1,x2,d;
        printf("输入方程的三个系数:");
        scanf("%f %f %f",&a,&b,&c);
        if(a!=0)
        {
                d=sqrt(b*b-4*a*c);
                x1=(-b+d)/(2*a);
                x2=(-b-d)/(2*a);
                if(x1<x2) 
                    printf("%0.2f %0.2f\n",x2,x1); 
                else
                    printf("%0.2f %0.2f\n",x1,x2);
        }
        return 0;
}

结果:

输入方程的三个系数:1 2 1
-1.00 -1.00

18.判断闰年
用户输入年份,判断该年份是否为闰年。

#include <stdio.h>
 
int main()
{
    int year;
 
    printf("输入年份: ");
    scanf("%d",&year);
 
    if(year%4 == 0)
    {
        if( year%100 == 0)
        {
            // 这里如果被 400 整数是闰年
            if ( year%400 == 0)
                printf("%d 是闰年", year);
            else
                printf("%d 不是闰年", year);
        }
        else
            printf("%d 是闰年", year );
    }
    else
        printf("%d 不是闰年", year);
    
    return 0;
}

结果:

输入年份: 1990
1990 不是闰

19.用户输入一个数字,判断该数字是正数还是负数或是零。

#include <stdio.h>
int main()
{
    double number;
 
    printf("输入一个数字: ");
    scanf("%lf", &number);
 
    if (number <= 0.0)
    {
        if (number == 0.0)
            printf("你输入的是 0。");
        else
            printf("你输入的是负数。");
    }
    else
        printf("你输入的是正数。");
    return 0;
}

结果:

输入一个数字: 9
你输入的是正数。

20.用户输入一个字符,判断该字符是否为一个字母。

#include <stdio.h>
 
int main()
{
    char c;
    printf("输入一个字符: ");
    scanf("%c",&c);
 
    if( (c>='a' && c<='z') || (c>='A' && c<='Z'))
        printf("%c 是字母",c);
    else
        printf("%c 不是字母",c);
 
    return 0;
}

结果:

输入一个字符: a
a 是字母

21.计算自然数的和
自然数是指表示物体个数的数,即由0开始,0,1,2,3,4,……一个接一个,组成一个无穷的集体,即指非负整数。
使用 for:

#include <stdio.h>
int main()
{
    int n, i, sum = 0;
    
    printf("输入一个正整数: ");
    scanf("%d",&n);
 
    for(i=1; i <= n; ++i)
    {
        sum += i;   // sum = sum+i;
    }
 
    printf("Sum = %d",sum);
 
    return 0;
}

使用 while:

#include <stdio.h>
int main()
{
    int n, i, sum = 0;
    
    printf("输入一个正整数: ");
    scanf("%d",&n);
 
    i = 1;
    while ( i <=n )
    {
        sum += i;
        ++i;
    }
 
    printf("Sum = %d",sum);
 
    return 0;
}

使用递归:

#include <stdio.h>
int addNumbers(int n);
 
int main()
{
    int num;
    printf("输入一个整数: ");
    scanf("%d", &num);
    printf("Sum = %d",addNumbers(num));
    return 0;
}
 
int addNumbers(int n)
{
    if(n != 0)
        return n + addNumbers(n-1);
    else
        return n;
}

结果:

输入一个正整数: 100
Sum = 5050

22.输出九九乘法口诀表

#include<stdio.h> 
 
int main(){  
    //外层循环变量,控制行  
    int i = 0;  
    //内层循环变量,控制列   
    int j = 0;   
    for(i=1;i<=9;i++){  
        for(j=1;j<=i;j++){  
            printf("%dx%d=%d\t",j,i,i*j);  
        }  
        //每行输出完后换行   
        printf("\n");     
    }  
}

结果:

1x1=1    
1x2=2    2x2=4    
1x3=3    2x3=6    3x3=9    
1x4=4    2x4=8    3x4=12    4x4=16    
1x5=5    2x5=10    3x5=15    4x5=20    5x5=25    
1x6=6    2x6=12    3x6=18    4x6=24    5x6=30    6x6=36    
1x7=7    2x7=14    3x7=21    4x7=28    5x7=35    6x7=42    7x7=49    
1x8=8    2x8=16    3x8=24    4x8=32    5x8=40    6x8=48    7x8=56    8x8=64    
1x9=9    2x9=18    3x9=27    4x9=36    5x9=45    6x9=54    7x9=63    8x9=72    9x9=81    

23.斐波那契数列
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
这个数列从第3项开始,每一项都等于前两项之和。
输出指定数量的斐波那契数列:

#include <stdio.h>
 
int main()
{
    int i, n, t1 = 0, t2 = 1, nextTerm;
 
    printf("输出几项: ");
    scanf("%d", &n);
 
    printf("斐波那契数列: ");
 
    for (i = 1; i <= n; ++i)
    {
        printf("%d, ", t1);
        nextTerm = t1 + t2;
        t1 = t2;
        t2 = nextTerm;
    }
    return 0;
}

结果:

输出几项: 10
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,

输出指定数字前的斐波那契数列:

#include <stdio.h>
 
int main()
{
    int t1 = 0, t2 = 1, nextTerm = 0, n;
 
    printf("输入一个正数: ");
    scanf("%d", &n);
 
    // 显示前两项
    printf("斐波那契数列: %d, %d, ", t1, t2);
 
    nextTerm = t1 + t2;
 
    while(nextTerm <= n)
    {
        printf("%d, ",nextTerm);
        t1 = t2;
        t2 = nextTerm;
        nextTerm = t1 + t2;
    }
    
    return 0;
}

结果:

输入一个正数: 100
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,

24.求两数的最大公约数
用户输入两个数,求这两个数的最大公约数。
使用 for 和 if:

#include <stdio.h>
 
int main()
{
    int n1, n2, i, gcd;
 
    printf("输入两个正整数,以空格分隔: ");
    scanf("%d %d", &n1, &n2);
 
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        // 判断 i 是否为最大公约数
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }
 
    printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd);
 
    return 0;
}

结果:

输入两个正整数,以空格分隔: 81 153
81153 的最大公约数是 9

使用 while 和 if:

#include <stdio.h>
int main()
{
    int n1, n2;
    
    printf("输入两个数,以空格分隔: ");
    scanf("%d %d",&n1,&n2);
 
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("GCD = %d",n1);
 
    return 0;
}

结果:

输入两个数,以空格分隔: 81 153
GCD = 9

适用正数和负数:

#include <stdio.h>
 
int main()
{
    int n1, n2;
 
    printf("输入两个数,以空格分隔: ");
    scanf("%d %d",&n1,&n2);
 
    // 如果输入的是负数,将其转换为正数
    n1 = ( n1 > 0) ? n1 : -n1;
    n2 = ( n2 > 0) ? n2 : -n2;
 
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("GCD = %d",n1);
 
    return 0;
}

结果:

输入两个数,以空格分隔: 81 -153
GCD = 9

25.求两数最小公倍数
用户输入两个数,求这两个数的最小公倍数。
使用 while 和 if:

#include <stdio.h>
 
int main()
{
    int n1, n2, minMultiple;
    printf("输入两个正整数: ");
    scanf("%d %d", &n1, &n2);
 
    // 判断两数较大的值,并赋值给 minMultiple
    minMultiple = (n1>n2) ? n1 : n2;
 
    // 条件为 true
    while(1)
    {
        if( minMultiple%n1==0 && minMultiple%n2==0 )
        {
            printf("%d 和 %d 的最小公倍数为 %d", n1, n2,minMultiple);
            break;
        }
        ++minMultiple;
    }
    return 0;
}

结果:

输入两个正整数: 72 120
72120 的最小公倍数为 360

通过最大公约数计算:

#include <stdio.h>
 
int main()
{
    int n1, n2, i, gcd, lcm;
 
    printf("输入两个正整数: ");
    scanf("%d %d",&n1,&n2);
 
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        // 判断最大公约数
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }
 
    lcm = (n1*n2)/gcd;
    printf("%d 和 %d 的最小公倍数为 %d", n1, n2, lcm);
 
    return 0;
}

结果:

输入两个正整数: 72 120
72120 的最小公倍数为 360

26.阶乘
一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且 0 的阶乘为 1。自然数 n 的阶乘写作 n!。n!=1×2×3×…×n。阶乘亦可以递归方式定义:0!=1,1!=1,n!=(n-1)!×n。

#include <stdio.h>
 
int main()
{
    int n, i;
    unsigned long long factorial = 1;
 
    printf("输入一个整数: ");
    scanf("%d",&n);
 
    // 如果输入是负数,显示错误
    if (n < 0)
        printf("Error! 负数没有阶乘jiechen");
 
    else
    {
        for(i=1; i<=n; ++i)
        {
            factorial *= i;              // factorial = factorial*i;
        }
        printf("%d! = %llu", n, factorial);
    }
 
    return 0;
}

结果:

输入一个整数: 10
10! = 3628800

使用递归:

#include <stdio.h>
long int multiplyNumbers(int n);
 
int main()
{
    int n;
    printf("输入一个整数: ");
    scanf("%d", &n);
    printf("%d! = %ld", n, multiplyNumbers(n));
    return 0;
}
long int multiplyNumbers(int n)
{
    if (n > 1)
        return n*multiplyNumbers(n-1);
    else
        return 1;
}

27.循环输出26个字母

#include <stdio.h>
 
int main()
{
    char c;
 
    for(c = 'A'; c <= 'Z'; ++c)
       printf("%c ", c);
    
    return 0;
}

结果:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

输出大写或小写字母:

#include <stdio.h>
 
int main()
{
    char c;
 
    printf("输入 u 显示大写字母,输入 l 显示小写字母: ");
    scanf("%c", &c);
 
    if(c== 'U' || c== 'u')
    {
       for(c = 'A'; c <= 'Z'; ++c)
         printf("%c ", c);
    }
    else if (c == 'L' || c == 'l')
    {
        for(c = 'a'; c <= 'z'; ++c)
         printf("%c ", c);
    }
    else
       printf("Error! 输入非法字符。");
    return 0;
}

结果:

输入 u 显示大写字母,输入 l 显示小写字母: l
a b c d e f g h i j k l m n o p q r s t u v w x y z

28.判断数字为几位数

#include <stdio.h>
int main()
{
    long long n;
    int count = 0;
 
    printf("输入一个整数: ");
    scanf("%lld", &n);
 
    while(n != 0)
    {
        // n = n/10
        n /= 10;
        ++count;
    }
 
    printf("数字是 %d 位数。", count);
}

结果:

输入一个整数: 2345
数字是 4 位数。

29.计算一个数的 n 次方

#include <stdio.h>
 
int main()
{
    int base, exponent;
 
    long long result = 1;
 
    printf("基数: ");
    scanf("%d", &base);
 
    printf("指数: ");
    scanf("%d", &exponent);
 
    while (exponent != 0)
    {
        result *= base;
        --exponent;
    }
    printf("结果:%lld", result);
 
    return 0;
}

结果:

基数: 2
指数: 3
结果:8

使用 pow() 函数:

#include <stdio.h>
#include <math.h>
 
int main()
{
    double base, exponent, result;
 
    printf("基数: ");
    scanf("%lf", &base);
 
    printf("指数: ");
    scanf("%lf", &exponent);
 
    // 计算结果
    result = pow(base, exponent);
 
    printf("%.1lf^%.1lf = %.2lf", base, exponent, result);
 
    return 0;
}

结果:

基数: 2
指数: 3
2.0^3.0 = 8.00

30.判断回文数
判断一个数是否为回文数。设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数

#include <stdio.h>
 
int main()
{
    int n, reversedInteger = 0, remainder, originalInteger;
 
    printf("输入一个整数: ");
    scanf("%d", &n);
 
    originalInteger = n;
 
    // 翻转
    while( n!=0 )
    {
        remainder = n%10;
        reversedInteger = reversedInteger*10 + remainder;
        n /= 10;
    }
 
    // 判断
    if (originalInteger == reversedInteger)
        printf("%d 是回文数。", originalInteger);
    else
        printf("%d 不是回文数。", originalInteger);
    
    return 0;
}

结果:

输入一个整数: 12321
12321 是回文数

31.判断素数
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。

#include <stdio.h>
 
int main()
{
    int n, i, flag = 0;
 
    printf("输入一个正整数: ");
    scanf("%d",&n);
 
    for(i=2; i<=n/2; ++i)
    {
        // 符合该条件不是素数
        if(n%i==0)
        {
            flag=1;
            break;
        }
    }
 
    if (flag==0)
        printf("%d 是素数",n);
    else
        printf("%d 不是素数",n);
    
    return 0;
}

结果:

输入一个正整数: 29
29 是素数

判断两个数之间的素数:

#include <stdio.h>
 
int main()
{
    int low, high, i, flag;
    printf("输入两个整数: ");
    scanf("%d %d", &low, &high);
 
    printf("%d 与 %d 之间的素数为: ", low, high);
 
    while (low < high)
    {
        flag = 0;
 
        for(i = 2; i <= low/2; ++i)
        {
            if(low % i == 0)
            {
                flag = 1;
                break;
            }
        }
 
        if (flag == 0)
            printf("%d ", low);
 
        ++low;
    }
 
    return 0;
}

结果:

输入两个整数: 100  200
100200 之间的素数为: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

使用函数判断两数间的素数:

#include <stdio.h>
 
int checkPrimeNumber(int n);
int main()
{
    int n1, n2, i, flag;
 
    printf("输入两个正整数: ");
    scanf("%d %d", &n1, &n2);
    printf("%d 和 %d 间的素数为: ", n1, n2);
 
    for(i=n1+1; i<n2; ++i)
    {
        // 判断是否为素数
        flag = checkPrimeNumber(i);
 
        if(flag == 1)
            printf("%d ",i);
    }
    return 0;
}
 
// 函数定义
int checkPrimeNumber(int n)
{
    int j, flag = 1;
 
    for(j=2; j <= n/2; ++j)
    {
        if (n%j == 0)
        {
            flag =0;
            break;
        }
    }
    return flag;
}

结果:

输入两个正整数: 10 30
1030 间的素数为: 11 13 17 19 23 29

32.判断Armstrong数(阿姆斯壮数)
Armstrong 数,就是n位数的各位数的n次方之和等于该数,如:

153=1^3+5^3+3^3
1634=1^4+6^4+3^4+4^4
#include <stdio.h>
int main()
{
    int number, originalNumber, remainder, result = 0;
 
    printf("输入三位数: ");
    scanf("%d", &number);
 
    originalNumber = number;
 
    while (originalNumber != 0)
    {
        remainder = originalNumber%10;
        result += remainder*remainder*remainder;
        originalNumber /= 10;
    }
 
    if(result == number)
        printf("%d 是 Armstrong 数",number);
    else
        printf("%d 不是 Armstrong 数",number);
 
    return 0;
}

结果:

输入三位数: 371
371 是 Armstrong 

两数之间的 Armstrong 数:

#include <stdio.h>
#include <math.h>
 
int main()
{
    int low, high, i, temp1, temp2, remainder, n = 0, result = 0;
 
    printf("输入两个整数: ");
    scanf("%d %d", &low, &high);
    printf("%d 和 %d 之间的 Armstrong 数为: ", low, high);
 
    for(i = low + 1; i < high; ++i)
    {
        temp2 = i;
        temp1 = i;
 
        // 计算
        while (temp1 != 0)
        {
            temp1 /= 10;
            ++n;
        }
        
        while (temp2 != 0)
        {
            remainder = temp2 % 10;
            result += pow(remainder, n);
            temp2 /= 10;
        }
 
        if (result == i) {
            printf("%d ", i);
        }
 
        n = 0;
        result = 0;
 
    }
    return 0;
}

结果:

输入两个整数: 100 1000
1001000 之间的 Armstrong 数为: 153 370 371 407

使用函数判断Armstrong 数:

#include <stdio.h>
#include <math.h>
 
int checkPrimeNumber(int n);
int checkArmstrongNumber(int n);
 
int main()
{
    int n, flag;
 
    printf("输入正整数: ");
    scanf("%d", &n);
 
    // 检测素数
    flag = checkPrimeNumber(n);
    if (flag == 1)
        printf("%d 是素数。\n", n);
    else
        printf("%d 不是素数\n", n);
 
    // 检测 Armstrong 数
    flag = checkArmstrongNumber(n);
    if (flag == 1)
        printf("%d 是 Armstrong 数。", n);
    else
        printf("%d 不是 Armstrong 数。",n);
    return 0;
}
 
int checkPrimeNumber(int n)
{
    int i, flag = 1;
 
    for(i=2; i<=n/2; ++i)
    {
 
    // 非素数条件
        if(n%i == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}
 
int checkArmstrongNumber(int number)
{
    int originalNumber, remainder, result = 0, n = 0, flag;
 
    originalNumber = number;
 
    while (originalNumber != 0)
    {
        originalNumber /= 10;
        ++n;
    }
 
    originalNumber = number;
 
    while (originalNumber != 0)
    {
        remainder = originalNumber%10;
        result += pow(remainder, n);
        originalNumber /= 10;
    }
 
    // 判断条件
    if(result == number)
        flag = 1;
    else
        flag = 0;
 
    return flag;
}

结果:

输入正整数: 371
371 不是素数
371 是 Armstrong 数。

33.求一个整数的所有因数

#include <stdio.h>
 
int main()
{
    int number, i;
 
    printf("输入一个整数: ");
    scanf("%d",&number);
 
    printf("%d 的因数有: ", number);
    for(i=1; i <= number; ++i)
    {
        if (number%i == 0)
        {
            printf("%d ",i);
        }
    }
 
    return 0;
}

结果:

输入一个整数: 60
60 的因数有: 1 2 3 4 5 6 10 12 15 20 30 60

34.创建各类三角形图案

#include <stdio.h>
 
int main()
{
    int i, j, rows;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=1; i<=rows; ++i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
}

结果:

*
* *
* * *
* * * *
* * * * *

使用数字:

#include <stdio.h>
 
int main()
{
    int i, j, rows;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=1; i<=rows; ++i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("%d ",j);
        }
        printf("\n");
    }
    return 0;
}

结果:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

使用字母:

#include <stdio.h>
int main()
{
    int i, j;
    char input, alphabet = 'A';
 
    printf("输入大写字母: ");
    scanf("%c",&input);
 
    for(i=1; i <= (input-'A'+1); ++i)
    {
        for(j=1;j<=i;++j)
        {
            printf("%c", alphabet);
        }
        ++alphabet;
 
        printf("\n");
    }
    return 0;
}

结果:

A
B B
C C C
D D D D
E E E E E

倒三角形:

#include <stdio.h>
int main()
{
    int i, j, rows;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=rows; i>=1; --i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("* ");
        }
        printf("\n");
    }
    
    return 0;
}

结果:

* * * * *
* * * *
* * * 
* *
*

倒三角形数字:

#include <stdio.h>
int main()
{
    int i, j, rows;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=rows; i>=1; --i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("%d ",j);
        }
        printf("\n");
    }
 
    return 0;
}

结果:

1 2 3 4 5
1 2 3 4 
1 2 3
1 2
1

金字塔:

#include <stdio.h>
int main()
{
    int i, space, rows, k=0;
 
    printf("Enter number of rows: ");
    scanf("%d",&rows);
 
    for(i=1; i<=rows; ++i, k=0)
    {
        for(space=1; space<=rows-i; ++space)
        {
            printf("  ");
        }
 
        while(k != 2*i-1)
        {
            printf("* ");
            ++k;
        }
 
        printf("\n");
    }
    
    return 0;
}

结果:

        *
      * * *
    * * * * *
  * * * * * * *
* * * * * * * * *

数字金字塔:

#include <stdio.h>
int main()
{
    int i, space, rows, k=0, count = 0, count1 = 0;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=1; i<=rows; ++i)
    {
        for(space=1; space <= rows-i; ++space)
        {
            printf("  ");
            ++count;
        }
 
        while(k != 2*i-1)
        {
            if (count <= rows-1)
            {
                printf("%d ", i+k);
                ++count;
            }
            else
            {
                ++count1;
                printf("%d ", (i+k-2*count1));
            }
            ++k;
        }
        count1 = count = k = 0;
 
        printf("\n");
    }
    return 0;
}

结果:

        1
      2 3 2
    3 4 5 4 3
  4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5

倒金字塔:

#include<stdio.h>
int main()
{
    int rows, i, j, space;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=rows; i>=1; --i)
    {
        for(space=0; space < rows-i; ++space)
            printf("  ");
 
        for(j=i; j <= 2*i-1; ++j)
            printf("* ");
 
        for(j=0; j < i-1; ++j)
            printf("* ");
 
        printf("\n");
    }
 
    return 0;
}

结果:

* * * * * * * * *
  * * * * * * *
    * * * * *
      * * *
        *

杨辉三角:

#include <stdio.h>
int main()
{
    int rows, coef = 1, space, i, j;
 
    printf("行数: ");
    scanf("%d",&rows);
 
    for(i=0; i<rows; i++)
    {
        for(space=1; space <= rows-i; space++)
            printf("  ");
 
        for(j=0; j <= i; j++)
        {
            if (j==0 || i==0)
                coef = 1;
            else
                coef = coef*(i-j+1)/j;
 
            printf("%4d", coef);
        }
        printf("\n");
    }
 
    return 0;
}

结果:

           1
         1   1
       1   2   1
     1   3   3    1
   1  4    6   4   1
 1  5   10   10  5   1

弗洛伊德三角形:

#include <stdio.h> 
#define N 10 
int main() 
{  
    int i,j,l; 
    for(i=1,j=1;i<=N;i++) 
    { 
        for(l=1;l<=i;l++,j++) 
            printf("%5d",j); 
        printf("\n"); 
    } 
    return 0; 
}

结果:

    1
    2    3
    4    5    6
    7    8    9   10
   11   12   13   14   15
   16   17   18   19   20   21
   22   23   24   25   26   27   28
   29   30   31   32   33   34   35   36
   37   38   39   40   41   42   43   44   45
   46   47   48   49   50   51   52   53   54   55

35.表格形式输出数据
将 1~100 的数据以 10x10 矩阵格式输出。

#include <stdio.h>
 
int main() {
   int i, j, count;
 
   for(i = 1; i <= 10; i++) {
      for(j = i; j <=100; j += 10 )
         printf(" %3d", j);
 
      printf("\n");
   }
 
   return 0;
}

结果:

1  11  21  31  41  51  61  71  81  91
2  12  22  32  42  52  62  72  82  92
3  13  23  33  43  53  63  73  83  93
4  14  24  34  44  54  64  74  84  94
5  15  25  35  45  55  65  75  85  95
6  16  26  36  46  56  66  76  86  96
7  17  27  37  47  57  67  77  87  97
8  18  28  38  48  58  68  78  88  98
9  19  29  39  49  59  69  79  89  99
10  20  30  40  50  60  70  80  90 100

等差数列输出 10x10 矩阵格式:

#include <stdio.h>
 
int main() {
   int i, j, count;
   int start, end;
 
   start = 2, end = 10;
 
   for(i = start; i <= end; i++) {
      count = i;
 
      for(j = 1; j <= 10; j++) {
         printf(" %3d", count*j);
      }
 
      printf("\n");
   }
 
   return 0;
}

结果:

2   4   6   8  10  12  14  16  18  20
3   6   9  12  15  18  21  24  27  30
4   8  12  16  20  24  28  32  36  40
5  10  15  20  25  30  35  40  45  50
6  12  18  24  30  36  42  48  54  60
7  14  21  28  35  42  49  56  63  70
8  16  24  32  40  48  56  64  72  80
9  18  27  36  45  54  63  72  81  90
10  20  30  40  50  60  70  80  90 100

乘法运算格式:

#include <stdio.h>
 
int main() {
   int i, j, n;
 
   n = 3;
   j = 1;
   
   for(i = n; i <= (n*10); i+=n) {
      printf("%3d  x %2d  =  %3d\n", n, j, i);
      j++;
   }
 
   return 0;
}

结果:

3  x  1  =    3
3  x  2  =    6
3  x  3  =    9
3  x  4  =   12
3  x  5  =   15
3  x  6  =   18
3  x  7  =   21
3  x  8  =   24
3  x  9  =   27
3  x 10  =   30
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值