一、選擇題(本題共20道小題,共40分。)
1. 表示關系x≤y≤z的c語言表達式為
A) ?(X<=Y)&&(Y<=Z)?
B) ?(X<=Y)AND(Y<=Z)?
C) ?(X<=Y<=Z)?
D) ?(X<=Y)&(Y<=Z)
?2. 以下程序的輸出結果是
main( )
{
int a=12,b=12;
printf("%d %d\n",--a,++b);
}
A)10 10 ? B)12 12 ? C)11 10 ? ?D)11 13
?3. 以下的for循環?
?for(x=0,y=0; (y!=123)&&(x<4); x + + );
A) 是無限循環 ? B)循環次數不定 ? C)執行4次 ? D)執行3次
?4. 有以下程序
main()
{
char a[]="programming",b[]="language";
char *p1,*p2;
int i;
p1=a;p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
輸出結果是
A)gm ? ? B)rg ? ? C)or ? ? D)ga
?5. ?以下說法中正確的是
? ?A) #define和printf都是C語句 ? ? ? B) #define是C語句,而printf不是
? ?C) printf是C語句,但#define不是 ? ?D) #define和printf都不是C語句
?6. 下面的程序
main()
{ int x=3;
do {
printf("%d\n",X-=2);
}while(!(--x));}
A) 輸出的是1 ? ? ?B) 輸出的是1和-2 ? ?C) 輸出的是3和0 ? ? ? D) 是死循環
?7. 下面能正確進行字符串賦值操作的語句是
A)char s[5]={"ABCDE"}; ? ?B)char s[5]={'A'、'B'、'C'、'D'、'E'};
C) char *s;s="ABCDEF"; ? ?D)char *s; scanf("%s",s);
?8. 以下程序的輸出結果是
? ? ?main( ?)
? ? ?{ ? int ?i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
? ? ? ? ?for(i=0;i<4;i+=2)printf("%d ?",p[i]);
? ? ?}
? ?A) 5 2 ? ? B) 5 1 ? ?C) 5 3 ? ? ?D) 9 7
?9. 若要求在if后一對圓括號中表示a不等于0的關系,則能正確表示這一關系的表達式為
A) a<>0 ? ? ? ? ? ? ?B) !a ? ? ? ? ? ? ??
C) a=0 ? ? ? ? ? ? D) a
?10. 下面各語句行中,能正確進行賦字符串操作的語句行是
A) char st[4][5]={"ABCDE"}; ? ? ? ?B) char s[5]={'A','B','C','D','E'};
C) char *s; s="ABCDE"; ? ? ? ?D) char *s; scanf("%s",s);
?11. 若fp是指向某文件的指針,且已讀到該文件的末尾,則C語言函數feof(fp)的返回值是
A) EOF ? ? ? ? ? ? ?B) -1 ? ? ? ? ? ? ? ?C) 非零值 ? ? ? ? ? ?D) NULL
?12. 設p1和p2是指向同一個int型一維數組的指針變量,k為int型變量,則不能正確執行的語句是
A)k=*p1+*p2;?
B)p2=k;?
C)p1=p2;?
D)k=*p1 *(*p2);
?13. 下面程序的輸出是
main()
{ int a=-1, b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d\n",k,a,b);}
A) 0 0 3 ? ? ? ? ? ?B) 0 1 2 ? ? ? ? ? ? C) 1 0 3 ? ? ? ? ? ? D) 1 1 2
?14. 若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是
A) pb=&x ? ? ? ? ? ?B) pb=x; ? ? ? ? ? ? C) *pb=&x; ? ? ? ? ? D) *pb=*x
?15. 設有
static char str[ ]="Beijing";
則執行
printf("%d\n", strlen(strcpy(str,"China")));
后的輸出結果為
A) 5 ? ? ? ? ? ?B) 7 ? ? ? ? ? ? C) 12 ? ? ? ? ? ?D) 14
?16. 以下程序的輸出結果是
? ?A) 10 1 9 2 ? B) 9 8 7 6 ? C) 10 9 9 0 ? D) 10 10 9 1
? ? ? main( ? )
? ? ?{ ? ? int ? ?x=10,y=10,I;
? ? ? ? ? ?for(i=0;x>8;y=++i)
? ? ? ? ? ? ? printf("%d,%d ",x--,y);
? ? ?}
?17. 設有如下函數定義:
int f(char *s)
{ ?char *p=s;
while(*p!='\0') p++;
return(p-s); ? ? }
如果在主程序中用下面的語句調用上述函數,則輸出結果為
printf("%d\n",f("goodbey!"));
A) 3 ? ? ? ? ? ? B) 6 ? ? ? ? ? C) 8 ? ? ? ? ? D) 0
?18. 若執行下面的程序時從鍵盤上輸入3和4,則輸出是
main()
{ int a,b,s;
scanf("%d %d",&a,&b);
s=a;
if(a<b)s=b;
s=s*s;
printf("%d\n",s);}
A) 14 ? ? ? ? ?B) 16 ? ? ? ? C) 18 ? ? ? ? ?D) 20
?19. 下面四個選項中,均是C語言關鍵字的是:
A. auto enum include ? ? ? ? ? ?B ?swith typedef continue
C ?signed union scanf ? ? ? ? ? D ?if struct type
?20. 有以下程序
viod fun (int a,int b,int c)
{a=456;b=567;c=678;}
main()
{
int x=10,y=20,z=30;
fun (x,y,z);
printf("%d,%d.%d",x,y,z);
}
輸出結果是
A)30,20,10?
B)10,20,30?
C)456,567,678?
D)678,567,456
?
二、填空題(每空1分,共10分。)
1. 為表示關系:x≤y≤z ,應使用的C語言表達式是 ? ? ? ? ? ? 。
?2. 字符串是以 ? ? ? ? ?為結束標志的一維字符數組。有定義:char a[]="";則a數組的長度是 ? ? ? ? ? ?。
?3. 設int a; ?float f; ?double ?i ?;則表達式10+'a'+i*f值的數據類型是 ? ? ? ? ? 。
?4. 設有說明語句"int a[3][4]={{1,2},{3,4,5},{6,7,8}};"則a[0][2]的初始化值為 ? ? ? ? ? ? ,a[2][2]的初始化值為 ? ? ? ? ? ? ?。
?5. 假定p所指對象的值為25,p+1所指對象的值為46,則執行"(*p)++;"語句后,p所指對象的值為 ? ? ? ? ??
?6. 程序由主要由 ? ? ? ? ?、 ? ? ? ? 組成。
?7. 有函數調用fun1(x+y,(y,z),10,fun((x,y―1)));函數fun1有 ? ? ? ?
?個參數
三、判斷題(本題共10道小題,共10分。)
1. 在C中,外部變量的隱含類別是自動存儲類別( )
?2. 實參和與其對應的形參共占用一個存儲單元( )
?3. 在不得已的情況下(例如提高程序運行效率),才使用goto語句( )
?4. 條件表達式可以取代if語句,或者用if語句取代條件表達式( )
?5. 函數中的靜態變量在函數每次調用時,都會重新設置初值( )
?6. 全局變量都是靜態存儲( )
?7. 如果在所有函數定義之前,在函數外部已做了聲明,則各個主調函數不必再做函數原型聲明( )
?8. 系統不允許用戶重新定義標準庫函數( ?)
?9. 若調用一個函數,且此函數中沒有return語句,則該函數沒有返回值( ?)
?10. 函數調用:strcat(strcpy(str1,str2),str3)的功能是將串str2連接到串str1之后再將串str1復制到串str3中( )
?
四、程序填空(本題共5道小題,每題4分,共20分。)
1. ? ?以下fun函數把ch中的大寫字母轉換成字母序列中的下一個大寫字母,字母Z轉換成字母A,其它字符不變,返回轉換后的字母或其它字符。請填空。
char fun(char ?ch)
{
if(ch= ='Z') ch= ? ? ? ? ?;
else if(ch>='A'&&ch<='Y') ch= ? ? ? ? ?;
return ?ch;
}
?2. 以下sstrcpy( )函數實現字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。請填空。
void sstrcpy(char *s,char *t)
{ while(*s++= ? ? ? ? ? ? );}
main( )
{ ?char str1[100],str2[]="abcdefgh";
? ?sstrcpy(str1,str2);
? ?printf("%s\n",str1);
}
?3. 以下程序段用于構成一個簡單的單向鏈表。
struct STRU
{ int ? x, y ;
float rate;
? ? ? ? ? ? p;
} a, b;
a.x=0; a.y=0; a.rate=0; a.p=&b;
b.x=0; b.y=0; b.rate=0; b.p=NULL;
?4. 電話990撥號上網費率白天是每小時4.20元,夜間是每小時2.70元。使用的分鐘(整數minute)和費率(含小數fei)變量由鍵盤輸入,請補上語句。
? ?main()
? ?{ int minute; float fei;
? ? ?scanf( ? ? ? ? ? ? ? );?
? ? ?printf("上網費=%8.2f元\n", ? ? ? ? ? ? ? );
? ?}
5. 以下程序中, for循環體執行的次數是 ? ? ? ? ? ? ?。
#define ?N 2
#define ?M N+1
#define ?K M+1*M/2
main()
{ int i;
? for(i=1;i<K;i++)
? { ... }
? ...
}
?
五、編程題(本題共2道小題,共20分。)
1. 打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
?
2. 請編寫函數fun,函數的功能是:在字符串中所有數字字符前加一個$字符。
例如,輸入:A1B23CD45,則輸出為:A$1B$2$3CD$4$5。
一、選擇題(本題共20道小題,共40分。)
1. A
2. D
3. C
4. D
5. D
6. B
7. C
8. C
9. D
10. C
11. D
12. B
13. C
14. A
15. A
16. D
17. C
18. B
19. B
20. A
二、填空題(每空1分,共10分。)
1. (x<=y)&&(y<=z)
2. '\0' ?, ?0
3. double
4. 0 , 8
5. 26
6. 數據結構 ,算法
7. 4
三、判斷題(本題共10道小題,共10分。)
1. 對
2. 錯
3. 錯
4. 錯
5. 錯
6. 錯
7. 對
8. 對
9. 錯
10.?
四、程序填空(本題共5道小題,每題4分,共20分。)
1. 'A' , ch+1
2. *t++
3. Struct STRU *
4. "%d %f",&minute, &fei
fei*minute/60
5. 4
五、編程題(本題共2道小題,共20分。)
1. main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出個位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
2. #include <stdio.h>
void fun( char *s)
{char a[100];
int i=0;
while(*s)
if(*s>='0'&&*s<='9') {a[i++]='$';a[i++]=*s++;}
else a[i++]=*s++;?
a='\0';
strcpy(s,a);
}
main()
{ char s[80];
printf("enter a string:");
scanf("%s", s);
fun(s);
printf("the result: %s\n", s);
}