作业1:C++语法基础练习
一、选择题
1、下列数据中,不合法的实型数据的是( )。
(A) 0.123 (B) 123e3 (C) 2.1e3.5 (D) 789.0 2、设变量a是int型,f是float型,i是double型,则表达式10+’a’+i*f值的数据类型为( )。 (A) int (B) float (C) double (D)不确定
3、若变量已正确定义并赋值,以下符合C语言语法的表达式是( )。 (A)a:= b+1 (B)a=b=c+2 (C) int 18.5%3 (D)a=a+7=c+b 4、下列可用于C/C++语言用户标识符的一组是( )。 (A) void, define, WORD (B) a3_b3,_123,Car (C) For, -abc, IF Case (D) 2a, DO, sizeof
5、若k为整型,以下while循环体中的语句执行( )。
k=2;
while(k=0) {
printf(\ k--;printf(\ }
(A)无限次 (B)0次 (C)1次 (D)2次 6、对于下面的程序段 int t=0; while (t=l) {...}
以下叙述正确的是( )。
(A)循环控制表达式的值为0 (B)循环控制表达式的值为1 (C)循环控制表达式不合法 (D)以上说法都不对 7、 以下函数调用语句中的实参个数为( )。 excc((vl,v2),(v3,v4,v5),v6);
(A)3 (B)4 (C)5 (D)6
8、 若有以下调用语句,则不正确的fun()函数的首部是( )。
void main( ) { …
int a[50],n; …
fun(n,&a[9]); … }
(A) void fun(int m,int x[]) (B) void fun(int s, int h[41]) (C) void fun(int p,int *s) (D) void fun(int n, int a) 9、若有下面的程序段(本题学完指针再做): char s[]=\ 则下列叙述正确的是( )。
1
(A)s和p完全相同
(B)数组s中的内容和指针变量p中的内容相等 (C)s数组长度和p所指向的字符串长度相等 (D)*p与s[0]相等
10、下面为不正确的字符串赋值或赋初值方式是( )。
(A) char*str;str=\
(B) char str[7]={'s','t','r','i','n','g'}; (C) char str1[10];str1=\
(D) char strl[]=\11、若有以下的说明,则对字符串中字符正确引用的是( )。(多项选择) 其中0≤i<6。
char *strp=\
(A) *strp (B)*(strp+i) (C) strp[i] (D) strp
12、若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是( )。
(A) a,point,*&a (B)&*a,&a,*point
(C) *&point,*point,&a (D) &a,&*point,point 13、下列引用的定义中,______是错误的。
A int i; int &j=i; B int i; int &j; j=i; C float i; float &j=i; D char d; char &k=d;
二、读程序分析程序的运行结果
1、两次运行以下程序,如果从键盘上分别输入6和4,则输出的结果是( )。 int main( ) {
int a; cin>>a;
if(a++>5)cout<
(A)7和5 (B)6和3 (C)7和4 (D)6和4 2、以下程序的输出为( )。 #include
int i,j,x=0;
for(i=0;i<2;i++) {
x++;
for(j=0;j<=3;j++) {
if(j%2) continue; x++;
2
} x++; }
printf(\ }
(A)x=4 (B)x=8 (C) x=6 (D) x=12
3、 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序,程序运行后的输出结果是( )。
void sort(int a[],int n) {
int i,j,t;
for(i=0;i for(j=i+1;j int main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&a[3],5); for(i=0;i<10;i++) printf(\ printf(\} (A)1,2,3,4,5,6,7,8,9,10 (B)10,9,8,7,6,5,4,3,2,1 (C)1,2,3,8,7,6,5,4,9,10 (D)8,7,6,5,4,3,2,1,9,10 4、 以下程序的输出结果为( )。 char *alpha[6]={ \char **p; int main( ) { int i; p=alpha; for(i=0;i<4;i++)printf(\ printf(\} (A) AEIM (B) BFJN (C) ABCD (D) DHLP 5、下列程序的输出结果是( )。 int main() { int a[3][4]={ 1,3,5,7,9, 11,13,15,17,19,21,23}; int(*p)[4]=a,i,j,k=0; for(i=0;i<3;i++) 3 for(j=0;j<2;j++) k=k+*(*(p+i)+j); printf(\} 6、下面程序运行结果是 。 struct s { int x,y; }data[2]={10,100,20,200}; int main() { s *p; p=data; cout<<++(p->x); } (A) 10 (B) 11 (C) 20 (D) 21 7、下面程序运行结果是 。 void fun(int &a,int &b) { int p; p=a; a=b; b=p; } void exchang(int &a, int &b, int &c) { if(a int main() { int a,b,c; a= 12; b=639; c=78; exchang(a,b,c); cout<<\} (A) a=639,b=78,c=12 (B) a=12,b=639,c=78 (C) a=639,b=12,c=78 (D) a=78,b=12,c=639 三、填空题 1、下面程序用0~9之间不同的3个数构成一个3位数,统计出共有多少种方法。请 填空。 4 #include \ void main() { int i,j,k,count=0; for(i=1;i<=9;i++) for(j=0;j<=9;j++) if( (1) )continue; else for(k=0;k<=9;k++) if( (2) )count++; printf(\ } 2、 下面程序能将Hello!反向打印出来,请填空。 void print_hello (char *string) { char *str= ( 1) ; if (*str== (2) ) return; while(*str) str++; (3) ; printf(\ (4) NULL; print_hello ( (5) ); } int main() { char str[]=\ print_hello(str); } 3、下列程序的运行结果是( )。 int func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } int main() { int k=4,m=3,p; p=func(k,m); printf(\ p=func(k,m); printf(\ 5