C 语言经典100例-1

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

#include<stdio.h>

int main()
{
    int i,j,k;
    printf("\n");
    for(i=1;i<5;i++) { // 以下为三重循环
        for(j=1;j<5;j++) {
            for (k=1;k<5;k++) { // 确保i、j、k三位互不相同
                if (i!=k&&i!=j&&j!=k) { 
                    printf("%d,%d,%d\n",i,j,k);
                }
            }
        }
    }
}

C 语言实例 – 使用结构体(struct)

使用结构体(struct)存储学生信息。

#include <stdio.h>
struct student
{
    char name[50];
    int roll;
    float marks;
} s;

int main()
{
    printf("输入信息:\n");

    printf("名字: ");
    scanf("%s", s.name);

    printf("编号: ");
    scanf("%d", &s.roll);

    printf("成绩: ");
    scanf("%f", &s.marks);

    printf("显示信息:\n");

    printf("名字: ");
    puts(s.name);

    printf("编号: %d\n",s.roll);

    printf("成绩: %.1f\n", s.marks);

    return 0;
}

C 语言实例 – 将字符串写入文件

将字符串写入文件。

#include <stdio.h>
#include <stdlib.h>  /* exit() 函数 */

int main()
{
   char sentence[1000];
   FILE *fptr;

   fptr = fopen("text.txt", "w");
   if(fptr == NULL)
   {
      printf("Error!");
      exit(1);
   }

   printf("输入字符串:\n");
   fgets(sentence, (sizeof sentence / sizeof sentence[0]), stdin);

   fprintf(fptr,"%s", sentence);
   fclose(fptr);

   return 0;
}

猴子吃桃问题

一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。

#include<stdio.h>

int main()
{
    int i = 1;
    int j = 1;
    for (j = 10; j > 1;j --)
    {
        i++;
        i = 2 * i;
    }
    printf("第一天摘了 %d 个桃子。", i);
}

C 语言实例 – 约瑟夫生者死者小游戏

30 个人在一条船上,超载,需要 15 人下船。

于是人们排成一队,排队的位置即为他们的编号。

报数,从 1 开始,数到 9 的人下船。

如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

#include<stdio.h>

int c = 0;
int i = 1;
int j = 0;
int a[30] = { 0 };
int b[30] = { 0 };

int main()
{
    while (i<=31)
    {
        if (i == 31)
        {
            i = 1;
        }
        else if (c == 15)
        {
            break;
        }
        else
        {
            if (b[i] != 0)
            {
                i++;
                continue;
            }
            else
            {
                j++;
                if (j != 9)
                {
                    i++;
                    continue;
                }
                else
                {
                    b[i] = 1;
                    a[i] = j;
                    j = 0;
                    printf("第%d号下船了\n", i);
                    i++;
                    c++;
                }
            }
        }
    }
}

C 语言实例 – 阶乘

一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=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;
}

实例 - 使用递归

#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;
}

C 语言实例 – 创建各类三角形图案

创建三角形图案。

#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;
}

实例 - 使用字母

#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;
}

实例 - 倒三角形

#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;
}

实例 - 金字塔

#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;
}

实例 - 倒金字塔

#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;
}

实例 - 弗洛伊德三角形

#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; 
}

C 语言实例 – 交换两个数的值

使用临时变量

以下实例演示了交换两个浮点数的值。
#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;
}

不使用临时变量

不使用临时变量交换两个整数的值:

#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);
}

C 语言实例 – 计算 int, float, double 和 char 字节大小

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

sizeof 是 C 语言的一种单目操作符,如C语言的其他操作符++、--等,它并不是函数。

sizeof 操作符以字节形式给出了其操作数的存储大小
#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;
}

计算 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;
}

编译测试。

C 语言实例 – 数值比较

比较两个数

以下实例中定义了两个整数变量,并使用 if 来比较两个数值,可以先看下逻辑图:

#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;
}

比较三个数
以下实例中定义了两个整数变量,并使用 if 来比较三个数值,可以先看下逻辑图:

#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;
}

测试看结果。

C 语言实例 – 两数相除

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

#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;
}

C语言实例8

ASCII 定义了 128 个字符。

分类:

一:0-31、127(删除键)是控制字符
二:空白字符:空格(32)、 制表符、 垂直制表符、 换行、 回车。
三:可显示字符:a-z、A-Z、0-9、~、!、@、、%、^、&、#、$、*、(、)、-、+、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,还有顿号、。
ASCII 表:

ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
0 NUT 32 (space) 64 @ 96 、
1 SOH 33 ! 65 A 97 a
2 STX 34 " 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 / 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL

#include <stdio.h>
int main()
{
    char c;
    printf("输入一个字符: ");

    // 读取用户输入
    scanf("%c", &c);  

    // %d 显示整数
    // %c 显示对应字符
    printf("%c 的 ASCII 为 %d", c, c);
    return 0;
}

编译并运行看结果。

C语言实例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;
}

编译执行看结果。