c語言問題及答案
A. c語言題目 多項選擇(至少兩個正確答案)
1. 以下選項是C語言關鍵字的是(A、C、D)。
A.main B.FOR C.break D.void
2. 以下選項可作為C語言合法整數的是(A、B、C)。
A.12345L B.0xabff C.0678 D.x3f0
3. 代數式ae/(bc) 的正確C語言表達式是( A、B、D)。
A.a/b/c*e B.a*e/b/c C.a*e/b*c D.a*e/c/b
4. 設有說明:int a,b[3]={1,2,3},*p;下面能夠正確執行的語句有(C、D)。
A.p = *b; B.a = p; C.p = b+1; D.a = *p;
5. 已知ch是字元型變數,以下正確的賦值語句是(B、C、D)。
A.ch= 'a+b' B.ch='\0' C.ch='\08' D.ch=5+9
6. 以下選項可作為C語言合法常量的是(A、B)。
A.1U B.0678 C.0XABCD12L D.2005F
7. 以下不能定義為用戶標識符的是(A、C、D)。
A.b.c B.DO C.3com D.char
8. 對於下面關於數組聲明,正確的是(A、B、D)。
A.int x[][5]; B.int y[]={0}; C.int z[2,3]; D.char s[11]=「abc\ndef\n」;
9. 設有說明int a=0,b=1,c=2;下面表達式的值為1(對於邏輯表達式代表非0)的有(B、D)。
A.a && b B.++a C.!a && b>c D.c||a
10. 引用數組元素時,其數組下標表達式允許是(A、B)。
A.整型常量 B.整型表達式 C.任何類型的表達式 D.任何類型的函數調用
B. C語言題目,求答案,求解釋
答案是B,解釋如下:
設X為-1
x>0?x:-x;也就是x是否是大於零的數?大於零,號就是你了,不是零,不行,要取你的相反數!
所以x=-1,-x=1,所以如題
再設X=1
x=1,不用-x就可以了,所以如題
滿意採納,不滿意請追問
C. 求C語言練習題答案
二、填空題
1. ___變數__是指在程序運行過程中,值可以發生變化的量。
2.C語言是一種____區分_(區分/不區分)字母大小寫的語言,Password和password在C語言中是兩個___不同__(相同/不同)的標識符。
3.下面的轉義字元分別表示:
』\b』__退格___,』\n』__換行___,』\t』__水平製表___,』\地』 __雙引號字元逗"地___
4.下面常量的類型分別為:
1.5E12__浮點型___,1288L _整型____,』a』__字元___,"a"__字元串___
08 __整形___,』\007』__整型___
5. C語言源程序一定要有而且只有一個__主函數___函數,程序執行時也從它開始。
6. 結構化程序設計主要有___順序__、__選擇___和__循環___三種基本結構。
三、判斷題
1. C語言不是一種結構化程序設計語言。(錯)
2. C語言是弱類型語言,為了類型轉換的方便,對類型的要求很不嚴格,在許多情況下不做類型檢查。(對)
3. C語言既具有高級語言的特點,同時也具有部分低級語言的特點。(對)
4. C源程序可以由多個文件組成,每個文件中都可有一個主函數main()。(錯)
5. C程序從main()函數開始執行,因此主函數main()必須放在程序的開頭。(錯)
6. 命名標識符時字元個數不得超過6個。(錯)
7. 對於同一個數據種類型,變數值越大,它所佔內存的位元組數越多。(錯)
8. 定義一個變數時必須指出變數類型,但是不一定必須給變數初始化。(對)
9. ""表示一個空字元串常量,』』表示一個空字元常量。(對)
10. 一個表達式中出現多種數值型數據類型,運算前先進行類型轉換。(對)
11. 浮點數不能作自增或自減運算,只有整型才可作自增或自減運算。(錯)
12. 已知a、b是整型變數,則表達式a=3,2+4,b=6,7+8是一個逗號表達式。(對)
四、問答題
1. 寫出下面表達式的值
(1)12/3*9=36
(2)int i=3,j;
i*=2+5;
i/=j=4;
i+=(j%2);
i、j的最終結果是多少看i=5,j=4
(3)int a=3,b,c;
b=(a++)+(a++)+(a++);
c=(++a)+(++a)+(++a);a、b、c的最終結果是多少看a=9,b=9,c=25
2. 下列表達式是否正確?若正確,表達式的值是什麼?
21/2=10 21/2.0= 10.5 21.0/2=10.5 21%2=1 21.0%2 21%2.0 18%15=3 15%18=15 3%15=3
五、編程題
編寫程序,在屏幕上輸出如下信息:
===================
= I am a student. =
===================
#include"stdio.h逗
void main()
{
printf("= I am a student. =");
}
D. 計算機二級C語言選擇題及答案(2)
}
printf("%d ",num);
}
程序執行後的輸m結果是()。
A.35
B.37
C.39
D.3975
32.以下程序的'輸出結果是()。
main()
{char st[20]="hello \";
printf("%d%d ",strlen(st).sizeof(st));
}
A.9 9
B.5 20
C.13 20
D.20 20
33.若有以下的定義:‘int t[3][2];”,能正確表示t數組元素地址的表達式是()。
A.&t[3][2]
B.t[3]
C.t[l]
D.t[2][2]
34.函數fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始點是()。
A.文件開始
B.文件末尾
C.文件當前位置
D.以上都不對
35.下述程序的輸出結果是()。
#include
main()
{ int i;
for(i=l;i<=10;i++)
{if(i*i>=20)&&(i*i<=100))
break;
}
printf("%d ",i*i);
}
A.49
B.36
C.25
D.64
36.若有定義“int b[8],*p=b;”,則p+6表示()。
A.數組元素b[6]的值
B.數組元素b[6]的地址
C.數組元素b[7]的地址
D.數組元素b[o]的值加上6
37.設變數已正確定義,則以下能正確計算f=n!的程序是()。
A.f=0:
for(i=1;i<=n;i++)f*=i:
B.F=1:
for(i=l;i<2n;i++)f*=i:
C.f=l:
for(i=n;i>1;i++)f*=i:
D.f=1;
for(i=n;i>=2;i--)f*=i:
38.下述程序執行的輸出結果是()。
#include
main()
{ char a[2][4];
strcpy(a,"are");strcpy(a[1],"you");
a[0][3]=’&’;
printf("%s ",a):
}
A.are&you
B.you
C.are
D.&
39.設x=011050,則x=x&01252的值是()。
A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
40.在“文件包含”預處理語句的使用形式中,當#include後面的文件名用(雙引號)括起時,尋找被包含文件的方式是()。
A.直接按系統設定的標准方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統設定的標准方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當前目錄
【答案與解析】
1.D。【解析】演算法的空間復雜度,是指執行這個演算法所需的存儲空間。演算法所佔用的存儲空間包括演算法程序所佔用的空間、輸入的初始數據所佔用的存儲空間、演算法執行過程中所需要的額外空間。
2.D。【解析】數據的存儲結構是指數據的邏輯結構在計算機存儲空間中的存放形式,一種數據結構可以根據需要採用不同的存儲結構,用的存儲結構有順序和鏈式結構。用不同的存儲結構,其處理的效率是不同的。
3.D。【解析】所謂的交換排序方法是指藉助數據元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序通過相鄰元素的交換,逐步將線性表變成有序是一種最簡單的交換排序方法。
4.C。【解析】結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用GOT0語句。其他三項為結構化程序設計的原則。
5.D。【解析】文件系統所管理的數據文件基本上是分散、相互獨立的。相對於資料庫系統,以此為基礎的數據處理存在3個缺點:數據冗餘大、數據的不一致性、程序與數據的依賴性強。
6.C。【解析】面對象的設計方法的基本原理是:使用現實世界的概念抽象地思考問題從而自然地解決問題。它雖強調模擬現實世界中的概念而不強調演算法,但是它鼓勵開發者在軟體開發的過程中從應用領域的概念角度去思考。
7.D。【解析】所謂的後序遍歷是指,首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點,並且在遍歷左、右樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後訪問根點。因此,後序遍歷二叉樹的過程也是一個遞歸過程。
8.B。【解析】軟體的過程設計是指系統結構部件轉換成軟體的過程描述。
9.A。【解析】①對軟,牛開發的進度和費用估計不準確:②用戶對已完成的軟體系統不滿意的現象時常發生;③軟體產品的質量往往靠不住;④軟體常常是不可維護的;⑤軟體通常沒有適當的文檔;⑥軟體成本在計算機系統總成本中所佔的比例逐年上升;⑦軟體開發生產率提高的速度遠遠跟不上計算機應用迅速普能及深入的趨勢。
10.C。【解析】對象的封裝性是指從外面看只能看到對象的外部特性,而對象的內部,其處理能力的實行和內部狀態對外是不可見的,是隱蔽的。
11.C。【解析】資料庫系統由如下5個部分組成:資料庫(DB)、資料庫管理系統fDBMS)、資料庫管理員(人員)、系統平台之一——硬體平台(硬體)、系統平台之二——軟體平台(軟體)。其中 DB(DataBase)即資料庫,是統一管理的相關數據的集合;DBMS即資料庫管理系統,是位於用戶與操作系統之間的一層數據管理軟體,為用戶或應用完程序提供訪問DB的方法。由以上可知,選C為正確答案。
12.A。【解析】標識符是由字母、數字或下劃線組成,並且它的第一個字元必須是字母或者下劃線。B選項int不是表達變數類型的標識符,它不能再用做變數名和函數名。C 選項do是C語言的一個關鍵字。D選項標識符只能以字母或下劃線開始。
13.D。【解析】本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||” 的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x14.C。【解析】第1個printf函數,格式說明的個數是2,而輸出項的個數是3,所以對於多餘的輸出項k不予輸出;第2個printf函數,有兩個%說明,第1個%後面的字元要原樣輸出。本題考查printf函數的格式。①“%x”和“%0”分別表示以十六進制和八進制無符合型輸出整型數據(不帶前導ox或0);②printf函數中格式說明符之前插入的任何字元都原樣輸出;③格式說明與輸出項的個數,也要相等,如果格式說明的個數少於輸出項的個數,則對於多餘的輸出項不予輸出。
15.C。【解析】函數fun(int x,int y)的功能是返回x+y的值。在主函數中,變數a,b,c的初始值分別為1,2,3。因此,逗號表達式“a++,b++,aq b”的值等於5,表達式c++的值為3,調用於函數的表達式為“fun(5,3);”,其返回值等於8。
16.D。【解析】在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表達式的值為3,因為x,y為double型變數,故選擇D選項。
17.A。【解析】當x為1時,執行case 1,a自加等於1,因為case 1後沒有break,接著執行case 2,此時a的值為2,b自加為1,故選擇A選項。
18.D。【解析】本題考夢自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現在變數之前,表示先使用變數的值加l,再使用變數的值進行運算;出現在變數之後,表示先使用變數的值進行運算,再使用變數的值加l。當邏輯與運算符“&&’’兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“||”只要一個值為1,值就為1。根據運算符的優先順序,題中應先計算內層括弧中的值。++j是先自加後運算,因此運算時j的值等於3,所以表達式++j=3成立,即表達式的值為1;1與任何數都為進行或(||)運算,結果都為1,因此k=3的表達式i++是先運算後自加,因此運算時i為1,所以i++=1成立,自加1後i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。
19.A。【解析】本題考查switch語句。當i一1時,執行case 1,因為沒有遇到break語句,所以依次往下運行,“a=a+ 2=2,a=a+3=5”;當i=2時,執行case 2,因為沒有遇到break語句,所以依次往下執行,“a=a+2=7,a=a+3= 10”;當i=3時,執行case 3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a—a+2—13,a—a+3一l6:當i=4時,執行default,a=a+3=19,結束循環。
20.C。【解析】只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數只有42,故選擇C選項。
21.A。【解析】循環的作用是求行下標從1到2列下標從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。
22.A。【解析】在程序語句中,k的初始值為5,進行第l次while循環後,k自減1為4,非0,執行循環體里的printf語句,輸出k,此時k的值變為1。程序執行第2次循環時,k 自減1變為0,為假,退出while循環語句。所以程序的最後結果為1。
23.A。【解析】通過地址來引用數組元素的方法有下列5種:
(1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+i);(4)* (a[i][j]);(5)(&aE0][0]q-3*i+j)。故A正確。
24.C。【解析】選項A、B的空間不夠;字元串存儲要有結束符’