版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2025年大學(xué)c程序設(shè)計(jì)語(yǔ)言考試試題及答案3套本文借鑒了近年相關(guān)經(jīng)典試題創(chuàng)作而成,力求幫助考生深入理解測(cè)試題型,掌握答題技巧,提升應(yīng)試能力。---試題一一、選擇題(每題2分,共20分)1.下列哪個(gè)不是C語(yǔ)言的關(guān)鍵字?A.intB.floatC.booleanD.char2.以下哪個(gè)語(yǔ)句是正確的?A.inta=5;b=10;B.inta=(b=c=5);C.inta=5,b=10;D.inta=5;b=a+5;3.在C語(yǔ)言中,`printf`函數(shù)中用于輸出字符串的格式化符號(hào)是?A.`%d`B.`%s`C.`%f`D.`%c`4.以下哪個(gè)運(yùn)算符的優(yōu)先級(jí)最高?A.`==`B.`>`C.``D.`+`5.以下哪個(gè)函數(shù)用于動(dòng)態(tài)分配內(nèi)存?A.`malloc`B.`free`C.`calloc`D.`realloc`6.在C語(yǔ)言中,以下哪個(gè)語(yǔ)句用于退出當(dāng)前函數(shù)?A.`return`B.`break`C.`exit`D.`continue`7.以下哪個(gè)語(yǔ)句是正確的?A.inta=5;a=a++;B.inta=5;a=++a;C.inta=5;a=a--;D.inta=5;a=--a;8.以下哪個(gè)數(shù)據(jù)類型用于表示單個(gè)字符?A.intB.floatC.charD.double9.以下哪個(gè)語(yǔ)句是正確的?A.for(inti=0;i<5;i++){printf("%d",i);}B.for(inti=0;i<5;i++){printf("%d",i);}C.for(inti=0;i<5;i++){printf("%d",i);}D.for(inti=0;i<5;i++){printf("%d",i);}10.以下哪個(gè)語(yǔ)句用于聲明一個(gè)指向整數(shù)的指針?A.intptr;B.intptr;C.intptr;D.intptr[];二、填空題(每題2分,共20分)1.在C語(yǔ)言中,用于表示注釋的符號(hào)是______和______。2.C語(yǔ)言中的`if`語(yǔ)句可以嵌套使用,但嵌套的`if`語(yǔ)句必須______在一個(gè)`else`語(yǔ)句后面。3.`switch`語(yǔ)句中的`case`標(biāo)簽后面必須跟一個(gè)______。4.在C語(yǔ)言中,`do-while`循環(huán)至少會(huì)執(zhí)行______次。5.`break`語(yǔ)句通常用于______循環(huán)或`switch`語(yǔ)句中。6.`continue`語(yǔ)句通常用于______循環(huán)中。7.在C語(yǔ)言中,`scanf`函數(shù)用于______數(shù)據(jù)。8.`sizeof`運(yùn)算符用于獲取______的大小。9.指針是一種特殊的數(shù)據(jù)類型,它用于存儲(chǔ)______的地址。10.動(dòng)態(tài)分配內(nèi)存函數(shù)`malloc`的返回類型是______。三、簡(jiǎn)答題(每題5分,共25分)1.簡(jiǎn)述C語(yǔ)言中的`if-else`語(yǔ)句的用法。2.簡(jiǎn)述C語(yǔ)言中的`for`循環(huán)的用法。3.簡(jiǎn)述C語(yǔ)言中的`while`循環(huán)的用法。4.簡(jiǎn)述C語(yǔ)言中的`do-while`循環(huán)的用法。5.簡(jiǎn)述C語(yǔ)言中的`switch`語(yǔ)句的用法。四、編程題(每題15分,共45分)1.編寫一個(gè)C程序,計(jì)算1到100的所有偶數(shù)的和。2.編寫一個(gè)C程序,實(shí)現(xiàn)字符串的復(fù)制功能(不使用庫(kù)函數(shù))。3.編寫一個(gè)C程序,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng),包括添加學(xué)生信息、查詢學(xué)生信息和刪除學(xué)生信息的功能。---試題二一、選擇題(每題2分,共20分)1.以下哪個(gè)不是C語(yǔ)言的數(shù)據(jù)類型?A.intB.floatC.booleanD.char2.以下哪個(gè)語(yǔ)句是正確的?A.inta=5;b=10;B.inta=(b=c=5);C.inta=5,b=10;D.inta=5;b=a+5;3.在C語(yǔ)言中,`printf`函數(shù)中用于輸出整數(shù)的格式化符號(hào)是?A.`%d`B.`%s`C.`%f`D.`%c`4.以下哪個(gè)運(yùn)算符的優(yōu)先級(jí)最高?A.`==`B.`>`C.``D.`+`5.以下哪個(gè)函數(shù)用于動(dòng)態(tài)分配內(nèi)存?A.`malloc`B.`free`C.`calloc`D.`realloc`6.在C語(yǔ)言中,以下哪個(gè)語(yǔ)句用于退出當(dāng)前函數(shù)?A.`return`B.`break`C.`exit`D.`continue`7.以下哪個(gè)語(yǔ)句是正確的?A.inta=5;a=a++;B.inta=5;a=++a;C.inta=5;a=a--;D.inta=5;a=--a;8.以下哪個(gè)數(shù)據(jù)類型用于表示單個(gè)字符?A.intB.floatC.charD.double9.以下哪個(gè)語(yǔ)句是正確的?A.for(inti=0;i<5;i++){printf("%d",i);}B.for(inti=0;i<5;i++){printf("%d",i);}C.for(inti=0;i<5;i++){printf("%d",i);}D.for(inti=0;i<5;i++){printf("%d",i);}10.以下哪個(gè)語(yǔ)句用于聲明一個(gè)指向整數(shù)的指針?A.intptr;B.intptr;C.intptr;D.intptr[];二、填空題(每題2分,共20分)1.在C語(yǔ)言中,用于表示注釋的符號(hào)是______和______。2.C語(yǔ)言中的`if`語(yǔ)句可以嵌套使用,但嵌套的`if`語(yǔ)句必須______在一個(gè)`else`語(yǔ)句后面。3.`switch`語(yǔ)句中的`case`標(biāo)簽后面必須跟一個(gè)______。4.在C語(yǔ)言中,`do-while`循環(huán)至少會(huì)執(zhí)行______次。5.`break`語(yǔ)句通常用于______循環(huán)或`switch`語(yǔ)句中。6.`continue`語(yǔ)句通常用于______循環(huán)中。7.在C語(yǔ)言中,`scanf`函數(shù)用于______數(shù)據(jù)。8.`sizeof`運(yùn)算符用于獲取______的大小。9.指針是一種特殊的數(shù)據(jù)類型,它用于存儲(chǔ)______的地址。10.動(dòng)態(tài)分配內(nèi)存函數(shù)`malloc`的返回類型是______。三、簡(jiǎn)答題(每題5分,共25分)1.簡(jiǎn)述C語(yǔ)言中的`if-else`語(yǔ)句的用法。2.簡(jiǎn)述C語(yǔ)言中的`for`循環(huán)的用法。3.簡(jiǎn)述C語(yǔ)言中的`while`循環(huán)的用法。4.簡(jiǎn)述C語(yǔ)言中的`do-while`循環(huán)的用法。5.簡(jiǎn)述C語(yǔ)言中的`switch`語(yǔ)句的用法。四、編程題(每題15分,共45分)1.編寫一個(gè)C程序,計(jì)算1到100的所有奇數(shù)的和。2.編寫一個(gè)C程序,實(shí)現(xiàn)字符串的反轉(zhuǎn)功能(不使用庫(kù)函數(shù))。3.編寫一個(gè)C程序,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖書管理系統(tǒng),包括添加圖書信息、查詢圖書信息和刪除圖書信息的功能。---試題三一、選擇題(每題2分,共20分)1.以下哪個(gè)不是C語(yǔ)言的關(guān)鍵字?A.intB.floatC.booleanD.char2.以下哪個(gè)語(yǔ)句是正確的?A.inta=5;b=10;B.inta=(b=c=5);C.inta=5,b=10;D.inta=5;b=a+5;3.在C語(yǔ)言中,`printf`函數(shù)中用于輸出字符串的格式化符號(hào)是?A.`%d`B.`%s`C.`%f`D.`%c`4.以下哪個(gè)運(yùn)算符的優(yōu)先級(jí)最高?A.`==`B.`>`C.``D.`+`5.以下哪個(gè)函數(shù)用于動(dòng)態(tài)分配內(nèi)存?A.`malloc`B.`free`C.`calloc`D.`realloc`6.在C語(yǔ)言中,以下哪個(gè)語(yǔ)句用于退出當(dāng)前函數(shù)?A.`return`B.`break`C.`exit`D.`continue`7.以下哪個(gè)語(yǔ)句是正確的?A.inta=5;a=a++;B.inta=5;a=++a;C.inta=5;a=a--;D.inta=5;a=--a;8.以下哪個(gè)數(shù)據(jù)類型用于表示單個(gè)字符?A.intB.floatC.charD.double9.以下哪個(gè)語(yǔ)句是正確的?A.for(inti=0;i<5;i++){printf("%d",i);}B.for(inti=0;i<5;i++){printf("%d",i);}C.for(inti=0;i<5;i++){printf("%d",i);}D.for(inti=0;i<5;i++){printf("%d",i);}10.以下哪個(gè)語(yǔ)句用于聲明一個(gè)指向整數(shù)的指針?A.intptr;B.intptr;C.intptr;D.intptr[];二、填空題(每題2分,共20分)1.在C語(yǔ)言中,用于表示注釋的符號(hào)是______和______。2.C語(yǔ)言中的`if`語(yǔ)句可以嵌套使用,但嵌套的`if`語(yǔ)句必須______在一個(gè)`else`語(yǔ)句后面。3.`switch`語(yǔ)句中的`case`標(biāo)簽后面必須跟一個(gè)______。4.在C語(yǔ)言中,`do-while`循環(huán)至少會(huì)執(zhí)行______次。5.`break`語(yǔ)句通常用于______循環(huán)或`switch`語(yǔ)句中。6.`continue`語(yǔ)句通常用于______循環(huán)中。7.在C語(yǔ)言中,`scanf`函數(shù)用于______數(shù)據(jù)。8.`sizeof`運(yùn)算符用于獲取______的大小。9.指針是一種特殊的數(shù)據(jù)類型,它用于存儲(chǔ)______的地址。10.動(dòng)態(tài)分配內(nèi)存函數(shù)`malloc`的返回類型是______。三、簡(jiǎn)答題(每題5分,共25分)1.簡(jiǎn)述C語(yǔ)言中的`if-else`語(yǔ)句的用法。2.簡(jiǎn)述C語(yǔ)言中的`for`循環(huán)的用法。3.簡(jiǎn)述C語(yǔ)言中的`while`循環(huán)的用法。4.簡(jiǎn)述C語(yǔ)言中的`do-while`循環(huán)的用法。5.簡(jiǎn)述C語(yǔ)言中的`switch`語(yǔ)句的用法。四、編程題(每題15分,共45分)1.編寫一個(gè)C程序,計(jì)算1到100的所有整數(shù)的平方和。2.編寫一個(gè)C程序,實(shí)現(xiàn)字符串的查找功能(不使用庫(kù)函數(shù)),查找某個(gè)字符在字符串中第一次出現(xiàn)的位置。3.編寫一個(gè)C程序,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的員工管理系統(tǒng),包括添加員工信息、查詢員工信息和刪除員工信息的功能。---答案及解析試題一一、選擇題1.C2.C3.B4.C5.A6.A7.B8.C9.A10.A二、填空題1.`//`和`//`2.隱式3.常量或表達(dá)式4.一次5.`for`循環(huán)6.`for`循環(huán)7.輸入8.數(shù)據(jù)類型9.變量10.`void`三、簡(jiǎn)答題1.`if-else`語(yǔ)句用于根據(jù)條件執(zhí)行不同的代碼塊。語(yǔ)法如下:```cif(條件){代碼塊1;}else{代碼塊2;}```2.`for`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,通常用于已知循環(huán)次數(shù)的情況。語(yǔ)法如下:```cfor(初始化;條件;更新){代碼塊;}```3.`while`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,直到條件為假。語(yǔ)法如下:```cwhile(條件){代碼塊;}```4.`do-while`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,至少執(zhí)行一次,直到條件為假。語(yǔ)法如下:```cdo{代碼塊;}while(條件);```5.`switch`語(yǔ)句用于根據(jù)變量的值執(zhí)行不同的代碼塊。語(yǔ)法如下:```cswitch(變量){case值1:代碼塊1;break;case值2:代碼塊2;break;default:默認(rèn)代碼塊;}```四、編程題1.計(jì)算1到100的所有偶數(shù)的和```cinclude<stdio.h>intmain(){intsum=0;for(inti=1;i<=100;i++){if(i%2==0){sum+=i;}}printf("1到100的所有偶數(shù)的和是:%d\n",sum);return0;}```2.實(shí)現(xiàn)字符串的復(fù)制功能```cinclude<stdio.h>voidcopyString(chardest,constcharsrc){while(src){dest=src;dest++;src++;}dest='\0';}intmain(){charsrc[]="Hello,World!";chardest[50];copyString(dest,src);printf("復(fù)制的字符串:%s\n",dest);return0;}```3.實(shí)現(xiàn)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)```cinclude<stdio.h>include<stdlib.h>include<string.h>typedefstruct{intid;charname[50];floatscore;}Student;Studentstudents=NULL;intstudentCount=0;voidaddStudent(intid,constcharname,floatscore){students=(Student)realloc(students,(studentCount+1)sizeof(Student));students[studentCount].id=id;strcpy(students[studentCount].name,name);students[studentCount].score=score;studentCount++;}voidqueryStudent(intid){for(inti=0;i<studentCount;i++){if(students[i].id==id){printf("學(xué)生ID:%d,姓名:%s,成績(jī):%.2f\n",students[i].id,students[i].name,students[i].score);return;}}printf("未找到學(xué)生ID為%d的學(xué)生。\n",id);}voiddeleteStudent(intid){for(inti=0;i<studentCount;i++){if(students[i].id==id){for(intj=i;j<studentCount-1;j++){students[j]=students[j+1];}studentCount--;students=(Student)realloc(students,studentCountsizeof(Student));printf("已刪除學(xué)生ID為%d的學(xué)生。\n",id);return;}}printf("未找到學(xué)生ID為%d的學(xué)生。\n",id);}intmain(){addStudent(1,"Alice",90.5);addStudent(2,"Bob",85.0);queryStudent(1);deleteStudent(2);return0;}```---試題二一、選擇題1.C2.C3.A4.C5.A6.A7.B8.C9.A10.A二、填空題1.`//`和`//`2.隱式3.常量或表達(dá)式4.一次5.`for`循環(huán)6.`for`循環(huán)7.輸入8.數(shù)據(jù)類型9.變量10.`void`三、簡(jiǎn)答題1.`if-else`語(yǔ)句用于根據(jù)條件執(zhí)行不同的代碼塊。語(yǔ)法如下:```cif(條件){代碼塊1;}else{代碼塊2;}```2.`for`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,通常用于已知循環(huán)次數(shù)的情況。語(yǔ)法如下:```cfor(初始化;條件;更新){代碼塊;}```3.`while`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,直到條件為假。語(yǔ)法如下:```cwhile(條件){代碼塊;}```4.`do-while`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,至少執(zhí)行一次,直到條件為假。語(yǔ)法如下:```cdo{代碼塊;}while(條件);```5.`switch`語(yǔ)句用于根據(jù)變量的值執(zhí)行不同的代碼塊。語(yǔ)法如下:```cswitch(變量){case值1:代碼塊1;break;case值2:代碼塊2;break;default:默認(rèn)代碼塊;}```四、編程題1.計(jì)算1到100的所有奇數(shù)的和```cinclude<stdio.h>intmain(){intsum=0;for(inti=1;i<=100;i++){if(i%2!=0){sum+=i;}}printf("1到100的所有奇數(shù)的和是:%d\n",sum);return0;}```2.實(shí)現(xiàn)字符串的查找功能```cinclude<stdio.h>intfindChar(constcharstr,charch){intindex=-1;for(inti=0;str[i]!='\0';i++){if(str[i]==ch){index=i;break;}}returnindex;}intmain(){constcharstr="Hello,World!";charch='o';intindex=findChar(str,ch);if(index!=-1){printf("字符'%c'在字符串中第一次出現(xiàn)的位置是:%d\n",ch,index);}else{printf("字符'%c'在字符串中未找到。\n",ch);}return0;}```3.實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)```cinclude<stdio.h>include<stdlib.h>include<string.h>typedefstruct{intid;chartitle[100];charauthor[50];}Book;Bookbooks=NULL;intbookCount=0;voidaddBook(intid,constchartitle,constcharauthor){books=(Book)realloc(books,(bookCount+1)sizeof(Book));books[bookCount].id=id;strcpy(books[bookCount].title,title);strcpy(books[bookCount].author,author);bookCount++;}voidqueryBook(intid){for(inti=0;i<bookCount;i++){if(books[i].id==id){printf("圖書ID:%d,標(biāo)題:%s,作者:%s\n",books[i].id,books[i].title,books[i].author);return;}}printf("未找到圖書ID為%d的圖書。\n",id);}voiddeleteBook(intid){for(inti=0;i<bookCount;i++){if(books[i].id==id){for(intj=i;j<bookCount-1;j++){books[j]=books[j+1];}bookCount--;books=(Book)realloc(books,bookCountsizeof(Book));printf("已刪除圖書ID為%d的圖書。\n",id);return;}}printf("未找到圖書ID為%d的圖書。\n",id);}intmain(){addBook(1,"C程序設(shè)計(jì)語(yǔ)言","KernighanandRitchie");addBook(2,"深入理解計(jì)算機(jī)系統(tǒng)","RandalE.Bryant");queryBook(1);deleteBook(2);return0;}```---試題三一、選擇題1.C2.C3.B4.C5.A6.A7.B8.C9.A10.A二、填空題1.`//`和`//`2.隱式3.常量或表達(dá)式4.一次5.`for`循環(huán)6.`for`循環(huán)7.輸入8.數(shù)據(jù)類型9.變量10.`void`三、簡(jiǎn)答題1.`if-else`語(yǔ)句用于根據(jù)條件執(zhí)行不同的代碼塊。語(yǔ)法如下:```cif(條件){代碼塊1;}else{代碼塊2;}```2.`for`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,通常用于已知循環(huán)次數(shù)的情況。語(yǔ)法如下:```cfor(初始化;條件;更新){代碼塊;}```3.`while`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,直到條件為假。語(yǔ)法如下:```cwhile(條件){代碼塊;}```4.`do-while`循環(huán)用于重復(fù)執(zhí)行一段代碼塊,至少執(zhí)行一次,直到條件為假。語(yǔ)法如下:```cdo{代碼塊;}while(條件);```5.`switch`語(yǔ)句用于根據(jù)變量的值執(zhí)行不同的代碼塊。語(yǔ)法如下:```cswitch(變量){case值1:代碼塊1;break;case值2:代碼塊2;break;default:默認(rèn)代碼塊;}```四、編程題1.計(jì)算1到100的所有整數(shù)的平方和```cinclude<stdio.h>intmain(){intsum=0;for(inti=1;i<=100;i++){sum+=ii;}printf("1到100的所有整數(shù)的平方和是:%d\n",sum);return0;}```2.實(shí)現(xiàn)字符串的查找功能```cinclude<stdio.h>intfindChar(constcharstr,charch){intindex=-1;for(inti=0;str[i]!='\0';i++){if(str[i]==ch){index=i;break;}}returnindex;}intmain(){constcharstr="Hello,World!";charch='o';intindex=findChar(str,ch);if(index!=-1){printf("字符'%c'在字符串中第一次出現(xiàn)的位置是:%d\n",ch,index);}else{printf("字符'%c'在字符串中未找到。\n",ch);}return0;}```3.實(shí)現(xiàn)一個(gè)簡(jiǎn)單的員工管理系統(tǒng)```cinclude<stdio.h>include<stdlib.h>include<string.h>typedefstruct{intid;charnam
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)本科(醫(yī)學(xué)檢驗(yàn)技術(shù))臨床血液學(xué)檢驗(yàn)試題及答案
- 2026年綜合測(cè)試(天文學(xué)常識(shí))考題及答案
- 2025年大學(xué)護(hù)理倫理學(xué)(護(hù)理道德實(shí)踐)試題及答案
- 2025年中職動(dòng)物科學(xué)(動(dòng)物學(xué)基礎(chǔ))試題及答案
- 臨床胰島細(xì)胞瘤表現(xiàn)、病理表現(xiàn)及超聲診斷
- 2025年安全文化品牌建設(shè)題庫(kù)(附答案)
- 深度解析(2026)《GBT 17825.4-1999CAD文件管理 編制規(guī)則》
- 深度解析(2026)《GBT 17690-1999土工合成材料 塑料扁絲編織土工布》
- 合作伙伴引入與評(píng)估標(biāo)準(zhǔn)
- 安全隱患排查治理辦法
- TSG D2002-2006燃?xì)庥镁垡蚁┕艿篮附蛹夹g(shù)規(guī)則
- 行政倫理學(xué)(全套課件)
- 2022年自然保護(hù)地大數(shù)據(jù)數(shù)字化管理平臺(tái)建設(shè)方案
- DB13T 5388-2021 大中型水庫(kù)管理規(guī)程
- 企業(yè)工會(huì)工作手冊(cè)
- 大青山自然保護(hù)區(qū)功能區(qū)劃圖和重點(diǎn)動(dòng)物分布圖
- B2型生物安全柜外排風(fēng)機(jī)安裝說(shuō)明二
- 城鎮(zhèn)燃?xì)怙L(fēng)險(xiǎn)防控指導(dǎo)手冊(cè)(終)
- 衛(wèi)生部抗菌藥物臨床應(yīng)用分級(jí)管理目錄(最新版)
- 酒店經(jīng)營(yíng)日?qǐng)?bào)表
- 蕎麥種子的形態(tài)結(jié)構(gòu)
評(píng)論
0/150
提交評(píng)論