C語言不掛科之我愛譚浩強——選擇填空拿滿分(附例題答案和知識點詳解)

  1. C語言程序的基本單位是___C___。
    A、程序行 B、語句
    C、函數 D、字符
  2. 請選出可用作C語言用戶標識符的一組標識符___B___。
    A、void 、 define 、 WORD
    B、a3_b3 、 _123 、 IF
    C、For 、 - abc 、 ase
    D、2a 、DO、 sizeof

標識符指的是函數名,變量名
1、只能包含數字、字母以及下劃線,不能包含其他特殊字符
2、只能以字母或下劃線開頭
3、不能以系統已有的關鍵字重名

  1. 假定x和y爲double型,則表達式(x=2,y=x+5/2)的值是__C__ 。
    A、4.500000 B、4
    C、4.000000 D、2.000000

    5/2是按照整數運算的,所以5/2=2,再加上2,結果是double型的所以是4.000000,六位小數

  2. 下列可以正確表示字符型常量的是___D__。
    A、297 B、“a”
    C、"\n" D、’\t’

    C語言中,一個字符常量代表 ASCII字符集中的一個字符,在程序中用單引號括起來作爲字符常量,字符常量的範圍是0~127。由於字符常量用單引號括起來,所以選項B、C錯誤,選項 D超過了字符常量的表示範圍。

  3. 有如下程序段,對應正確的數據輸入是___A___。

float x,y;
scanf(%f%f”, &x,&y);
printf(”a=%f,b=%f”, x,y);

A、2.04<回車> 5.67<回車>
B、2.04,5.67<回車>
C、2.04,5.67<回車>
D、2.045.67<回車>

C的,改爲空格就對了
如果是這樣
scanf("%f,%f", &x,&y);
printf(“a=%f,b=%f”, x,y);
C就對了,A就錯了

  1. 已知:char ch=‘A’;則下列表達式的值是__B__。
  ch = (ch>='A'&&ch<='Z') ? (ch+32) : ch;
  
    A、A          
    B、a         
    C、Z      
    D、z

根據ascll碼,大寫字母加32變小寫

  1. a=(a=35,a4)的值爲___60__

c語言提供一種特殊的運算符,逗號運算符,優先級別最低,它將兩個及其以上的式子聯接起來,從左往右逐個計算表達式,整個表達式的值爲最後一個表達式的值。如:(3+5,6+8)稱爲逗號表達式,其求解過程先表達式1,後表達式2,整個表達式值是表達式2的值,如:(3+5,6+8)的值是14;a=(a=35,a4)的值是60,其中(a=35,a4)的值是60, a的值在逗號表達式裏一直是15,最後被逗號表達式賦值爲60,a的值最終爲60。

  1. 設a、b、c、d、m、n均爲int型變量,且a=5、b=6、c=7、d=8、
    m=2、n=1,則邏輯表達式(ma<b)&&(nc<d) 的值爲__A__。
 A、0         B、  1       C、2         D、 3
自左向右,先算a<b,爲真,所以=1,再看m==1,爲假 =0,所以(m==a<b)爲假=0,中間是and符號,所以不用算了,答案就是假 =0

一級運算符:標識,常量,字符串文字量,優先級提升表達式最優先執行。

二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、 -> identifier)、
後綴自增(i++)、後綴自減(i--)、 複合初始化(initializer-list)。

三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、 位反~ 邏輯否!)、
求類型長度(sizeof unary-expression)。

四級運算符:強制表達式成爲type-name指定的類型( type-name ) cast-expression。

五級運算符:“ * ” 乘法運算符。

六級運算符:“ + ”加法運算符。

七級運算符:<< 左移運算符;>> 右移運算符。

八級運算符:<<=>>=關係運算符。

九級運算符:“ == ”等於運算符;“ != ”不等於運算符。

十級運算符:“ & ”按位與運算符。

十一級運算符:“ ∧ ”按位異或運算符。

十二級運算符:“ | ”按位或運算符。

十三級運算符:“&&”邏輯與運算符。

十四級運算符:“ || ”邏輯或運算符。

十五級運算符:? :條件運算符。

C語言中各運算符的結合性:

1、左結合性(自左至右):

例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與“-”號結合,執行x-y 運算,
然後再執行+z 的運算。這種自左至右的結合方向就稱爲“左結合性”。

2、右結合性(自右至左)

自右至左的結合方向稱爲“右結合性”。最典型的右結合 性運算符是賦值運算符。
如x=y=z,由於“=”的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少爲右結合性,應注意區別,以避免理解錯誤。
  1. 執行以下程序後輸出的結果是___D__。
main()
{ int y=10;
  do {y--;}
  while(--y);
  printf("%d\n",y--);}
  A、-1         B、1          C、8          D、0

這個題的意思就是,一直做yy--,當y=0--y=0時,就打印yy--的y值,結束do循環
x++:先賦值再自加
++x:先自加再賦值
先 y- -=9,- -y=8!=0,所以繼續y- -,後面一直這樣循環,現在設循環到y=2了,do(y- -) 後,y= 1,現在- -y=0,就可以打印y- -了,y=1,y=y-1,y=0,輸出爲0,

  1. 執行以下程序後輸出的結果是___B__。
main()
  {int i, j, w=0;
   for(i=4; i; i--)
     for(j=1;j<=2;j++)
        w=w+i*j; 
	w=i*j;
    printf("%d\n",w);
  }
 A、4           B、0           C、1           D、30

這個代碼前面那個 w=w+i* j; 沒用,後面的w=ij;直接將其取代了。爲啥是0呢,因爲循環之後,i=1,j=2,然後i–後i=0,j=3,w=03=0
具體可看下面程序

  {int i, j, w=0;
   for(i=4; i; --i){
   		printf("k: %d \n",i);
		for(j=1;j<=2;j++){
		printf("j: %d \n",j);
        w=w+i*j;
		}}
w=i*j;
printf("*****************\n");
printf("w: %d \n",w);
printf("i: %d \n",i);
printf("j: %d \n",j);
  }

k: 4
j: 1
j: 2
k: 3
j: 1
j: 2
k: 2
j: 1
j: 2
k: 1
j: 1
j: 2
*****************
w: 0
i: 0
j: 3
  1. 以下程序的輸出結果是 A
f( int a){
	int b=0;
    static int c = 3;
    b++; c++;
    return(a+b+c);   
	}
int main(){
	int a = 2, i;
    for(i=0;i<3;i++) 
	printf("%d\n",f(a));
}
 A、 7        B、 7        C、 7           D、 7
     8           9           10             7
     9           11          13             7

a和b他倆是動態的,每次循環都是固定值,a=2,b++=1和2+1=3。c爲靜態變量,每次++之後都記住了上次的值,也就是三次循環分別是3++ ,4++, 5++ 結果是3+4 , 3+5, 3+6

  1. 設C程序如下:程序運行輸出的結果是__D_ 。
#define ABC(x) x*x
int main(){
	 int a=3,b;
     b=ABC(a+1);
     printf("b=%d", b);
}
 A、b=4                         B、b=a+1
 C、b=16                        D、b=7

C語言中,可以用 #define 定義一個標識符來表示一個常量。其特點是:定義的標識符不佔內存,只是一個臨時的符號,預編譯後這個符號就不存在了。
#define 定義標識符的一般形式爲:#define 標識符 常量 //注意, 最後沒有分號
#define 和 #include 一樣,也是以“#”開頭的。凡是以“#”開頭的均爲預處理指令,#define也不例外。
#define又稱宏定義,標識符爲所定義的宏名,簡稱宏。標識符的命名規則與前面講的變量的命名規則是一樣的。#define 的功能是將標識符定義爲其後的常量。一經定義,程序中就可以直接用標識符來表示這個常量。是不是與定義變量類似?但是要區分開!變量名錶示的是一個變量,但宏名錶示的是一個常量。可以給變量賦值,但絕不能給常量賦值。
宏所表示的常量可以是數字、字符、字符串、表達式。其中最常用的是數字。

本題表示的是表達式
ABC(a+1)={a+1*a+1}=a+a+1=7

  1. 以下程序的輸出結果是___B__
{char b[  ]="Language";
 char *p=b;
 printf("%c ",*(b+2));
 p=p+7;
 printf("%c\n",*p++);
}

A、2  7        B、n  e         C、a  g          D、n  u

字符串與指針,不太懂的看看這個博客吧,裏面有一樣的例題https://blog.csdn.net/weixin_45755332/article/details/106922351

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章