九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
【藍(lán)橋杯系列】第一節(jié) C的基本用法

                               

                                                              

大家好,最近很多小伙伴向我反應(yīng)小編!我參加了藍(lán)橋杯但是我連那是什么都不知道,我該怎么訓(xùn)練?是不是在網(wǎng)站刷題就可以啊?

在這里我要回答的是刷題是必須的,著名土神(tourist)刷題超過(guò)10000道

每道估計(jì)40分鐘,大約要7000個(gè)小時(shí)??墒钦f(shuō)是地標(biāo)最強(qiáng)【俄羅斯真是恐怖


當(dāng)然我們做題是要有章法的,今天我們先統(tǒng)一學(xué)一遍C的基本用法


課前準(zhǔn)備

  1. Dev-cpp

  2. C語(yǔ)言網(wǎng)

推薦課外學(xué)習(xí)教材:《算法競(jìng)賽入門(mén)經(jīng)典(第2版)》 劉汝佳 編著 清華大學(xué)出版社

C語(yǔ)言

編程規(guī)范

  • 縮進(jìn)

    • 代碼 {} 內(nèi)的所有代碼加上一個(gè) 縮進(jìn)(Tab)。


1

2

3

4

5

6

7

8

9

10

11

12

13

#include

int main(){                      // 這是 main 函數(shù)的代碼塊

    int radius;

    scanf('%d', &radius);

    if(radius > 10){               // 這是 if 語(yǔ)句的代碼塊

        printf('輸入的半徑大于 10');

    }                              // if 語(yǔ)句結(jié)束

    else{                          // 這是 else 語(yǔ)句的代碼塊

        printf('輸入的半徑小于 10');

    }                              // else 語(yǔ)句結(jié)束

    return 0;

}                                // main 函數(shù)結(jié)束

 

  • 標(biāo)識(shí)符

    • ans:表示答案。

    • flag:表示標(biāo)志。

    • sum:表示求和。

    • 除規(guī)定好的標(biāo)識(shí)符規(guī)范之外,要求標(biāo)識(shí)符盡量 有意義。

    • 常用的標(biāo)識(shí)符:


1

2

3

4

int radius;            // 表示半徑

double PI = 3.1415;    // 表示圓周率

double ans;            // 表示答案

 

基本數(shù)據(jù)類型

關(guān)鍵字類型名稱說(shuō)明
int整型取值范圍在 – 231 ~ 231 – 1(大約 21 億)
short int短整型不常用
long int長(zhǎng)整型取值范圍在 – 231 ~ 231 – 1(與 int 范圍等同)
long long int
取值范圍在 – 263 ~ 263 – 1
float單精度浮點(diǎn)數(shù)不常用
double雙精度浮點(diǎn)數(shù)
char字符型


1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include

#include

int main(){

 

    // 測(cè)試下 int、long int、long long int 的最大值

 

    printf('int %d\n',INT_MAX);

    printf('long int %ld\n',LONG_MAX);

    printf('long long int %lld\n', LLONG_MAX);

    // 注意 long long int 所用的占位符

 

    return 0;

}

 

幾個(gè)常用的字符型常量

字符常量ASCII 碼
'A'65
'a'97
'0'48

運(yùn)算符、輸入與輸出

運(yùn)算符

算術(shù)運(yùn)算符作用
+兩側(cè)操作數(shù)做加法運(yùn)算
-兩側(cè)操作數(shù)做減法運(yùn)算
*兩側(cè)操作數(shù)做乘法運(yùn)算
/兩側(cè)操作數(shù)做除法運(yùn)算
%兩側(cè)操作數(shù)做除法運(yùn)算,將余數(shù)作為結(jié)果

題目 1:輸入一個(gè)半徑,輸出圓的面積。


1

2

3

4

5

6

7

8

9

10

11

12

#include

int main(){

 

    double radius;         // 輸入需要一個(gè)變量進(jìn)行存儲(chǔ)

    double PI = 3.1415926;

    scanf('%lf', &radius);  // 輸入

 

    printf('%lf\n', PI * radius * radius);   // 直接將表達(dá)式作為結(jié)果輸出

 

    return 0;

}

 

如果對(duì)精度有要求:%.mlf   // m 表示精度


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include

int main(){

    int a = 10;

 

    // 自增前綴運(yùn)算符

    printf('a = %d\n', a++);

    printf('a = %d\n', a);

 

    // 自增后綴運(yùn)算符

    a = 10;

    printf('a = %d\n', ++a);

    printf('a = %d\n', a);

 

    return 0;

}

 

關(guān)系運(yùn)算符作用
>大于
小于
>=大于等于
<>小于等于
==等于
!=不等于
邏輯運(yùn)算符作用
&&邏輯與
||邏輯或
!邏輯非

在 C 語(yǔ)言中,非 0 即真。

位運(yùn)算符作用
&按位與
|按位或
^按位異或
~按位非
左移
>>右移
  • 賦值運(yùn)算符 = 可以與其他運(yùn)算符(除邏輯運(yùn)算符)進(jìn)行合并。

  • 類型轉(zhuǎn)換

    • 表達(dá)式的結(jié)果的類型為操作數(shù)中精度最高的類型。

    • 高精度向低精度轉(zhuǎn)換需要 強(qiáng)制轉(zhuǎn)換。

輸入、輸出

  • 格式輸入輸出函數(shù)


1

2

3

scanf('格式符', &變量1, &變量2, ...);

printf('要輸出的字符串、格式符以及轉(zhuǎn)義字符', 變量1, 變量2, ...);

 

格式字符作用
%d整型變量
%o以八進(jìn)制整型變量
%x以十六進(jìn)制整型變量
%ld長(zhǎng)整型變量
%lldlong long 型變量
%c字符變量
%f單精度浮點(diǎn)數(shù)
%lf多精度浮點(diǎn)數(shù)
%s字符串
  • 單字符輸入輸出函數(shù)


1

2

3

4

char c;

getchar(c);  // 輸入一個(gè)字符

putchar(c);  // 輸出一個(gè)字符

 

  • 多字符輸入輸出函數(shù)


1

2

3

4

char c[10];

gets(c);      // 輸入一個(gè)字符串

puts(c);      // 輸出一個(gè)字符串

 

gets 函數(shù)可以讀取字符串中的空格,scanf 函數(shù)不能。

選擇 | 循環(huán)

選擇


1

2

3

4

5

6

7

8

9

10

11

12

13

14

if(條件){

    // 條件成立則執(zhí)行

    語(yǔ)句;

}

else if(條件){

    // 前面的條件不成立且當(dāng)前條件成立則執(zhí)行

    語(yǔ)句;

}

...

else{

    // 前面所有套件都不成立

    語(yǔ)句;

}

 

題目2:輸入三個(gè)數(shù),輸出最大值。


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

#include

int main(){

 

    int a, b, c;

    scanf('%d%d%d', &a, &b, &c);

    // 注意占位符之間不需要空格,但輸入時(shí)兩個(gè)數(shù)字用空格或回車隔開(kāi)

 

    if(a > b){

        if(b > c){

            printf('%d\n',a);

        }

        else if(a > c){

            printf('%d\n',a);

        }

        else{

            printf('%d\n',c);

        }

    }

    else{

        if(a > c){

            printf('%d\n',b);

        }

        else if(b > c){

            printf('%d\n',b);

        }

        else{

            printf('%d\n',c);

        }

    }

    return 0;

}

 

太麻煩了!


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include

int main(){

 

    int a, b, c;

    scanf('%d%d%d', &a, &b, &c);

 

    int max = a;      // 使用輔助的變量存儲(chǔ)最大值

    if(max b){

        max = b;

    }

    if(max c){

        max = c;

    }

 

    printf('%d\n', max);

    return 0;

}

 

還可以用條件運(yùn)算符或函數(shù)進(jìn)行簡(jiǎn)化。

題目3:雞兔同籠
一個(gè)籠子中同時(shí)裝有一些雞和一些兔,輸入頭和腳的個(gè)數(shù),輸出雞和兔的數(shù)目,否則輸出無(wú)法計(jì)算。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include

int main(){

 

    int head, feet;

    scanf('%d%d', &head, &feet);

 

    if((feet % 2) || (feet head * 2) || feet > head * 4){    // 需要注意特殊情況

        printf('無(wú)法計(jì)算\n');

    }

    else{

        int rabbit = (4 * head - feet) / 2;   // 直接使用推導(dǎo)的公式

        int chicken = head - rabbit;

 

        printf('chicken = %d\nrabbit = %d\n', chicken, rabbit);

    }

 

    return 0;

}

 

開(kāi)關(guān)語(yǔ)句


1

2

3

4

5

6

7

8

9

10

11

12

13

switch(變量值){  // 變量值只能為 整型、字符型、浮點(diǎn)型

    case 1:      // 變量值為值 1 時(shí)

        語(yǔ)句;        // 執(zhí)行該語(yǔ)句

        break;       // 跳出 switch 語(yǔ)句,若省略則繼續(xù)執(zhí)行下面的 case

    case 2:

        語(yǔ)句;

        break;

    ...

    default:       // 上面的 case 全部不成立時(shí)執(zhí)行

        語(yǔ)句;

        break;

}

 

題目4:彩票中獎(jiǎng)
若彩票號(hào)碼為 123, 456, 789 中一等獎(jiǎng),為 147, 258, 369 中二等獎(jiǎng),為 159, 357, 555 中三等獎(jiǎng),其余號(hào)碼均未中獎(jiǎng)。


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

#include

int main(){

 

    int num;

    scanf('%d',&num);

 

    switch(num){

        case 123:

        case 456:

        case 789:

            printf('中一等獎(jiǎng)\n');

            break;

        case 147:

        case 258:

        case 369:

            printf('中二等獎(jiǎng)\n');

            break;

        case 159:

        case 357:

        case 555:

            printf('中三等獎(jiǎng)');

            break;

        default:

            printf('未中獎(jiǎng)');

            break;

    }

    return 0;

}

 

循環(huán)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

// while 循環(huán)

while(條件){

    循環(huán)語(yǔ)句;

}

 

// do-while 循環(huán)

do{

    循環(huán)語(yǔ)句;

}while(條件)

 

// for 循環(huán)

for(初始化; 條件; 循環(huán)自增){

    循環(huán)語(yǔ)句;

}

 

題目5:轉(zhuǎn)換密碼
按照轉(zhuǎn)換規(guī)則,將一串密碼轉(zhuǎn)換成對(duì)應(yīng)的密碼。
規(guī)則:’A’ 轉(zhuǎn)換成 ‘E’,’B’ 轉(zhuǎn)換成 ‘F’,…,’Z’ 轉(zhuǎn)換成 ‘D’(僅輸入大寫(xiě)字符)。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include

int main(){

 

    char c;

    while((c = getchar()) != EOF){

    // 注意這道題沒(méi)有提示輸入結(jié)束的標(biāo)志

        if(c >= 'A' && c <> 'Z'){

            putchar((c - 'A' + 4) % 26 + 'A');

        }

        else if(c >= 'a' && c <> 'z'){

            putchar((c - 'a' + 4) % 26 + 'a');

        }

    }

    putchar('\n');

 

    return 0;

}

 

scanf() 函數(shù)具有返回值,為輸入正確輸入的個(gè)數(shù)或 EOF。
   getchar() 函數(shù)同樣具有返回值,為輸入正確的字符或 EOF。

當(dāng)輸入結(jié)束時(shí),可以輸入 Ctrl + Z 結(jié)束輸入。

題目6:打印九九乘法表


1

2

3

4

5

6

7

8

9

10

11

12

13

#include

int main(){

    // 循環(huán)變量默認(rèn)使用 i, j, k

    for(int i = 1; i <> 9; i ++){         // 可以在循環(huán)初始化條件中聲明循環(huán)變量

        for(int j = 1; j <> i; j ++){

            printf('%d*%d=%d ', i, j, i * j);

        }

        printf('\n');

    }

 

    return 0;

}

 

數(shù)組


1

2

3

4

5

類型 數(shù)組名[數(shù)組大小];  // 數(shù)組的聲明

 

int a[10];   // 聲明一個(gè)大小為 10,數(shù)組名為 a 的整型數(shù)組

char s[10];  // 聲明一個(gè)大小為 10,數(shù)組名為 s 的字符串

 

  • 數(shù)組的元素下標(biāo)從 0 起始,若大小為 10,則最后一個(gè)元素的下標(biāo)為 9。

  • 字符串總是以 '\0' 結(jié)尾。

題目5:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#include

#include       // 需要使用 strlen() 函數(shù)

int main(){

 

    char s[100];

    scanf('%s', s);      // 輸入字符串使用 %s

 

    int m = strlen(s);   // strlen() 的作用是返回字符串的長(zhǎng)度

    for(int i = 0; i m; i ++){   // 數(shù)組下標(biāo)從 0 起始,到 長(zhǎng)度 - 1 結(jié)束

        if(s[i] >= 'A' && s[i] <> 'Z'){

            printf('%c', (s[i] - 'A' + 4) % 26 + 'A');

        }

        else if(s[i] >= 'a' && s[i] <> 'z'){

            printf('%c', (s[i] - 'a' + 4) % 26 + 'a');

        }

    }

    printf('\n');

 

    return 0;

}

 

題目7:數(shù)組插入數(shù)字
已有一個(gè)已排好的9個(gè)元素的數(shù)組,今輸入一個(gè)數(shù)要求按原來(lái)排序的規(guī)律將它插入數(shù)組中。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#include

int main(){

 

    int num[9];

 

    for(int i = 0; i 9; i ++){

        scanf('%d', &num[i]);

    }

 

    int x;

    scanf('%d', &x);

 

    for(int i = 0, flag = 1; i 9; i ++){

        if(flag && num[i] >= x){      // 當(dāng)輸出過(guò) x 值時(shí) flag 置為 0

            printf('%d\n', x);

            flag = 0;

        }

        printf('%d\n', num[i]);

    }

 

    return 0;

}

 

結(jié)構(gòu)體


1

2

3

4

5

6

7

8

9

10

struct 結(jié)構(gòu)體名{

    結(jié)構(gòu)體內(nèi)的數(shù)據(jù);

};

 

// 定義一個(gè)點(diǎn)

struct point{

    int x;

    int y;

};

 

  • 結(jié)構(gòu)體通常定義在函數(shù)外。

  • 結(jié)構(gòu)體實(shí)質(zhì)上將多個(gè)變量整合在一起,使分離的變量之間具有一定的意義。


1

2

3

4

5

6

struct point p1, p2;     // 定義兩個(gè)結(jié)構(gòu)體變量

p1.x = 0;         // 使用成員運(yùn)算符 `.`

p1.y = 2;

scanf('%d%d', &p2.x, &p2.y);

printf('%d %d', p2.x, p2.y);

 

題目8:兩點(diǎn)之間距離
輸入兩點(diǎn)坐標(biāo)(xx, y1), (x2, y2),計(jì)算并輸出兩點(diǎn)間的距離。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include

#include       // 使用 sqrt() 函數(shù)

struct point{

    int x;

    int y;

};

int main(){

 

    struct point p1, p2;

 

    while(scanf('%d%d%d%d', &p1.x, &p1.y, &p2.x, &p2.y) != EOF){  // 注意是多組輸入數(shù)據(jù)

        int x = (p1.x - p2.x) * (p1.x - p2.x);

        int y = (p1.y - p2.y) * (p1.y - p2.y);

        printf('%.2lf\n', sqrt(x + y));     // 用 sqrt() 計(jì)算平方根

    }

    return 0;

}

 

函數(shù)與遞歸

函數(shù)的定義


1

2

3

4

5

返回值類型 函數(shù)名(參數(shù)列表){

    // 函數(shù)體

    語(yǔ)句;

}

 

  • 返回值類型即 return 后跟著的變量或值的類型,若沒(méi)有返回值或省略則填寫(xiě) void。

    • 通過(guò) return 語(yǔ)句可以 提前結(jié)束 函數(shù)并返回調(diào)用處。

    • 若省略返回值則 執(zhí)行到大括號(hào) 并返回調(diào)用處。

  • 參數(shù)列表中為函數(shù)需要的各個(gè)參數(shù),在調(diào)用時(shí)需要 提供對(duì)應(yīng)的參數(shù)。

遞歸


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include

int f(int x){

    if(x 5){

        f(x + 1);   // 遞歸的入口

    }

    else{

        return x;   // 必要的出口

    }

}

int main(){

 

    printf('%d',f(1));

    return 0;

}

 

  • 遞歸是在函數(shù)內(nèi)調(diào)用函數(shù)本身的一種方式。

  • 函數(shù)必須有一個(gè)入口以及一個(gè)出口。

  • 通過(guò)遞歸可以不斷重復(fù)同一個(gè)過(guò)程,在必要的條件下結(jié)束并得到結(jié)果。

題目9:最大公約數(shù)和最小公倍數(shù)
寫(xiě)兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果兩個(gè)整數(shù)由鍵盤(pán)輸入。


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

#include

 

// 可以將公用的變量放在函數(shù)外作為全局變量

// 全局變量可以被從聲明位置起以后的所有語(yǔ)句使用

int num1, num2;

int GCD;

 

// 利用 輾轉(zhuǎn)相除法 求得兩個(gè)數(shù)的最小公約數(shù)

int gcd(int a, int b){  // 函數(shù)參數(shù)以在函數(shù)內(nèi)有效

    if(a b){

        int temp = a, a = b, b = temp;  // 這個(gè)局部變量只在該代碼塊間有效

    }

    if(!(a % b)){

        return b;

    }

    gcd(b, a % b);

}

 

// 最大公約數(shù) * 最小公倍數(shù) = 兩數(shù)乘積

int lcm(){

    return num1 * num2 / GCD;

}

int main(){

 

    scanf('%d%d', &num1, &num2);

    GCD = gcd(num1, num2);

    printf('%d %d\n',GCD, lcm());

    return 0;

}

 

預(yù)處理

  • include 預(yù)處理

    • 用來(lái)加載頭文件。

  • define 預(yù)處理

    • 用來(lái)將指定字符序列替換成對(duì)應(yīng)的字符序列


1

2

#define PI 3.1415926  // 常用于定義一個(gè)常量

 

思考題

  1. 進(jìn)制轉(zhuǎn)換

  2. 階乘之和
       – 輸入 n,計(jì)算 S = 1! + 2! + … + n! 的末 6 位(不含前導(dǎo) 0)。
       – 樣例輸入:10
       – 樣例輸出:37913

  3. 汽水瓶
       – “某商店規(guī)定:三個(gè)空汽水瓶可以換一瓶汽水。小張手上有十個(gè)空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶。
       – 樣例輸入:10
       – 樣例輸出:5

  4. WERTYU
       – 輸入往右一個(gè)錯(cuò)位后敲出的字符串(所有字母均大寫(xiě)),輸出打字員本來(lái)想打出的句子,且輸入保證合法。
       – 樣例輸入:O S, GOMR YPFSU/
       – 樣例輸出:I AM FINE TODAY.

  5. 生成元
       – 如果 x 加上 x 的各個(gè)數(shù)字之和得到 y,就說(shuō) x 是 y 的生成元。給出 n 求出最小生成元,無(wú)解輸出 0。
       – 樣例輸入1:216
       – 樣例輸出1:198
       – 樣例輸入2:121
       – 樣例輸出2:0
       – 樣例輸入3:2005
       – 樣例輸出3:1979





本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
算法.1
c語(yǔ)言設(shè)計(jì)初學(xué)者的十八顆“地雷”
[知識(shí)點(diǎn)] 1.2 C 入門(mén)基礎(chǔ)知識(shí)1——初識(shí)
江蘇省計(jì)算機(jī)等級(jí)考試C語(yǔ)言第一至三章考點(diǎn)
《C語(yǔ)言程序設(shè)計(jì)(第2版)》第02章用C語(yǔ)言編寫(xiě)程序
c程序設(shè)計(jì)(第四版)復(fù)習(xí)資料
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服