C练习题汇总修改文档格式.docx
《C练习题汇总修改文档格式.docx》由会员分享,可在线阅读,更多相关《C练习题汇总修改文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
B:
此说明语句不正确
C:
数组a中各元素都可得到初值,但其值不一定为0
D:
数组a中每个元素均可得到初值0
D
2、若有下列定义,则对a数组元素a[2]的正确引用是()。
inta[5],*p=a;
*(p+5)
*p+2
*(a+2)
*&
a[5]
C
3、为表示关系x≥y≥z,应使用C语言表达式
(x>
=y)&
(y>
=z)
=y)AND(y>
=y>
=z)&
A
4、设有说明:
charc;
intx;
doublez;
则表达式c*x+z值的数据类型为
float
int
char
double
5、能正确表示逻辑关系:
"
a≥10或a≤0"
的C语言表达式是
a>
=10ora<
=0
=0|a<
=10
=10&
a<
=10||a<
6、已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中
不正确的是()。
p=&
j,p1=p;
p=a;
a[j];
p=10;
7、C语言的if语句嵌套时,if与else的配对关系是()。
每个else总是与它前面的最近的且未与其它else配对的if配对
每个else总是与最外层的if配对
每个else与if的配对是任意的
每个else总是与它上面的if配对
8、已知x=43,ch='
A'
,y=0;
则表达式(x>
=y&
ch<
'
B'
y)的值是()。
语法错
1
假"
9、如果inta=2,b=3,c=0,下列描述正确的是
b!
=c和a>
(b!
=c)的执行顺序是一样的
a!
=(b!
=c)表达式的值为1
a||(b=c)执行后b的值为0
a&
b>
c的结果为假
B
10、C语言规定,在一个源程序中,main函数的位置()。
必须在最开始
必须在系统调用的库函数的后面
可以任意
必须在最后
11、下列字符序列中,不可用作C语言标识符的是()。
b70
#ab
symbol
a_1
12、在C语言中,代表逻辑值“真”的是()。
True
一定要大于0的数
一定要非0整数
只要非0的数就可以
13、任何一个C语言的可执行程序都是从____开始执行的.
程序中的第一个函数
main()函数的入口处
程序中的第一条语句
编译预处理语句
14、下列语句中,不正确的是()。
chara[2]={1,2};
inta[2]={'
1'
'
2'
};
chara[2]={'
3'
15、若有说明:
int*p1,*p2,m=5,n;
以下均是正确赋值语句的选项是()。
p1=&
m;
p2=&
p1
*p1=*p2;
n;
p2=p1;
*p2=*p1;
16、在C语言中,调用无参函数除函数名外,还必须有()。
函数预说明
实际参数
()
函数返回值
17、以下叙述中正确的是()。
C程序中注释部分可以出现在程序中任意合适的地方
花括号“{“和”}”只能作为函数体的定界符
构成C程序的基本单位是函数,所有函数名都可以由用户命名
分号是C语句之间的分隔符,不是语句的一部分
18、变量p为指针变量,若p=&
a,下列表达式值为假的是()。
*p==&
a
a==a
(*p)++==a++
*(++p)==a++
19、inta=3,b=2,c=1;
if(a>
c)a=b;
elsea=c;
则a的值为()。
3
2
20、在以下给出的表达式中,与do--while(E)语句中的(E)不等价的
表达式是()。
(!
E==0)
(E>
0||E<
0)
(E==0)
(E!
=0)
21、若用数组名作为函数的实参,传递给形参的是()。
数组的首地址
数组第一个元素的值
数组中全部元素的值
数组元素的个数
22、putchar函数可以向终端输出一个()。
整型变量表达式值
实型变量值
字符串
字符或字符型变量值
三、程序填空
第1题
功能:
从键盘上输入一个正整数,判断其是否是回文数。
说明:
所谓回文数是指顺序读与反序读都是一样的数,如121、25852都是回文数。
将整数的各位依次存入数组a中,然后再进行判断
#include<
stdio.h>
intmain()
intnum,a[10],r;
inti=0,j,flag=1;
/*flag作为是否为回文的标志*/
scanf("
%d"
&
num);
if(num<
=0)return-1;
do
{
r=num%10;
/***********SPACE***********/
【?
】;
num=num/10;
i++;
}while(num%10!
=0);
for(j=0,i--;
i>
=j;
i--,j++)
if(a[j]!
=a[i])
flag=0;
/***********SPACE***********/
}
if(【?
】)
printf("
是回文\n"
else
不是回文\n"
return0;
}
=======(答案1)=======
a[i]=r
=======(答案2)=======
break;
=======(答案3)=======
flag或flag!
=0或flag==1
=========或=========
i<
j或flag>
第2题
用冒泡排序法对数组a进行由小到大的排序。
voidfun(inta[],intn)
inti,j,t;
for(j=0;
j++)
for(i=0;
i++)
if(【?
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
inti,a[10]={3,7,5,1,2,8,6,4,10,9};
for(i=0;
10;
%3d"
a[i]);
j<
n-1或j<
=n-2
n-j-1或i<
=n-j-2
a[i]>
a[i+1]
=======(答案4)=======
fun(a,10)
第3题(10.0分)题号:
76
找出数组中最大值和此元素的下标,数组元素的值由键盘
输入。
voidmain()
inta[10],*p,*s,i;
【?
】);
for(p=a,s=a;
【?
】<
p++)
if(*p【?
】*s)s=p;
max=%d,index=%d\n"
【?
】,s-a);
a+i或&
a[i]
p-a
>
*s
第4题(15.0分)题号:
27
输出100到1000之间的各位数字之和能被15整除的所有数,
输出时每10个一行。
intm,n,k,i=0;
for(m=100;
m<
=1000;
m++)
n=m;
do
k=k+【?
】;
n=n/10;
if(k%15==0)
%5d"
m);
i++;
if(i%10==0)【?
k=0
n%10或n-n/10*10
while(n>
0)或while(n!
=0)或while(n)
\n"
)或puts("
)或putchar('
)
第5题
用函数调用方式,实现字符串的复制。
voidstring_copy(char*str_from,char*str_to)
inti=0;
for(;
(*(【?
】)=*(str_from+i))!
='
\0'
i++);
staticchararray_str1[20]="
iamateacher."
chararray_str2[20];
】
(array_str1,array_str2);
("
array_str2=%s\n"
array_str2);
str_to+i
string_copy
printf
第6题
以下程序是用选择法对10个整数按从小到大顺序排序。
每一趟均找到未排好序的数中的最小数的位置,然后将其交换到正确的位置
#defineN10
inti,j,k,t,a[N];
=N-1;
a[i]);
/*输入10个整数*/
N-1;
for(j=i+1;
if(a[j]<
a[k])k=j;
a[i]=a[k];
a[k]=t;
outputthesortedarray:
k=i
N或j<
=N-1
k!
=i或k>
i
第7题
打印出如下字母塔。
最后一行字母前无空格
A
BBB
CCCCC
DDDDDDD
inti,j,k;
i++)
for(j=0;
3-i;
"
for(k=1;
k<
=【?
k++)
printf(【?
=3或i<
4
2*i+1
%c"
+i或"
65+i
第8题
从读入的整数数据中,统计大于零的整数个数和小于零的
整数个数。
用输入零来结束输入,程序中用变量i统计大于
零的整数个数,用变量j统计小于零的整数个数。
intn,i,j;
EnteriNTnumber,with0toend\n"
i=j=0;
n);
while(n!
if(n>
0)i=【?
if(n<
0)j=【?
i=%4d\n"
i,j);
i+1
j+1
n
四、程序改错
第1题
求出数组中最大数和次最大数,并把最大数和a[0]中的数
对调、次最大数和a[1]中的数对调。
#defineN20
voidfun(inta[],intn)
{
inti,m,t,k;
2;
i++)/*两次循环,分别找最大数和次大数*/
/**********FOUND**********/
m=0;
for(k=i;
if(a[k]>
a[m])k=m;
a[i]=a[m];
a[m]=t;
intmain()
intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;
for(i=0;
i<
i++)printf("
%d"
b[i]);
fun(intb[N],n);
i++)
m=i;
if(a[k]>
a[m])m=k;
fun(b,n);
利用条件运算符的嵌套来完成此题:
学习成绩>
=90分的同
学用A表示,70-89分之间的用B表示,60-69分之间的用C表示,
60分以下的用D表示。
intscore;
char*grade;
pleaseinputascore\n"
score);
if(score<
0&
score>
100)
超出范围!
switch(score)
case9:
case10:
grade='
break;
case7:
case8:
case6:
C'
/***********FOUND***********/
caseelse:
D'
}
%dbelongsto%c\n"
score,grade);
chargrade;
scanf("
score);
switch(score/10)
default:
case0:
case1:
case2:
case3:
case4:
case5:
第2题(15.0分)题号:
153
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
编写函数求2!
+4!
+6!
+8!
------------------------------------------------------*/
intsum(intn)
inti,j,t,s;
s=1;
for(i=2;
=n;
i=i+2)
t=1;
for(j=1;
t=t*j;
s=s+t;
return(t);
thissum=%ld\n"
sum(8));
s=0;
for(j=1;
=i;
returns;
92
求二分之一的圆面积,函数通过形参得到圆的半径,函数
返回二分之一的圆面积。
例如:
输入圆的半径值:
19.527输出为:
s=598.950017。
conio.h>
/**********FOUND**********/
doublefun(r)
doubles;
s=1/2*3.14159*r*r;
returnr;