C语言习题按章节Word文档格式.docx
《C语言习题按章节Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言习题按章节Word文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
DY"
DB"
a2=a*a;
b2=b*b;
c2=c*c;
ZJ"
elseprintf("
NO\n"
}
2.输出下列图形。
123456789main()
23456789{intI,J;
3456789for(I=1;
I<
=_________;
I++)
456789for(J=_________;
J<
=9;
J++)
56789printf("
%2d"
J);
6789printf("
789
89
9
五、程序设计题
1.判断输入整数x的正负性和奇偶性。
2.从键盘输入10个整数,求出其中的最大值。
3.输入一行字符,统计其中的数字、字母、空格
和其它字符出现的次数。
4.输入十个整数,计算出平均值(aver),找出其中最
大者(max)和最小者(min)并将三者输出。
5.将十个实型数输入数组(floatn[10];
)逆序存放后再
输出。
数组题目:
c语言习题--数组
1.给出以下定义:
charx[]="
abcdefg"
;
chary[]={'
a'
'
b'
c'
d'
e'
f'
g'
};
则正确的叙述为
A)数组X和数组Y等价B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度
2.若有下面的程序片段:
inta[12]={0},*p[3],**pp,i;
for(i=0;
i<
3;
i++)
p[i]=&
a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1]B)a[10]C)p[3][1]D)*(*(p+2)+2)
3.设有以下定义:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是
A)*((*prt+1)[2])B)*(*(p+5))
C)(*prt+1)+2D)*(*(a+1)+2)
4.不能把字符串:
Hello!
赋给数组b的语句是
A)charb[10]={'
H'
l'
o'
!
B)charb[10];
b="
"
C)charb[10];
strcpy(b,"
D)charb[10]="
5.若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='
d,g;
则数值为4的表达式是
A)a[g-c]B)a[4]
C)a['
-'
]D)a['
-c]
6.若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是
A)*p+6B)*(p+6)C)*p+=5D)p+5
7.若有以下说明:
intw[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
A)*w[1]+1B)p++,*(p+1)
C)w[2][2]D)p[1][1]
8.若有以下的说明和语句:
main()
{intt[3][2],*pt[3],k;
fpr(k=o;
k<
k++)pt[k]=t[k];
则以一选项中能正确表示t数组元素地址的表达式是
A)&
t[3][2]B)*pt[0]
C)*(pt+1)D)&
pt[2]
9.以下程序的输出结果是
main()
{inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&
x[1][1];
for(i=0;
i<
4;
i+=2)printf("
%d"
,p[i]);
}
A)52B)51C)53D)97
10.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是
intt[3][3],*pt([3],k;
for(k=0;
k<
3;
k++)pt[k]=&
t[k][0];
11.执行下面的程序段后,变量k中的值为
intk=3,s[2];
s[0]=k;
k=s[1]*10;
A)不定值B)33C)30D)10
12.若已定义:
inta[]={0,1,2,3,4,5,6,7,8,9],*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用上
A)a[p-a]B)*(&
a[i])C)p[i]D)a[10]
13.设有数组定义:
chararray[]="
China"
则数组array所占的空间为
A)4个字节B)5个字节C)6个字节D)7个字节
c语言基础练习题及答案
一、单项选择题
1.C语言源程序文件经过C编译程序编译连接之后生成一个后缀为__C____的文件。
A、”.c”B、“.obj”C、“.exe”D、“.bas”
2.以下选项中不正确的整型常量是_C____。
A、12LB、-10C、1,900D、123U
3.表达式___C___的值是0。
A、3%5B、3/5.0C、3/5D、3<
5
4.表达式!
(x>
0||y>
0)等价于__D___。
A、!
x>
0||!
y>
0B、!
0)||!
(y>
0)C、!
0&
0D、!
0)&
0)
5.若变量已正确定义并赋值,表达式__D____不符合C语言语法。
A、4&
3B、+aC、a=b=5D、int(3.14)
6.若变量已正确定义,执行语句scanf("
%d%d%d"
&
k1,&
k2,&
k3);
时,___B___是正确的输入。
A、2030,40B、203040C、20,3040D、20,30,40
7.执行语句printf(”__D____”,2);
将得到出错信息。
A、%dB、%oC、%xD、%f
8.设变量定义为“ints[]="
hello\nworld\n"
”,则数组s中有__B____个元素。
A、12B、13C、14D、15
9.设变量定义为“inta[2]={1,3},*p=&
a[0]+1;
”,则*p的值是___B__。
A、2B、3C、4D、&
a[0]+1
10.若变量已正确定义并赋值,表达式-k++等价于__A____。
A、-(k++)B、(-k)++C、-(k+1)D、-(++k)
11.在C语言程序中,在函数内部定义的变量称为__D____。
A、全局变量B、全程变量C、外部变量D、内部变量
12.若x是整型变量,表达式(x=10.0/4.0)的值是__D___。
A、2.5B、2.0C、3D、2
13.对于以下的变量定义,表达式__A____是正确的。
structnode{
chars[10];
intk;
}p[4];
A、p->
k=2B、p[0].s=“abc”C、p[0]->
k=2D、p->
s=‘a’
14.下列运算符中,优先级从高到低依次为__D___。
A、&
,!
,||B、||,&
C、&
,||,!
D、!
,&
,||
15.下列程序段的输出结果是__B___。
int*p,*q,k=1,j=10;
p=&
j;
q=&
k;
p=q;
(*p)++;
printf("
%d"
*q);
A、1B、2C、10D、11
16.以下各选项企图说明一种新的类型名,其中正确的是水量(C)
A)typedefv1int;
B)typedefv2=int;
C)typedefv1intv3;
D)typedefv4:
int;
17.以下选项中,非法的字符常量是(C)
A)‘\t’B)‘\17’C)“n”D)‘\xaa’
18.以下程序的输出结果是(C)
main()
{inti,a[10];
for(i=9;
i>
=0;
i--)a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A)258B)741C)852D)369
19.以下程序的输出结果是(B)
{charst[20]=“hello\0\t\\\”;
printf(%d%d\n”,strlen(st),sizeof(st));
A)99B)520C)1320D)2020
20.以下程序的输出结果是(D)
{inta,b;
for(a=1,b=1;
a<
=100;
a++)
{if(b>
=10)break;
if(b%3==1)
{b+=3;
continue;
printf(“%d\n”,a);
A)101B)6C)5D)4
21.以下程序的输出结果是(D)
unionmyun
{struct
{intx,y,z;
}u;
intk;
}a;
{a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
A)4B)5C)6D)0
22.以下程序段的输出结果是(A)
chars[]="
\\141\141abc\t"
printf("
%d\n"
strlen(s));
A)9B)12C)13D)14
23.以下程序的输出结果是(B)
{charch[3][5]={"
AAAA"
BBB"
CC"
printf("
\"
%s\"
ch[1]);
A)"
B)"
C)"
BBBCC"
D)"
24.不合法的main函数命令行参数表示形式是(C)
A)main(inta,char*c[])B)main(intarc,char**arv)
C)main(intargc,char*argv)D)main(intargv,char*argc[])
25.有以下程序
{char*s[]={"
one"
two"
three"
},*p;
p=s[1];
printf("
%c,%s\n"
*(p+1),s[0]);
执行后输出结果是(C)
A)n,twoB)t,oneC)w,oneD)o,two
26.设有如下说明
typedefstruct
{intn;
charc;
doublex;
}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是(A)
A)STDtt[2]={{1,'
A'
62},{2,'
B'
75}};
B)STDtt[2]={1,"
A"
62},2,"
B"
75};
C)structtt[2]={{1,'
},{2,'
}};
D)structtt[2]={{1,"
62.5},{2,"
75.0}};
27.若变量c为char类型,则能正确判断出c为小写字母的表达式是(D)。
A)'
<
=c<
='
z'
B)(c>
)||(c<
)
C)('
=c)and('
>
=c)D)(c>
)&
(c<
二、填空题
1.设ch是字符型变量,判断ch为英文字母的表达式是:
(ch>
=’A’&
ch,=’Z’)||(ch>
=’a’&
ch<
=’z’)__。
2.计算下列分段函数的if语句是_if(x>
0)y=1;
elseif(x=0)y=0;
elsey=-1;
___。
1x>
y=0x=0
-1x<
3.表达式!
5的值是__1____。
4.下列程序段的输出结果是___12___。
%xn"
(0x19<
1)&
0x17);
5.下列程序段的输出结果是__k=4s=6___。
intk,s;
for(k=0,s=0;
10;
k++)
if(s>
k)break;
elses+=k;
k=%ds=%d"
k,s);
6.下列程序段的输出结果是__15___。
#defineMIN(x,y)(x)<
(y)?
(x):
(y)
printf("
10*MIN(10,15));
7.下列程序在运行时可能会出错,原因是__指针变量s未赋初值____。
#include
voidmain()
{char*s;
gets(s);
puts(s);
}
8.下列程序段的输出是___60__。
#include
intf(intm)
{staticintk=0;
ints=0;
for(;
=m;
k++)s++;
returns;
{ints1,s2;
s1=f(5);
s2=f(3);
%d%d\n"
s1,s2);
9.下列程序段的输出结果是__fgh___。
char*st[]={"
abcd"
efgh"
ijkl"
mnop"
%s"
*(st+1)+1);
10.用typedef定义一个含10个元素的整型数组ARR。
typedefintARR[10];
11.以下程序调用findmax函数返回数组中的最大值,请填空。
findmax(int*a,intn)
{int*p,*s;
for(p=a,s=a;
p-a
if(*p>
*s)s=p;
return(*s);
main()
{intx[5]={12,21,13,6,18};
findmax(x,5));
三、程序(段)填空题
1.设变量x,y,z已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中填入正确的内容,使程序段A和程序段B有相同的功能。
程序段A程序段B
x=x+y;
y=x-y;
x=x-y;
z=x+y;
z=x;
x=y;
y=z;
2.请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。
char*f1(chars[],chart[])
{intk;
for(k=0;
t[k]!
='
'
s[k]=t[k];
s[k]='
char*f2(char*s,char*t)
{char*p=s;
while((*p++=*t++)!
;
returns;
===========================================================
1.___D___是合法的用户自定义标识符。
A、b-bB、floatC、D、_isw
2.若变量已正确定义并赋值,表达式___B___不符合C语言语法。
A、a*b/c;
B、3.14%2C、2,bD、a/b/c
3.___C__是不正确的字符常量。
A、'
n'
B、'
1'
C、"
a"
D、'
101'
4.在C程序中,用___B__表示逻辑值“真”。
A、1B、非0的数C、非1的数D、大于0的数
5.__C____把x、y定义成float类型变量,并赋同一初值3.14。
A、floatx,y=3.14;
B、floatx,y=2*3.14;
C、floatx=3.14,y=x=3.14;
D、floatx=y=3.14;
6.若变量已正确定义,表达式___C___的值不是2。
A、2&
3B、1<
1C、a==2D、1^3
7.若变量已正确定义,语句“if(a>
b)k=0;
elsek=1;
”和__C____等价。
A、k=(a>
b)?
1:
0;
B、k=a>
b;
C、k=a<
=b;
D、a<
=b?
0:
1;
8.设变量定义为“inta,b;
”,执行下列语句时,输入_D____,则a和b的值都是10。
scanf("
a=%d,b=%d"
a,&
b);
A、1010B、10,10C、a=10b=10D、a=10,b=10
9.下列程序的输出结果是__D___。
fun(inta,intb,intc)
{c=a*b;
{intc;
fun(2,3,c);
printf(”%dn”,c);
A、0B、1C、6D、无法确定
10.在C程序中,若对函数类型未加说明,则函数的隐含类型为__A___。
A、intB、doubleC、voidD、char
11.表达式strlen(”hello”)的值是___B____。
A、4B、5C、6D、7
12.设变量定义为“inta[4];
”,则表达式__D____不符合C语言语法。
A、*aB、a[0]C、aD、a++
13.设变量定义为“intx,*p=&
x;
”,则&
*p相当于__A___。
A、pB、*pC、xD、*&
x
14.若变量已正确定义,_A___不能使指针p成为空指针。
A、p=EOFB、p=0C、p=’’D、p=NULL
15.对于以下的变量定义,表达式__D____不符合C语言语法。
structnode{
intlen;
char*pk;
}x={2,"
right"
},*p=&
pkB、*p.pkC、*p->
pkD、*x.pk
16.有如下程序
intrunc(inta,intb)
{return(a+b);
main0
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
该程序的输出的结果是(D)
A)12B)13C)14D)15
17.对于基类型相同的两个指针变量之间,不能进行的运算是(C)
A)<
B)=C)+D)-
18.有如下程序
longfib(intn)
{if(n>
2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
{printf(“%d\n”,fib(3));
该程序的输出结果是(B)
A}2B}4C}6D}8
19.有如下定义
structperson{char