2005年10月高等教育自學考試
高級語言程序設計(一)試題
課程代碼:00342
一、單項選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。
1. 下列不屬于...C語言保留字的是( )
A. char B. while
C. typedef D. look
2. 下列關于C語言的敘述錯誤..的是( )
A. 英文字母大小寫不加以區(qū)分
B. 不同類型的變量可以出現(xiàn)在同一個表達式中
C. 在賦值表達式中賦值號兩邊的類型可以不同
D. 某些運算符在不同的場合可以有不同的含義
3. 下列轉(zhuǎn)義字符中錯誤..的是( )
A. ′\000′ B. ′\14′
C. ′\x111′ D. ′\2′
4. 執(zhí)行語句printf(″%x″, -1);后輸出結(jié)果是( )
A. -1 B. -ffff
C. 1 D. ffff
5. 設float a=2, b=4, c=3;,以下C語言表達式與代數(shù)式1
2(a+b)c計算結(jié)果不一致...的是(
A. (a+b)*c/2 B. (1/2)*(a+b)*c
C. (a+b)*c*1/2 D. c/2*(a+b)
6. 設int a=10, b=20, c=30;條件表達式a
A. 5 B. 10
C. 20 D. 30
7. 設int a=9, b=6, c;,執(zhí)行語句c=a/b+0. 8;后c的值是( )
A. 1 B. 1. 8
C. 2 D. 2. 3
8. 執(zhí)行語句for(i=1;i++<4);后i的值是( )
A. 3 B. 4
C. 5 D. 不確定
9. 在位運算中,操作數(shù)左移一位,其結(jié)果相當于操作數(shù)( )
A. 乘以2 B. 除以2
C. 乘以4 D. 除以4
10. 使用語句scanf(″a=%f, b=%f″, &a, &b);輸入變量a、b的值(□代表空格),正確的是
( )
A. 1.25,2.4 B. 1.25□2.4
C. a=1.25, b=2.4 D. a=1.25□b=2.4
11. 下列說法中錯誤的是( ) ..
A. C語言中循環(huán)嵌套的層數(shù)沒有限定
B. C語言中的內(nèi)部函數(shù)只能在本文件中被調(diào)用
C. 用typedef語句定義的數(shù)據(jù)類型名稱必須是大寫字母
D. C語言中的continue語句,可以通過改變程序的結(jié)構而省略
12. 設char s[10], *p=s;, 下列語句中錯誤的是( ) ..
A. p=s+5;
C. s[2]=p[4]; B. s=P+s; D. *p=s[0];
13. 設enum week {sun, mon, tue, wed, thu, fri, sat}day;,正確的賦值語句是( )
A. sun=0; B. sun=day;
C. mon=sun+1; D. day=sun;
14. 若用數(shù)組名作為函數(shù)調(diào)用時的實參,則實際上傳遞給形參的是( )
A. 數(shù)組的第一個元素值 B. 數(shù)組元素的個數(shù)
C. 數(shù)組中全部元素的值 D. 數(shù)組首地址
15. 下列錯誤的是( ) ..
A. char s[]=″China″; B. char s[10]={″China″};
C. char s[10]; s=″China″; D. char s[10]={′C′, ′h′, ′i′,;′n′, ′a′};
16. 在C語言中,有值函數(shù)的數(shù)據(jù)類型是指( )
A. 函數(shù)形式參數(shù)的數(shù)據(jù)類型 B. 函數(shù)返回值的數(shù)據(jù)類型
C. 調(diào)用該函數(shù)時的實參的數(shù)據(jù)類型 D. 任意指定的數(shù)據(jù)類型
17. 設
struct
{ short a;
char b;
float c;
}cs;
則sizeof(cs)的值是( )
A. 4 B. 5
C. 6 D. 7
18. 設
int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p=x, k;
且0≤k<10, 則對數(shù)組元素x[k]的錯誤引用是( ) ..
A. p+k B. *(x+k)
C. x[p-x+k] D. *(&x[k])
19. 設
#define N 3
#define Y(n) ((N+1)*n)
則表達式2*(N+Y(5+1))的值是( )
A. 42 B. 48
C. 54 D. 出錯
20. 關于主函數(shù)的形式參數(shù),下列說法正確的是( )
A. 可以有兩個
B. 類型可以是實型
C. 不可以由用戶自己定義名字
D. 是在程序編譯時獲得實際值
二、填空題(本大題共10小題,每小題2分,共20分)
21. 可以將被調(diào)函數(shù)中獲得的值返回給主調(diào)函數(shù)的語句是__________。
22. 設int x=2, y=1;則表達式x+++y的值是__________。
23. 若未指定局部變量的存儲類型,則其隱含的存儲類型是__________。
24. 在執(zhí)行循環(huán)結(jié)構或switch結(jié)構時,能夠立即退出該結(jié)構的語句是__________。
25. 設int a=-3, b=7, c=-1;則執(zhí)行(a==0)&&(a=a%b
26. 設int a, b, c;則執(zhí)行a=(b=3, c=5, b=10);后變量a的值是__________。
27. 設int a=100, *pl=&a, **p2=&p1;, 則表達式**p2的值是__________。
28. 靜態(tài)型外部變量的作用域是__________。
29. 設
int a[2][3]={1, 2, 3, 4, 5, 6};
則數(shù)組元素a[1][0]的值是__________。
30. 函數(shù)調(diào)用時,若形參是一個變量,而對應的實參是一個有確定值的表達式,則函數(shù)參數(shù)的傳遞方式是__________傳遞。
三、程序分析題(本大題共5小題,每小題5分,共25分)
閱讀下列程序,將輸出結(jié)果寫到各題右側(cè)的空白處。
31. mian( )
{ int i;
for(i=1;i<3;i++)f(i);
}
f(int j)
{ static int a=100;
int k=1;
++k;
printf(″%d\n″, j+a+k);
a-=2;
}
32. #include
long fun(int n)
{ long s;
if(n<=2)s=2;
else s=n+fun(n-1);
printf(″%d\t″, s);
return s;
}
main( )
{
fun(5);
printf(″\n″);
}
33. struct porb
{ char *name;
int age;
} s[]={″LiHua″, 18, ″WangXin″, 25, ″LiuGuo″, 21};
#define N (sizeof(s)/sizeof (s[0]))
void f (struct porb a[], int n);
main( )
{
f (s, N);
}
void f (struct porb a[], int n)
{
int i;
for (i=0;i
printf (″%s:%d\n″, a[i]. name, a[i]. age);
}
34. void LE(int*a, int b)
{
int x=*a;
printf(″%d\t%d\n″, *a, b);
*a=b;b=x;
}
main( )
{
int x=10, y=25;
LE(&x, y);
printf(″%d\t%d\n″, x, y);
}
35. /*設從鍵盤輸入:420<回車> */
#include
main( )
{ char c;
while ((c=getchar( ) )!=′\n′)
switch(c-′0′)
{ case 0:
case 1:putchar(c+2);
case 2:putchar(c+3);break;
case 3:putchar(c+4);
default:putchar(c+1);break;
}
printf(″\n″);
}
四、程序填充題(本大題共3小題,每小題6分,共18分)
給出下列程序,將橫線處缺少的部分補上,使其能正確運行。
36. 一個三位整數(shù)(100~999),若各位數(shù)的立方和等于該數(shù)自身,則稱其為“水仙花數(shù)”(如:153=13+53+33), 找出所有的這種數(shù)。
main( )
{
int n, a, b, c;/*n、a、b和c分別為三位數(shù)自身及其個位、十位和百位 */
for(c=1;c<=9;c++)
for (b=0; b<=9;b++)
for(______;a++) /*第一空*/
{
n=_________; /*第二空*/
if(a*a*a+b*b*b+c*c*c==_________) /*第三空*/
printf(″%d\n″, n);
}
}
37. 輸入一個數(shù)字(范圍在0~9之間,若不在此范圍內(nèi)顯示輸入錯),輸出對應的英文單詞(Zero, One, Two, ,Nine)。
main( )
{
int i;
char *digit[10]={″Zero″, ″One″, ″Two″, ″Three″, ″Four″,
″Five″, ″Six″, ″Seven″, ″Eight″, ″Nine″};
scanf(″%d″, _________); /*第一空 */
printf(″%d→″, i);
if(____________) /*第二空 */
printf(″%s\n″, digit[_________]); /*第三空 */
else printf(″Input error! \n″);
}
38. 將一個文本文件(ma. dat)拷貝到另一個文本文件(niu. dat)中。
#include
main( )
{
FILE *ma, *niu;
ma=fopen(″ma. dat″, ______); /*第一空 */
miu=fopen(″niu. dat″, ″w″);
while(! feof(ma)) fputc(fgetc(ma), ________); /*第二空 */
fclose(niu);__________; /*第三空 */
}
五、程序設計題(本大題共3小題,第39小題5分,第40、41小題各6分,共17分)
39. 輸入某學生的數(shù)學(math)、英語(english)和C語言(C)的成績,輸出該學生這三門課的成績、總成績(sum)和平均成績(aver)。
40. 按下列要求分別寫出兩個函數(shù)(不用寫主函數(shù))
(1)計算n!
計算公式:n!=1×2×3× ×n
函數(shù)首部為log fac(int n)
(2)調(diào)用上述函數(shù)計算Ck
mcmk
計算公式: Ckm m! k!(m k)!
函數(shù)首部為long cmk(int m, int k)
41. 在一個二維數(shù)組(定義為int a[5][5];)中形成并按下列形式輸出矩陣各元素的值。 1 0 0 0 0
2 1 0 0 0
3 2 1 0 0
4 3 2 1 0
5 4 3 2 1