日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言错题

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言错题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**錯題**

1
若有條件表達式 (exp)?a++:b–,則以下表達式中能完全等價于表達式(exp)的是( )。

A: (exp0)
B: (exp!=0)
C: (exp1)
D: (exp!=1)
標準答案:B 您的答案:A
**解析:
選B

exp如果為真,a;如果為假,操作b

當exp為假,也就是0時 exp!=0也為假.

當exp為真,非0, exp!=0也為真.

2
下列表達式中,不滿足“當x的值為偶數時值為真,為奇數時值為假”要求的是( )

A: x%2==0
B: !x%2!=0
C: (x/2*2-x)==0
D: !(x%2)
標準答案:B 您的答案:A

解析:A…x%2==0即.(x%2)0 ,x為偶,這x%2結果為0,00結果為真B…!x%2!=0 即 ((!x)%2)!=0 由于先運算!x,所以結果跟x是否為偶數沒有關系C.由于x是整數,x/2結果也為整數,例9/2=4,偶數時x/22=x,結果為真,奇數時x/22不等于x

3
設有:int a=1,b=2,c=3,d=4,m=2,n=2; 執行(m=a>b)&&(n=c>d)后n的值是( )。

A: 0
B: 2
C: 3
D: 4

標準答案:B 您的答案:A
解析:需要沒有弄清楚表達式與運算符的關系,是0或1
B
其規則是:當運算符前后兩個條件表達式都滿足時,其最終結果才為真。當發現第一個表達式的值為假時,計算機將不再執行后面表達式的運算。 本題中,由于前一個表達式的值為“假”,所以后面的表達式不再進行運算,因而n的值保持不變,仍為2。

4
設int a=0,b=5;執行表達式++a||++b,a+b后,a,b和表達式的值分別是( )
A: 1,5,7
B: 1,6,7
C: 1,5,6
D: 0,5,7

標準答案:C 您的答案:A
解析 :
int a=0,b=5;執行表達式++a||++b,a+b后,
a的值是1,
b的值是5,
表達式(++a||++b,a+b)的值是6。
這是因為當++a 時,a的值為1已是非0,所以邏輯或后面的式子不再計算,直接執行逗號后的a+b,其值就為6。
a+b的值是a自增和b自增后的值相加

5
C語言函數返回類型的默認定義類型是void
標準答案:N 您的答案:Y

6
C 語言中的變量名不區分大小寫。 ( )
標準答案:N 您的答案:y

7
指向數組元素的指針只可指向數組的首元素。
標準答案:N 您的答案:Y
解析:指向數組元素的指針只可指向數組的任何元素

8
定義:double x=3.5,y=3.2;則表達式(int)x*0.5的值是_______,表達式y+=x++的值是_______。
標準答案:
1.5
6.7
*解析:表達式(int)x將x轉化為3,0.5,將值轉化為double型1.5
y=y+x

9
設x,y,z均為int型變量;寫出描述“x,y和z中有兩個為負數”的C語言表達式:_______________。

標準答案:
(x<0&&y<0&&z>0)||(x<0&&y>0&&z<0)||(x>0&&y<0&&z<0)

您的答案:
(x<0
&&
y<0&&z>=0)
||(x<0
&&
y>=0&&z<0)||(x>=0
&&
y<0&&z<0)
解析:看清運算關系,和運算符號的優先級

指針習題(12-2)

10
若有以下定義,則數值不為3的表達式是__________。
int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;

A: x[3]
B: p1=x+3,p1++
C: p1=x+2,(p1++)
D: p1=x+2,*++p1

標準答案:C 您的答案:B
解析:數組是從下x【0】開始做元素的

11
下面不能正確進行字符串賦值操作的是( )。

A: char s[6]={“ABCDE”};
B: char s[5]={‘A’,'B’,'C’,'D’,'E’};
C: char *s;s=”ABCDE”;
D: char *s; scanf(“%s”,s);

標準答案:B 您的答案:D
解析:B: char s[5]={‘A’,'B’,'C’,'D’,'E’};,這樣賦值須在最后加上‘/0’

12
若有說明:int*p1,*p2,m=5,n;以下程序段正確的是( )

A: p1=&m;p2=&p1
B: p1=&n;scanf(“%d”,*p1)
C: scanf(“%d”,n); *p1=n
D: p1=&n; *p1=m

標準答案:D 您的答案:A
解析:A: p1=&m;p2=&p1應該是p2=p1

13
若有以下定義和語句:

int a[]={l,2,3,4,5,6,7,8,9,10},*p=a;

則值為3的表達式是_________.

A: p+=2,(p++)
B: p+=2,++p
C: p+=3,*p++
D: p+=2,++*p

標準答案:A 您的答案:C
解析:數組是從下x【0】開始做元素的

14
語句int(*prt)();的含義是____________。

A: prt是一個指向一維數組的指針變量
B: prt是指向int型數據的指針變量
C: prt是指向函數的指針,該函數返回一個int型數據
D: prt是一個函數名,該函數的返回值是指向int型數據的指針

標準答案:C 您的答案:A
解析: prt是一個函數名,該函數的返回值是指向int型數據的指針
一個指向一維數組的指針變量,是指針數組

15
以下程序有錯,錯誤原因是___________。
main()
{int *p,i;
char *q,ch;
p=&i; q=&ch; *p=40; p=q;

}

A: p和q的類型不一致,不能執行p=q;語句
B: p中存放的是地址值,因此不能執行p=40;語句
C: q沒有指向具體的存儲單元,所以*q沒有實際意義
D: q雖然指向了具體的存儲單元,但該單元中沒有確定的值,所以不能執行p=q; 語句

標準答案:A 您的答案:D
解析:
不能執行p=q;語句是因為A: p和q的類型不一致

16
若有以下定義,則賦值正確的是( )。
int a ,b , *p;
float c, *q;

A: p=&c
B: q=p
C: p=NULL
D: q=new int
準答案:C 您的答案:D
解析:NULL是C語言中的自帶的語句

17
對于語句int *pa[5];下列描述中正確的是_______.

A: pa是一個指向數組的指針,所指向的數組是5個int型元素
B: pa是一個指向某數組中第5個元素的指針,該元素是int型變量
C: pa [5]表示某個元素的第5個元素的值
D: pa是一個具有5個元素的指針數組,每個元素是一個int型指針

標準答案:D 您的答案:A
解析: pa是一個具有5個元素的指針數組,每個元素是一個int型指針
區分指針數組和數組指針

·18
已有函數max(a,b),為了使函數指針變量p指向函數max,則下面選項中賦值方法正確的是( )。

A: p=max
B: *p=max
C: p=max(a, b)
D: *p=max(a, b )

標準答案:A 您的答案:D
解析:函數名是地址,可以把指針指向函數
指針數組:,即用于存儲指針的數組,也就是數組元素都是指針
數組指針:,即指向數組的指針

19
若有說明:char language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
則表達式language[1]>*language[3]比較的是______________。

A: 字符F和字符P
B: 字符串BASIC和字符串JAVA
C: 字符B和字符J
D: 字符串FORTRAN和字符串PASCAL

標準答案:C 您的答案:D

20
語句“int p;”中的p的含義為取值。
標準答案:N 您的答案:Y
*解析:是指針運算符號,&是取地址符號

21
指針可以加上或減去一個int型數,也可以加上一個指針。
標準答案:N 您的答案:Y
解析:指針之間不可以相加

22
*(a[i]+j)與a[i][j]的含義相同。
標準答案:Y 您的答案:N

23
指向數組元素的指針只可指向數組的首元素。
標準答案:N 您的答案:Y
解析:指向數組元素的指針只可指向數組的首元素

24
語句*–p;執行之后p指向的內存單元被改變。
標準答案:N 您的答案:Y 您的得分: 0
解析:語句–p;執行之后p指向的內存單元被改變。*

25
表達式*p++的運算順序為先自增后取值。
標準答案:N 您的答案:Y
解析:雖然++的優先級高于,但是依然是先取值,后自增*

26
設int a[10],p=a;則對a[3]的引用可以是p[3](下標法)和_____(地址法)。
標準答案:
(p+3)
您的答案:
p+3
**解析:P+3是一個地址,(p+3)才是運算后*

27
如果x是整型變量,則合法的形式是( )。

A: &(x+5)
B: *x
C: &*x
D: *&x

標準答案:D 您的答案:C
解析:&應該從一個值中取地址

28
已定義以下函數:

int fun(int *p){return *p;}fun函數返回值是 ( )

A: 一個整數
B: 形參p的地址值
C: 形參p中存放的值
D: 不確定的值

標準答案:C 您的答案:A
*解析:return p;可知,返回的是p指向的值

29
已有定義int k=2,*ptrl,*ptr2;且ptr1和ptr2均已指向變量k,下面不能正確執行的賦值語句是( )

A: k=*ptr1+*ptr2
B: ptr2=k
C: ptr1=ptr2
D: k=ptr1(*ptr2)

標準答案:B 您的答案:A
解析:不可以把一個值,賦給一個地址

30
下面能正確進行字符串賦值操作的是

A: char s[5]={“ABCDE”};
B: char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};
C: char *s;s=“ABCDE”;
D: char *s;char a; scanf(“%s”,&s);

標準答案:C 您的答案:B
*解析:
A: char s[5]={“ABCDE”};多加了一對{ }
B: char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};這樣定義必須在末尾自己加上一個‘/0’
D: char s;char a; scanf(“%s”,&s);&符號錯誤

31
.輸入兩個正整數 n 和 m (1<m<n<=10),再輸入 n 個整數,將這些數排成一行,向右循環移動 m 個位置(從右邊移出的數再從左邊移入),最后輸出移動后的n個整數。

要求定義并調用函數 mov(x,n,m) 實現上述循環移動的功能,函數形參x的類型是整型指針,形參n和m的類型是int,函數的類型是void。

輸出格式:數據之間以空格分隔,最后一個數據集后面沒有空格

輸入輸出示例:括號內為說明

輸入樣例:
5 3 (n=5,m=3)
1 2 3 4 5 (5個整數)

#include <stdio.h> void mov(int *x, int n, int m); int main(void) { int i, m, n; int a[80];scanf("%d%d", &n, &m); for(i = 0; i < n; i++) scanf("%d", &a[i]); mov( a, n, m); printf(“After move: “); for(i = 0; i < n-1; i++) printf(”%d “, a[i]); printf(”%d”,a[n-1]); } void mov(int *x, int n, int m) { int i,j,tmp; for (i=0;i<m;i++){ tmp=x[n-1]; for (j=n-1;j>0;j–) x[j]=x[j-1]; x[0]=tmp; } }

解析:將m個數都向右移動一位(其中tmp=x[n-1];最后讓x[0]=tmp; ),這樣循環每n次,就可以達到將這m給數向右移動n次的目的

總結

以上是生活随笔為你收集整理的C语言错题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。