2009年10月高等教育自學考試
高級語言程序設計(一)試題
課程代碼:00342
一、單項選擇題(本大題共15小題,每小題2分,共30分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。
1.主函數頭中的“main”是( )
A.保留字 B.函數名 C.變量名 D.類型名
2.下列運算符中優先級最高的是( )
A.?: B.&& C. D.!
3.設static int a;,執行表達式(a= =1)&&(a=-1)&&(a=2)后,a的值是( )
A.-1 B.0 C.1 D.2
4.設int a,b;,與a+=b++;等價的是( )
A.a=b++; B.a=++b; C.a=a+b++; D.a=a+++b;
5.關于宏定義命令,敘述正確的是( )
A.在程序編譯前進行宏替換
C.在程序編譯后進行宏替換
6.下列表達式值為0的是( )
A.5/2 B.2&&5 C.!25 D.2&5 B.在程序編譯時進行宏替換 D.在程序運行時進行宏替換
7.對循環結構正確的敘述是( )
A.do-while循環體可能被執行0次
C.while循環體不可能被執行0次
8.下列數組定義并初始化正確的是( )
A.int s[]=(1,2,3,4,5);
C.int s[2+3]={1,2,3}; B.int s[5]=1,2,3,4,5; D.int s(5)={1,2,3}; B.do-while循環體至少被執行1次 D.for循環體不可能被執行無限次
9.設char s[10];,能將字符串“+-*/”正確輸入的語句是( )
A.scanf(“%s”,s);
C.scanf(“%s”,s[0]); B.scanf(“%s”,*s); D.scanf(“%s”,s[10]);
10.對于C語言中的函數,正確的敘述是( )
A.兩個函數可以相互調用,但不能自己調用自己
B.程序執行可以始于任何一個函數,但結束必須在主函數
C.兩個函數既可以定義成并列關系又可以定義成嵌套關系
D.一個C程序可以由多個文件組成,一個文件又可以由多個函數組成
11.設int m[5],*p=m;,與元素m[5],*p=m;,與元素m[2]等價的是( )
A.m+2 B.*m+2 C.*(p+2) D.*p+2
12.設int a[3][3]={{1,2,3},{4,5},{6}};,元素a[1][2]的值是( )
A.0 B.1 C.4 D.6
13.設typedef int ARR[10];,與ARRa,*b;等價的定義是( )
A.int a,b; B.int a,*b; C.int a[10],*b; D.int a[10],*b[10];
14.設int n,p=0;,與語句if(n!=0)p=1;等價的是( )
A.if(n)p=1; B.if(n=1)p=l; C.if(n!=1)p=1; D.if(!n)p=l;
15.文件使用方式“rb+”的含義是( )
A.對文本文件只讀 B.對文本文件讀和寫
D.對二進制文件只寫 C.對二進制文件讀和寫
二、填空題(本大題共10小題,每小題2分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
16.執行printf(“%d\n”,1+!2+(3<=4)+5/6+7%8);后的輸出結果是_________。
17.設int m=0;,執行表達式m (m=2) (m=3) (m=4)后,m的值是_________。
18.設int n;,“n的值能同時被3和5整除”的邏輯表達式是_________。
19.執行循環語句for(;’0’;)printf(“Happy!\n”);后,輸出“Happy!”的行數是_________。
20.設宏定義#define K 2+3執行printf(“%d\n”,K/K);后的輸出結果是_________。
21.設int n;,執行for(n=0;n= =0;n++)n=0;后,循環體被執行的次數是_________。
22.執行printf(“%d\n”,5&5-3&&4);后的輸出結果是_________。
23.表示空類型(或稱無類型)的保留字是_________。
24.設char*strp=“CHINA”;,執行printf(“%s\n”,strp+3);后的輸出結果是_________。
25.使用系統函數對兩個字符串進行比較,該系統函數的名字是_________。
三、程序分析題(本大題共4小題,每小題4分,共16分)
閱讀下列程序,將輸出結果寫到各題右側的空白處。
26.
void main( )
{
int i,a[5],*p;
for(i=4;i>=0;i--)*(a+i)=i;
printf(“\n”);
}
27.
gcd(int p,int q)
{
if(p= =q)return p;
else if(p>q)return gcd(p-q,q);
else return gcd(p,q-p);
}
void main( )
{
int m=24,n=36,min,max;
max=gcd(m,n);
min=m*n/max;
printf(“max=%d,min=%d\n”,max,min);
}
28.
s(int a)
{
static int b=l0;
if(a%2= =1)return(++b);
else return(++a);
}
void main( )
{ int i;
for(i=0;i<3;i++)printf(“%d\t”,s(i));
printf(“\n”);
}
29.
struct people
{
char name[10];
float score;
}per[ ]=={{“Tom”,95.5},{“Mary”,88.0}};
void main( )
{
struct people*p=per+1;
printf(“%s,%.1f\n”,per[0].name,p score);
}
四、程序填充題(本大題共3小題,每小題6分,共18分)
請將下列程序橫線處缺少的部分補上,使其能正確運行。
30.對兩個整型變量先進行輸入和輸出,將它們的值交換后再輸出。
#define PR printf(“a=%d,b=%d\n”,a,b)
void main( )
{
int a,b,______;/* 第一空 */
scanf(“%d%d”,_________);/* 第二空 */
PR;
temp=a,_______,b=temp;/* 第三空 */
PR;
}
31.為二維數組各元素輸入數據,計算并輸出全部元素之和。
#define N 5
void main( )
{
int i,j,a[N][N],sum=_______;/* 第一空 */
for(i=0;i
for(j=0;j
{
scanf(“%d”,&a[i][j]);
sum+=______________;/* 第二空 */
}
printf(“sum=%d\n”,___________);/* 第三空 */
}
32.為n輸入一個正整數值后,計算并輸出sum=1-
void main()
{
int n,k=0;
float_______;/* 第一空 */
scanf(″%d″,&n);
do
{
k++;
if(________)sum+=1.0/k;/* 第二空 */
else sum-=1.0/k;
}while(________);/* 第三空 */
printf(″sum=%.4f\n″,sum);
}
五、程序設計題(本大題共2小題,每小題8分,共16分)
33.(1)根據下列計算公式寫出函數,將華氏溫度(F)轉化為攝氏溫度(C)。
公式:C=1111 ...... 的值。 234n5(F-32) 9
函數頭為:float change(float F)
(2)寫出主函數,輸入華氏溫度,調用函數change,計算并輸出對應的攝氏溫度。輸出形式(溫度要求兩位小數):
F=? C=?
浙00342# 高級語言程序設計(一)試卷 第 5 頁 共 6 頁
34.用循環結構實現下列問題:現有1020本書,第一天賣掉一半多兩本,以后每天賣掉剩下的一半多兩本,直到賣完為止。計算并輸出賣完所需要的天數。
浙00342# 高級語言程序設計(一)試卷 第 6 頁 共 6 頁