c语言能保留x后两位并且四舍五入的,二级C语言真题笔记
1. 知識重點:數(shù)據(jù)類型、循環(huán)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體與共同體
2. 求程序的運行結(jié)果
#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. 求運行結(jié)果
#include?
main()
{
char?a,?b,?*c;
//a?=?‘\‘;?//錯誤。正確的轉(zhuǎn)義形式為: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結(jié)尾的二進制整數(shù)常量,如 int x = 101011B; 是不對的
6. 不能定義為用戶標識符的是:(? )
(A) scanf??? (B) Void??? (C) _3com_??? (D) int
注:用戶標識符只能由字母、數(shù)字和下劃線組成,且第一個字符必須為字母或下劃線,C語言中的關(guān)鍵字(保留字)不能用于用戶標識符。D選項為關(guān)鍵字,所以不能作用戶標識符。
7. 以下為非法表達式的是:(??)
(A)?0<=x<100??? (B)?i=j==0??? (C)?(char) (65+3)??? (D) x+1=x+1
注:不能對表達式進行賦值。
8. 寫出運行結(jié)果:
#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;
}
注:賦值運算符的結(jié)合性為從右向左結(jié)合;輸出中的精度控制會產(chǎn)生四舍五入。
9. 運算符的優(yōu)先級,如:
(1) k=(n=b>a)||(m=a
(2) 0<=x<100,關(guān)系運算符從左往右結(jié)合,所以先判斷0<=x,再將判斷結(jié)果與100比較。整個表達式的值總是為真。
(3) i=j==0,先判斷變量j是否等于0,再將判斷結(jié)果賦值給變量i,因此變量i的值或為0,或為1。
(4) a>b>c
(5) (c-1>=d)==1
注:在整個優(yōu)先級中,逗號運算符的優(yōu)先級最低,其次是賦值運算符。關(guān)系運算符的優(yōu)先級高于賦值運算符。
如下為常用運算符的優(yōu)先級,逗號運算符的優(yōu)先級最低,圓括號的優(yōu)先級最高。未寫結(jié)合性的為從左往右結(jié)合:
( )??(圓括號)
++ ?--??*(指針)??&(取地址)??????????結(jié)合性:R ->?L
* ?/ ?%?(乘,除,取余)
+? -?(加,減)
? >=??(關(guān)系運算符)
==? !=??(等于,不等于)
&&??(邏輯與)
||??(邏輯或)
=?? +=?? -=?? *=?? /=?? %=?? >>=?? <<=?? &=?? ^=?? !=??(簡單賦值和復合賦值運算符)???????結(jié)合性:R ->?L
,??(逗號運行符)
10. 將x中的值保留到小數(shù)點后兩位,并將第三位四舍五入
float?x=1.236;
x=(int)(x*100+0.5)/100.0;
printf("%f?\n",?x);?//1.240000
11. (1) 取余運算符%兩邊必須是整數(shù);
(2) 賦值運算符=左邊必須是變量,不能是常量或表達式;
(3) #define?n 2 后,n為符號常量;
(4) 當除號 / 兩邊的運算對象都是整型時,為整除,即結(jié)果的小數(shù)部分被忽略掉。
12. 寫出程序結(jié)果
#include?
main()
{
char?a?=?‘D‘-‘A‘+‘0‘;
printf("%c?\n",?a);
/*?以下為附加內(nèi)容?*/
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,請寫出程序的運行結(jié)果
#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. 寫程序運行結(jié)果:
#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]; 是錯誤的。數(shù)組長度應為常量,不能動態(tài)定義數(shù)組長度。
17. 寫出程序運行結(jié)果
#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;
}
注:考查轉(zhuǎn)義字符,空字符‘\0‘,strlen庫函數(shù)和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,數(shù)組名s存儲的是該數(shù)組的首地址,為一個常量,不能對其賦值。對于D,是將字符串的首地址賦給指針變量s,是對的。
19. 寫出程序的輸出結(jié)果
#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;
}
注:考查二維數(shù)組在內(nèi)存中的存放方式以及指針的正確使用。
20. 輸入一個含有數(shù)字的字符串,輸出數(shù)字部分。如輸入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. 全局變量,局部變量,變量的存儲類型,變量作用域(空間角度),生存期(時間角度)
局部變量:函數(shù)內(nèi)部定義。如主函數(shù)定義的局部變量的作用范圍僅限于主函數(shù)及調(diào)用函數(shù)
全局變量:函數(shù)外部定義。作用范圍從定義開始到源文件結(jié)束。
全局變量在一個文件中定義,在別一個文件中引用時,要用extern進行說明。這時該變量的作用域可擴展到有extern說明的其它源文件。若不希望該全局變量在其它文件中被引用,可加static進行限定。
按生存期可分為靜態(tài)和動態(tài)變量。
沒有對static變量賦初值時,系統(tǒng)自動賦值。如static int x; 系統(tǒng)自動賦值0。auto變量為隨機值。
static變量的生存期貫穿于整個程序運行期間。
函數(shù)形參都屬于局部變量。
當函數(shù)或復合語句中的局部變量與全局變量同名時,全局變量無效。
22. 將以下程序編譯連接后生成一個text.exe文件,進入MS-DOS窗口,切入該文件所在目錄,輸入test.exe abc。請寫出運行結(jié)果:
#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;
}
注:局部靜態(tài)變量只初始化一次,在以后的調(diào)用當中不再進行初始化。
23. 寫出程序運行結(jié)果
#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. 寫出程序運行結(jié)果
#include?
int?a=2;
int?f(int?*a)
{
return?*a++;?/* 注意運算符的優(yōu)先級?*/
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. 函數(shù)的返回值類型為指針
#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. 寫出程序運行結(jié)果
#include?
main()
{
char?*s[]?=?{?"one",?"two",?"three"?},?*p;
p?=?s[1];
printf("%c?%s?\n",?*(p+1),?s[0]);
return?0;
}
28. 寫出以下程序運行結(jié)果
#include?
union
{
unsigned?int?n;
unsigned?char?c;
}u;
main()
{
u.c=‘A‘;
printf("%c?\n",?u.n);
return?0;
}
29. *++p, ++*p,?*p++的區(qū)別
#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;
}
兩個版本的字符串復制函數(shù) _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‘;
}
注:指針運算符*, 自增運算符++是從右往左結(jié)合的;
實例:
#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
總結(jié)
以上是生活随笔為你收集整理的c语言能保留x后两位并且四舍五入的,二级C语言真题笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL按每5分钟或者10分钟分组统计数据
- 下一篇: 每日一题 数独检查