版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
往年c語言程序設(shè)計(jì)專升本題目(-)
(總分100分,考試時(shí)長(zhǎng)9C分鐘)
一、單項(xiàng)選擇題(每小題2分,共40分)
1、若需要利用形參直接訪問實(shí)參,則應(yīng)把形參變量說明為()參數(shù)。
A、指針
B、引用
C、傳值
D、常值
2、可在c程序中用作用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符是o
A、voiddefineWORD
B、as_b3_123If
C、For-abccase
D、2cDOSIG
3、分析下列程序:
#include<stdio.h>
main()
{-余
int*pl,*p2,*p;
inta=6,b=9;
pl=&a;
p2=&,b;
if(a<b)
P二pi;
pl=p2;
p2二p;
}
printf(〃%d,%d〃,xpl,*p2);
printf(〃/d,%d〃,a,b);
)
程序的輸出結(jié)果為.O
A、9,66,9
B、6,99,6
C、6,96,9
D、9,69,6
4、卜面程序的運(yùn)行結(jié)果是o
main()
inti,j,a=0:
for(i=0;i<2;i++)
for(j=0;j<4;j++)
(
if(j%2)break;
a++;
}
a++;
}
printf(〃%d\n〃,a);
)
A、4
B、5
C、6
D、7
5、以下敘述中不正確的是。
A、空字符串(即兩個(gè)雙引號(hào)連寫)只占一個(gè)存儲(chǔ)單元
B、字符型常量可以放在字符型變量中
C、字符型常量可以放作字符串變量中
D、字符型常量可以與整數(shù)混合運(yùn)算,而字符串常量不可以
6、若有定義"floata=25,b,*p=&b;",則下列對(duì)賦值語句〃*p=a;"和"p=&a;〃的正
確解釋為()。
A、兩個(gè)語句都是將變量a的值賦予變量P
B、*p=a是使P指向變量a,而p二&a是將變量的值賦予變量指針P
C、*p=a是將變量a的值賦予變量b,而&a是使P指向變量a
D、兩個(gè)語句都是使P指向變量a
7、若有說明語句chara[]二〃itismine”:
char*p=〃itisnine”;
則以F不正確的敘述是。
A、a+1表示的是字符t白湎址
B、p指向另外的字符串時(shí),字符串的長(zhǎng)度不受限制
C、p變量中存放的地址值可以改變
D、a中只能存放10個(gè)字符
8、編寫c語言程序并上機(jī)調(diào)試運(yùn)行的一般過程是o
A、編輯■*編譯-*連接-*運(yùn)行
B、編譯一編輯一連接一運(yùn)行
C、編輯一連接一編譯一運(yùn)行
D、編譯一連接一編輯一運(yùn)行
9、宏定義用于將一個(gè)標(biāo)識(shí)符定義為一個(gè)
A、常量
B、字符串
C、整數(shù)
D、長(zhǎng)整數(shù)
10、int(*p)[6];它的含義為o
A、具有6個(gè)元素的一維數(shù)組
B、定義了一個(gè)指向具有6個(gè)元素的一維數(shù)組的行指針變量
C、指向整型指針變量
D、指向6個(gè)整數(shù)中的?個(gè)的地址
11、以下敘述中不正確的是。
A、在C中,調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳送給形參,形參的值不能傳送給
實(shí)參
B、在C的函數(shù)中,最好使用全局變量
C、在C中,形式參數(shù)只是局限于所在函數(shù)
D、在C中,函數(shù)名的存儲(chǔ)類別為外部
12>有輸入語句:scanf(〃a=%d,b=%d,c=%d〃,&a,&b,&c);
為使變量a的值為1,b為3,c為2,從鍵盤輸入數(shù)據(jù)的正確形式應(yīng)當(dāng)是o
(注:」表示空格)
A、132V回車》
B、1,3,2V回車,
C、a=lb=3-c=2V回車〉
D、a=l,b=3,c=2V回車,
13、以下各語句或語句組中,正確的操作是o
A、chars[3]=〃abcde〃;
char*s;gets(s);
char*s;s=〃abcde”;
,,,,
D、chars[5];scanf(%s)&s);
14、有以下程序
^include<studio.h>
#include<string.h>
structa
(七餐歲
inta;
charb[10];
doublec;
};
voidf(structat);
main()
(
structaa={1001,"zhangdan,1098.0};
f(a);
pringt("%d,%s,%6.lf\n",a.a,a.b,a.c);
}
voidf(structat)
(
t.a=1002;
strcpy(t.b,"changrong");
t.c=1202.0;
)
程序運(yùn)行后的輸出結(jié)果是。
A、1001,ZhangDa,1098.0
1002,ChangRong,1202.0
C、1001,ChangRong,1098.0
D、1002,ZhangDa,1202.0
15、以卜.4組用戶定義標(biāo)識(shí)符中,全部合法的一組是——
A、_main
enclude
sin
B.Tf
-max
turbo
C、txt
REAL
3C0M
D、int
k2
_001
16、以下程序段的輸出結(jié)果為
charc□二〃abc〃;
inti=0;
do;while(c[i++]!='\0');printfi-1);
A、abc
B、ab
C、2
D、3
17、若有以卜.說明和語句:
structst
intn;
char*ch;
}
I
structsta[3]
(
5,"abc",7,"def〃,9,〃ghk〃
)
,*P=a則值為6的表達(dá)式是,o
A、p++->n
B、p->n++
C、(禮n++
D>++p->n
18、有以卜.程序intf(intb[][4])
inti,j,s=0;
for(j=0;j<4;j+~)
(
i二j;
if(i>2)i=3-j;
s+=b[i][j];
}
returns;
)
main()
{
inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf(〃/d\n〃,f:a));
}
執(zhí)行后的輸出結(jié)果是_______O
A、12
B、11
C、18
D、16
19、若有定義:int43][5];則以下不能正確表示該數(shù)組元素的表達(dá)式是
A、*(*w+3)
B、*(w+l)[4]
C、*(*(w+1))
D、*(&w[0][0]+l)
20、以下對(duì)c語言中共用體類型數(shù)據(jù)的敘述正確的是
A、可以對(duì)共用體變量名直接賦值
B、一個(gè)共用體變量中可以同時(shí)存放其所有成員
C、一個(gè)共用體變量中不可以同時(shí)存放其所有成員
D、共用體類型定義中不能出現(xiàn)結(jié)構(gòu)體類型的成員
二、填空題(每小題2分,共20分)
1、#include<stdio.h>
(
inti=010,j=10;
printf("%d,%d\n”,++i,j一);
}
2、符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和。
3、用&&寫出判斷一個(gè)字母是否為大、小寫的語句
4、在一個(gè)c源程序中,注釋部分兩側(cè)的分界符分別為—和—o
5、下列程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。
intn=0,ch;
ch=getchar();
while()
{
if()n++;
c=getchar();
)
6、以下程序運(yùn)行的結(jié)果為。
^include<stdio.h>
intd=1;
fun(intp)
(
intd=5;
d+=p++;
pr*i(〃*d,〃,d);
)r|g|J繆—
voidmain()
(
inta=3;
fun(a);
cl+=a++;
,,,,
printf(%d\n,d);
)
7、字符讀寫函數(shù)是用于從磁盤文件中讀出一個(gè)字符。
8、以下程序功能是:借助指針變量找出數(shù)組元素中的最大值及其元素的下標(biāo)值。
請(qǐng)?zhí)羁铡?/p>
ttinclude<stdio.h>
main()
{歲洛,遂
inta[10],*p,*s:
for(p=a;p-a<10:p++)scanf("%d",p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)s=;
printf("index=%d\n,s-a);
)
9、若從鍵盤輸入58,則以下程序輸出的結(jié)果是o
main()
(
inta;
scanf(〃%d〃,&a);
if(a>50)printf(〃%d",a);
if(a>40)printfa);
if(a>30)printf(〃%d〃,a);
)
10^a=3;
a+=(a<l)?a:1;
printf("%d〃,a);
結(jié)果是________。
三、編程題(每小題分,共40分)
1、編寫程序:判斷101到200之間的素?cái)?shù)。(本題10分)
2、編寫程序:從鍵盤上輸入一個(gè)數(shù)字組成的字符串(字符串長(zhǎng)度小于8),將該字
符串轉(zhuǎn)換成一個(gè)十進(jìn)制數(shù)
例如:從鍵盤上輸入2345,則程序運(yùn)行的結(jié)果應(yīng)當(dāng)為:"2345()(本題14分)
3、題目描述
萬里十佳歌手比賽終于開始了,評(píng)委席坐了N(N大于等丁-3,并且N小于80)個(gè)
評(píng)委,他們商量了很久,終于找出一個(gè)公正合理的評(píng)分方法。每次歌手唱完后,
每個(gè)評(píng)委自己打一個(gè)分,然后在N個(gè)評(píng)委的打分中,去掉一個(gè)最高分,一個(gè)最低
分。然后再把剩下的評(píng)委的打分求平均值~。
但是問題是他們嫌每次拿計(jì)算器按實(shí)在太煩。作為一名計(jì)算機(jī)專業(yè)學(xué)生~你用個(gè)
程序幫幫他們搞定吧。
輸入
輸入有多組數(shù)據(jù)。每組2行,第一行是一個(gè)N,代表有N個(gè)評(píng)委。然后第二行有
N個(gè)數(shù),每個(gè)數(shù)用空格隔開,代表每個(gè)評(píng)委的打分。
當(dāng)輸入的N為0的時(shí)候結(jié)束輸入。
輸出
對(duì)于每組輸入,輸入最終這個(gè)選手的得分(小數(shù)點(diǎn)后面保留2位有效數(shù)字)。
樣例輸入
3
743634
7
16972726749688
樣例輸出
36.00
62.20(本題16分)
參考答案
一、單項(xiàng)選擇題
1、B
【解析】在進(jìn)行參數(shù)傳遞時(shí),引用參數(shù)是利用形參直接訪問實(shí)參,形參的變化直接影響實(shí)參
的變化,而傳值參數(shù)不會(huì)影響實(shí)參變量。
2、B
【解析】C語言規(guī)定,標(biāo)識(shí)符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字
母或下劃線,關(guān)鍵字不能用作用戶標(biāo)識(shí)符。
3、A
【解析】通過pl二&a,p2=&b分別將a、b的地址賦給指針pl、p2,接著執(zhí)行if語句,發(fā)
現(xiàn)a<b成立,則通過交換pl、p2的值,即交換a、b所在存儲(chǔ)單元的地址,但是a、b的
值并沒有發(fā)生變化。
4、A
5、C
6、C
7、D
【解析】解析:本題考杳字符串?dāng)?shù)組和指針的引用方式°在C語言中.系統(tǒng)在每個(gè)字符串或
數(shù)組的最后自動(dòng)加入一個(gè)字符'\0',作為字符的結(jié)束標(biāo)志,在本題中,chara口二“Itismire”;
所表示的。字符串實(shí)際含有"個(gè)字符。
8、A
9、B
【解析】宏定義用于將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串
10、B
11、B
【解析】本題也是考查C語言中函數(shù)的概念及其使用。函數(shù)調(diào)用時(shí),值可以雙向傳遞,并沒
有限制使用全局變量還是局部變量,需要根據(jù)程序的邏輯需要進(jìn)行選擇。
12、D
13、C
【解析】字符數(shù)組可以使用字符串進(jìn)行初始化,但數(shù)組K度應(yīng)足夠容納該字符串,選項(xiàng)A不
滿足要求。
gets。函數(shù)用于讀取字符串,并將字符串保存到參數(shù)代表的空間中,選項(xiàng)B中,只定義了字
符指針,沒有空間存放字符串信息。
選項(xiàng)D定義了長(zhǎng)度為5的字符數(shù)組,數(shù)組名稱代表數(shù)組的首地址,使用scanf()讀取字符串
時(shí),參數(shù)為數(shù)組名即可。
14、A
15、A
16、D
17、D
【解析】根據(jù)結(jié)構(gòu)變量的存儲(chǔ)特點(diǎn),P+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的一個(gè)元素所占
的字節(jié)數(shù),即P++使p由a[0]指向a[l]起始地址。本題++p->n得到p指向的結(jié)構(gòu)體變量
中成員n的值使之加L因?yàn)閜指向數(shù)組a起始地圻,p->n的值為5.再執(zhí)行自加1運(yùn)行,
結(jié)果為6。
18、D
19、B
【解析】本題考查的是通過指針引用二維數(shù)組元素。通過一維數(shù)組名或指向一維數(shù)組元素的
指針來引用數(shù)組元素有兩種寫法:a[!]W*(a+i),它們是等價(jià)的。這是一種運(yùn)算符之間的等價(jià)
轉(zhuǎn)換,就好像a-(b-c)等價(jià)于a-b+c-樣。知道了這種轉(zhuǎn)換,可以將之?dāng)U展到二維數(shù)組甚至任
意維數(shù)組上來。因?yàn)榭谶\(yùn)算符的結(jié)合性是從左至右的,所以等價(jià)于此時(shí)可以
先將任意一個(gè)[運(yùn)算符轉(zhuǎn)換為指針形式為:(*(w+i))[j]或*(w[i]+j),或者同時(shí)轉(zhuǎn)換:*(*(w+i)+j)。
上述幾種形式都完全等價(jià)于w[i]U]o
20、C
二、填空題
1、執(zhí)行結(jié)果:9,10。
2、['順序結(jié)構(gòu)']
3、c>='a'&&c<='z'
4、[/*,*/]
5、['ch!二’\\n'ch>=0'0'\'&&ch<='9'']
6、8,4
7、fgetc#fgetc()#getc#getc()
8、p
9、[,5858581]
10、4
三、編程題
1、//include<stdio.h>
intmain()
(彩
inti.j;
intcount=0;
for(i=101;i<=200;i++)
(
for(j=2;j<i;j++)
(
//如果j能被i整除在跳出循環(huán)
if(i%j==0)
break;
)
//判斷循環(huán)是否提前跳出,如果j<i說明在2T之,皿i有可整除的數(shù)
if(j>=i)
(
count十十;
printf("%d",i);
〃換行,用count計(jì)數(shù),每五個(gè)數(shù)換行
if(count%5==0)
printf("\n");
)
)
return0;
)
【解析】判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此
數(shù)不是素?cái)?shù),反之是素?cái)?shù),
2、//include"stdio.h"
main()
(
chars[10];
inti;
longintn=0;
scanf("%s",s):
for(i=0;i<strlen(s);i++)
n=n*10+s[i]-'0";
printf("n=%ld\n",n);
)
3、#include<stdio.h>
intmain(){
intt.nj.max,min,sum;
intscore[102]={0};
while(scanf("%d",&n)X
if(n==O)break;
for(i=0;i<n;++i)
scanf("%d",&score[i]);
max=-l;
min=101;
sum=0;
for(i=0;i<n;++i){
if(score[i]>max)
max=score[i];
if(score[i]<min)
min=score[i];
sum+=score[i];
}
sum-=max+min;
printf("%.2IAn",(double)sum/(n-2));
)
returnO;
)
往年C語言程序設(shè)計(jì)專升本題目(二)
(總分100分,考試時(shí)長(zhǎng)90分鐘)
一、單項(xiàng)選擇題(每小題2分,共40分)
1、計(jì)算機(jī)中的數(shù)有浮點(diǎn)和定點(diǎn)兩種表示,浮點(diǎn)表示的數(shù),通常由兩部分組成,即
_0
A、指數(shù)和基數(shù)
B、尾數(shù)和小數(shù)
C、階碼和尾數(shù)
D、整數(shù)和小數(shù)
2、設(shè)有以下語句:intx=10;x+=3+x%(-3),貝I」x的值是_
A、14
B、15
C、11
D、12
3、以下敘述中正確的是________o
A、對(duì)于邏輯表達(dá)式:a++|b++,設(shè)a的值為1,則求解表達(dá)式的值后,b的值
會(huì)發(fā)生改變
'B、對(duì)于邏輯表達(dá)式:a++&&b++,設(shè)a的值為0,則求解表達(dá)式的值后,b的值
會(huì)發(fā)生改變
C、else不是一條獨(dú)立的語句,它只是if語句的一部分
D、關(guān)系運(yùn)算符的結(jié)果有三種
4、下列關(guān)于break語句的描述,不正確的是一
A、break語句可用在循環(huán)體內(nèi),它將使執(zhí)行流程跳出本層循環(huán)體
Bsbreak語句可用在switch語句中,它將使執(zhí)行流程跳出當(dāng)前switch語句
C、break語句可用在訂語句中,它將使執(zhí)行流程跳出當(dāng)前if語句
D、break語句在一層循環(huán)體中可以出現(xiàn)多次
5、以下對(duì)c語言函數(shù)的有關(guān)描述中,正確的是o
A、在C語言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳給形參,形參的值不能傳送給
實(shí)參
B、C函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C、函數(shù)必須有返回值,否則不能使用函數(shù)
D、函數(shù)必須有返回值,返回值類型不定
6、設(shè)inti=3,j=3;表達(dá)式i+++j的值是。
A、6
B、7
C、8
D、9
7、inta[10];
合法的數(shù)組元素的最小下標(biāo)值為一
A、10
B、9
C、1
D、0
8、C源程序中的命令#includc與#《10門11。是在階段被處理的。
A、預(yù)處理
B、編譯
C、連接
D、執(zhí)行
9、以下語句中,不能實(shí)現(xiàn)回車換行的是()。
A、printf(z,\n,z);
putchar("\n〃);
C^fprintf(stdout,,,\n,/);
D>fwrit6(〃\n〃,1,1,stdout);
10、以下數(shù)組定義中不正確的是.
A、inta[2][3];
B、intb[][3]={0,1,2,3};
C、intc[100][100]={0};
D、inta[3][]={{1,2},{1,2,3},{1,2,3,4}};
11、以下敘述中錯(cuò)誤的是0
A、在一個(gè)程序中,每個(gè)模塊均可以獨(dú)立編譯運(yùn)行
B、程序“模塊化”有利于任務(wù)的分解簡(jiǎn)化
C、允許對(duì)函數(shù)單獨(dú)進(jìn)行編譯,是C語言實(shí)現(xiàn)“模塊化”的基礎(chǔ)
D、采用模塊化結(jié)構(gòu),可以提高編程效率
12、以下敘述中正確的是。
A、轉(zhuǎn)義字符要用雙引號(hào)括起來,以便與普通的字符常量區(qū)分開
B、字符常量在內(nèi)存中占2個(gè)字節(jié)
C、字符常量需要月單引號(hào)括起來
D、字符常量是不能進(jìn)行關(guān)系運(yùn)算的
13、有以下程序:
#include<stdio.h>
intf(intt[],intn;;
main(){
inta[4]=l,2,3,4,s;
s=f(a,2);
printf(〃%d\n〃,s);
}
intf(intt[],intn;{
if((n>0)&&(n<5)^
returnt[n+l]+f3nT);
elsereturn0;
)
程序運(yùn)行后的輸出結(jié)果是_______。
A、4
B、7
C、10
D、6
14、以下選項(xiàng)中,能定義m為合法的結(jié)構(gòu)體變量的是____。
A、typcdefstructabc{
doublea;charb;}m;
B、struct{
doublea;charb;)m;
C、structABC{
doublea;charb;}ABCm;
D.typedefABC{
doublea;charb;)ABCm;
15、下面程序的運(yùn)行結(jié)果是。
#include<stdio.h>
main()
(
charch[7]={//12ab56,z);
inti,s=0;
for(i=0;ch[i]>=,0*<=,;i+=2)s=10*s+ch[i]->0>;
,,,,
printf(%d\n>s);
}
A、1
B、1256
C、12ab56
D、1256
16、下面程序的輸出結(jié)果是.
#include<stdio.h>
voidmain()
(
intx=3;
do
(
printf(z,%d”,x~=2);
)
while(!(-x));
)
A、1
B、1-2
C、30
D、是死循環(huán)
17、設(shè)有以下語句
typcdcfstructtt
(
charc;
inta[4];
)
cm;
則下面敘述中正確的是_____o
A、可以用TT定義結(jié)構(gòu)體變量
B、TT是struct類型的變量
C、可以用CIN定義結(jié)構(gòu)體變量
D、C1N是structTT類型的變量
18、執(zhí)行下面程序后,運(yùn)行結(jié)果是
^include<stdio.h>
voidmain()
(
intx=41,y=l;
if(x%3-0&&x%7~0)
{1
y+二x;
printf(〃y=%d\n〃,y);
)
else
(;
y二x;
printf(〃y=%d〃,y);
)
)
A、y=41
B、y=43
C、y二42
D>y=l
19、對(duì)f?定好的數(shù)組,系統(tǒng)會(huì)自動(dòng)為該數(shù)組分配內(nèi)存空間,charc[20]二{"hello
world”}對(duì)于c對(duì)應(yīng)的內(nèi)存中的地址編號(hào)是2000,則c[4]對(duì)應(yīng)的內(nèi)存地址的編
號(hào)為________o
A、2004
B、200A
C、2010
D、2008
20、若有以下語句:
typedefstructs
(
intg;
charh;
}t;
以下敘述中正確的是。
A、可用S定義結(jié)構(gòu)體變量
B、可用T定義結(jié)構(gòu)體變量
C、S是struct類型的變量
D、T是slruclS類型的變量
二、填空題(每小題2分,共20分)
1、已知〃floatx=0.5;inty=8;",則算術(shù)表達(dá)式〃(ini)(x+y/5)〃的值是
2、在C語言中的實(shí)型變量分為兩種類型,它們是和浮點(diǎn)型。
3、已知〃floatx=0.5:inty=13;則算術(shù)表達(dá)式〃x+y/5〃的值是。
4、若有〃inta[3][2]={{l,2},{3},{4,5}};
〃,則的值是o
5、執(zhí)行下列的程序段后,正確的結(jié)果是o
inti=5;
while(i=1)i-;
printfi);
6、有以下程序,請(qǐng)?zhí)羁铡?,程序的?zhí)行結(jié)果是一
main()
(:?I§11SiBW
intx=5,y;
y=++X*++X;
printf(〃y=%d\\n”,y);
)
floatfun(float)
main
套nflo逐atx,y號(hào);壁遨麋:JBlIi-
intflag;
printf("enterx:〃);
scanf(〃〃,&x);
flag=fun(x);
if()printf(z,x=%fisoutofrange.\n,z,x);
elseprintf(,zx=%f,v=%f\n/z,x,fun(x)):
)
fun(floatx;
nfloats;
if(abs(x)>1)return(2);
else
(
s=sqrt(l-xxx);
___________f
}
)
7、在c語言中,如果采用printf函數(shù)將整個(gè)字符串一次輸此那么對(duì)應(yīng)的格式控
制符為〃〃。
8、在c語言中,將字符串中大寫字母轉(zhuǎn)換成小寫字母的函數(shù)是
9、語句putchar(*a'+2);的輸出結(jié)果是。
10、以下程序的輸出結(jié)果是o
main()
(
intx=0;
sub(&x,8,1);
printf(〃%d\n〃,x;;
)
sub(int*a,intn,intk)
(
if(k<=n)sub(a,n/2,2*k);
*a+二k;
三、編程題(每小題分,共40分)
1、編寫程序:利用指針方法,輸入3個(gè)數(shù)a,b,c,按大小順序輸出。(本題10
分)
2、任意輸一行字符串(包括空格),求其長(zhǎng)度(不用strlen函數(shù))。(本題M
分)
3、編寫程序:用結(jié)構(gòu)體數(shù)組,學(xué)生信息由學(xué)號(hào)、姓名,成績(jī)組成,
數(shù)據(jù)如下:201513135157張三90
1)使用結(jié)構(gòu)體數(shù)組,將學(xué)生的數(shù)據(jù)按成績(jī)從高到低排序顯示到屏幕上
2)將學(xué)生中不及格學(xué)生的姓名顯示出來
3)寫一個(gè)函數(shù),獲取成績(jī)低于平均分的學(xué)生記錄并返回低于平均分的學(xué)生人數(shù)
(本題16分)
參考答案
一、單項(xiàng)選擇題
1、C
【解析】在計(jì)算機(jī)中,帶小數(shù)點(diǎn)的數(shù)通常有兩種表示方法,即定點(diǎn)數(shù)和浮點(diǎn)數(shù)。所謂浮點(diǎn)數(shù),
是指小數(shù)點(diǎn)位置可以浮動(dòng)的數(shù)。一個(gè)二進(jìn)制的浮點(diǎn)數(shù)可以用階碼和尾數(shù)來表示。
2、A
3、C
【解析】B選項(xiàng)和A選項(xiàng)中,對(duì)于邏輯表達(dá)式,其中b的值不會(huì)因?yàn)楸磉_(dá)式的結(jié)果發(fā)生改
變;D選項(xiàng)中,關(guān)系運(yùn)算符的結(jié)果有真和假兩種。因此C選項(xiàng)正確
4、C
【解析】break語句只能用在switch語句和循環(huán)語句中。在switch語句中,break用來使執(zhí)
行流程跳出switch語句,而繼續(xù)執(zhí)行switch后面的語句。在循環(huán)語句中,break用來使執(zhí)行
流程無條件地跳出本層循環(huán)體。
5、A
【解析】C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能鍬套定
義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。
6、A
7、D
8、A
9、B
10、D
11、A
【解析】在程序設(shè)計(jì)時(shí),用一個(gè)個(gè)小模塊來實(shí)現(xiàn)不同的功能,個(gè)程序設(shè)計(jì)人員分別完成一個(gè)或
多個(gè)小模塊,稱這樣的程序設(shè)計(jì)方法為“模塊化”由一個(gè)個(gè)功能模塊構(gòu)成的程序結(jié)構(gòu)稱為模
塊化結(jié)構(gòu),使用模塊化結(jié)構(gòu)程序設(shè)計(jì),有利于任務(wù)的分解笥化,選項(xiàng)B正確C語言允許對(duì)函
數(shù)單獨(dú)進(jìn)行編譯,從而可以實(shí)現(xiàn)模塊化,選項(xiàng)C正確深用模塊化結(jié)構(gòu),可以使不同模塊的程序
員分別編寫和調(diào)試,大大提高了編程效率,選項(xiàng)D正確;在語言程序中,每個(gè)模塊并不一定能
夠單獨(dú)編譯運(yùn)行,選項(xiàng)A錯(cuò)誤,本題答案A
12、C
【解析】B選項(xiàng)中,字符常量在內(nèi)存中占1個(gè)字節(jié);A選項(xiàng)中,轉(zhuǎn)義字符是以反斜線“開頭后跟
一個(gè)或幾個(gè)字符;D選項(xiàng)中,字符常量可以進(jìn)行關(guān)系運(yùn)算,不能參與數(shù)值運(yùn)算,因此C選項(xiàng)正
確“
13、B
【解析】本題主要考查的是函數(shù)的遞歸調(diào)用,子函數(shù)f是一個(gè)遞歸函數(shù)、所以主函數(shù)中執(zhí)行
f(a.2)時(shí),其執(zhí)行過程是a[3]+f⑶1)=a[3]+a[2]+f(a,0)=7。
14、B
15、A
16、B
17、D
18、A
19、A
20、B
二、填空題
1、1
2、整形
3、2.5#2.500000
4、2
5、無限循環(huán)#死循環(huán)
6、['49',"flag==2',"float',return(s),]
7、%s
8、strlwr#sEwr()#strlwr(字符串)
9、結(jié)果是c
10、7
三、編程題
lx#include<stdio.h>
voidswap(int*,int*);
intmain(void)
inta,b,c;
int*pl,*p2,*p3;
printf("輸入a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
pl=&a;
p2=&b;
p3=&c;
if(a>b)
swap(pl,p2);
if(a>c)
swap(pl.p3):
if(b>c)
swap(p2,p3);
printf("%d%d%d\n",a,b,c);
)
voidswap(int*sl,int*s2)
(
intt;
t=*sl;*sl=*s2;*s2=t;
)
2、#include<stdio.h>
intmain()
(
inti,n=0;
chars[80];
gets(s);
for(i=0;s[i]!='\0,;i++)0
printf("%d",i);
)
3、//include<stdio.h>
#defineNUM3
structstudent
(
char*sno=newchar[20];
char*name=newchar[20];
intscore;
boolfail=false;
):
voidstuSort(student*stu)
(
studenttmp;
for(inti=0;i<NUM;i++)
(
for(intj=0;j<NUM;j++)
(
if(stu[j].score<stu[i].score)
(
=stu[j].name;
tmp.sno=stu[j].sno;
tmp.score=stu[j].score;
stu[j].name=stu[i].name;
stu[j].sro=stu[i].sno;
stu[j].score=stu[i].score;
stu[i].name=;
stu[i].sro=tmp.sno;
stu[i].score=tmp.score;
)
}
}
for(inti=0;i<NUM;i++)
(
printf("%s%s%d\n",stu[i].sno,stu[i].name,stu[i].score);
)
)
voidstuFailfstudent*stu)
(
intnumOfStu=0;
for(inti=0;i<NUM;i++)
(
if(stu[i].fail==true)
(
printf("%s"Istu[i].name);
}
else
(
numOfStu十十;
}
)
if(numOfStu==NUM)
printf("%s\n","nofail");
)
)
voidstuAvg(student*stu)
(
intstuScore=0;
doublestuAvg=0;
intent=0;
for(inti=0;i<NUM;i++)
(
stuScore+=stup].score;
)
stuAvg=stuScore/NUM;
for(inti=0;i<NUM;i++)
(
if(stu[i].score<stuAvg)
(
ent++;
)
)
printf("%d\n",cnt);
)
intmain()
(
student*stu=newstudent[NUM];
for(inti=0;i<NUM;++j)
printf(”輸入學(xué)號(hào):”);
scanf("%s",stu[i].sno);
p「intf("輸入姓名:");
scanf("%s",stu[i].nanne);
printf(”輸入功課成績(jī):
scanf("%d",&stu[i].score);
)
stuSort(stu);
stuFail(stu);
stuAvg(stu);
delete[]stu;
stu=NULL;
return0;
}
往年C語言程序設(shè)計(jì)專升本題目(三)
(總分100分,考試時(shí)長(zhǎng)90分鐘)
一、單項(xiàng)選擇題(每小題2分,共40分)
1、已知大寫字母a的ascii碼值是65,小寫字母a的ascii碼是97,則用八進(jìn)
制表示的字符常量是0
A、字符A
B、字符a
C、字符。
D、非法的常量
2、使下列程序段輸出"123,456,78〃,鍵盤輸入數(shù)據(jù),正確的輸入是_。
inti,j,kscanf(〃%d,%3d%d”,&i,也j,&k);
printf(“%d,%d,%d\n”,i,j,k);
A、12345678
B、123,456,78
C、123,45678
I)、123,*45678
3、a,b為整型變量,一者均不為0,以卜關(guān)系表達(dá)式中恒成立的是()。
A、a*b/a*b==l
B、a/b*b/a—1
C、a/b*b+a%b==a
D、a/b*b二二a
4、以下程序中,while循環(huán)的循環(huán)次數(shù)是o
main()
(
inti=0;
whi1e(i<10)
if(i<1)continue;
if(i==5)break;
i++;
}
A、1
B、10
C、6
D、死循環(huán)
5、已有定義:inti,a[10],*p;則合法的賦值語句是
A、p=100;
B、p=a[5]
C、p=a[2]+2
D^p=a+2;
6、以下合法的c語言賦值語句是_______。
A、a=b=58
B、k=int(a-:
C>a=58,b=20
D、++i;
7、在下面語句中,其含義為〃p為指向含n個(gè)元素的一維數(shù)組的指針變量〃的定義
語句是o
A.intp[n]
int*p();
C^int*p(n);
D>int(*p)[n]
8、下列字符中,錯(cuò)誤的轉(zhuǎn)義字符是o
A、'\'
B、'\n'
C、,\一
D、'\091'
9、下面程序段輸出兩個(gè)字符串中對(duì)應(yīng)相等的字符。請(qǐng)分析程序填空。
charx[]=,,progranuning/,;
chary□二〃fortran”;
inti=0;
while(x[i]!='\0'!='\0')
if(x[i]=y⑴)printf(〃枇〃,_);
elsei++;
A、x[i++]
B、y[++i]
C、x[i]
D、y[i]
10、若有說明:inta⑶[4]=。};則下面正確的敘述是()。
A、只有元素a[0][0]可得到初值0
B、此說明語句不正確
C、數(shù)組a中各元素都可得到初值,但其值不一定為0
D、數(shù)組a中每個(gè)元素均可得到初值0
11>函數(shù)的值通過return語句返回,下面關(guān)于return語句的形式描述錯(cuò)誤的是
________O
A、return表達(dá)式;
B、return(表達(dá)式);
C、一-個(gè)return語句可以返回多個(gè)函數(shù)值
D、一個(gè)return語句只能返回一個(gè)函數(shù)值
12、漢字國(guó)標(biāo)碼規(guī)定的漢字編碼每個(gè)漢字用個(gè)字節(jié)表示。
A、1
B、2
C、3
D、4
13、以下程序段中,不能正確賦字符串(編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤)的是o
A、chars[10]="abcdefg”;
B、chart□二"abcdefg",*s=t;
C、chars[10];s=“abcdefg”;
D>chars[10];strcpy(s,"abodefgr,);
14、設(shè)有以下說明語句:
structstu
(
inta;
floatb;
}
suttype;
則下面敘述不正確的是o
A、slrucl是結(jié)構(gòu)體類型的關(guān)鍵字
B、structstu是用戶定義的結(jié)構(gòu)體類型
C、suttype是用戶定義的結(jié)構(gòu)體類型名
D、a和b都是結(jié)構(gòu)體成員
15、以下程序的輸出結(jié)果是。
mainO
(段y-?
floatx=3.6;
inti;
i=(int)x;
printf(,,x=%f,i=%d\n,z,x,i);
)
A、x=3.600000,i=4
13、x=3,i=3
C、x=3.600000,i=3
D、x=3i=3.600000
16、程序語言一般都提供多種循環(huán)語句,例如實(shí)現(xiàn)先判斷循環(huán)條件再執(zhí)行循環(huán)體
的while語句和先執(zhí)行循環(huán)體再判斷循環(huán)條件的do-while語句。關(guān)于這兩種循
環(huán)結(jié)構(gòu),在不改變循環(huán)體的條件下,(17)是正確的。
A、while語句的功能可由do-while語句實(shí)現(xiàn)
B、do-while語句的功能可由while語句實(shí)現(xiàn)
C、若已知循環(huán)體的次數(shù),則只能使用while語句
D、循環(huán)條件相同時(shí),do-while語句的執(zhí)行效率更高
17、若有下列說明和語句,則對(duì)結(jié)構(gòu)體變量st中成員i的引用方式不正確的是
structstu
(
inti;
intname;
}st,*p;
p=&st;
A、si
B、*i
C、(禮i
D、p->i
18、有以卜.程序
#include<stdio.h>
main()
(
char*s={"abc〃}:
do
(
printf(〃%d〃,*s/10);
s++;
)
while(*s);
)
注意:字母a的ascii碼值為65o程序運(yùn)行后的輸出結(jié)果是。
A、5670
B、656667
C、567
D、ABC
19、數(shù)組a[1..5,1..6]的每個(gè)元素占5個(gè)單元,將其按行優(yōu)先順序存儲(chǔ)在起始地
址為1000的連續(xù)的內(nèi)存單元中,則元素a[5,5]的地址為(15)。
A、1140
B、1145
C、1120
D、1125
20、F列描述說明正確的是。
A、定義結(jié)構(gòu)體時(shí),它的每個(gè)成員的數(shù)據(jù)類型可以不同
B、不同結(jié)構(gòu)體的成員名不能相同
C、結(jié)構(gòu)體定義時(shí),其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身
D、結(jié)構(gòu)體定義時(shí)各成員項(xiàng)之間可用分號(hào)也可用逗號(hào)隔開
二、填空題(每小題2分,共20分)
1、C語言中的每條基本語句以作為結(jié)束符,每條復(fù)合語句以}作為結(jié)束符。
2、在c語言中,〃a〃在內(nèi)存中占()個(gè)字節(jié)。
3、C語言中的標(biāo)識(shí)符只能由三種字符組成,他們是字母,數(shù)字,
4、局部變量的作用域是從的位置起,到函數(shù)結(jié)束止。
5、以下程序的輸出結(jié)果是o
^include<sldio.h>
main()
intk=l,s=0;
do
(
if((k%2)!=0)continue;
s+=k;
k++;
}
while(k>10);
printf(〃s=/d\n〃,s);
}
6、^include<stdio.h>
voidmain()
(
intnum[10]={l,0,0,0,0,0,0,0,0,0);
inti,j;
for(j=0;j<10;-+j)
for(i=0;i<j;?i)num[j]=num[j]?num[i];
for(j=0;j<10;j++)printfC%d〃,num[j]);
)
7、一般地,調(diào)用標(biāo)準(zhǔn)字符或格式輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)有以下預(yù)編譯命
令:O
8、定義二維數(shù)組inta[3][5];
,那么該數(shù)組中的第6個(gè)元素的訪問形式為o27.在程序運(yùn)行過程中,其
值能被改變的量稱為o
9、下面程序的輸出結(jié)果是:
^include<stdio.h>
voidadd(int*p,intn)
(.'
int*pend=p+n;
for(;p<pend;p++)*p+=10;
}
voidmain()
(
inta[5]={l,2,3,4,5},*q=a;
add(q,5);
for(q=a;q<a-5;q++)printfxq);
)
10、請(qǐng)將下列程序中的函數(shù)聲明語句補(bǔ)充完整。
^include<stdio.h>
int;
main()
intx,y,(*p)();
scanf(〃%d%d〃,&x,&y);
p=max;
printf(〃%d\n",(xp)(x,y));
}
intmax(inta,intb;
(
return(a>b?a:bj;
)
三、編程題(每小題分,共40分)
1、編寫程序:輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。(本題10
分)
2、編寫程序:用getchar函數(shù)讀入兩個(gè)字符給cl,c2,然后分別用pulchar函
數(shù)和printf函數(shù)輸出這兩個(gè)字符。
#include<stdio.h>
voidmain0
(
charcl,c2;
printf(〃請(qǐng)輸入兩個(gè)字符給cl和c2:\n〃);
printf(〃用putchar函數(shù)輸出結(jié)果為:\n〃)
printf(,z\n用printf函數(shù)輸出結(jié)果為:\n");
}(本題14分)
3、編寫input。和output。函數(shù),輸入輸出5個(gè)學(xué)生記錄,每個(gè)記錄包括num、
name、score[3],使用結(jié)構(gòu)體實(shí)現(xiàn)。(本題16分)
參考答案
一、單項(xiàng)選擇題
IsA
【解析】字符,'\10;所對(duì)應(yīng)的八進(jìn)制數(shù)為101,轉(zhuǎn)換成十進(jìn)制數(shù)為65。
2、C
3、C
4、D
5、D
【解析】本題中定義了一個(gè)整型數(shù)組a和一個(gè)整型指針變量po選項(xiàng)A中將一個(gè)整型數(shù)賦值
給一個(gè)指針變量,C語言規(guī)定,只能將地址賦給指針變量,故選項(xiàng)A不正確。選項(xiàng)B中a[5]
為一數(shù)組元素,同樣不是一個(gè)地址,故選項(xiàng)B不正確。選項(xiàng)c中a[2]為一數(shù)組元素,同樣是
一個(gè)整型數(shù)據(jù),不是個(gè)地址,故選項(xiàng)C不正確。數(shù)組名a代表數(shù)組首地址,首地址加2代
表第3個(gè)元素的地址,將談地址賦值給指針變量,故選項(xiàng)D正確。所以,4個(gè)選項(xiàng)中選項(xiàng)D
符合題意。
6、D
【解析】選項(xiàng)A和選項(xiàng)C中都沒有以丁結(jié)束,故選項(xiàng)A和選項(xiàng)C都不是正確的賦值語
句;選項(xiàng)B中強(qiáng)制轉(zhuǎn)換類型符int應(yīng)用括號(hào)括起來,故詵項(xiàng)B不正確,只有選項(xiàng)D是合法的
C語言賦值語句。
7、D
8、D
9、A
10、D
11、C
【解析】return語句中的表達(dá)式的值就是所求的函數(shù)值,此表達(dá)式值的類型必須與函數(shù)首部
所說明的類型一致。如果類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換。一個(gè)
return語句只能返回一^^^值。
12、B
【解析】漢字國(guó)標(biāo)碼規(guī)定的漢字編碼每個(gè)漢字用2個(gè)字節(jié)表示。
13、C
14、B
【解析】stu是結(jié)構(gòu)體類型,suttype是該類型的變量名
15、C
16、B
【解析】本題考查程序的控制結(jié)構(gòu)。
do-while語句的形式為:
do
循環(huán)體語句;
while循環(huán)條件;
首先執(zhí)行一次循環(huán)體語句(無條件地),若循環(huán)條件不成立,則結(jié)束do-while語句的執(zhí)
行;否則再一次執(zhí)行循環(huán)體語句,即,此后循環(huán)條件每成立一次,循環(huán)體語句就執(zhí)行1次。
顯然,do-while中的循環(huán)體語句至少執(zhí)行1次
while語句的形式為:
while循環(huán)條件
循環(huán)體語句;
其執(zhí)行過程為:先判斷循環(huán)條件,若不成立,則結(jié)束while語句的執(zhí)行;否則執(zhí)行一次
循環(huán)體語句。此后循環(huán)條件每成立一次,循環(huán)體語句就執(zhí)行1次。顯然,while中的循環(huán)體
語句可能一次也不執(zhí)行。
因此,在不改變循環(huán)體的情況下,可用while語句來代替do-while語句,反之則不行。
17、B
【解析】本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪瓦即
st.i,也可以用等價(jià)的指針形式即(*p).i和p->io
18、C
19、A
【解析】注意是按行優(yōu)先順序存儲(chǔ)。
20、A
二、填空題
1、;
2、2#兩
3、下劃線
4、定義
5、[s=0]
6、11248163264128256
【解析】該程序的作用是將加]換成n[i-l]+n[i-2]+n[i-3]+、、、+n⑼。
7、1
#include<stdio.h>
(或
#include"stdio.h")']
8、a[l][0]|變量
9、1112131415
10、['max(intb),]
三、編程題
1、#include<stdio.h>
intmain()
(
intx.y.z,t;
printf("\n請(qǐng)輸入三個(gè)數(shù)字:\n");
scanf("%d%d%d",&x,&y,&z);
if(x>y){/*交換x.y的值*/
t二x;x二y;y二t;
)
if(x>z){/*交換x.z的值*/
t=z;z=x;x=t;
)
if(y>z){/*交換z,y的值*/
t=y;y=z;z=t;
)
printf("從小到大排序:%d%d%d\n"Jx,y,z);
)
【解析】我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的
值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最
小。
2、cl=getchar();
c2=getchar();
putchar(cl);
putchar(c2);
printf("%c,%c\n",cl,c2);
3、#include<stdio.h>
structstudent{
intnum;
charname[20];
intscore[3];
}stu[5];
voidinput(structstudent*pstu){
intnj;
for(n=0;n<5;n++){
printf("lnputstudentsnum:");
scanf("%d",&pstu[n].num);
printf("\n");
printf("lnputstudentsname:");
scanf("%s",&pstu|n].name);
printf("\n");
printf("lnputstudentsscore:");
forO=0;j<3;j++X
scanf("%d"I&pstu[n].score[j]);
)
printf("\nu);
}
)
voidoutput(structstudentstu[]){
inti=0,j;
for(i;i<5;i++){
printf("%d,%s",stu'i].num,stu[i].name);
for(j=0;j<3;j++){
printf("%3d",stu[i].score[j]);
)
printf("\n"):
}
)
intmain(X
voi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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é)習(xí)-生態(tài)環(huán)境公益訴訟制度研究1026
- 2025年?duì)I養(yǎng)健康顧問知識(shí)競(jìng)賽題庫及答案(共120題)
- 2025年安全生產(chǎn)知識(shí)競(jìng)賽題及答案(共60題)
- 期末培優(yōu)驗(yàn)收卷三(試卷)2025-2026學(xué)年六年級(jí)語文上冊(cè)(統(tǒng)編版)
- 深圳數(shù)學(xué)試卷及詳細(xì)答案
- 隴南醫(yī)院招聘試題及答案
- 農(nóng)村荒山購買合同范本
- 維護(hù)版權(quán)的合同范本
- 2025年高考美術(shù)統(tǒng)考題庫及答案
- 2025年紀(jì)委監(jiān)委筆試真題及答案
- 公司法人變更協(xié)議書
- 7《包身工》課件2025-2026學(xué)年統(tǒng)編版高中語文選擇性必修中冊(cè)
- 2025廣東珠海市金灣區(qū)紅旗鎮(zhèn)招聘編外人員23人筆試考試參考試題及答案解析
- (新教材)部編人教版三年級(jí)上冊(cè)語文 習(xí)作:那次經(jīng)歷真難忘 教學(xué)課件
- 甘草成分的藥理作用研究進(jìn)展-洞察及研究
- 具身智能+文化遺產(chǎn)數(shù)字化保護(hù)方案可行性報(bào)告
- (2025年新教材)部編人教版二年級(jí)上冊(cè)語文 語文園地七 課件
- 廣東深圳市2026屆化學(xué)高三第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 電力公司考試大題題庫及答案
- 國(guó)企金融招聘筆試題及答案
- 重慶市金太陽好教育聯(lián)盟2026屆高三10月聯(lián)考(26-65C)英語(含答案)
評(píng)論
0/150
提交評(píng)論