本文目錄一覽:
- 1、計算機二級C語言選擇題及答案(2)
- 2、c語言 多項選擇題
- 3、求c語言試題及答案!急啊!
- 4、C語言的4個選擇題,幫忙解釋一下答案,謝謝!
- 5、20道C語言選擇題,請教高手
- 6、C語言選擇題,知道的請告訴我答案
計算機二級C語言選擇題及答案(2)
}
printf(“%d\n”,num);
}
程序執行後的輸m結果是()。
A.35
B.37
C.39
D.3975
32.以下程序的’輸出結果是()。
main()
{char st[20]=”hello\0\t\\\”;
printf(“%d%d\n”,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\n”,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;i2n;i++)f*=i:
C.f=l:
for(i=n;i1;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\n”,a):
}
A.areyou
B.you
C.are
D.
39.設x=011050,則x=x01252的值是()。
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的空間不夠;字符串存儲要有結束符’\0’,且要佔用一個空間,printf用來輸出字符,不能輸入字符串。
25.D。【解析】由題目ee線性鏈表的定義可知,要將q 和r所指的結點交換前後位置,只要使q指向r的後一個結點,p指向r結點,r指向q結點即可。而在選項D由,r- next=q,這時r指向的節點為q;p-next r,這時p指向的節點為r;q-next=r-next,因為r節點已經指向q,所以執行這個語句後q又指向q,所以選項D不正確。
26.B。【解析】在第1次外層for循環中,首先x++得到x=1。進入到內層for循環,只有循環j的值為奇數時,變量x的值才自加1,所以在內層for循環執行過程中,變量x的值自加兩次,當退出內層for循環時,x=3,然後執行x++,得到x=4。在進入執行第2次外層for循環中,首先x++得到x=5。進入到內層for循環,只有循環變量j的值為奇數時,變量x的值才自加1,所以在內層for循環執行過程中,變量X的值自加1兩次,當退出內層for循環時,x=7,然後執行x++,得到x=8,所以打印輸出變量x的值為8。
27.C。【解析】子函數fun1(double a)的功能是返回a的平方值的整數部分。子函數fun2(double x,double y)的功能是返回X的平方值的整數部分與Y的平方值的整數部分的和。又因為題中變量w的定義為double型,函數fun(2) 的定義為int型,按照各類數值型數據間的混合運算,整型數據被轉換為實型數據。所以雙精度型變量w的值為5.O。
28.C。【解析】在for循環語句中自變量i從0開始,每次自加2,執行s+=*(t+i)語句,因為C語言規定數組名做表達式相當於數組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數組的第i+1個元素。所以程序運行的結果是1+3+5+7+9=25,即變量S的值等於25。
29.A。【解析】本題在函數int fun(int n)的定義中又出現了對函數fun的調用,所以函數fun是遞歸函數。因而在主函數中調用x=fun(x)時,當輸入10賦給變量x時,遞歸調用的過程為
fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)
=10+9++8++7++fun(6)=10+9++8+7+6+fun (6)
=10+9++8+7+6+5+fun(4)
=10+9++8+7+6+5+4+fun(3)
=10+9++8+7+6+5+4+3+fun(2)
=10+9++8+7+6+5+4+3+2+fun(1)
=10+9++8+7+6+5+4+3+2=55
c語言 多項選擇題
BC
AC
BD
BD
AB
ABD
CD
BCD
AC
ACD
求c語言試題及答案!急啊!
c語言考試題(一)
一、 單項選擇題(每題2分,共20分)
1、以下選項中屬於C語言的數據類型是( )
A.複數型 B.邏輯型 C.集合型 D.雙精度型
2、一個C程序的執行是從( )
A.main()函數開始,直到main()函數結束 B.第一個函數開始,直到最後一個函數結束
C.第一個語句開始,直到最後一個語句結束 D.main()函數開始,直到最後一個函數結束
3、設有語句int a=3;則執行語句a+=a-=a*a;後,變量a的值是( )
A.3 B.0C.-12 D.9
4、若有 char c[5]={‘c’,’d’,’\0′,’e’,’\0′};則執行語句printf(“%s”,c);結果是( )。
A.cd\0e B.’c”d’ C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;則下列表達式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替換不正確的敘述( ).
A.宏替換不佔用運行時間 B.宏名無類型
C.宏替換隻是字符串替換 D.宏名必須用大寫字母表示
7、執行char str[10]=”Ch\nina”; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的輸出結果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf(“%d”,POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定義int a[3][4][2];後,第10個元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的輸出結果是:( )
typedef struct
{long x[2];brshort y[4];brchar z[8];br}MYTYPE;
MYTYPE a;
main()
{ printf(“%d\n”,sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空題(每空1分,共11分)
1、字符串”A”在內存中佔用的字節數為 。
2、C語言中的標識符只能由字母、下劃線和 組成。
3、若有定義語句“ int a=25,b=14,c=19;”,以下語句的執行結果是
if(a++=25b–=2c++) printf(“***a=%d,b=%d,c=%d\n”,a,b,c);
else printf(“###a=%d,b=%d,c=%d\n”,a,b,c);
4、有如下定義a[]=”B\172\\\’a%%”;則執行語句printf(“%d”,strlen(a));的結果為 。
5、若有定義:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i4;i++) p[i]=a[i*3];則*(*(p+1)+2)的值為 ,*p[2]的值為 。若數組的首地址為2000,則p[1]指向的地址為 。
6、設a=2,b=3,x=3.5,y=2.5,則表達式(float)(a+b)/2+(int)x%(int)y 的結果是 。
7、設x、y都是int型變量,初值都為1,則執行表達式:–xy++後,y的值為 。
8、語句for(i=1;i==10;i++)continue;循環的次數是 。
9、以下程序輸出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={“AA”,”BB”,”CC”,”DD”}; printf(“%s%s%s\n”,aa[em1],aa[em2],aa[em3]);
}
三、 寫程序結果(每題5分,共35分)
1、#include
main()
{int x,y,z;brx=1,y=2,z=3; x+=y+=z;brprintf(“1:%d\n”,z+=xy?x++:y++);brx=0x02ff;y=0xff00;brprintf(“2:%d\n”,(xy)4|0x005f);brx=y=z=-1; ++x||++y++z;brprintf(“3:%d,%d,%d\n”,x,y,z);br}
2、#define f(x) x*x
main()
{int a=6,b=2,c;brc=f(a+b)/f(b);brprintf(“%d\n”,c);br}
3、fun(int k)
{ printf(“%d”,k);
if(k0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf(“\n”); }
4、#include
main()
{int x=1,y=0;brswitch(x)br{ case 1:brswitch(y)br{ case 0:printf(“first\n”);break;brcase 1:printf(“second\n”);break;br}
case 2:printf(“third\n”);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf(“%d”,m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,s[0],2,s[1]};
main()
{ p=a; printf(“%d,”,p-x);
printf(“%d\n”,++(*(++p)-y));
}
7、假定在當前盤目錄下有2個文本文件,其名稱和內容如下:
文件名: a1.txt a2.txt
內容: ABCDEF# abcdef#
#include “stdio.h”
main()
{FILE *fp;brvoid fc();brif((fp=fopen(“a1.txt”,”r”))==NULL)br{printf(“Can not open file!\n”); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen(“a2.txt”,”r”))==NULL)
{printf(“Can not open file!\n”); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;brwhile((c=fgetc(fp1))!=’#’)putchar(c);br}
四、 程序填空(每空2分,共14分)
1、下面程序求矩陣a的主對角線元素之和,請填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf(“sum=%d\n”,sum);
}
2、下列函數coy把字符數組S2中的全部字符複製到字符數組S1中, 複製時’\0’也要複製過去,’\0’後面的字符不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是將字符串a中的下標為奇數的元素由小到大排序,其他元素不變,請填空。
main()
{ char a[]=”students”,t; int i,j;
for(i=1;i7;i+=2)
for(j=i+2;j8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}
c語言考試題(二)
一. 填空題(每題2分,共20分)
1. C語言基本數據類型有:_______________________________;
構造類型有:_____________________________________。 P.13
2. C語言源程序注注釋符號是:________________________________,
為表明層次結構,C語言源程序通常採用_____________________格式編寫。P.4
3. 源程序TEST.C經編譯產生的目標文件是:________________________;
經連接處理後,產生的可執行文件是:__________________________。
4. strlen(“1234 \ 0xy)的值為:_____________________________;
sizeof(float)的值為:____________________________
5. 二維數組a[10] [50]最後一行的首地址為:_________________________;
最後一個元素的首地址為:____________________________________。
6. C標準庫函數中,數學函數的原型在:________________頭文件中,自定義頭文件D :\ MYC \ MY . H應如何包含到源程序文件中:_________________________。P.130
7. 已知函數定義為:int stat(int a,float *p)
{……………}
則此函數的兩個參數類型分別是_______________ 、 _____________________。
8. 設int x,y,z=4;
x=y=++z;
x=(yz)?x+2;x++;則x的值是:_________;
設int a=0,b=0,c=0;c=++a | | b++; ,則a、b、c值分別是:_____________。
9. 與if (x=0) 等價的寫法是if ( ! x );
判斷兩個(float)變量x,z是否相等一般:if ( fabc(x-z)1e-6 )。
10.已知賦值語句zhang.year=1985;可判斷zhang是_______________類型的變量;
定義文件指針的C語句是:_________________________________。
二. 單項選擇題 (每題1分,共10分)
1. 組成C程序的基本單位是____________________________。
A.函數 B.標識符 C.表達式 D.語句
2. 設int類型的數據長度為2字節,則該類型數據的取值範圍是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767
3. 在C語言中,邏輯值“真”是用_____________________表示的。
A.預定義為真值的宏 B.非零數
C.正數 D.非零整數
4. C語言對於嵌套if語句規定else總是與_____________________匹配。
A.與最外層的if B.與之前最近的if
C.與之前最近的不帶else的if D.與最近的{ }之前的if
5. 數組定義char a[10]={`a`,`b`,`c`}:包括了幾個元素____________________。
A.3 B.9 C.4 D.10
6. 數組名作為實參傳給被調用的函數時,形參獲得的是_____________________。
A.該數組第一個元素的值 B.該數組所有元素的值
C.該數組第一個元素的首地址 D.該數組所有元素的首地址
7. 為表示關係x ≥ y ≥z,正確的C語言表達式為_________________________。
A.(x=y=z) B.(x=y)AND(y=z)
C.(x=y)(y=z) D.(xy)(y=z)
8. 根據定義int a[ ]={1,2,3},i,*p=a; 從語法分析_________________是不正確的。
A. a[p-a] B.*(a) C.p D.*(*(a+i))
9. 若有語句scanf(“%d%d”,a,b);要使變量a,b分別得到12和34;正確的輸入形式為____________________________。
A.12 34 B.12,34 C.1234 D.12:34
10.union uex {int i;float f;char c;}ex;則sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7
三. 分析程序,寫出運行結果。(每題4分,共20分)
1. 源程序如下,運行時假定鍵盤輸入字符串為“2004“
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字符型數字*/
{
if (c=`0`c=`9` )
n = n*10 + c- `0` ; /*數字*/
}
printf(“value=%d|n” ,n);
}
結果為: value=2004 。
2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i9;i++)
if(scoreiMax)
{
iPos=i;
iMax=score[iPox];
}
printf(“num=%d,score=%d”,num[iPos];score[iPos]);
結果為: num=311, score=93 。
3. 源程序如下,運行時假定鍵盤輸入數據為:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i10;i++)
scanf(“%d“,p++);
for(p=a;p SPAN;p++)
if (*p%2)printf(“%3d”,*p);
}
結果為: 1 3 5 7 9 。
4. 源程序如下,兩次運行,分別輸入數據13和21
#include
#include
void main(void)
{
int n,s;
scant (“%d”,n);
s=panduan( n);
if(s==1)printf(“yes\n”);
else printf(“no\n);
}
int panduan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j=k,j++)
{
if(n%j==0) break;
}
if(jk) retum(1);
else retum(0);
}
結果為 yes
no
5.源程序如下,運行時假定鍵盤輸入字符為:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str=`a`str=`z`) str-=32;
else if (str=`A`str=`Z`) str+=32;
puts(str);
}
結果為: aXbYcZ 。
四. 下列程序中每個劃線處有一個錯誤,改正劃線 中的錯誤,使其實現題目要求。(每體4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正為_________________________。
void sum (void) 改正為_________________________。
{
int s,i;
for (s=0,i=1;i=100;i++)
{
s=s+ i ++; 改正為__________________________。
}
printf (“s=%f”,s) 改正為__________________________。
}
2. 源程序實現求x
#include
double pow(float . int) 改正為_________________________。
void main(void)
{
int i, n;
float x;
scanf (“%f,%d”,x,n);
for (i=1; i9;i++)
printf(“%d,%e\n”, i, pow(i,x);
} 改正為______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正為______________________。
for (i=1; i i++)改正為_______________________。
p*=x;
retum(p);
}
3. 源程序實現排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i9; i++)
{
iMin=0; 改正為_______________________。
for (j=i+1; j10;j++)
if(a[iMin] iMin=”j;”改正為_______________________。
if (iMin==i) 改正為_________________________。
{ iTemp=a;
a[iMin]=a; 改正為_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i10; i++)
printf(“%4d”, a):
}
4. 源程序為求平均值。
#include
void main(void)
{
int i, sum; 改正為____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i10; i++) 改正為____________________。
{
scanf(“%d”, p++);
sum+= *p; 改正為____________________。
}
avg = sum/ 10; 改正為___________________。
printf(“avg=%f”, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1項之和
#include
void main(void
{
float exp , x , t;
int i, n;
scanf(“%f, %d”,x, n);
t=0; 改正為___________________。
exp=1.0;
for(i=1 ; i=n; i++)
{
if(t1e-6) loop; 改正為__________________。
t+=x/i; 改正為___________________。
exp*=t; 改正為___________________。
}
printf(“\n%15.6f”, exp);
}
五. 編程題 (每題6分,共30分)
1. 根據以下程序框架,編寫子函數,實現交換兩個整型變量x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(“%d, %d”, x, y);
swap( x, y);
printf(“%d, %d”, x, y);
}
void swap( )
{
}
2. 設某班人數36人,參加C語言考試,用一維數組score[36]存放考試成績,已給出一部分程序,完善以下程序,使其實現統計並輸出不及格人數及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i36; i++)
{
scanf(“%f”, score);
}
3. 完善以下程序使其實現由鍵盤任意輸入一串字符,統計其中大寫字母個數iA、小寫字母個數ia、其他字符個數iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;
}
4. 完善以下程序使其實現求方陣主和輔對角線元素之和及其轉置矩陣,設方陣用二維數組a表示,轉置矩陣用t表示,sl和s2表示主和輔對角線元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(“%d, %d,\n”,s1, s2);
for(i=0; i3; i++)
for(j=0; j3; j++)
printf(“%3d”, t [j]);
}
5. 已知字符數組str[80],編寫返回指針的子函數,實現在其中查找字符ch首次出現的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(“%c”, c);
p=lstrchar(str,c);
if(p==NULL) printf(“char %c not found\n”c);
else printf(“The position is %d”, p-str);
char “lstrchar( )
{ }
歷年全國計算機二級考試c語言真題及答案
C語言的4個選擇題,幫忙解釋一下答案,謝謝!
第一題:
c=getchar()表示計算機獲得一個輸入的字符並把它賦給int型的c(在1~256之間int和char可以相互賦值).首先接收字符2,把2賦給c,while(c=getchar())!=’\n’)表示只要輸入的字符不是enter鍵就執行while裡面的循環體。 而
switch(c-‘2’)
{
case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default: putchar(c+2);break;
}
的執行過程是這樣的:首先計算‘c’-2的值,只要該值與下面的那個case 後的表達式相同就執行其後的語句,比如說讀入的第一個字符2,2-2=0,此時執行case 0 後面的語句,而case 0與case 1後面的語句是同一個語句,所以執行 putchar(c+4);輸出6,由於
case 1: putchar(c+4);後面沒有break;語句,所以繼續執行其後語句,直到遇到break語句或執行完所有語句為止,為此第二個也輸出6,因為case 2後有break語句,所以結束第一次循環,之後輸入的473的原理也是這樣的。
第二題:
for循環的一般形式是for(表達式1;表達式2;表達式3){循環體}表達式1相當於賦初值,其作用只有一次,而表達式2是判斷條件,只要表達式2不為0就執行循環體,執行完循環體後在執行表達式3,這是一個完整的循環,接着又判斷表達式2的值是否為零,不為零,又執行循環體,……
因為此題中i=2不等於0,所以表達式2 的值為0;因此一次也不執行。
第三題:
參閱第二題解析。
第四題:
*p=x[1][1];表示把元素5的地址賦給了指針p;
for(i=0;i4;i+=2)printf(“%d “,p[i]);
第一次,i=0;輸出p[1][1],第二次i=2,此時使p向後移動兩個元素,因此輸出3
20道C語言選擇題,請教高手
您好,很高興回答你的問題!
20道c語言選擇題如下(附答案):
1.設int m1=5,m2=3;表達式m1m2?(m1=1): (m2=-1)運算後,m1和m2的值分別是
A. 1和-1
B. 1和3
C. 5和-1
D. 5和3
答案:B
2.設float m=4.0,n=4.0;使m為10.0的表達式是
A. m-=n*2.5
B. m/=n+9
C. m*=n-6
D. m+=n+2
答案:D
3.表達式52||5|2的值是
A. 0
B. 1
C. 2
D. 3
答案:B
4.設int a[10];則下面哪個不是對a中的數組元素的引用
A. a[5]
B. *(a+1)
C. a[10-10]
D. a(5)
答案:D
5.設char c[5]={’a’,’b’,’\0’,’c’,’\0’};則printf(“%s”,c);的輸出是
A. ’a’’b’
B. ab
C. abc
D. “ab\0c”
答案:B
6.設double *p[6];則
A.p是指向double型變量的指針
B.p是double型數組
C.p是指針數組,其元素是指向double型變量的指針
D.p是指向6個double型數據的一維數組的指針
答案:C
7.設char *s=”china”;則printf (“%s,%c,%c\n”,s,*s,s[3]);的輸出是
A. china,c,n
B. china,china,i
C. c,c,n
D. china,china,n
答案:A
8.設有定義struct ru{long x;float y;}time,*timep=time;則對time中成員x的正確引用是
A. ru.time.x
B. timep.x
C. (*timep).x
D. time-x
答案:C
9.執行下列程序
#define R 0.5
#define AREA(x) R*x*x
main()
{int a=1,b=2;
printf (“%5.1f\n”,AREA(a+b));
}
後輸出結果是
A. 0.0
B. 0.5
C. 3.5
D. 4.5
答案:D
10.定義一個結構體變量時,系統分配給他的內存單元是:
A. 全部成員所需的內存量之和
B. 全部成員所需的內存量的最大值
C. 固定的容量
D. 結構體中第一個成員所需的容量
答案:A
11.設有變量定義int a=3,b=5,c=10;下列表達式的值是( )
(++a*b–)/2.0*c
A.100.0
B.80.0
C.75.0
D.60.0
答案:A
12.在計算機上可以直接運行的程序是( )
A.機器語言程序
B.高級語言程序
C.彙編語言程序
D.C語言程序
答案:A
13.設有變量定義int x=4,y,z; 則執行y=z=–x;x=y==z;後,變量x的值是( )
A.0
B.1
C.3
D.4
答案:B
14.執行以下語句a=b=c=1;++a–b||–c;後,變量a、b、c的值依次是( )
A.2,0,0
B.2,0,1
C.2,1,0
D.2,1,1
答案:A
15.下列( )是合法的整形常量
A.456.31
B.0100
C.4e3
D.0x
答案:B
16.設有變量定義int x=5,n=5;計算表達式x+=n++後,變量x,n的值分別是( )
A.11,6
B.10,5
C.10,6
D.5,6
答案:C
17.下列( )是正確的數組定義
A.long y[4]={1,2,3,4,5};
B.float x[][3]={0,1,2,3,4};
C.int s[3][]={{1},{2},{3}};
D.char z[][2]={};
答案:B
18.設有變量定義int b[5]; ( )能正確表示數組b中某個數據元素
A.b[5]
B.b+2
C.*(b+2)
D.*(*(b+3))
答案:C
19.以下不合法的用戶標識符是
A. f2_G3
B. If
C. 4d
D. _8
答案:C
20.定義一個共用體變量時,系統分配給他的內存單元是:
A. 全部成員所需的內存量之和
B. 全部成員所需的內存量的最大值
C. 固定的容量
D. 共用體中第一個成員所需的容量
答案:B
C語言選擇題,知道的請告訴我答案
D不可以用FILE定義指向二進制文件的文件指針。答案:D解析:概念的理解,參考課本。FILE可以指向二進制和文本文件。
原創文章,作者:GUNW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139570.html