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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

c语言能保留x后两位并且四舍五入的,二级C语言真题笔记

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言能保留x后两位并且四舍五入的,二级C语言真题笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 知識重點:數據類型、循環、數組、函數、指針、結構體與共同體

2. 求程序的運行結果

#include?

main()

{

short?int?m=32767,?n=032767;

printf("%d,?%o?\n",?m,?n);

return?0;

}

3. 自增和自減運算符的運算對象可以為char, int,?float

#include?

main()

{

float?scanf?=?9.12345678;

//?warning?C4305:?‘initializing‘?:?truncation?from?‘const?double‘?to?‘float‘

double?main?=?9.12345678;

printf("%.10f?\n",?scanf++);?//?9.1234569550

printf("%.10f?\n",?scanf);?//?10.1234569550

printf("%.10f?\n",?main++);?//?9.1234567800

printf("%.10f?\n",?main);?//?10.1234567800

return?0;

}

4. 求運行結果

#include?

main()

{

char?a,?b,?*c;

//a?=?‘\‘;?//錯誤。正確的轉義形式為:a?=?‘\\‘;

a?=?‘\?‘;?//正確。

b?=?‘\x31‘;?//表示ASCII碼為49的字符,也即字符‘1‘

c?=?"\0157";?//指針c指向的字符串為"\r7",它包含一個回車符,一個字符‘7‘,和一個‘\0‘

printf("%c,?%c,?%s?\n",?a,?b,?c);

return?0;

}

5. C語言中沒有以B結尾的二進制整數常量,如 int x = 101011B; 是不對的

6. 不能定義為用戶標識符的是:(? )

(A) scanf??? (B) Void??? (C) _3com_??? (D) int

注:用戶標識符只能由字母、數字和下劃線組成,且第一個字符必須為字母或下劃線,C語言中的關鍵字(保留字)不能用于用戶標識符。D選項為關鍵字,所以不能作用戶標識符。

7. 以下為非法表達式的是:(??)

(A)?0<=x<100??? (B)?i=j==0??? (C)?(char) (65+3)??? (D) x+1=x+1

注:不能對表達式進行賦值。

8. 寫出運行結果:

#include?

main()

{

int?a;

char?c?=?10;

float?f?=?110.0;

double?x;

a=f/=c*=(x=6.5);

printf("%d?%d?%3.2f?%3.1f?%3.1f\n",a,c,f,f,x);

return?0;

}

注:賦值運算符的結合性為從右向左結合;輸出中的精度控制會產生四舍五入。

9. 運算符的優先級,如:

(1) k=(n=b>a)||(m=a

(2) 0<=x<100,關系運算符從左往右結合,所以先判斷0<=x,再將判斷結果與100比較。整個表達式的值總是為真。

(3) i=j==0,先判斷變量j是否等于0,再將判斷結果賦值給變量i,因此變量i的值或為0,或為1。

(4) a>b>c

(5) (c-1>=d)==1

注:在整個優先級中,逗號運算符的優先級最低,其次是賦值運算符。關系運算符的優先級高于賦值運算符。

如下為常用運算符的優先級,逗號運算符的優先級最低,圓括號的優先級最高。未寫結合性的為從左往右結合:

( )??(圓括號)

++ ?--??*(指針)??&(取地址)??????????結合性:R ->?L

* ?/ ?%?(乘,除,取余)

+? -?(加,減)

? >=??(關系運算符)

==? !=??(等于,不等于)

&&??(邏輯與)

||??(邏輯或)

=?? +=?? -=?? *=?? /=?? %=?? >>=?? <<=?? &=?? ^=?? !=??(簡單賦值和復合賦值運算符)???????結合性:R ->?L

,??(逗號運行符)

10. 將x中的值保留到小數點后兩位,并將第三位四舍五入

float?x=1.236;

x=(int)(x*100+0.5)/100.0;

printf("%f?\n",?x);?//1.240000

11. (1) 取余運算符%兩邊必須是整數;

(2) 賦值運算符=左邊必須是變量,不能是常量或表達式;

(3) #define?n 2 后,n為符號常量;

(4) 當除號 / 兩邊的運算對象都是整型時,為整除,即結果的小數部分被忽略掉。

12. 寫出程序結果

#include?

main()

{

char?a?=?‘D‘-‘A‘+‘0‘;

printf("%c?\n",?a);

/*?以下為附加內容?*/

printf("%c?%d?\n",?‘z‘-‘A‘,?‘z‘-‘A‘);?//9?57

printf("%c?%c?%c?%d?\n",?‘0‘,?‘\0‘,?‘\000‘,?‘0‘);?//0????48

printf("%c?%d?\n",?a,?a);?//3?51

return?0;

}

注:字符‘0‘的ASCII碼值是十進制的48,或十六進制的30

13. 輸入12,請寫出程序的運行結果

#include?

main()

{

char?ch1,?ch2;

int?n1,?n2;

ch1?=?getchar();

ch2?=?getchar();

n1?=?ch1?-?‘0‘;

n2?=?n1*10?+?(ch2?-‘0‘);

printf("%d?\n",?n2);

return?0;

}

14. 寫程序運行結果:

#include?

main()

{

int?i;

for(i=0;?i<3;?i++)

switch(i)

{

case?1:?printf("%d",?i);

case?2:?printf("%d",?i);

default:?printf("%d",?i);

}

return?0;

}

15. 與 k=a>b?(b>c?1:0):0;功能等價的是:(??)

(A) if((a>B) &&(b>C) ) k=1;???(B)? if((a>B) ||(b>C) )? k=1

else? k=0;

(C) if(a<=B)?? k=0;???????? ??  (D) if(a>B)?? k=1;

else if(b<=C)?? k=1;???????????   else if(b>C)?? k=1;

else k=0;

16. int N=5, b[N][N]; 是錯誤的。數組長度應為常量,不能動態定義數組長度。

17. 寫出程序運行結果

#include?

#include?

main()

{

char?s1[?]?=?"\n123\\";

char?s2[8]?=?"\n123\\";

printf("%d?%d?",?strlen(s1),?sizeof(s1));

printf("%d?%d?\n",?strlen(s2),?sizeof(s2));

return?0;

}

注:考查轉義字符,空字符‘\0‘,strlen庫函數和sizeof操作符的用法

18. 以下正確的是:( D?)

(A) char s[8]; s = {"Beijing"};

(B) char s[8]; s = "Beijing";

(C) char *s;?? s = {"Beijing"};

(D) char *s;?? s = "Beijing";

注:{"Beijing"}的表達方式只能在字符串定義時初始化。對于B,數組名s存儲的是該數組的首地址,為一個常量,不能對其賦值。對于D,是將字符串的首地址賦給指針變量s,是對的。

19. 寫出程序的輸出結果

#include?

main()

{

int?a[3][3],?*p,?i;

p?=?&a[0][0];

for(i=0;?i<9;?i++)

p[i]?=?i+1;

printf("%d?\n",?a[1][2]);

return?0;

}

注:考查二維數組在內存中的存放方式以及指針的正確使用。

20. 輸入一個含有數字的字符串,輸出數字部分。如輸入abc123kkkj456,則輸出123456。

#include?

#define?N?30

main()

{

int?i,?j;

char?src[N],?dest[N];

gets(src);

for(i=j=0;?src[i]!=‘\0‘;?i++)

if(src[i]>=‘0‘?&&?src[i]<=‘9‘)

{

dest[j]=src[i];

j++;

}

dest[j]=‘\0‘;

puts(dest);

return?0;

}

21. 全局變量,局部變量,變量的存儲類型,變量作用域(空間角度),生存期(時間角度)

局部變量:函數內部定義。如主函數定義的局部變量的作用范圍僅限于主函數及調用函數

全局變量:函數外部定義。作用范圍從定義開始到源文件結束。

全局變量在一個文件中定義,在別一個文件中引用時,要用extern進行說明。這時該變量的作用域可擴展到有extern說明的其它源文件。若不希望該全局變量在其它文件中被引用,可加static進行限定。

按生存期可分為靜態和動態變量。

沒有對static變量賦初值時,系統自動賦值。如static int x; 系統自動賦值0。auto變量為隨機值。

static變量的生存期貫穿于整個程序運行期間。

函數形參都屬于局部變量。

當函數或復合語句中的局部變量與全局變量同名時,全局變量無效。

22. 將以下程序編譯連接后生成一個text.exe文件,進入MS-DOS窗口,切入該文件所在目錄,輸入test.exe abc。請寫出運行結果:

#include?

int?func()

{

static?int?s=0;

s+=1;

return?s;

}

main(int?argc,?char?*argv[])

{

int?n,?i=0;

while(argv[1][i]?!=?‘\0‘)

{

n=func();

i++;

}

printf("%d?\n",?n*argc);

return?0;

}

注:局部靜態變量只初始化一次,在以后的調用當中不再進行初始化。

23. 寫出程序運行結果

#include?

void?func(?int?*a?)

{

a[0]?=?a[1];

}

main()

{

int?a[10]={1,?2,?3,?4,?5,?6,?7,?8,?9,?10},?i;

for(i=2;?i>=0;?i--)

func(&a[i]);

printf("%d?\n",?a[0]);

return?0;

}

24. 寫出程序運行結果

#include?

int?a=2;

int?f(int?*a)

{

return?*a++;?/* 注意運算符的優先級?*/

printf("a=%d",?a);

}

main()

{

int?s=0;

{

int?a=5;

s+=f(&a);

printf("locala=%d?",?a);

}

s+=f(&a);

printf("globala=%d?",?a);

printf("s=%d?\n",?s);

return?0;

}

25.

int *q;

q=NULL; q指向地址為0的單元

*q=0;? 對該單元賦值沒有意義

26. 函數的返回值類型為指針

#include?

int?*f(int?*x,?int?*y)

{

if(*x

return?x;

else

return?y;

}

main()

{

int?a=7,?b=8,?*p,?*q,?*r;

p=&a;

q=&b;

r=f(p,?q);

printf("%d?%d?%d?\n",?*p,?*q,?*r);

return?0;

}

27. 寫出程序運行結果

#include?

main()

{

char?*s[]?=?{?"one",?"two",?"three"?},?*p;

p?=?s[1];

printf("%c?%s?\n",?*(p+1),?s[0]);

return?0;

}

28. 寫出以下程序運行結果

#include?

union

{

unsigned?int?n;

unsigned?char?c;

}u;

main()

{

u.c=‘A‘;

printf("%c?\n",?u.n);

return?0;

}

29. *++p, ++*p,?*p++的區別

#include?

main()

{

int?a[10]?=?{10,?20,?30,?40,?50,?60,?70,?80,?90,?100},?*p=&a[0];

printf("%d?%d?%d?%d?\n",?*p,?*p++,?*p++,?*p);

printf("%d?%d?%d?%d?\n",?*p,?*p++,?*p++,?*p);

printf("%d?%d?%d?%d?\n",?*p,?*++p,?*++p,?*p);

printf("%d?%d?%d?%d?\n",?*++p,?++*p,?*p++,?*p);

return?0;

}

#include?

main()

{

int?a[5]?=?{1,?2,?3,?4,?5},?*p=&a[0];

printf("%d?%d?%d?%d?\n",?*++p,?++*p,?*p++,?*p);

printf("%d?%d?%d?%d?\n",?*++p,?++*p,?*p++,?*p);

return?0;

}

兩個版本的字符串復制函數 _CRTIMP?char?*??__cdecl?strcpy(char?*,?const char?*) 對比:

版本1:

strcpy(char?*?dest,?const?char?*?src)

{

char?*p=dest;

while(*dest++?=?*src++)

;

dest=p;

}

版本2:

strcpy(char?*?dest,?const?char?*?src)

{

int?i=0;

for(;?*(src+i)!=‘\0‘;?i++)

*(dest+i)?=?*(src+i);

*(dest+i)?=?‘\0‘;

}

注:指針運算符*, 自增運算符++是從右往左結合的;

實例:

#include?

strcpy_v1(char?*?dest,?const?char?*?src)

{

char?*p=dest;

while(*dest++?=?*src++)

;

dest=p;

}

strcpy_v2(char?*?dest,?const?char?*?src)

{

int?i=0;

for(;?*(src+i)!=‘\0‘;?i++)

*(dest+i)?=?*(src+i);

*(dest+i)?=?‘\0‘;

}

main()

{

char?a[]="abcd";

char?b[]="abc";

strcpy_v1(a,?b);

puts(a);

char?c[]="abcd";

char?d[]="abc";

strcpy_v2(c,?d);

puts(d);

return?0;

}

輸出:

abc

abc

參考答案:

2. 32767, 32767

3. 7? 1,

6. D

7. D

8. 1 65 1.69 1.7 6.5

12. 3

13. 12

14. 011122

15. A

17. 5 6 5 8

19. 6

22. 6

23. 4

24. 7

26. 7 8 7

27. w one

28. A

29.

10 10 10 10

30 30 30 30

70 70 60 50

80 71 70 70

2 2 1 1

4 4 3 3

總結

以上是生活随笔為你收集整理的c语言能保留x后两位并且四舍五入的,二级C语言真题笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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