1.若以下對fun函式的呼叫是正確的:
x=fun(fun(a,b,c),(a+b,a+c),a+b+c);
則fun函式的形參個數為()
A)3 B)4 C)5 D)6
2.若有說明:int*p, m=5; n;,以下正確的程式段是()
A)p=&m;
scanf("%d",&p)
B)p=&n;
scanf("%d",&p)
C)scanf("%d",&p)
p=&n;
D)p=&n;
p=&m;
3.以下程式呼叫findmax函式返回陣列中的最大值
findmax(int*a,int n)
{ int*p,*s;
for(p=a,s=a;p-a if()s=p;
return(*s);
}
main()
{ intx[5]={12,21,13,6,18};
printf("%dn",findmax(x,5));
}
在下劃線處應填入的是()
A)p>s B)*p>*s C)a[p]>a[s] D)p-a>p-s
4.若指標p已正確定義,要使p指向兩個連續的整型動態儲存單元,則正確語句是()
A)p=2*(int*)malloc(sizeof(int));
B)p=(int*)calloc(2*sizeof(int));
C)p=(int*)malloc(2* sizeof(int));
D)p=2*(int*)calloc(sizeof(int));
5.下列程式的.輸出結果是()
main()
{char *p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
}
A)xyabcAB B)abcABz C)Ababcz D)XycdBCD
6.以下敘述中不正確的是()
A)一個變數的作用域完全取決於變數定義語句的位置
B)全域性變數可以在函式以外的任何部位進行定義
C)區域性變數的“生存期”只限於本次函式呼叫,因此不可能將區域性變數的運算結果儲存至下一次呼叫
D)一個變數說明為static儲存類是為了限制其他編譯單位的引用
7.交換兩個變數的值,不允許用臨時變數,應該使用下列哪一個位運算子()
A)~ B)& C)^ D)|
8.下面的說法不正確的是()
A)函式呼叫時,先求出實參表達
B)函式呼叫是在程式執行時處理的,分配臨時的記憶體單元。而巨集展開則是在編譯時進行的,在展開時也要分配記憶體單元,進行值傳遞
C)對於函式中的實參和形參都要定義型別,二者的型別要求一致,而巨集不存在型別問題,巨集名有型別
D)呼叫函式只可得到一個返回值,而用巨集可以設法得到幾個結果
nf函式的正確呼叫形式是()
A)fscanf(fp,格式字串,輸出表列);
B)fscanf(格式字串,輸出表列,fp);
C)fscanf(格式字串,檔案指標,輸出表列);
D)fscanf(檔案指標,格式字串,輸入表列);
10.以下程式的執行結果是()
# define MAX 10
int a[MAX],i;
main()
{ printf("n");sub1();sub3(a);sub2();sub3(a);
}
sub2()
{ int a[MAX],i,max;
max=5;
for(i=0;i }
sub1()
{for(i=0;i }
sub3(int a[])
{ int i;
for(i=0;i printf("n");
}
A)0 2 4 6 8 10 12 14 16 18
0 1 2 3 4
B)0 1 2 3 4
0 2 4 6 8 10 12 14 16 18
C)0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
D)0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
答案:1.A 2.D 3.B 4.C 5.D 6.B 7.C 8.B 9.D 10.D