本文目錄一覽:
- 1、有關C語言試題
- 2、C語言程序設計試題
- 3、C語言程序設計進階試題
- 4、C語言 指針進階問題;
- 5、中國大學moocC語言進階里的一道題
有關C語言試題
你看這行嗎? C語言試題(10)選擇題(50×2=100)1.以下敘述正確的是( )。A)在C程序中,main函數必須位於程序的最前面B)C程序的每行中只能寫一條語句C)C語言本身沒有輸入輸出語句D)在對一個C程序進行編譯的過程中,可發現注釋中的拼寫錯誤2.C語言規定:在一個源程序中,main函數的位置( )。A)必須在最開始 B)必須在系統調用的庫函數的後面C)可以任意 D)必須在最後3.在C語言中(以16位PC機為例),5種基本數據類型的存儲空間長度的排列順序為( )。A)charint 1ong int=floatdoubleB)char=int1ong int=floatdoubleC)char int 1ong int=float=doubleD)char=int =1ong int=floatdouble4.假設所有變數均為整型,則表達式(a=2,b=5,b++,a+b)的值是( )。 A)7 B)8 C)6 D)25.下面四個選項中,均是C語言關鍵字的選項是( )。A)auto B)switch C)signed D)if enum typedef union struct include continue scanf type6.C語言中的標識符只能由字母、數字和下劃線三種字元組成,且第一個字元( )。 A)必須為字母 B)必須為下劃線 C)必須為字母或下劃線 D)可以是字母,數字和下劃線中任一種字元7.下面四個選項中,均是不合法的轉義字元的選項是( )。 A)’\” B)’\1011′ C)’\011′ D)’\abc’ ‘\\’ ‘\’ ‘\f’ ‘\101’8.若有代數式3ae/bc,則不正確的C語言表達式是( )。 A) a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*39.已知各變數的類型說明如下: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2;則以下符合C語言語法的表達式是( )。A) a+=a-=(b= 4)*(a=3) B)a=a*3=2C) x%(-3) D)y=f1oat(i)10.以下正確的敘述是( )。A)在C程序中,每行中只能寫一條語句B)若a是實型變數,C程序中允許賦值a=10,因此實型變數中允許存放整型數C)在C程序中,無論是整數還是實數,都能被準確無誤地表示D)在C程序中,%是只能用於整數運算的運算符11.已知字母A的ASCII碼為十進位數65,且c2為字元型,則執行語句c2=’A’+’6’-‘3′;後,c2中的值為( )。A)D B)68 C)不確定的值 D)C12.若以下變數均是整型,且num=sum=7;則執行表達式sum=num++,sum++,++num後sum的值為( )。 A) 7 B) 8 C) 9 D) 1013.若有說明語句:char c=’\72’則變數c( )。A)包含1個字元 B)包含2個字元C)包含3個字元 D)說明不合法,c的值不確定14.下面四個選項中,均是非法常量的選項是( )。A)’as’ B)’\\’ c)-0xl8 D)0xabc -0fff ‘\01’ 01177 ‘\0’ ‘\0xa’ 12,456 0xf “a”15.設變數n為f1oat類型,m為int類型,則以下能實現將n中的數值保留小數點後兩位,第三位進行四舍五人運算的表達式是( )。A) n=(n*100+0.5)/100.0 B)m=n*100+0.5 ,n= m/100.0C) n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.016.設C語言中,一個int型數據在內存中佔2個位元組,則unsigned int型數據的取值範圍為( )。A) 0~255 B) 0~32767 C) 0~65535 D) 0~214748364717.若有以下定義,則能使值為3的表達式是( )。int k= 7,x =12;A) x%=(k%= 5) B) x%=(k一k%5)C) x%=k- k%5 D) (x%=k)一(k%=5)18.putchar函數可以向終端輸出一個( )。A)整型變數表達式值B)實型變數值C)字元串D)字元或字元型變數值19.printf函數中用到格式符%5s ,其中數字5表示輸出的字元串佔用5列。如果字元串長度小於5,則輸出按方式( )。A)從左起輸出該字串,右補空格B)按原字元長從左向右全部輸出C)右對齊輸出該字串,左補空格D)輸出錯誤信息20.若x ,y均定義為int型,z定義為double型,以下不合法的scanf函數調用語句是( )。A) scanf(” %d%lx,%le”,x,y,z);B) scanf(“%2d * %d%lf”x,y,z ); C) scanf(“%x %* d%o”,x,y);D) scanf(“%x%o%6.2f”,x,y,z); 21.已有定義int x; f1oat y;且執行scanf(“%3d%f”,x,y);語句,若從第一列開始輸入數據12345 678(回車),則x 的值為( )。A)12345 B)123 C) 45 D) 345 22.已有如下定義和輸入語句,若要求a1,a2,c1,c2的值分別為10,20,A,B,當從第一列開始輸入數據時,正確的數據輸入方式是( )。int a1,a2; char c1,c2;scanf(“%d%d”,a1,a2);scanf(“%c%c”,c1,c2); A) 1020ABCR B)10 20CRABCR C)10 20 ABCR D)10 20ABCR23.以下能正確地定義整型變數a,b和c 並為其賦初值5的語句是( )。 A)int a=b= c= 5; B) int a,b, c= 5; C)a= 5,b=5,c=5; D) a= b= c=5;24.已知ch是字元型變數,下面正確的賦值語句是( )。A) ch= ‘123’; B) ch= ‘\xff’; C) ch= ‘\08′; D) ch=”\”;25.設x 、y均為f1oat型變數,則以下不合法的賦值語句是( )。A)++x; B)y=(x%2)/10; C) x*=y+8; D)x=y=0;26.邏輯運算符兩側運算對象的數據類型( )。 A)只能是0或1 B)只能是0或非0正數 C)只能是整型或字元型數據 D)可以是任何類型的數據27.下列運算符中優先順序最高的是( )。 A) B)十 C) D)!=28.設x,y 和z是int型變數,且x = 3,y= 4,z= 5,則下面表達式中值為0的是( )。 A)’y”y’ B)x =y C) x||y+zy-z D) !(xy)!z||1)29.判斷char型變數c1是否為小寫字母 正確表達式為( )。 A)’ a’ =cl=’ z’ B) (cl = a)(cl=z) C)(‘ a’ =cl)||(‘ z’ = cl) D)(c1=’a’)(cl=’z’)30.執行以下語句後a的值為( )。int a,b,c;a= b= c= 1;++a||++b++c A)錯誤 B) 0 C) 2 D) 131.以下符合c語言語法的賦值表達式是( )。A)d=9+e+f=d+9 B)J=9+e,f=d+9C)d=9+e,e++,d+9 D)d=9+e++=d+732.若有代數式3ae/bc,則不正確的c語言表達式是( )。A)a/b/c*e*3 B)3*a*e/b/cC)3*a*e/b*c D)a*e/c/b*e33.已知各變數的類型說明如下int k,a,b; unsigned long w=5double x=1.422;則以下不符合c語言語法的表達式是( )。A)x%(-3) B)w+=-2C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)x(a=3)34.已知字母A的ASCII碼為+進位數65,且c2為字元型,則執行語句c2=’A’+’6′-‘3′;後,c2中的值為( )。A)D B) 68C)不確定的值 D)C35.若有以下定義:int a,b ;float x;,則正確的賦值語句是( )。A)a=1,b=2, B)b++;C)a=b=5 D)b=int(x)36.c語言中的標識符只能由字母、數字和下劃線三種字元組成,且第一個字元( )。A)必須為字母B)必須為下劃線C)必須為字母或下劃線D)可以是字母、數字和下劃線中任-種字元37.在c語言中,char型數據在內存中的存儲形式是( )。A)補碼 B)反碼 C)原碼 D)ASCII碼38.若有說明語句:char c=’72’;則變數c( )。A)包含1個字元 B)2個字元C)包含3個字元 D)說明不合法,c的值不確定39.己知各變數的類型說明如下:int i=8,k,a,b;unsigned long w=55double x=1.42,y=5.2則以下符合c語言語法的表達式是( )。A)+=a-=(b=4)*(a=3) B)a=a*3=2C)x%(-3) D)y=float(i)40.若以下變數均是整型,且num=sum=7;則執行表達式sum=num++, sum++,++num後sum的值為( )。A)7 B)8 C)9 D)1041.若有定義:int a=7;folat x=2.5,y=4.7;則表達式x+a%3*(int)(x+y)%2/4的值是( )。A)2.500000 B)2.750000 C)3.500000 D)0.00000042.設有說明:char w;int x,float y;double z; 則表達式w*x+z-y值的數據類型為( )。A)float B)char C) int D)double43.設變數n為float類型,m為int 類型,則以下能實現將n中的數值保留小數點後兩位,第三位進行四捨五入運算的表達式是( )。A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.044.以下關於運算符優先順序的描述中正確的是( )。A)關係運算符<算術運算符<賦值運算符<邏輯與運算符B)邏輯與運算符<關係運算符<算術運算符<賦值運算符C)賦值運算符<遲輯與運算符<關係運算符<算術運算符D)算術運算符<關係運算符<賦值運算符<邏輯與運算符45.判斷char型變數ch是否為大寫字母的正確表達式是( )。A) ‘A’=ch=’Z’ B)(ch=’A’)(ch=’Z’)C)(ch=’A’)(ch+’Z’) D)(‘A’=ch)AND(‘Z’=ch46.下列運算符中優先順序最高的是( )。A) B)+ C) D)!=47.執行以下語句後a的值為( )。int a=5,b=6,w=1,x=2,y=3,z=4;(a=wx)(b=yz);A)5 B)0 C)2 D)148.已知 x=43,ch=’A’,y=0;則表達式(x=ych’B’!y)的值是( )。A)0 B)語法錯 C)1 D) “假”49.設x、y和s是int型變數,且x=3,y=4,z=5,則下面表達式中值為0的是( )。A)’x”y’B)x=yC)x||y+zy-zD)!((xy)!z50.以下不正確的if語句形式是( )。A) if(xyx!=y)B)if(x==y)x+=y;C)if(x!=y) scanf(“%d”,x) else scanf(“%d”,y);D) if(xy){x++;y++;}
C語言程序設計試題
1.代碼文件 :包含指令不僅僅限於.h頭文件,可以包含任何編譯器能識別的C/C++代碼文件,包括.c,.hpp,.cpp,.hxx,.cxx等,甚至.txt,.abc等等都可以.
2. 賦值
3. x++
4. p[4] 因為sizeof(int) 的值為4,實際上是定義了一個整形數組
5. if
6. DataType
7. 實參變數
8. weirong18
9. float
10. 33 因為++運算符優先順序高於* ,故先計算++y,然後將y的值與3相乘得到33
11. (1) ch=’a’ ch=’z’
(2) (x==0 || x==1) (y=1.0 y=6.0)
12. (1) int array[10] = {9,4,7,49,32,-5};
(2)0 到 9
(3)scanf(“%d”,array[1]);
(4)array[0] = 39;
(5)array[0] = array[5]+array[3];
C語言程序設計進階試題
1. a=3,b=2,c=2. 解釋: 因為條件為假,if 語句沒有執行,即a=b 沒有執行。 後面執行語句之後的結果顯然的。
2.k=900。 解釋: 在語法當中規定,k*=i+j 等價於 k = k*(i+j), 而不等於 k = k*i + j 。 計算的 k = 30*(10+20)= 900 . 這個也是考試的考點哦。
3.非零表示邏輯「真」,零表示邏輯「假」。 這個沒什麼是鐵規定吧。
4.a=60。 這個與第二題是一樣的,考的是同樣一個問題。
5.輸出為3。 解釋: C語言中規定整數出整數時候,餘數忽略,取整數部分。即 1/2 =0 。4/3 =1。 當然這是在兩個變數都定義為int 類型的情況下。 如果一個定義為float 或 double 情況就不一樣了,跟普通數學計算一樣。
6. (x=y)(y=z) 解釋: 兩個條件同時成立是表達式為真。 即x=y 同時 y=z 才能成立。
7.
8. 如下:
初始值;
while (條件){
循環體;
循環變數;
};
C語言 指針進階問題;
你的程序里有幾個問題:
1.編程思路和要求的偏差,要求里說明限制字元串的數量不超過10,但對字元串的長度沒有限定,在你的程序里通過長度限定為10的text變數來接收輸入的字元串,實際上已經把輸入字元串的長度限定在了10的範圍內;
2.冗餘的變數,在主函數里變數a可能原意是保存n的值(n的值在循環里被更改了),即使是這樣,在調用函數max_len時:「x=max_len(p,n); 」,傳入的第二個參數卻不是a,而是已經被改變了的n,這裡不再詳說,參考後邊的程序
3.動態空間的釋放,程序中使用指針數組來存儲各輸入字元串的首地址,在釋放這些指針時,需逐個指針進行釋放,具體操作見後邊的程序
4.函數返回值的設定,建議返回下標,這樣方便其它程序對最長字元串進行的可能的其它操作
下邊是按照程序要求重寫的程序,可以參考,思路是為每個字元串先分配額定的長度,C語言編寫,VC編譯:
#includestdio.h
#includestring.h
#includestdlib.h
int max_len(char *s[ ], int n)
{
int i,index;
for(index=0,i=1;in;i++)
{
if(strlen(s[index])strlen(s[i])) index =i;
}
return index; //返回的是最長字元串在指針數組中的下標,方便在其他程序里使用
}
int main(void)
{
int i,n;
char *p[10];
printf(“輸入字元串個數(應小於10):”);
scanf(“%d”,n);
for(i=0;in;i++)
{
p[i] = (char *)malloc(sizeof(char)*100); //為每個字元串分配額定空間:100
printf(“輸入第%d個字元串:”,i);
scanf(“%s”,p[i]);
}
printf(“最長字元串長度為%d\n”,strlen(p[max_len(p,n)]));//返回的是標號,再計算其對應字元串長度
for(i=0;in;i++)
{
free(p[i]);//逐個的釋放
}
return 0;
}
中國大學moocC語言進階里的一道題
#include stdio.hchar input1[100];//必須開全局變數!不然會有意外情況。char input2[100];int main() {
char ch;
long l1 = 0;
long l2 = 0;
while ((ch = getchar()) != ‘\n’) {//有空格字元的輸入
input1[l1++] = ch;
}
while ((ch = getchar()) != ‘\n’) {
input2[l2++] = ch;
}
int flag = 0;
for (int i = 0; i l2; i++) {
for (int h = 0; h l1; h++) {
if (input1[h] != input2[i + h]) {
break;
}
if (h == l1 – 1) {
printf(“%d “, i);
flag = 1;
}
}
}
if (!flag) {
printf(“-1”);
}
return 0;
}
原創文章,作者:NFKD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144070.html