一. 選擇題 (共15題, 每題1分,共15分)
1. 定義結構體的關鍵字是( C )
A. union B. enum C.struct D.typedef
2. 設整型變量a為5,使b不為2的表達式是( A )
A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:1
3. 下面哪一項是不正確的字符串賦值或賦初值的方法( C )
A. char *str; str= “china”;
B. char str[7]= {‘c’, ‘h’, ‘i’, ‘n’, ‘a’};
C. char str1[]= “china”,str2[]=“123”;
D. char str1[10]; str1= “china”;
4、以下程序中,while 循環的次數是( B )。
#include <stdio.h>
void main(void)
{ int i = 0;
while (i<10) {
if (i<1) continue;
if (i==5) break;
i++;
}
}
A) 1 B) 死循環,不能確定次數 C) 6 D) 10
5. 選出下列標識符中不是合法的標識符的是( )
A. hot_do B. cat1 C. _pri D. 2ab
6. 以下說法中正確的是( B )
A. C語言程序總是從第一個的函數開始執行
B. 在C語言程序中,要調用的函數必須在main()函數中定義
C. C語言程序總是從main()函數開始執行
D. C語言程序中的main()函數必須放在程序的開始部分
7. 若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為( )
A. p+1 B. a+1 C. a++ D. ++p
8. 若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是( )
A. i= *p; B. *p=*&j; C. i=&j; D. i=* *p;
9. 若變量c為char類型,能正確判斷出c為小寫字母的表達式是( )
A. ‘a’<=c<= ‘z’ B. (c>= ‘a’) || (c<= ‘z’)
C. (‘a’<=c) and (‘z’>=c) D. (c>= ‘a’) && (c<= ‘z’)
10. 以下程序的輸出結果是( )
main()
{ int a[]={1,2,3,4,5,6,7,8,9}, *p;
p=a;
*(p+3)+=2;
printf( “%d,%d\n”,*p,*(p+3) ); }
A. 0, 5 B. 1, 6 C. 1, 5 D. 0, 6
11. 以下程序的輸出結果是( )
main()
{ int a=5;
float x=3.14;
a*=x*(‘E’- ‘A’);
printf(“%f\n”,(float)a); }
A. 62.000000 B. 62.800000 C. 63.000000 D. 62
12. 定義如下變量和數組:int i; int x[3][3]={1,2,3,4,5,6,7,8,9};
則語句for(i=0;i<3;i++) printf("%d ",x[i][2-i]); 的輸出結果是( )
A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9
13 下列程序段的輸出結果是 ( )
void main( )
{ int k;
for (k=1;k<5;k++)
{ if(k%2!=0)
printf( “#” );
else
printf(“*”) ; }
}
A. #*#* B . *#*# C. ## D. **
14. 下列程序執行後輸出的結果是( )
int d=1;
fun (int p)
{ int d=5;
d+=p++;
printf("%d,",d); }
main( )
{ int a=3;
fun(a);
d +=a++;
printf("%d\n",d); }
A. 8, 4 B. 9, 6 C. 9, 4 D. 8, 5
16、在下列選項中,不正確的賦值語句是( )。
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
二. 填空題(共7題,每空2分,共30分)
1. 數組 int a[3][5]; 共定義了_______________個元素。
2. 有float f=3.1415927; 則 printf(“%5.4f”, f );輸出的結果是_______________。
3. 下面程序的功能是:輸出 100以內(不包含100)能被 3整除且個位數為 6的所有整數,請填空。
main( )
{ int i;
for(i=1; _______________; i++)
if (_______________)
printf("%d", i);
}
4. 設有“int x=2, y”說明,則逗號表達式“y=x+5,x+y”的值是 _______________
5. 以下是使用指針,進行字符串復制的程序,請填空。
main()
{ char a[]= “Tsinghua University”, b[30], *p1,*p2;
p1=a;
p2=b;
for(; *p1!= _______________; p1++, p2++)
_______________=_______________;
*p2= ______________;
printf(“string a is:%s\n”,a);
printf(“string b is:%s\n”,b);
}
6. 下面程序用冒泡法對數組a進行降序排序,請填空。
main()
{ int a[5]={4,7,2,5,1};
int i,j,m;
for(i=0;i<4;i++)
for(j=0;j<_______________;j++)
if( _______________< _______________ )
{ m=a[ j];
a[ j]=a[ j+1];
a[ j+1]= m; }
for(i=0;i<5;i++)
printf("%d ",a[i]);
}
7. 函數fun的功能是:使一個字符串按逆序存放,請填空。
void fun (char str[])
{ char m; int i,j;
for(i=0,j=strlen(str);i<_______________;i++,j--)
{ m=str[i];
str[i]= _______________;
str[j-1]=m;
}
printf("the rotated string is %s\n",_______________);
}
三、編程題:5分
請使用指針完成3個數的大小比較並輸出。要求三個數從鍵盤輸入,使用函數完成大小比較。
1.C 2.C(A中a/2==2,因為a和2是整型,小數被截斷..C中a%2==1) 3.D(str數數組,可以退化成常量指針,不可更改指向,更別說更改指向為“china”地址) 4.C(i=0~5) 5.D(變量名不能以數字常量開頭)
6.C(B中調用函數最好在函數外面main()之前先聲明好,這是好習慣) 7.C(a++不允許被進行,a是數組,退化成常量指針,不能更改指向(這裡更改指向為a+1)) 8.B(*&j==j) 9.D 10.B(*(p+3)==a[3])
11.A(計算結果為62.800000,但a是整型,賦予a時小數被截斷,a==62,又以float方式輸出a,故為 62.000000 ) 12.C 13.A(奇輸'#',偶輸'*')14.D(注意哪個d是哪個d) 16.D(b+c=1錯誤)
二
1. 15
2. 3.1415
3. i<100 (!i%3)&&(i%10==6)
4. 9 (逗號表達式的值是最後一個逗號後面的表達式的值)
5. '\0' *p2=*p1 '\0'
6. 4 a[i] a[j] (不知道降序是什麼,我按從大到小做了)
7. ((float)i+(float)j)/2.0 str[j-1] str
三..
#include<stdio.h>
void fun(int*[3]);
void main()
{
int a[3],*p[3],i=0;
for(;i<3;i++)
{
scanf("%d",&a[i]);
p[i]=&a[i];
}
fun(p);
printf("%d %d %d\n",*p[0],*p[1],*p[2]);
getch();
}
void fun(int*p[3])
{
int i=0,j;
for(;i<3;i++)
for(j=i;j<3;j++)
if(*p[i]<*p[j])
*p[i]+=*p[j],*p[j]=*p[i]-*p[j],*p[i]-=*p[j];
}
/*TC下運行通過**/