c语言习题谭浩强有参考答案版Word文档格式.docx
《c语言习题谭浩强有参考答案版Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言习题谭浩强有参考答案版Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
9.设有char*p="
abcde\0fghjik\0"
则语句printf("
%d\n"
strlen(p));
的输出结果是_____5_______。
10.表达式0x13^0x17的值是__ox4________。
11.在C语言中,&
运算符作为单目运算符时表示的是__取地址_____运算;
作为双目运算符时表示的是_按位与____运算。
12.若p是指向某一结构体变量的指针变量,则通过指变量对结构体成员的引用方法有:
_____p->
_______和_______(*p)._______。
13.设inta[3][4]={{1,2,3,4},{5,6,7,8}};
则*(*a+2)的值为__3____。
14.判断文本文件是否结束时使用的符号常量EOF的值是___-1___。
15.FILE*p的作用是定义一个文件指针变量,其中的FILE是在stdio.h_____头文件中定义的。
16.若有以下说明和定义语句,则变量w在内存中所占的字节数是_34_______。
unionaa{floatx;
floaty;
charc[6];
};
structst{unionaav;
floats[5];
doubleave;
}w;
17.设有语句inty;
y=sizeof(2.25*4);
则y的值是____8_____。
18.已知inta=1,b=3则a^b的值为___2_______。
19.下面程序段的运行结果是___ef_____。
charstr[]="
abc\0def\0ghi"
*p=str;
printf("
%s"
p+5);
20.表达式0x13|0x17的值是__ox17________。
21.rewind函数的作用是_使文件位置标记指向文件开始位置________。
22.与表达式a&
=b等价的另一书写形式是___a=a&
b______。
23.若有以下定义和语句:
inta[4]={0,1,2,3,4},*p;
a[1];
则++(*p)的值是___2_____。
24.若有int(*p)[4];
则p是_指向包含4个整型元素的一维数组的指针变量。
25.表达式071∧052的值是___o23______
26.表达式0x14&
0x18的值是__ox10_______。
27.设有定义:
int(*p)(int,int),则p是___指向函数入口地址的指针变量。
28.fclose函数当成功地执行了关闭操作,则返回值为___0___________。
29.设有定义inta[3][4],*p;
若二维数组的首行首地址为2000,一个整型数据占4个字节,则a+1的首地址是__2016___________。
30.表达式3&
5的值是_____1_______。
31.设有定义uniondata
{inti;
'
2
charch;
floatf;
}a;
则变量a所占内存长度为_____4_______个字节。
32.若p是指向某一结构体变量的指针变量,则通过指变量对结构体成员的引用方法有:
_____p->
__________和_____(*p)._________。
33.设a是二维数组名,则a[0]表示___0行0列元素地址__________________。
34.设有语句:
a=a+7;
的输出结果是_china!
____________。
35.设intb[]={1,2,3,4},y,*p=b;
则执行语句y=*p++;
之后,变量y的值为__1_____。
36.设inta[3][4]={{1,3,5,7},{2,4,6,8}};
则*(*a+1)的值为_3_____。
程序阅读题
1.下面的程序是求表达式的值:
s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+......+(1*2*3*......*n)/(3*5*7*......(2*n+1)),请填空。
#include<
stdio.h>
math.h>
doublefun(intn)
{doubles,t;
inti;
___s=1_______;
t=1.0;
for(i=1;
i<
=n;
i++)
{t=t*i/(2*i+1);
______s+=t_________;
}
returns;
main()
{printf("
\n%12.10lf"
fun(25));
2.下面程序的功能是:
对字符串从小到大进行排序并输出,请填空。
#include"
string.h"
stdio.h"
sort(char*a[],intn)
{inti,j;
char*p;
for(j=1;
j<
=__n-1________;
j++)
for(i=0;
_i<
n-j_______;
i++)
if(___strcmp(a[i],a[i+1])___>
0)
{p=a[i];
a[i]=a[i+1];
a[i+1]=p;
}
3.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。
FILE*fp;
{charch;
if((fp=fopen(“bi.dat”,"
w"
___________))==NULL)exit(0);
while((ch=getchar())!
='
___@____'
)fputc(ch,fp);
fclose(fp);
4.若已定义:
structnum
{inta;
intb;
}n={1,3,5.0};
structnum*pn=&
n;
则表达式pn->
b/n.a*++pn->
b的值是_12________,表达式(*pn).a+pn->
f的值是____6.0__。
5.下列程序的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#include
#defineM81
intfun(char*ss,charc)
{inti=0;
for(;
___*ss!
\0'
_____________;
ss++)
if(*ss==c)i++;
returni;
{chara[M],ch;
clrscr();
pleaseenterastring:
\n"
);
gets(a);
pleaseenterachar:
"
ch=getchar());
\nThenumberofthecharis:
%d\n"
fun(__a[M],ch______));
6.下面函数的功能是:
找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回,n是数据个数。
请填空。
voidfun(inta[],intn,int*max,int*d)
{inti;
*max=a[0];
*d=0;
___i<
n________;
if(*max<
___a[i]_________)
{*max=a[i];
*d=i;
}
7.以下函数用来在w数组中插入x。
n所指向的存储单元中存放w数组中字符个数。
数组w中的字符已按从小到大的顺序排列,插入后数组w中的字符仍有序。
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
while(x>
w[p])p++;
for(i=*n;
i>
p;
i--)w[i]=__w[i-1]____________;
w[p]=____x________;
++*n;
8.下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。
fun(int*p,intn)
{int*q;
intmax,min;
max=min=*p;
for(q=p;
q<
__p+n______;
q++)
if(*q>
max)max=*q;
elseif(___*q<
min_____________)min=*q;
9.以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。
{FILE*fp;
chara[4]="
1234"
,b[6]="
abcedf"
;
if((fp=fopen("
_lett.dat___"
"
wb"
))=NULL)exit(0);
fwrite(a,sizeof(char),4,fp);
fwrite(b,_6_,1,fp);
10.函数primedec(m)是求整数m的所有素数因子,并输出。
如:
m为120时。
输出的素数因子为:
2,2,2,3,5
程序如下:
primedec(intm)
{intk=2;
while(k<
=m)
if(___m%k==0________)
{printf(“%d,”,k);
m=m/k
else
k++;
11.以下程序是将一个磁盘文件中的信息复制到另一个磁盘文件中。
stdlib.h>
voidmain()
{FILE*in,*out;
charch,infile[10],outfile[10];
printf("
Entertheinfilename:
\n"
scanf("
infile);
Entertheoutfilename:
outfile);
if((in=fopen(__infile,"
r"
_______))==NULL)
{printf