日产精品视频无码免费_亚洲蜜臀AV日韩熟妇在线_国产亚洲精品女人久久久久久 _妞中文字幕在线视频导航

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 編程學(xué)習(xí) >> C語言 >> 正文

【C語言】超詳解,讓你C語言成功入門(一)_怎么去看懂c代碼

作者:佚名    文章來源:網(wǎng)絡(luò)整理    點(diǎn)擊數(shù):    更新時(shí)間:2024/3/26

目錄

一、簡(jiǎn)單了解C語言和程序設(shè)計(jì)

了解什么是計(jì)算機(jī)程序和計(jì)算機(jī)語言

計(jì)算機(jī)程序

程序就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令,每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。一個(gè)特定的指令序列用來完成一定的功能。為了使計(jì)算機(jī)能實(shí)現(xiàn)各種功能,往往需要成百上千萬個(gè)程序。

總之,計(jì)算機(jī)的一切操作都是由程序控制的,離開程序,計(jì)算機(jī)將毫無用處。所以,計(jì)算機(jī)的本質(zhì)就是程序的機(jī)器,程序和指令是計(jì)算機(jī)系統(tǒng)中最基本的概念。

計(jì)算機(jī)語言

計(jì)算機(jī)語言即計(jì)算機(jī)能識(shí)別的語言,粗俗點(diǎn)說,就是計(jì)算機(jī)能看懂的。

計(jì)算機(jī)語言經(jīng)歷了以下幾個(gè)發(fā)展階段:

機(jī)器語言 計(jì)算機(jī)工作基于二進(jìn)制,從根本上說,計(jì)算機(jī)只能識(shí)別和接受由0和1組成的指令。計(jì)算機(jī)發(fā)展初期,一般計(jì)算機(jī)的指令長(zhǎng)度為16,即16個(gè)二進(jìn)制數(shù)(0或1)組成的一條指令,如:0010111110101101

這種能直接識(shí)別和接受的二進(jìn)制代碼稱為機(jī)器指令 ,而機(jī)器指令的集合就是機(jī)器語言。

缺點(diǎn):難學(xué),難用,難以推廣使用

符號(hào)語言 為克服上述缺點(diǎn)而創(chuàng)造出來的,它是用一些英文字母和數(shù)字來表示一個(gè)指令。如:
ADD A,B(執(zhí)行A+B=>A,將寄存器A中的數(shù)與寄存器B中的數(shù)相加,放到寄存器A中)

很明顯,這并不能讓計(jì)算機(jī)識(shí)別并執(zhí)行,所以還需要一種匯編程序的軟件將符號(hào)語言的指令轉(zhuǎn)換為機(jī)器指令。這種轉(zhuǎn)換的過程又叫做 “匯編” 或 “代真” ,故,符號(hào)語言又稱符號(hào)匯編語言或匯編語言。

以上兩種語言均為計(jì)算機(jī)低級(jí)語言。

高級(jí)語言 為克服低級(jí)語言的缺點(diǎn)而創(chuàng)造出來,更加利于人們理解。如要計(jì)算和輸出3×6÷5,只需寫:a=(3*6)/5;printf(“%d”,a);

計(jì)算機(jī)語言就簡(jiǎn)單介紹到這里,如需深度了解可上百度等各大瀏覽器查詢。

C語言的特點(diǎn)

(1)語言簡(jiǎn)潔,使用方便。

(2)運(yùn)算符豐富。

(3)數(shù)據(jù)類型豐富。

(4)具有結(jié)構(gòu)化的控制語句(while語句,do…while語句,if…else語句,switch語句,for語句)。

(5)語法限制不太嚴(yán)格。

(6)C語言允許直接訪問物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。

(7)用C語言編寫的程序可移植性好。

(8)生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。

二、初識(shí)C語言程序

簡(jiǎn)單示例

【例1.1】輸出下面一行代碼。
Hello World!

#include<stdio.h>    
                     //這是編譯預(yù)處理的一個(gè)指令
int main()           //定義一個(gè)主函數(shù)
{
                    //函數(shù)開始的標(biāo)志
    printf("Hello World!\n");  //printf是輸出指令,即此時(shí)輸出Hello World!
    return 0;        //函數(shù)結(jié)束時(shí)返回函數(shù)值0,寫return 1;也行,只是返回值為1
}                    //函數(shù)結(jié)束的標(biāo)志

運(yùn)行結(jié)果:
Hello World!

在使用函數(shù)庫(kù)中輸入輸出函數(shù)時(shí),編譯系統(tǒng)要求程序提供有關(guān)此函數(shù)的信息(例如對(duì)輸入輸出函數(shù)的聲明和宏的定義,全局量的定義等),而我們的程序中的 “ #include<stdio.h> ” 的作用就是用來提供這些信息的。stdio.h 就是一個(gè)系統(tǒng)所提供的文件名

int表示該函數(shù)類型是一個(gè)整型的數(shù)據(jù)類型;

main是該函數(shù)的名字;

" return 0 ; "的作用是:當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值,返回到調(diào)用函數(shù)處。

\n ” 是換行符。

注釋

// ” 代表注釋,在編譯時(shí)注釋的部分是不會(huì)產(chǎn)生目標(biāo)代碼,注釋對(duì)運(yùn)行不起作用,只是給人看的,而不是計(jì)算機(jī)執(zhí)行的。

C語言允許注釋的方法有兩種:

// 開始的單行注釋,以 // 開始,換行(Enter)時(shí)結(jié)束。只會(huì)注釋掉 // 之后的所有的解釋性語句(這里系統(tǒng)自動(dòng)換行不算哦,因?yàn)槟氵@段話在這一行放不下了),但是若為追求美觀,可以換一行繼續(xù)使用 // 進(jìn)行注釋

/ * (這里注釋) * /,“ / * * / ”是多行注釋,就是即使 使用了換行符(Enter)也會(huì)被注釋掉,以 /* 開始,以 */ 結(jié)束。可單行使用,也可多行使用。
注釋內(nèi)又注釋,這會(huì)導(dǎo)致注釋可能會(huì)出錯(cuò)。

#include<stdio.h>    //這是編譯預(yù)處理的一個(gè)指令 
/*
int main()          
{                    
    printf("Hello World!\n"); 
    return 0;        
}                   
*/

看看顏色是不是變了?這就說明這一段語句全部被注釋掉了。

★特別注意 ! ! !

以上所有代碼(包括英文、字符和標(biāo)點(diǎn)符號(hào))全部要用英文來寫 ! ! !

好,如果你看懂了上面的代碼,那我們繼續(xù)下一道。

【例1. 2】求兩個(gè)整數(shù)之和

解題思路:首先設(shè)置三個(gè)變量a, b, sum(變量可隨便用任何字母或單詞來表示),sum在這里我們代表兩整數(shù)之和。用賦值運(yùn)算符 “ = ” 將a,b相加后的和賦給sum。

#include<stdio.h>        //這是編譯預(yù)處理的一個(gè)指令 
int main()               //定義一個(gè)主函數(shù)
{
                        //函數(shù)開始的標(biāo)志
    int a,b,sum;         //變量聲明,定義 a,b,sum為整型變量
    a = 12;              //對(duì)變量a進(jìn)行賦值
    b = 5;               //對(duì)變量b進(jìn)行賦值
    sum = a + b;         //進(jìn)行 a+b 運(yùn)算,并把結(jié)果存放在sum中
    printf("%d",sum);    //printf是輸出指令,sum的值輸出
    return 0;            //函數(shù)結(jié)束時(shí)返回函數(shù)值0,寫return 1; 也行,只是返回值為1
}                        //函數(shù)結(jié)束的標(biāo)志

運(yùn)行結(jié)果:
17

本人個(gè)人認(rèn)為此處在注釋中已經(jīng)講得很明白了,int這個(gè)整型的數(shù)據(jù)類型,在后面還會(huì)細(xì)講。

【變式1】輸入a, b兩個(gè)整數(shù),求兩整數(shù)之和。

#include<stdio.h>
int main()
{

    int a,b,sum;
    scanf("%d %d",&a,&b);    //scanf是輸入指令,輸入 a 和 b 的值
    sum = a + b;
    printf("sum = %d",sum);//輸出sum的值
    return 0;
}

這個(gè)printf函數(shù)圓括號(hào)內(nèi)有兩個(gè)參數(shù)。

第一個(gè)參數(shù)是引號(hào)內(nèi)的sum = %d\n,它是輸出格式字符串,作用是輸出用戶希望輸出的字符和輸出的格式。其中sum = 是用戶希望輸出的字符,%d是指定的輸出格式,d表示用 “ 十進(jìn)制整數(shù) ” 形式輸出。

第二個(gè)參數(shù)sum表示要輸出變量sum的值。

在執(zhí)行printf函數(shù)時(shí),將sum變量的值(以十進(jìn)制整數(shù)表示)取代引號(hào)中的 %d 。如下圖:
 
(圖源《C程序設(shè)計(jì)(第五版)》譚浩強(qiáng) 著)

這里就仔細(xì)講解一下printf函數(shù)和scanf函數(shù)。

printf()函數(shù)

printf()函數(shù)是式樣化輸出函數(shù),一般用于向準(zhǔn)則輸出設(shè)備按規(guī)定式樣輸出消息。printf()函數(shù)的調(diào)用格式為:printf(“<式樣化字符串>”,<參數(shù)表>);

注意,要用英文字符輸入語句。

其中式樣化字符串包括兩部分內(nèi)容:
一部分是正常字符,這些字符將按原樣輸出;另一部分是式樣化規(guī)定字符,以 “ % ” 開端,后跟一個(gè)或幾個(gè)規(guī)定字符,用來確定輸出內(nèi)容式樣。參量表是需求輸出的一系列參數(shù),其個(gè)數(shù)務(wù)必于式樣化字符串所闡明的輸出參數(shù)個(gè)數(shù)一樣多,各參數(shù)之間用英文逗號(hào)“ , ” 分開,且順序逐一對(duì)應(yīng),不然會(huì)出現(xiàn)意想不到的錯(cuò)誤。

函數(shù)原型:
int printf(const char * format, …);

函數(shù)值返回值為整型。若成功則返回輸出的字符數(shù),輸出出錯(cuò)則返回負(fù)值。

scanf()函數(shù)

scanf() 是輸入函數(shù),就是我們從鍵盤中輸入我們想要測(cè)試的數(shù)據(jù)。與 printf() 函數(shù)一樣都被聲明在頭文件 stdio.h 里,因此在使用 scanf() 函數(shù)時(shí)要加上 #include <stdio.h> 。(在有一些實(shí)現(xiàn)中,printf() 和 scanf() 函數(shù)在使用時(shí)可以不使用預(yù)編譯命令 #include 。)

函數(shù)原型:
int scanf (const char * restrict format , …);
(稍作了解即可)

返回值
scanf() 函數(shù)返回成功讀入的數(shù)據(jù)項(xiàng)數(shù),讀入數(shù)據(jù)時(shí)遇到了 “ 文件結(jié)束 ” 則返回EOF。

如:
scanf (“%d %d”,&a,&b);

函數(shù)返回值為 int 型。如果 a 和 b 都被成功讀入,那么 scanf 的返回值就是2;如果只有a 被讀入,返回值為1(b 同樣);如果a 讀取失敗,返回值為0(b 同樣);如果遇到錯(cuò)誤或遇到enf of file, 返回值為EOF。

&a,&b中的 & 是尋址操作符,&a表示對(duì)象a 在內(nèi)存中的地址,是一個(gè) 右值。變量a , b的地址是在編譯階段分配的(存儲(chǔ)順序由編譯器決定)。

注意!!!

如果 scanf 中 %d 是連著寫的,如 “%d%d%d”,在輸入數(shù)據(jù)時(shí),數(shù)據(jù)之間不可以用逗號(hào)分隔,只能用空白字符(空格或Tab 鍵或者回車鍵)分隔——“2(空格)3(Tab)4”或“2(Tab)3(回車)4”等。若是“%d,%d,%d”,則在輸入數(shù)據(jù)時(shí)必須加 “ , ” ,如:“2,3,4”。

【變式2】找兩個(gè)整數(shù)中的較大者。

第一種方式:

#include<stdio.h>
int main()
{

    int a,b,max;
    scanf("%d,%d",&a,&b); //輸入數(shù)據(jù) a, b
    if(a >= b)            //如果 a >= b,則將 a賦值給 max
        max = a;
    else                  //否則,將 b賦值給 max
        max = b;
    printf("%d",max);     //輸出 max
    return 0;
}

第二種方式:(使用函數(shù))

#include<stdio.h>
int main()
{

    int max(int x,int y);    //定義函數(shù)
    int a,b,c;
    scanf("%d,%d",&a,&b);
    c=max(a,b);              //調(diào)用 max函數(shù),將值賦給 c
    printf("max = %d\n",c);
    return 0;
}
//求兩個(gè)整數(shù)中的較大者的 max函數(shù)
int max(int x,int y)//定義 max函數(shù)函數(shù)值為整型,x、y均為形式參數(shù)
{

    int z;
    if(x>y)
        z=x;
    else
        z=y;
    return z;    //將 z的值作為 max函數(shù)值,返回到調(diào)用函數(shù)的位置
}

運(yùn)行結(jié)果:
8 ,5
max = 8

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

除了使用 printf()、scanf()輸出和輸入字符外,C語言標(biāo)準(zhǔn)函數(shù)庫(kù)還有一些專門用于字符輸入輸出的函數(shù)。

字符輸出函數(shù)putchar()

putchar()函數(shù)的一般形式為:
putchar( c );
函數(shù)的功能是輸出一個(gè)字符,并返回輸出字符的ASCII碼值。
“ putchar( c ); ”中c可以是字符常量、字符型變量或整型變量,即將一個(gè)整型數(shù)據(jù)作為ASCII碼,輸出相應(yīng)的字符。

【例1. 2】putchar() 函數(shù)的使用

#include<stdio.h>
int main()
{

    int i = 97;
    char ch = 'a';    //聲明并初始化
    putchar(i);       //輸出字符 a
    putchar('\n');    //換行,可以輸出控制字符,起控制作用
    putchar(ch);      //輸出字符變量 ch的值 'a'
    return 0;
}

運(yùn)行結(jié)果:
a
a

字符輸入函數(shù)getchar()

getchar()函數(shù)的一般形式為:
getchar();
函數(shù)的功能是從鍵盤輸入一個(gè)字符,返回值是該字符的ASCII碼值。

【例1. 3】getchar()函數(shù)的使用

#include<stdio.h>
int main()
{

    int ch;
    ch = getchar();  //從鍵盤輸入字符,該字符的ASCII碼值賦給 ch
    putchar(ch);    //輸出 ch對(duì)應(yīng)的字符
    return 0;
}

運(yùn)行結(jié)果:
a
a

注意:
執(zhí)行g(shù)etchar()函數(shù)輸入字符時(shí),輸入字符后需要敲一個(gè)回車鍵(Enter),回車后才繼續(xù)執(zhí)行程序。getchar()函數(shù)也將空白符作為一個(gè)有效字符讀入。因此,在getchar()函數(shù)連續(xù)輸入多個(gè)字符時(shí)要連續(xù)輸入,中間不要加空白符。

變量與常量

常量

在程序運(yùn)行過程中,其值不能被改變的量稱為常量。
常用的常量有以下幾類:

1.整型常量

即沒有小數(shù)部分的數(shù)。例如:2,-345,43
除了十進(jìn)制,還可用八進(jìn)制和 十六進(jìn)制來表示整數(shù)。

2.浮點(diǎn)型常量

浮點(diǎn)型常量有兩種表現(xiàn)形式:
(1)十進(jìn)制小數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成。
注意:在一個(gè)值后面加上一個(gè)小數(shù)點(diǎn),該值就是一個(gè)浮點(diǎn)數(shù)。例如:3是整數(shù),3.00 、3. 都是浮點(diǎn)數(shù)。

(2)指數(shù)形式
例如:3.14e3(表示3.14×10³),–193e–3(表示–193×10﹣²³),0.123E2(表示0.123×10²)。
需要注意的是,e或E之前必須有數(shù)字,且e或E后面必須為整數(shù),如不能夠?qū)?e4,12e0.2

3.字符常量

兩種形式:
(1)普通字符,用單引號(hào)括起來的單個(gè)字符。
例:‘A’,‘b’,‘9’,‘?’
(2)轉(zhuǎn)義字符
C語言還允許用一種特殊形式的字符常量,就是用單引號(hào)括起來,以字符 \ 開頭的字符序列。

轉(zhuǎn)義字符
轉(zhuǎn)義字符 含義
\n 換行
\f 清屏并換頁
\r 回車
\t Tab符,水平制表符
\v 垂直制表符
\b 退格
\\ 反斜杠(\)
\’ 單引號(hào)
\" 雙引號(hào)
\a 報(bào)警
\0 空值
\? 在書寫連續(xù)多個(gè)問號(hào)時(shí)使用,防止他們被解析成三字母詞
\0ooo 八進(jìn)制值(ooo必須是有效地八進(jìn)制數(shù),即每個(gè)o表示0~7中的一個(gè)數(shù))
\xhh 十六進(jìn)制值(hh必須是有效的十六進(jìn)制數(shù),即每個(gè)h表示0~f 中的一個(gè)數(shù))

科普三字母詞:
??) ——> ]
??( ——> [

4.字符串常量

由一對(duì)雙引號(hào)括起來的字符序列。如:“China”,“中國(guó)”,“a”
雙引號(hào)不是字符串的一部分。
字符串的結(jié)束標(biāo)志是 \0,不算做字符串內(nèi)容。

存儲(chǔ):
例:char a[10]=“abcdef”;
char類型的數(shù)組a[10],存放字符串a(chǎn)bcdef。

#include<stdio.h>
int main()
{
  
    char s[] = "abdef";//字符串包含了\0,打印輸出時(shí)遇到\0就結(jié)束程序
    char a[] = {
  'a','b','c','d','e','f','\0'};//這里一定要加\0,否則打印輸出時(shí)會(huì)出錯(cuò)
    printf("%s\n",s);
    printf("%s\n",a);
    printf("abc\0def\n");
}

運(yùn)行結(jié)果:
abcdef
abcdef
abc

5.define定義的標(biāo)識(shí)符常量

可以用#define預(yù)處理指令來定義一個(gè)符號(hào)常量。例如:
#define PI 3.14
編譯程序時(shí),程序中所有的PI都會(huì)被替換成3.14。通常,這樣定義的常量也稱為符號(hào)常量。

格式:#define 符號(hào)常量名 符號(hào)常量的值
三者之間用空格隔開。為了和變量名區(qū)分開來,習(xí)慣上符號(hào)常量用大寫字符表示。

#include<stdio.h>
#define MAX 100//定義MAX,其值是100
#define STR "abcdef"  //STR,abcdef是字符串
int main()
{
  
    printf("%d\n",MAX);
    int a=MAX;
    printf("%d\n",a);
    printf("%s\n",STR);//%s 是字符串輸出符
    return 0;
}

運(yùn)行結(jié)果:
100
100
abcdef

6.枚舉常量

一般形式:
enum 枚舉類型名{ 常量1,常量2,常量3,…};

可以一 一列舉出來的

#include<stdio.h>
enum Color//類型
{
  
//這三個(gè)是枚舉常量,可能取值的
    RED,
    GREEN,
    BLUE
};
int main()
{
  
    int num = 10;
    enum Color a = RED;
    enum Color b = GREEN;
    enum Color c = BLUE;
    printf("%d\n",a);
    printf("%d\n",b);
    printf("%d\n",c); 
    return 0;
}

運(yùn)行結(jié)果:
0
1
2

枚舉類型在使用中有以下規(guī)定:1

1、枚舉值是常量,不是變量。不能在程序中用賦值語句再對(duì)它賦值。例如對(duì)枚舉weekday的元素再作以下賦值: sun=5;mon=2;sun=mon; 都是錯(cuò)誤的。

2、枚舉元素本身由系統(tǒng)定義了一個(gè)表示序號(hào)的數(shù)值,從0 開始順序定義為0,1,2,… 。如在weekday中,sun值為0,mon值為1, …,sat值為6。

變量

在程序運(yùn)行過程中,其值能被改變的量稱為變量。

const修飾的常變量

const修飾的變量,常屬性不能被改變。使用const在一定程度上可以提高程序的安全性和可靠性。

const修飾的數(shù)據(jù)類型是指常類型,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓淖兊摹?/P>

#include<stdio.h>
int main()
{
  
    const int a = 10;//在C語言中,const修飾的a,本質(zhì)是變量,但是不能被修改,有著常量的屬性
    printf("%d",a);
    return 0;
}

運(yùn)行結(jié)果:
10

const int Max = 100;
Max++;  //程序錯(cuò)誤

如果想修改Max的值,可定義一個(gè)指向Max的指針,通過指針來改變Max的值,注意GCC8.2和Clong8.0均會(huì)產(chǎn)生警告。

const int Max = 100;
int *p = &Max;
*p = 101;
//GCC8.2 會(huì)產(chǎn)生警告,并輸出Max = 101
//Clong8.0 會(huì)產(chǎn)生警告,且Max值未改變
規(guī)定符
轉(zhuǎn)換說明 輸出結(jié)果
%d、%i 十進(jìn)制有符號(hào)整數(shù)
%u 十進(jìn)制無符號(hào)整數(shù)
%f 浮點(diǎn)數(shù)
%lf double浮點(diǎn)數(shù)
%s 字符串
%c 單個(gè)字符
%p 指針的值(輸出地址符)
%e、%E 指數(shù)形式的浮點(diǎn)數(shù)
%x,%X 無符號(hào)以十六進(jìn)制表示的整數(shù)
%o 無符號(hào)以八進(jìn)制表示的整數(shù)
%g、%G 把輸出的值按照%e或者%f類型中輸出長(zhǎng)度較小的方式輸出
%lu 32位無符號(hào)整數(shù)
%llu 64位無符號(hào)整數(shù)
%zu 打印sizeof 的返回值
%% 輸出一個(gè)百分號(hào)

說明

(1) 可以在“%”和字母之間插進(jìn)數(shù)字表示最大場(chǎng)寬。

例如:%3d 表示輸出3位整型數(shù),不夠3位右對(duì)齊。
%9.2f 表示輸出場(chǎng)寬為9的浮點(diǎn)數(shù),其中小數(shù)位為2,整數(shù)位為6,小數(shù)點(diǎn)占一位,不夠9位右對(duì)齊。
%8s 表示輸出8個(gè)字符的字符串,不夠8個(gè)字符右對(duì)齊。

如果字符串的長(zhǎng)度、或整型數(shù)位數(shù)超過說明的場(chǎng)寬,將按其實(shí)際長(zhǎng)度輸出。但對(duì)浮點(diǎn)數(shù),若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度,將按實(shí)際整數(shù)位輸出;若小數(shù)部分位數(shù)超過了說明的小數(shù)位寬度,則按說明的寬度以四舍五入輸出。

另外,若想在輸出值前加一些0,就應(yīng)在場(chǎng)寬項(xiàng)前加個(gè)0。

例如:%04d 表示在輸出一個(gè)小于4位的數(shù)值時(shí),將在前面補(bǔ)0使其總寬度為4位。

如果用非浮點(diǎn)數(shù)表示字符或整型量的輸出格式,小數(shù)點(diǎn)后的數(shù)字代表最大寬度,小數(shù)點(diǎn)前的數(shù)字代表最小寬度。

例如:%6.9s 表示顯示一個(gè)長(zhǎng)度不小于6且不大于9的字符串。若大于9,則第9個(gè)字符以后的內(nèi)容將被刪除。

(2) 可以在“%”和字母之間加小寫字母 l,表示輸出的是長(zhǎng)型數(shù)。

例如:%ld 表示輸出 long 整數(shù)
%lf 表示輸出 double 浮點(diǎn)數(shù)

(3) 可以控制輸出左對(duì)齊或右對(duì)齊,即在"%" 和字母之間加入一個(gè)" - "號(hào)可說明輸出為左對(duì)齊, 否則為右對(duì)齊。

例如:%-7d 表示輸出7位整數(shù)左對(duì)齊
%10s 表示輸出10個(gè)字符右對(duì)齊

運(yùn)算符
1.算術(shù)運(yùn)算符
運(yùn)算符 含義 范例 結(jié)果
+ 加法 x+y x和y的和
減法 x–y x和y的差
* 乘法 x * y x和y的積
/ 除法 x / y x和y的商
% 求余 x%y x除以y的余數(shù)
+ 正號(hào) +x x的值
負(fù)號(hào) –x x的相反數(shù)

注意:
(1)運(yùn)算符%要求左右兩個(gè)運(yùn)算數(shù)據(jù)必須為整型數(shù)據(jù),如5%2的值為3。
(2)相除時(shí),結(jié)果為整數(shù),小數(shù)部分舍去。但若除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,則舍入的方向是不固定的。如5/3=1,但–5/3在有的計(jì)算機(jī)得到的結(jié)果是–1,而有的計(jì)算機(jī)上的結(jié)果是–2。C99規(guī)定采取 “向零取整” 的方法,即取整后向零取整。
(3)字符型數(shù)據(jù)可以和數(shù)值型數(shù)據(jù)進(jìn)行運(yùn)算,因?yàn)樽址蛿?shù)據(jù)在計(jì)算機(jī)中是用一個(gè)字節(jié)的整型數(shù)(ASCII碼)表示的。如 ‘A’+1在進(jìn)行運(yùn)算時(shí)會(huì)把A的ASCII碼65與1相加,最后得出結(jié)果就是66。

【例1. 4】算術(shù)運(yùn)算符的使用

#include<stdio.h>
int main()
{
  
    printf("%d %% %d = %d\n",-7,4,-7%4);//求余
    return 0;
}

運(yùn)行結(jié)果:
-7 % 4 = -3

這里有兩個(gè)%,是為了在顯示器上顯示出來%。

2.賦值運(yùn)算符

(1)簡(jiǎn)單賦值運(yùn)算
“ = ”的作用是將賦值符號(hào)右邊的對(duì)象的值賦值給左邊的對(duì)象。例:x = 9;
把值9賦給x,實(shí)際意義是將10存儲(chǔ)到x的存儲(chǔ)單元中。
此處“ = ”是賦值符,而非等于號(hào)。等于號(hào)是“ == ”,例如:if(x==10),意思是如果x等于10。

注:①10 = x是無效語句。賦值運(yùn)算符的左側(cè)必須是一個(gè)運(yùn)算對(duì)象,此對(duì)象的值可以改變。10是整數(shù)常量,不能改變其值,不能給常量賦值。
②若參與賦值運(yùn)算的運(yùn)算對(duì)象的數(shù)據(jù)類型不同,則右邊對(duì)象的數(shù)據(jù)類型會(huì)被轉(zhuǎn)換成左側(cè)對(duì)象的類型。

(2)復(fù)合賦值運(yùn)算
在賦值運(yùn)算符前加上其他運(yùn)算符,例如在“ = ” 前加上“ + ”,運(yùn)算符就變成了復(fù)合運(yùn)算符“ += ”。
例:x += 10;
相當(dāng)于 x = x+10;
其他算術(shù)運(yùn)算符也可以與賦值運(yùn)算符組合成復(fù)合賦值運(yùn)算符。

【例1. 5】a = 5,求a += a – = a * a。

#include<stdio.h>
int main()
{
  
    int a = 5;
    a += a -=a * a;
    printf("a = %d\n",a);
    return 0;
}

運(yùn)算結(jié)果:
a = – 40

3.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符 含義 范例
< 小于 x<y
> 大于 x>y
<= 小于等于 x<=y
>= 大于等于 x>=y
== 等于 x==y
!= 不等于 x!=y

關(guān)系運(yùn)算符的結(jié)合性是“ 從左到右 ”。a < b > c <= d 與( (a < b) > c) <= d 相同。

注意:浮點(diǎn)數(shù)之間進(jìn)行比較時(shí),盡量只使用 “ < ” 和 “ > ”。因?yàn)楦↑c(diǎn)數(shù)使用近似值表示的,這會(huì)導(dǎo)致邏輯上相等的兩數(shù)卻不相等。

4.邏輯運(yùn)算符
邏輯運(yùn)算符 含義 范例
&& 邏輯與 x && y
∣∣ 邏輯或 x ∣∣ y
! 邏輯非 !x

在邏輯運(yùn)算中,如果運(yùn)算對(duì)象的值為非0,則認(rèn)為是邏輯真,否則認(rèn)為是邏輯假。真用 1 表示,假用 0 表示。

邏輯非
例:int a=5;
!a的結(jié)果為0,因?yàn)閍不等于0。

a b !a !b a&&b a∣∣b

運(yùn)算符 ! 的結(jié)合性是“ 從右到左 ”,而&&和 || 的結(jié)合性是“ 從左到右 ”。

在多個(gè)&&(或 ||)相連時(shí),因結(jié)合性是從左到右,故當(dāng)左邊的運(yùn)算對(duì)象為假(或真),停止運(yùn)算。

5.其他運(yùn)算符
自增、自減運(yùn)算符

自增運(yùn)算符++
當(dāng) i 變量每次都要加1時(shí),可寫為 i++,或++i
相當(dāng)于 i = i +1;

自減運(yùn)算符 – –
當(dāng) i 變量每次都要減1時(shí),可寫為 i – – 或 – – i
相當(dāng)于 i = i – 1;

自增、自減運(yùn)算符的結(jié)合性是“ 從右到左 ”。x * y++ 相當(dāng)于x * (y++),而并非是(x * y)++。

sizeof運(yùn)算符

一般形式:sizeof(運(yùn)算對(duì)象)
圓括號(hào)可有可無,但是當(dāng)運(yùn)算對(duì)象是數(shù)據(jù)類型是,必須加上圓括號(hào)。
例如:sizeof(int), sizeof x, sizeof(x), sizeof 34, sizeof(34)
sizeof的結(jié)合性是“ 從右到左 ”。

如果運(yùn)算對(duì)象是表達(dá)式,那表達(dá)式將不會(huì)被執(zhí)行,只會(huì)輸出此表達(dá)式的數(shù)據(jù)類型所占的字節(jié)數(shù)。

#include<stdio.h>
int main()
{
  
    int a = 12,b = 1;
    printf("%zd\n",sizeof(a = a+b);
    printf("a = %d\n",a);
    return 0;
}

運(yùn)算結(jié)果:
4
a = 12

sizeof運(yùn)算的結(jié)果是一個(gè)無符號(hào)整數(shù)類型。C99新增了轉(zhuǎn)換說明%zd用于輸出 sizeof 運(yùn)算結(jié)果的值。如果編譯器不支持使用%zd,可以使用 %u 或 %lu 代替 %zd。

逗號(hào)運(yùn)算符

逗號(hào)運(yùn)算符(,)用于將兩個(gè)表達(dá)式連接時(shí)。如:
a+b , a+c
一般形式:表達(dá)式1 , 表達(dá)式2
求解過程:先求表達(dá)式1,再求表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。

一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式。所以逗號(hào)表達(dá)式的一般形式又可拓展為:
表達(dá)式1, 表達(dá)式2, 表達(dá)式3, … , 表達(dá)式 n

注意:逗號(hào)也用作分隔符。下面代碼中的逗號(hào)都是分隔符,而非逗號(hào)運(yùn)算符。

int a,b;
printf("%d %d",a,b);
ASCII碼表

ASCII碼表 
ASCII碼表圖

運(yùn)算符的優(yōu)先級(jí)

C語言運(yùn)算符優(yōu)先級(jí)圖 
運(yùn)算符優(yōu)先級(jí)圖

★★數(shù)據(jù)類型

C語言的數(shù)據(jù)類型十分豐富,如下:(此處若概括不全,還望指出)
C語言數(shù)據(jù)類型 

基本類型
整數(shù)類型
基本整型(int)

(1)聲明 int 型變量
形式:int 變量名;
如:int num;
(2)初始化變量
初始化就是為變量賦值。可以在聲明的同時(shí)賦值,如:int num = 4;

聲明是給變量創(chuàng)建存儲(chǔ)空間,初始化就是給變量定一個(gè)初始值。

其他整數(shù)類型

短整型(short int)
類型名為short int(或簡(jiǎn)寫成 short)。short型是有符號(hào)類型,占用的存儲(chǔ)單元可能比 int 小,常用于較小數(shù)值的場(chǎng)合以節(jié)省空間。

長(zhǎng)整型(long int)
類型名為long int(或簡(jiǎn)寫成 long)。long型是有符號(hào)類型,占用的存儲(chǔ)單元可能比int 型大,常用于較大數(shù)值的場(chǎng)合。

雙長(zhǎng)整數(shù)(long long int)
類型名為long long int 或long long(C99標(biāo)準(zhǔn)加入)。long long 型占用的存儲(chǔ)單元可能比 long型大,適用于更大數(shù)值的場(chǎng)合。該類型至少占64位,即8個(gè)字節(jié),是有符號(hào)類型。

聲明其他整數(shù)類型與 int型相同,如:
short s_count;
long int count;
long long ago;

(4)無符號(hào)的整數(shù)類型

所有有符號(hào)類型前加上關(guān)鍵字 unsigned,就變成無符號(hào)的整數(shù)類型。此類型只用于非負(fù)值得場(chǎng)合,取值范圍也與有符號(hào)類型不同。

任何有符號(hào)類型前加上signed 并無實(shí)際意義,只起到強(qiáng)調(diào)作用。

整數(shù)溢出

在給某一類型變量賦值時(shí),超過取值范圍就會(huì)“溢出”,輸出的結(jié)果就是錯(cuò)誤的。

字符類型

char 型用來存儲(chǔ)字符,但計(jì)算機(jī)使用數(shù)字編碼來處理字符,即用特定的整數(shù)來表示特定的字符。目前最通用的編碼是ASCII碼。

標(biāo)準(zhǔn)ASCII碼的編碼范圍是0~127,只需要7位二進(jìn)制數(shù)表示即可。char 型通常被定義為8位的存儲(chǔ)單元,因此足以滿足存儲(chǔ)ASCII表中的字符。

(1)聲明char 型變量
char ch;
char color,choose;
以上聲明創(chuàng)建了三個(gè)變量,并分別分配了一個(gè)字節(jié)的的存儲(chǔ)單元。

(2)char 型變量初始化
若要字符變量初始化為字母A,如:
char grade = ‘A’;
字母A的ASCII碼是65,系統(tǒng)把整數(shù)65賦值給grade。

對(duì)于特殊字符可以用轉(zhuǎn)義字符的形式來給變量賦值。
char ch; //聲明一個(gè)char 型的變量
ch = ‘\n’; //初始化為換行符,把ASCII碼10賦給ch
ch = ‘\12’; //換行符的八進(jìn)制表示
ch = ‘\xa’; //換行符的十六進(jìn)制表示

存儲(chǔ)字符實(shí)際上存儲(chǔ)的是整數(shù),故也可用整數(shù)來賦值。
char grade = 65; //65是A的ASCII碼值
char ch = 10; //10是換行符的ASCII碼值

注意數(shù)字不要超過127,否則會(huì)出錯(cuò)。

浮點(diǎn)型類型

C語言中的浮點(diǎn)數(shù)類型有 float型(單精度浮點(diǎn)型)、double型(雙精度浮點(diǎn)型)和 long double型(長(zhǎng)雙精度浮點(diǎn)型)。

float型必須至少能表示6位有效數(shù)字,且取值范圍至少是10-37~10+37。通常,系統(tǒng)存儲(chǔ)一個(gè) float型要占用32位,其中8位用來存儲(chǔ)指數(shù)的值和符號(hào),剩下的24位用于存儲(chǔ)非指數(shù)部分及其符號(hào)。

double型和 float型的最小取值范圍相同,但至少能表示10位有效數(shù)字。通常,double型占用64位,因此比 float型精度更高,取值范圍更大。

如精度要求更高,可用 long double型。

初始化:
float pi;
pi=3.14
double area,quart;
float weight = 6.5e - 34;
long double g;

例: 計(jì)算數(shù)據(jù)類型的大小

#include<stdio.h>
int main()
{
  
    printf("int:%zd\n",sizeof(int));
    printf("short:%zd\n",sizeof(short));
    printf("long:%zd\n",sizeof(long));
    printf("long long:%zd\n",sizeof(long long));
    printf("char:%zd\n",sizeof(char));
    printf("float:%zd\n",sizeof(float));
    printf("double:%zd\n",sizeof(double));
    printf("long double:%zd\n",sizeof(long double));
    return 0;
}

運(yùn)行結(jié)果:
int:4
short:2
long:4
long long:8
char:1
float:4
double:8
long double:16

強(qiáng)制類型轉(zhuǎn)換

一般形式:
(類型名)表達(dá)式
例:a=(int)1.4+(int)1.5;
注意:強(qiáng)制類型轉(zhuǎn)換符右側(cè)如果是變量,會(huì)把變量的值轉(zhuǎn)換成圓括號(hào)中指定的數(shù)據(jù)類型,變量本身的類型不會(huì)改變。

int a = 10;
(float)a + 3.14;

變量a的值(10)被強(qiáng)制轉(zhuǎn)換成float型,再和3.14相加。但a的類型還是int型,其值仍為10。

剩下的其他數(shù)據(jù)類型,我們將在其具體的知識(shí)點(diǎn)中講到。

C語言程序的結(jié)構(gòu)(簡(jiǎn)單了解即可)

(1)一個(gè)程序由一個(gè)或多個(gè)源程序文件組成。
一個(gè)源文件可以包括3個(gè)部分:
①預(yù)處理指令。如:#include,#define
②全局聲明。放在函數(shù)外聲明的是全局變量,函數(shù)內(nèi)聲明的是局部變量。
③函數(shù)定義。

(2)函數(shù)是 c程序中的主要組成部分。

(3)一個(gè)函數(shù)包括兩部分。
①函數(shù)首部。即函數(shù)的第一行,包括函數(shù)名,函數(shù)類型,函數(shù)屬性,函數(shù)參數(shù)(形式參數(shù))名,參數(shù)類型。
C語言函數(shù)名 
一個(gè)函數(shù)名后面必須跟一對(duì)圓括號(hào),括號(hào)內(nèi)寫函數(shù)的參數(shù)名及其類型。如果函數(shù)沒有參數(shù),可以在括號(hào)中寫 void,也可以是空括號(hào)。
int main(void) 或 int main()

②函數(shù)體。

  • 聲明部分。變量,調(diào)用的函數(shù)進(jìn)行聲明。
  • 執(zhí)行部分。函數(shù)中的若干語句。

(4)程序總是從main函數(shù)開始執(zhí)行的。

(5)程序中要求計(jì)算機(jī)的操作是由函數(shù)中的C語句完成的。

(6)在每個(gè)數(shù)據(jù)聲明和語句的最后必須有一個(gè)分號(hào)。

(7)C語言本身不提供輸入輸出語句。

(8)程序應(yīng)當(dāng)包含注釋。必要的注釋,可以增加程序的可讀性。

三、算法——程序的靈魂

程序=算法+數(shù)據(jù)結(jié)構(gòu)

程序 =(對(duì)數(shù)據(jù)的描述)數(shù)據(jù)結(jié)構(gòu)+(對(duì)操作的描述)算法

數(shù)據(jù)結(jié)構(gòu) =個(gè)體 + 個(gè)體的關(guān)系

算法 = 對(duì)存儲(chǔ)數(shù)據(jù)的操作

算法的概念:算法是解決問題的方法和步驟。

算法的特征

(1)有窮性
一個(gè)算法必須總是在執(zhí)行有窮步后結(jié)束,且每一步都必須在有窮時(shí)間內(nèi)完成。

(2)確定性
每種情況所執(zhí)行的操作,在算法中都有確切的規(guī)定,不會(huì)產(chǎn)生二義性。

(3)可行性
算法中的所有操作都可以通過已經(jīng)實(shí)現(xiàn)的基本操作運(yùn)算執(zhí)行有限次來實(shí)現(xiàn)。

(4)零個(gè)或多個(gè)輸入

(5)一個(gè)或多個(gè)輸出

衡量算法的標(biāo)準(zhǔn)

1.時(shí)間復(fù)雜度
大概程序要執(zhí)行的次數(shù),而非執(zhí)行的時(shí)間

2.空間復(fù)雜度
算法執(zhí)行過程中大概所占用的最大內(nèi)存

3.難易程度

4.健壯性

部分常用的算法

1.迭代法
2.枚舉法
依據(jù)問題的部分條件,確定答案的大致范圍,然后逐一驗(yàn)證所有可能的情況,這種算法也叫窮舉法。
3.遞歸法
函數(shù)的自調(diào)用

n! 的遞歸調(diào)用算法描述

void fun(int n)
{
  
    int f;
    if(n==1) f=1;
    else f=f*fun(n-1);
}

4.遞推法
由已知條件,得出中間推論,直至得到結(jié)果。

F(1)=1,F(2)=1;
F(n)=F(n-1)+F(n-2);

算法咱就不講深了,算法課會(huì)學(xué)的。

總結(jié)

本篇適用于零基礎(chǔ)或初學(xué)C語言的小伙伴們,本人也只是個(gè)小菜鳥,根據(jù)教材和教輔資料總結(jié)出來的C語言入門(一),如有錯(cuò)誤的地方,或需要改進(jìn)的,還望各位指點(diǎn)一二。
建議初學(xué)者,一定要邊看邊練,多多練習(xí),才能更加深刻的理解代碼的含義。

Tags:C語言,入門教程,C代碼  
責(zé)任編輯:admin
請(qǐng)文明參與討論,禁止漫罵攻擊。 昵稱:注冊(cè)  登錄
[ 查看全部 ] 網(wǎng)友評(píng)論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
日本在线www| 国产视频一区在线| 可以在线看黄的网站| 成人影视在线观看| 国产a网| 成人免费高清视频| 亚洲www美色| 国产网站在线| 日本伦理片网站| 国产伦精品一区三区视频| 成人a大片高清在线观看| 香蕉视频一级| 天天做日日爱| 日本免费乱理伦片在线观看2018| 韩国毛片基地| 免费毛片基地| 免费国产在线视频| 亚欧成人乱码一区二区| 韩国毛片免费大片| 成人免费网站视频ww| 国产麻豆精品| 久久精品店| 成人高清视频在线观看| 尤物视频网站在线| 免费国产在线观看| 青青青草视频在线观看| 色综合久久手机在线| 成人在免费观看视频国产| 九九久久99| 毛片电影网| 午夜家庭影院| 日本伦理片网站| 精品视频在线观看免费| 久久国产影视免费精品| 青青青草视频在线观看| 国产一区二区精品| 日韩专区第一页| 99热精品一区| 成人高清视频在线观看| 国产激情视频在线观看| 久久国产精品自线拍免费| 四虎久久影院| 亚洲精品久久玖玖玖玖| 亚洲 欧美 91| 日本特黄一级| 亚欧乱色一区二区三区| 午夜在线影院| 91麻豆精品国产自产在线| 青青久久国产成人免费网站| 欧美另类videosbestsex| 99久久视频| 九九久久国产精品| 韩国毛片基地| 国产一区二区精品久| 九九久久99综合一区二区| 国产亚洲男人的天堂在线观看| 日韩欧美一及在线播放| 天天做人人爱夜夜爽2020毛片| 二级片在线观看| 欧美激情一区二区三区在线| 欧美另类videosbestsex| 久久久成人网| 99色精品| 欧美激情一区二区三区中文字幕| 国产91精品系列在线观看| 国产麻豆精品| 99久久视频| 成人免费观看的视频黄页| 成人免费高清视频| 国产亚洲男人的天堂在线观看| 国产麻豆精品高清在线播放| 999精品在线| 日韩av片免费播放| 国产一区二区福利久久| 日本在线播放一区| 你懂的国产精品| 韩国三级视频网站| 成人免费网站视频ww| 99热精品在线| 久久99这里只有精品国产| 亚洲天堂免费| 韩国三级视频网站| 国产不卡在线播放| 国产成人欧美一区二区三区的| 可以免费看污视频的网站| 99色视频| 亚洲第一视频在线播放| 日韩在线观看视频免费| 中文字幕一区二区三区精彩视频| 国产视频在线免费观看| 精品国产一区二区三区精东影业 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 四虎精品在线观看| 成人免费高清视频| 中文字幕一区二区三区精彩视频| 日韩免费在线视频| 天天做人人爱夜夜爽2020| 国产精品自拍在线观看| 美女免费毛片| 国产国语对白一级毛片| 免费国产在线观看不卡| 日韩在线观看视频网站| 精品国产三级a∨在线观看| 亚洲精品中文一区不卡| 久久福利影视| 欧美激情中文字幕一区二区| 国产高清视频免费| 欧美激情一区二区三区在线 | 欧美18性精品| 麻豆网站在线免费观看| 二级特黄绝大片免费视频大片| 色综合久久久久综合体桃花网| 韩国毛片免费大片| 国产一区二区精品在线观看| 亚洲第一页色| 国产一区二区精品| 亚洲 激情| 精品在线观看国产| 亚洲天堂免费观看| 青青久久精品| 尤物视频网站在线| 日韩免费片| 可以免费看毛片的网站| 日本免费看视频| 亚洲爆爽| 国产91精品一区| 欧美电影免费看大全| 99色视频在线观看| 国产亚洲免费观看| 九九久久国产精品大片| 日韩免费在线观看视频| 国产福利免费视频| 九九免费高清在线观看视频| 欧美一区二区三区性| 日韩中文字幕一区二区不卡| 精品国产香蕉在线播出| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 欧美一级视频免费观看| 91麻豆高清国产在线播放| 日日夜人人澡人人澡人人看免| 中文字幕Aⅴ资源网| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本乱中文字幕系列| 中文字幕Aⅴ资源网| 国产亚洲精品成人a在线| 欧美1区| 四虎影视久久久| 天天色色色| 尤物视频网站在线| 久久精品免视看国产成人2021| 国产综合91天堂亚洲国产| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 四虎影视久久| 四虎久久影院| 日日日夜夜操| 韩国三级视频网站| 日韩一级黄色| 韩国毛片基地| 精品国产一区二区三区精东影业 | 国产成人精品影视| 一级毛片视频在线观看| 九九热国产视频| 免费一级片在线观看| 精品国产香蕉在线播出| 久久国产一久久高清| 国产91素人搭讪系列天堂| 人人干人人草| 99久久精品费精品国产一区二区| 国产91精品一区| 欧美电影免费看大全| 中文字幕97| 国产一区精品| 成人影视在线播放| 国产精品免费精品自在线观看| 国产综合成人观看在线| 精品国产一区二区三区久 | 九九精品在线| 欧美大片a一级毛片视频| 国产原创中文字幕| 国产精品免费精品自在线观看| 久久国产精品自线拍免费| 国产一区二区精品久| 欧美日本二区| 99色视频| 午夜精品国产自在现线拍| 中文字幕Aⅴ资源网| 青草国产在线| 国产一级强片在线观看| 一级片片| 成人免费网站久久久| 91麻豆精品国产综合久久久| 精品国产一区二区三区免费| 成人免费网站久久久| 欧美一级视频高清片| 一级片片| 亚洲精品久久玖玖玖玖| 成人高清免费| 国产一级强片在线观看| 国产视频久久久| 国产成人啪精品|