C语言习题Word文档下载推荐.docx
《C语言习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言习题Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
num++;
while(b[n])
*(a+num)=b[n];
n++;
}
return(num);
}
main()
{charstrl[81],str2[81],*p1=str1,*p2=str2;
gets(p1);
gets(p2);
printf("
%d\n"
strlength(p1,p2));
}
若从键盘输入:
qwerty
abcd
则输出结果是____
___。
二、单项选择题。
(每题2分,共40分)
1.下列叙述中错误的是()。
A)计算机不能直接执行用C语言编写的源程序
B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D)后缀为.obj和.exe的二进制文件都可以直接运行
2.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A)大写字母
B)连接符
C)数字字符
D)下划线
3.以下叙述中错误的是()。
A)C语言是一种结构化程序设计语言
B)结构化程序由顺序、分支、循环三种基本结构组成
C)使用三种基本结构构成的程序只能解决简单问题
D)结构化程序设计提倡模块化的设计方法
4.对于一个正常运行的C程序,以下叙述中正确的是()。
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
5.设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&
a1,&
c1,&
a2,&
c2);
语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。
以下所示的输入形式中正确的是(注:
□代表空格字符)()。
A)10□X□20□Y〈回车〉
B)10□X20□Y〈回车〉
C)10□X〈回车〉
D)10X〈回车〉
20□Y〈回车〉
20Y〈回车〉
6.若有代数式
(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。
A)sqrt(abs(n^x+e^x))
B)sqrt(fabs(pow(n,x)+pow(x,e)))
C)sqrt(fabs(pow(n,x)+exp(x)))
D)sqrt(fabs(pow(x,n)+exp(x)))
7.设有定义:
intk=0;
以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A)k++
B)k+=1
C)++k
D)k+1
8.有以下程序,其中%u表示按无符号整数输出()。
{unsignedintx=0xFFFF;
/*x的初值为十六进制数*/
printf(“%u\n”,x);
程序运行后的输出结果是
A)-1
B)65535
C)32767
D)0xFFFF
9.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是()。
A)if(x++);
B)if(x>
y&
&
y!
=0);
C)if(x>
y)x--
D)if(y<
0){;
elsey++;
elsex++;
10.以下选项中,当x为大于1的奇数时,值为0的表达式是()。
A)x%2==1
B)x/2
C)x%2!
=0
D)x%2==0
11.以下叙述中正确的是()。
A)break语句只能用于switch语句体中
B)continue语句的作用是使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
12.有以下程序
{intk=5,n=0;
do
{switch(k)
{case1:
case3:
n+=1;
break;
default:
n=0;
k--;
case2:
case4:
n+=2;
break;
printf(“%d”,n);
}while(k>
0&
n<
5);
程序运行后的输出结果是()。
A)222
B)0235
C)02356
D)2356
13.有以下程序
{inti,j;
for(i=1;
i<
4;
i++)
{for(j=i;
j<
j++)printf(“%d*%d=%d”,i,j,i*j);
printf(“\n”);
A)1*1=1
1*2=2
1*3=3
B)1*1=1
1*3=3
2*1=2
2*2=4
2*3=6
3*1=3
3*3=9
C)1*1=1
D)1*1=1
1*2=2
2*1=2
2*2=4
1*3=3
2*3=6
3*3=9
3*1=3
3*2=6
3*3=9
14.以下合法的字符型常量是()。
A)”\x13”
B)”\018”
C)”65”
D)”\n”
15.在C语言中,函数返回值的类型最终取决于()。
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型
D)函数定义时形参的类型
16.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是()。
A)c=(c-A)%26+‘a’
B)c=c+32
C)c=c-‘A’+‘a’
D)c=(‘A’+c)%26-‘a’
17.有以下函数:
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
该函数的功能是()。
A)比较两个字符的大小
B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度
D)将s所指字符串复制到字符串t中
18.设已有定义:
floatx;
则以下对指针变量p进行定义且赋初值的语句中正确的是()。
A)float
*p=1024;
B)int
*p=(floatx);
C)float
p=&
x;
D)float*P=&
19.有以下程序
#include
<
{intn,*p=NULL;
*p=&
printf(“Inputn:
”);
scanf(“%d”,&
p);
printf(“outputn:
printf(“%d\n”,p);
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()。
A)intn,*p=NULL;
B)*p=&
C)scanf(“%d”,&
p)
D)printf(“%d\n”,p);
20.以下程序中函数f的功能是:
当flag为1时,进行由小到大排序;
当flag为0时,进行由大到小排序。
voidf(int
b[],int
n,int
flag)
{int
i,j,t;
for(i=0;
n-1;
for(j=i+1;
j++)
if(flag?
b[i]>
b[j]:
b[i]<
b[j])
{t=b[i];
b[i]=b[j];
b[j]=t;
{inta[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&
a[2],5,0);
f(a,5,1);
10;
i++)printf(“%d,”,a[i]);
A)1,2,3,4,5,6,7,8,9,10,
B)3,4,5,6,7,2,1,8,9,10,
C)5,4,3,2,1,6,7,8,9,10,
D)10,9,8,7,6,5,4,3,2,1,
三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。
每小题5分,共10分)
1.下列给定程序中,函数fun的功能是:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
#include<
conio.h>
voidfun(chars)
{inti,j;
for(i=0,j=0;
s[i]!
=‘\0'
;
i++)
if(s[i]>
=‘0'
&
s[i]<
9'
)
s[j]==s[i];
s[j]=“\0”;
}
main()
{charitem[80];
clrscr();
printf(“\nEnterastring:
gets(item);
printf(“\n\nThestringis:
\%s\n”,item);
fun(*item);
printf(“\n\nThestringofchangingis:
2.下列给定程序中,函数fun的功能是:
分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:
AAaaBBb123CCccccd,则输出结果应为:
upper=6,lower=8。
voidfun(char*s,inta,intb)
{while(*s)
{if(*s>
=‘A'
*s<
=‘Z'
a++;
if(*s>
=‘a'
=‘z'
b++;
s++;
{chars[100];
intupper=0,lower=0;
printf(“\nPleaseastring:
gets(*s);
fun(s,&
upper,&
lower);
printf(“\nupper=%dlower=%d\n”,upper,lower);
四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。
(每小题5分,共20分)
1.
voidmain()
{
ints=1,t=1,a,n;
scanf(“%d%d”,&
a,&
n);
for(inti=1;
t=t*10+1;
s=s+t;
s*=a;
printf(“SUM=%d\n”,s);
输入数据:
2,4
输出结果:
2.#include<
voidmain()
{
inta,b,c,find(int,int,int);
scanf(“%d%d%d”,&
b,&
c);
printf(“%d\n%d,%d,%d\n”,find(a,b,c),a,b,c);
intfind(inta,intb,intc)
intu,s,t;
u=((u=(a>
b)?
a:
b)>
c)?
u:
c;
t=((t=(a<
b)<
t:
s=a+b+c-u-t;
a=u;
b=s;
c=t;
returns;
运行时输入:
5–73,输出结果:
3.#include<
voidmain()
{inta[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9};
for(inti=0;
5;
for(intj=0;
6;
if(*(a+i)==*(b+j))printf(“%d
”,*(a+i));
printf(“\n”);
}
五、按要求编写下列程序。
(每题5分,共10分)
1.编一程序,输出如下三角形图形:
2.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔的输出该串,请用指针完成。
答案
一、填空题
1分号22.000000(3)0(4)k*k(5)-12(6无数次
72(815(9a[1][0](10*(p+5)(1110
二、单项选择题
1-5DBCAD
6-10CABCD
11-15CABDA
16-20ACDAB
三、程序修改
1.修改后的程序如下:
voidfun(chars[])
0'
s[j++]=s[i];
s[j]='
\nEnterastring:
"
\n\nThestringis:
\%s\n"
item);
fun(item);
\n\nThestringofchangingis:
2.修改后的程序如下:
voidfun(char*s,int*a,int*b)
A'
Z'
(*a)++;
a'
z'
(*b)++;
system("
cls"
nPleaseastring:
gets(s);
\nupper=%dlower=%d\n"
upper,lower);
四、阅读程序
1.
SUM=2
2.
3
5-73
3.
2469
五、
string.h>
voidmain()
{charstr1[]="
****"
inti;
for(i=0;
%s\n"
str1);
str1[strlen(str1)-1]='
{charstr[]="
computer"
char*s=str;
while((*s)!
{printf("
%c"
*s);