C语言RUNOOB教程 语言实例


C语言RUNOOB教程 语言实例


正文

输出 “Hello, World!”

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

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

输出整数

使用 printf() 与 %d 格式化输出整数。

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

输出单个字符

使用 printf()%c 格式化输出一个字符。

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

输出浮点数

使用 printf() 与 %f 输出浮点数。

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

输出结果:

f 的值为 12.001234

输出双精度数

使用 printf() 与 %e 输出双精度数。

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

输出结果:

d 的值为 1.200123e+01 
d 的值为 1.200123e+01 
d 的值为 12.001234 
d 的值为 12.001234 

两个数字相加

使用 scanf() 来接收输入, printf() 与 %d 格式化输出整数。

#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

两个浮点数相乘

输入两个浮点数,计算乘积。

#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

字符转 ASCII 码

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

运行结果:

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

我们也可以输入一个数字,获取相应的字符。

两数相除

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

实例:

#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

数值比较

比较两个数

#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 最大

比较四个数

#include <stdio.h>

int main()
{
    int a=5,b=4,c=3,d=6,min;
    min = (((c<d) ? c : d) < ((a<b) ? a : b)) ? ((c<d) ? c : d) : ((a<b) ? a : b);
    printf("最小的数字为:%d",min);
    return 0;
}

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

运行结果:

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

交换两个数的值

使用临时变量

以下实例演示了交换两个浮点数的值。

#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 

利用计算机逻辑实现

^:位运算同假异真。

a = a ^ b;    // 5(0101) ^ 3(0011) = 6(0110)
b = a ^ b;    // 6(0110) ^ 3(0011) = 5(0101)
a = a ^ b;    // 6(0110) ^ 5(0101) = 3(0011)
#include <stdio.h>

int main()
{
    int a = 2;
    int b = 4;
    
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    
    printf("a = %d  b = %d\n", a, b);
    
    return 0;
}

判断奇数/偶数

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

循环区间范围内的奇数/偶数

循环输出区间范围内的奇数/偶数可以通过除于 2 的余数来判断。

以下实例通过循环输出指定区间范围的偶数。

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

使用按位与运算符判断奇偶数:

#include <stdio.h>
int main(){
    for (int i=1; i<10; i++) {
        // 通过按位与运算符判断奇偶数
        i & 1 ? printf("奇数: %d\n", i) : printf("偶数: %d\n", i);
    }
}

判断元音/辅音

判断输入的字母是元音,还是辅音。

英语有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;
}

判断三个数中的最大数

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

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

一元二次方程

求一元二次方程:ax^2+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

一元二次方程可能有两个实数解,或者一个实数解,或者无实数解。

根据输入的三个系数 a、b、c 的判断解的情况:

#include <stdio.h>
#include <math.h>

int main(void)
{
    double a ,b , c;
    double delat;
    double x1, x2;
    char ch;
    do
    {
        printf("请输入一元二次方程的三个系数:\n");
        
        printf("请输入系数 a = \t");
        scanf("%lf",&a);
        
        printf("请输入系数 b = \t");
        scanf("%lf",&b);
        
        printf("请输入系数 c = \t");
        scanf("%lf",&c);
        
        delat = b*b-4*a*c;
        
        if(delat>0)
        {
            x1= ( -b+sqrt(delat) )/2;
            x2= ( -b-sqrt(delat) )/2;
            printf("有2个实数解:x1 = %lf  x2 = %lf\n",x1,x2);
        }
        else if(delat==0)
        {
            x1=( -b+sqrt(delat) )/2;
            printf("有2个相等实数解:x1=x2 = %lf\n",x1);
        }
        else
            printf("无实数解\n");

        printf("是否继续吗:Y/N\n");
        scanf(" %c",&ch);
    }while(ch=='y'||ch=='Y');
    return 0;
}

判断闰年

判断正数/负数/零

判断字母

计算自然数的和

输出九九乘法口诀表

斐波那契数列

求两数的最大公约数

求两数最小公倍数

阶乘

循环输出26个字母

判断数字为几位数

计算一个数的 n 次方

判断回文数

判断素数

判断Armstrong数(阿姆斯壮数)

求一个整数的所有因数

创建各类三角形图案

表格形式输出数据

实现简单的计算器

计算一个数是否可为两个素数之和

二进制与十进制相互转换

八进制与十进制相互转换

八进制与二进制相互转换

字符串翻转

计算数组元素平均值

输出数组

计算数组元素之和

查找数组中最大的元素值

查找数组中最小的元素

数组拆分与合并

数组拷贝

计算标准偏差

两个矩阵相加

矩阵转换

使用指针访问数组元素

使用引用循环替换数值

判断最大值

删除字符串中的特殊字符

连接字符串

计算字符串长度

查找字符在字符串中出现的次数

字符串中各种字符计算

字符串复制

字符串排序

使用结构体(struct)

复数相加

计算两个时间段的差值

将字符串写入文件

从文件中读取一行

输出当前文件执行代码

约瑟夫生者死者小游戏

五人分鱼






参考资料

C语言RUNOOB教程 语言实例 https://www.runoob.com/cprogramming/c-examples.html


返回