當前位置:首頁 » 編程語言 » c語言基礎試題及答案

c語言基礎試題及答案

發布時間: 2025-10-12 08:58:00

❶ 誰能提供點c語言的試題給我,最好能有答案的,非常感謝!

以下是一些 C 語言的試題,每個試題都附帶有答案。希望能夠幫助到你。

1、編寫一個程序,從命令行參數中讀取兩個整數,計算它們的和並輸出結果。

    答案:

#include <stdio.h>

int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s <int1> <int2> ", argv[0]);
return 1;
}
int x = atoi(argv[1]);
int y = atoi(argv[2]);
printf("%d + %d = %d ", x, y, x + y);
return 0;
}

2、編寫一個函數,接受兩個參數 a 和 b,返回它們的最大公約數。

    答案:

    int gcd(int a, int b) {
    if (b == 0) {
    return a;
    } else {
    return gcd(b, a % b);
    }
    }


    3、編寫一個程序,從標准輸入中讀取一個字元串,將其中的大寫字母轉換為小寫字母,並輸出轉換後的字元串。

      答案:

    #include <stdio.h>
    #include <ctype.h>

    int main() {
    char c;
    while ((c = getchar()) != EOF) {
    putchar(tolower(c));
    }
    return 0;
    }

    4、編寫一個程序,從標准輸入中讀取一個字元串,判斷其中是否有重復的字元,並輸出結果。

      答案:

    #include <stdio.h>
    #include <stdbool.h>

    bool has_plicate_chars(const char *str) {
    bool seen[256] = { false };
    while (*str != '') {
    if (seen[(unsigned char) *str]) {
    return true;
    }
    seen[(unsigned char) *str] = true;
    str++;
    }
    return false;
    }

    int main() {
    char str[100];
    printf("請輸入一個字元串:");
    scanf("%s", str);
    if (has_plicate_chars(str)) {
    printf("存在重復的字元。 ");
    } else {
    printf("不存在重復的字元。 ");
    }
    return 0;
    }

5、編寫一個程序,從標准輸入中讀取一個整數 n,輸出斐波那契數列的前 n 項。

    答案:

    #include <stdio.h>

    void print_fibonacci(int n) {
    int a = 0, b = 1;
    for (int i = 1; i <= n; i++) {
    printf("%d ", a);
    int c = a + b;
    a = b;
    b = c;
    }
    printf(" ");
    }

    int main() {
    int n;
    printf("請輸入一個整數:");
    scanf("%d", &n);
    print_fibonacci(n);
    return 0;
    }

❷ C語言試題啊,求大神幫忙答案啊!

題號:1
以下正確的說法是( )
選項:
a、用戶若需要調用標准庫函數,調用前必須重新定義
b、用戶可以重新定義標准庫函數,若如此,該函數將失去原有意義
c、用戶系統根本不允許用戶重新定義標准庫函數
d、用戶若需要調用庫函數,調用前不必使用預編譯命令將該函數所在文件包括到用戶源文件中,系統自動尋找該文件
本題答案為d,無論是標准庫函數還是什麼函數,都是函數,都允許用戶重新定義和使用,使用的時候只需要用#include <XX.h>包括進來就可以了,也就是預編譯命令。其中#include就是預編譯命令。

題號:2
以下正確的函數定義形式是( )
選項:
a、double fun(int x,int y)
b、double fun(int x
c、int y)
d、double fun(int x,int y)
e、doubel fun(int x
f、int y)
函數的定義規則是這樣的:<函數返回類型> <函數名>(函數參數用逗號隔開){函數體}
函數聲明的規則是這樣的:<函數返回類型> <函數名>(函數參數用逗號隔開);
綜上所述,該題沒有正確答案,唯一接近正確答案的為ad。

題號:3
以下不正確的說法為( )
選項:
a、在不同函數中可以使用相同名字的變數
b、形式參數是局部變數
c、在函數內定義的變數只在本函數范圍內有效
d、在函數內的復合語句中定義的變數在本函數范圍內有效
C中有一個關鍵字為extern,專門把局部變數轉為全局變數,所以C是錯誤的。
本題答案為C

題號:4
建立函數的目的之一,以下正確的說法是( )
選項:
a、提高程序的執行效率
b、提高程序的可讀性
c、減少程序的篇幅
d、減少程序文件所佔內存

本題答案為a,
函數的增加,
b會使得程序的可讀性增加,這個可以理解,模塊化了,當然可讀性增加了
c,多次調用一個函數即可,不用重復的寫代碼,這個也可以理解
d,重復的代碼既然少了,整個程序的大小自然也小了,當然減少了程序文件所佔的內存
至於a的效率提高了,這個不對,因為函數多了,會頻繁的進行壓棧出棧的操作,加大cpu的工作負荷,整個程序的效率變低了。

題號:5
C語言規定,函數返回值的類型是由( )所決定。
選項:
a、return語句中的表達式類型
b、調用該函數時的主調函數類型
c、調用該函數是系統臨時指定
d、在定義該函數時所指定的函數類型
這個可以參考第二題,函數的定義規則,當然是由定義的時候確定的了。
本題答案為d。

題號:6
凡是函數中未指定存儲類別的局部變數,其隱含的存儲類別為( )
選項:
a、auto
b、static
c、extern
d、register
這個題目容易,沒有指定當然是自動指定的了。
本題答案為a。
另外一個小知識,我們平常看到的int a,b,c;實際上省略了auto,全部應該是 auto int a,b,c;

題號:7
以下程序的運行結果是( )void sub (int x,int y,int *z){*z=y-x;}main(){int a,b,c;sub
(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%4d,%4d,%4d",a,b,c);}
選項:
a、5, 2, 3
b、 -5, -12, -7
c、 -5, -12, -17
d、 5, -2, -7

void sub (int x,int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a); 執行完這句a的值為-5;
sub(7,a,&b);執行完這句b的值為-12;
sub(a,b,&c);執行完這句c的值為-7
printf("%4d,%4d,%4d",a,b,c);
}
答案為b;

題號:8
若用數組名作為函數調用的實參,傳遞給形參的是( )
選項:
a、數組的首地址
b、數組第一個元素的值
c、數組中全部元素的值
d、數組元素的個數
本題答案為a
數組名為數組的首地址,也是數組第一個元素的值的地址。數組名是一個地址。

題號:9
若使用一位數組名作為函數實參,則以下正確的說法是( )
選項:
a、必須在主調函數中說明此數組的大小
b、實參數組類型與形參數組類型可以不匹配
c、在被調函數中,不需要考慮形參數組的大小
d、實參數組名與形參數組名必須一致

本題答案為a,
必須在主調函數中定義該數組的大小。也就是該數組大小應該被提前設定好。
int a[10]可以作為參數,int a[x]不可以作為參數。

題號:10
如果在一個復合語句中定義了一個變數,則有關該變數正確的說法是( )
選項:
a、只在該復合語句中有效
b、只在該函數中有效
c、在本程序范圍內均有效
d、為非法變數
答案為

❸ 下半年計算機二級c語言基礎試題

下半年計算機二級c語言基礎試題

任何設計活動都是在各種約束條件和相互矛盾的需求之間尋求一種平衡,程序設計也不例外。下面是我收集的關於計算機二級c語言基礎試題,希望大家認真閱讀!

下半年計算機二級c語言基礎試題1

一、選擇:

1.給出以下定義:

char acX[ ]= "abcdefg";

char acY[ ]= {'a','b','c','d','e','f','g'};

則正確的敘述為( )

A) 數組acX和數組acY等價 B) 數組acX和數組acY的長度相同

C) 數組acX的長度大於數組acY的長度 D) 數組acX的長度小於數組acY的長度

答案:C

2.

void example(char acHello[])

{

printf("%d", sizeof(acHello));

return;

}

void main()

{

char acHello[] = "hello";

example(acHello);//數組名稱作參數,傳的是地址,一個地址佔四個位元組

return;

}

的輸出是

A 4 B 5 C 6 D不確定

答案:A

3. 有以下程序段

char acArr[]= "ABCDE";

char *pcPtr;

for(pcPtr = acArr; pcPtr < acArr + 5; pcPtr++)

{

printf("%s/n", pcPtr);

}

return;

輸出結果是( )

A) ABCD B) A C) E D) ABCDE

B D BCDE

C C CDE

D B DE

E A E

答案:D

4.在中斷中,不能同步獲取信號量,但是可以釋放信號量。

A.正確 B.錯誤

答案:A

5.以下敘述中不正確的是( )

A) 在不同的函數中可以使用相同名字的變數

B) 函數中的形式參數是局部變數

C) 在一個函數內定義的變數只在本函數范圍內有效

D) 在一個函數內的復合語句中定義的變數在本函數范圍內有效(復合語句指函數中的成對括弧構成的代碼)

答案:D

6.設有如下定義:

unsigned long pulArray[] = {6, 7, 8, 9, 10};

unsigned long *pulPtr;

則下列程序段的輸出結果為( )

pulPtr = pulArray;

*(pulPtr + 2) += 2;

printf ("%d,%d/n", *pulPtr, *(pulPtr + 2));

A)8,10 B)6,8 C)7,9 D)6,10

答案:D

7. 定義結構體時有下面幾種說法,請指出正確的(多選):______

A、結構體中的每個部分,最好進行四位元組對齊;

B、結構體的總長度最好是四位元組對齊;

C、結構中成員的存放不用考慮位元組對齊情況;

答案:A、B

8.void example()

{

int i;

char acNew[20];

for(i = 0; i < 10; i++)

{

acNew[i] = '0';

}

printf("%d/n", strlen(acNew));

return;

}

的輸出為( )

A 0 B 10 C 11 D不確定

答案:D

9.switch(c)中的c的數據類型可以是char、long、float、unsigned、bool. ( )

A. 正確 B. 錯誤

答案:B

10. 網路上傳輸的位元組序默認是大位元組的,如果主機是小位元組序,在網路通信時則須進行位元組序轉換;如果主機是

大位元組序,為了程序的一致性及可移植性,最好也在程序中加上位元組序轉換的操作(空操作)。

A. 正確 B.錯誤

答案:A

二、 填空題

1、 C語言函數返回類型的默認定義類型是

2、 函數的實參傳遞到形參有兩種方式: 和

3、在一個函數內部調用另一個函數的調用方式稱為 。在一個函數內部直接或間接調用該函數成為函數 的調用方式

4、C語言變數按其作用域分為 和

5、凡在函數中未指定存儲類別的局部變數,其默認的存儲類別為

三、 看程序寫結果

1、#include

Int abc(int u,int v);

Void main()

{int a=24,b=16,c;

c=abc(a,b);

printf(「value=%d」,c);

}

Int abc(int u, int v)

{int w;

While(v)

{w=u%v;

u=v;

v=w;

}

Return u;

}

2、#include

int x1=30,x2=40;

main()

{int x3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

printf(「%d,%d,%d,%d 」,x3,x4,x1,x2);

}

sub(int x,int y)

{x1=x;x=y;y=x1;}

3、#include

Main()

{int i=5;

Printf(「%d 」,sub(i));

}

sub(int n)

{int a;

If(n==1) return 1;

a=n+sub(n-1);

return (a);

}

4、#include

Void fun()

{static int m;

m+=2;

printf(「%d 」,m);

}

Main()

{int a;

For(a=1;a<=4;a++) fun();

Printf(「 」);

}

四、 編程

1、 編寫一個函數,判斷任一整數是否為素數,用main()函數調用並測試之。

2、 用遞歸方法求n!

3、 有一個一維數組,內放10個學生成績,寫一個函數,求出平均分,最高分和最低分

下半年計算機二級c語言基礎試題2

1.下列敘述中正確的是( )。

A. 所有數據結構必須有根結點

B. 所有數據結構必須有終端結點(即葉子結點)

C. 只有一個根結點,且只有一個葉子結點的數據結構一定是線性結構

D. 沒有根結點或沒有葉子結點的數據結構一定是非線性結構

【答案】D

【解析】D項正確,線性結構的特點是:

①集合中必存在「第一個元素"且惟一;

②集合中必存在「最後一個元素」且惟一;

③除最後一個元素外,其他數據元素均有惟一的「後繼;

④除第一個元素外,其他數據元素均有惟一的「前驅」。所以沒有根結點或沒有葉子結點的數據結構一定是非線性結構。AB兩項錯誤,不是所有數據結構都必須有根結點和葉子結點;C項錯誤,數據結構中若有中間結點不滿足只有一個前件或者後件的條件,就不是線性結構。答案選擇D選項。

2. 以下敘述中錯誤的是( )。

A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令

B. C程序經過編譯、鏈接步驟之後才能形成一個真正可執行的二進制機器指令文件

C. 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

D. C語言源程序經編譯後生成後綴為.obj的目標程序

【答案】A

【解析】A項錯誤,注釋語句不會被翻譯成二進制的'機器指令。C源程序經過C編譯程序編譯之後生成後綴為.obj的二進制文件(稱為目標文件),然後由「鏈接程序」(Link)的軟體把.obj文件與各種庫函數連接起來生成一個後綴為.exe的可執行文件。答案選擇A選項。

3. C語言主要是藉助以下( )功能來實現程序模塊化的。

A. 定義函數

B. 定義常量和外部變數

C. 三種基本結構語句

D. 豐富的數據類型

【答案】A

【解析】C程序的模塊化主要通過函數來實現。C語言允許對函數單獨進行編譯,從而可以實現模塊化。答案選擇A選項。

4. 有以下程序段:

char ch;

int k;

ch='a';

k=12;

print("%c,%d,",h,ch,k);

printf("k=%d ",k);

已知字元a的ASCII碼十進制值為97,則執行上述程序段後輸出的結果是( )。

A. 因變數類型與格式描述符的類型不匹配輸出無定值

B. 輸出項與格式描述符個數不符,輸出為零值或不定值

C.a,97,12k=12

D. a,97,k=12

【答案】D

【解析】字元變數的值是該字元的ASCII碼值,可以參與整型變數所允許的任何運算。"ch='a",%c表示以字元格式輸出ch的值,所以輸出為a;%d表示以十進制代碼的形式輸出ch的值,為97;k沒有對應的輸出格式,不輸出。在第二個語句中,首先輸出"k=",然後以十進制代碼輸出k的值,為12。答案選擇D選項。

5. 下列敘述中正確的是( )。

A. 棧是「先進先出」的線性表

B. 隊列是「先進後出"的線性表

C. 循環隊列是非線性結構

D. 有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構

【答案】D

【解析】有序的線性表既可採用順序存儲結構,也可以採用鏈式存儲結構。A項錯誤,棧是「先進後出"的線性表B項錯誤,隊列是「先進先出"的線性表;C項錯誤,循環隊列是線性結構的,有序的線性表既可採用順序存儲結構,也可採用鏈式存儲結構。

答案選擇D選項。

6. 某二叉樹的中序序列為DCBAEFG,後序序列為DCBGFEA,則該二叉樹的深度(根結點在第1層)為( )。

A. 5

B. 40

C.3

D. 2

【答案】B

【解析】二叉樹的後序序列為DCBGFEA,則A為根結點。中序序列為DCBAEFG,則DCB為左子樹結點,EFG為右子樹結點。同理B為C父結點,C為D父結點。根據分析,可畫出左子樹,同理E為F父結點,F為G父結點。根據分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。

7. 設有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是( )。

A. s[0]=m[1];

B. s=m;

C.s.n=m.n;

D. s[2].x=m[2].x;

【答案】A

【解析】定義了結構體類型數組s,長度為2,結構體類型數組m,長度為2,並對數組m進行了初始化。同類型的結構體可以直接用變數名實現賦值,A項正確;數組名為數組首地址,地址常量之間不可以相互賦值,B項錯誤;數組名為地址常量不是結構體變數,不能引用成員,C項錯誤;s[2]與m[2]數組越界,D項錯誤。答案選擇A選項。

8. 關於C語言標識符,以下敘述錯誤的是( )。

A. 標識符可全部由數字組成

B. 標識符可全部由下劃線組成

C. 標識符可全部由小寫字母組成

D. 標識符可全部由大寫字母組成

【答案】A

【解析】C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。

9. 以下程序段中的變數已定義為int類型,則

sum=pAd=5;

pAd=sum++,++pAd,pAd++;

printf("%d ",pAd);

程序段的輸出結果是( )。

A. 6

B. 4

C. 5

D. 7

【答案】D

【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變數之前,規則是先使變數的值增(或減)1,然後以變化後表達式的值參與其他運算;後置運算,運算符放在變數之後,規則是變數先參與其他運算,然後再使變數的值增(或減)1。執行pAd=sum++,sum++是後置自增,執行完後,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執行完後,pAd7。答案選擇D選項。

;

❹ C語言試題,那位大神幫忙給個答案

◆單選題 共(40 分)
1、在C語言中, char型數據在內存中的存儲形式是:___A___
A、補碼
B、反碼
C、原碼
D、ASCII碼

2、已知int i, x[3][4];則不能將x[1][1]的值賦給變數i的語句是___C___
A、i=*(*(x+1))
B、i=x[1][1]
C、i=*(*(x+1))
D、i=*(x[1]+1)

3、以下敘述正確的是__D____
A、在C程序中,main函數必須位於程序的最前面
B、C程序的每行中只能寫一條語句
C、C語言本身沒有輸入輸出語句
D、在對一個C程序進行編譯的過程中,可發現注釋中的拼寫錯誤

4、若x=2,y=3則x||y的結果是__B____
A、0
B、3
C、1
D、2

5、若有以下說明語句:char s='\\\092';則下面哪一項是正確的__B____
A、使s的值包含2個字元
B、說明語句不合法
C、使s的值包含6個字元
D、使s的值包含4個字元

6、一個C程序的執行是從_A_____
A、本程序的main函數開始,到main函數結束
B、本程序文件的第一個函數開始,到本程序文件的最後一個函數結束
C、本程序的main函數開始,到本程序文件的最後一個函數結束
D、本程序文件的第一個函數開始,到本程序main函數結束

7、已知int a[10];則對a數組元素的正確引用是______ 沒有正確的,AC相同,應該是選項有問題。
A、a[10]
B、a[3.5]
C、a[10]
D、a(5)

8、若希望當A的值為奇數時,表達式的值為"真",A的值為偶數表達式的值為"假"。則以下不能滿足要求的表達式是___C___
A、A%2= =1
B、!(A%2 = =0)
C、!(A%2)
D、A%2

9、在C語言的if語句中,用作判斷的表達式為___B___
A、關系表達式
B、邏輯表達式
C、算術表達式
D、任意表達式

10、C語言程序由什麼組成?___C___
A、子程序
B、主程序和子程序
C、函數
D、過程

11、已知static int a[2][3]={2,4,6,8,10,12}; 正確表示數組元素地址的是___C___
A、*(a[1]+2)
B、a[1]+3
C、*(a+1)
D、a[0][0]

12、075的十進制寫法為___,十六進制寫法為___。 C
A、0x4b 0113
B、0165 117
C、61 0x3d
D、0x4b 61

13、在C語言中,字元型數據在內存中的存儲形式是__B____
A、原碼
B、補碼
C、反碼
D、ASCII碼

14、( )以下關於數組的描述正確的是 C
A、數組大小固定,但是可以有不同類型的數組元素
B、數組大小可變,但是所有數組元素的類型必須相同
C、數組大小固定,所有元素的類型必須相同
D、數組大小可變,可以有不同類型的數組元素

15、在C語言中,要求運算數必須是整型的運算符是__D___
A、/
B、++
C、!=
D、%

16、( A)若有以下定義:char s[20]= "programming",*ps=s;則不能代表字元g的表達式是
A、ps+3
B、s[3]
C、ps[3]
D、ps+=3,*ps

17、(D )選擇正確的輸入語句( )。:(其中:char string[20];)使得string的內容為"I am student". D
A、scanf("%s", string);
B、scanf("%c", &string);
C、scanf("%s", &string);
D、gets(string);

18、已知char b[5], *p=b;則正確的賦值語句是。__C____
A、b=」abcd」
B、*b=」abcd」;
C、p=」abcd」;
D、*p=」abcd」;

19、printf函數中用到格式符%5s,其中數字5表示輸出的字元串佔用5列。如果字元串長度大於5,則輸出按方式___B___
A、從左起輸出該字串,右補空格
B、按原字元長從左向右全部輸出
C、右對齊輸出該字串,左補空格
D、輸出錯誤信息

20、75的十六進制寫法為___,八進制寫法為______ C
A、0x4b 0113
B、0165 117
C、61 0x3d
D、0x4b 61

❺ C語言試題,求答案

一、選擇題(共10個)

  1. ③ 2.③ 3.① 4.④ 5.③ 6.① 7.④ 8.① 9.① 10.①

二、填空題(共7個)

  1. -32768 ~ 32767(16位機)

  2. 0

  3. 下劃線 下劃線

  4. double a=0.618

  5. 11、6

三、判斷題(共5個)

  1. X

四、閱讀以下C語言程序,以下程序的程序輸出的結果是2,1。

五、有兩個浮點數a=5.2,b=3.1,計算並輸出它們的和、差、積、商。

//#include "stdafx.h"//vc++6.0加上這一行.

#include "stdio.h"//

void main(void){

double a=5.2,b=3.1;

printf("a + b = %f a - b = %f a x b = %f a÷ b = %f ",a+b,a-b,a*b,a/b);

}

熱點內容
傳智播客34期php 發布:2025-10-12 10:51:33 瀏覽:111
sc文件夾 發布:2025-10-12 10:38:37 瀏覽:674
管SQl 發布:2025-10-12 10:32:41 瀏覽:366
fs幀存儲 發布:2025-10-12 10:03:06 瀏覽:550
sql連接兩個欄位 發布:2025-10-12 09:47:08 瀏覽:775
恢復sybase資料庫 發布:2025-10-12 09:15:01 瀏覽:601
c語言基礎試題及答案 發布:2025-10-12 08:58:00 瀏覽:583
c程序語言編譯後後綴名 發布:2025-10-12 08:56:32 瀏覽:475
如何巧清除電腦密碼 發布:2025-10-12 08:56:29 瀏覽:64
毒葯演算法 發布:2025-10-12 08:53:51 瀏覽:838