c语言习题 谭浩强 有答案版Word下载.docx
- 文档编号:22378463
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:25.27KB
c语言习题 谭浩强 有答案版Word下载.docx
《c语言习题 谭浩强 有答案版Word下载.docx》由会员分享,可在线阅读,更多相关《c语言习题 谭浩强 有答案版Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
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("
cannotopeninfile\n"
exit(0);
}
if((out=fopen(outfile,"
))==NULL)
cannotopenoutfile\n"
while(___!
feof_______(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
12.以下程序中,select函数的功能是:
在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。
#defineN3
#defineM3
intselect(inta[N][M],int*n)
{inti,j,row=1,colum=1;
N;
i++)
for(j=0;
M;
j++)
if(a[i][j]>
a[row][colum]){row=i;
colum=j;
*n=_row_________;
return_a[row][colum]________;
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&
n);
max=%d,line=%d\n"
max,n);
13.下面程序是对输入的两个整数按大小顺序输出。
intmain()
{voidswap(int*p1,int*p2);
(226)
inta,b;
int*pointer_1,*pointer_2;
pleaseenteraandb:
%d,%d"
&
a,&
b);
pointer_1=&
a;
pointer_2=&
b;
if(a<
b)swap(___pointer_1,pointer_2______);
max=%d,min=%d\n"
a,b);
return0;
voidswap(int*p1,int*p2)
{int__temp______;
temp=*p1;
(p256)
*p1=*p2;
*p2=temp;
14.以下程序将数组a中的数据按逆序存放。
#defineM8
{inta[M],i,j,t;
for(i=0;
i++)scanf("
%d"
,a+i);
i=0;
j=M-1;
while(i<
j)
{t=*(a+i);
*(a+i)=*(a+j)_________;
*(__a+j_____)=t;
i++;
j--;
i++)printf("
%3d"
,*(a+i));
15.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
intmystrlen(char*str)
__str[i]_______!
=‘\0'
i++);
return(___i____);
16.下面的程序中,函数fun的功能是:
根据形参m,计算下面公式的值。
T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))请填空。
#include<
conio.h>
doublefun(intm)
{doublet=1.0;
inti=2;
for(i=2;
i<
=m;
i++)
t+=1.0/(i*(i+1));
____return(t)_________;
{intm;
\n请输入一个整数:
scanf("
m);
\n结果是:
%lf\n"
______fun(m)_______);
17.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>
t时返回正值,当s<
t时返回负值。
my_cmp(char*s,char*t)
{while(*s==*t)
{if(*s==__‘\0’_________)return0;
++s;
++t;
}
return__(*s-*t)_________;
}
18.以下函数set用来建立一个带头结点的单向链表,新产生的结点总是插入在链表的末尾,每个结点数据域为从键盘输入的单个字符。
单向链表的头指针作为函数值返回,回车键结束输入。
(注:
在单链表的第一个结点之前附设一个结点,称之为头结点,头结点的数据域可以不存储任何信息。
)
structnode{chardata;
structnode*next;
structnode*set()
{structnode*t1,*t2,*t3;
charch;
t1=(structnode*)malloc(sizeof(structnode));
t3=t2=t1;
ch=getchar();
while(ch!
=’_\n_________’)
{t2=___(structnode*)_malloc(sizeof(structnode));
t2->
data=ch;
t3->
next=t2;
t3=t2;
next=NULL;
_return(t1)____;
19.下面程序是判断输入的字符串是否是“回文”,(正读和倒读都一样的字符串称“回文”,如level)。
string,h>
{chars[81],*p1,*p2;
intn;
gets(s);
n=strlen(s);
p1=s;
p2=___s+n-1___________;
while(p1<
p2)
{if(*p1!
=*p2)break;
else{p1++;
_p2--_________;
if(p1<
p2)printf("
NO\n"
elseprintf("
Yes\n"
20.以下函数用来对n个数按由大到小排序,请填空。
voidsort(int*x,intn)
{inti,j,k,t;
n-1;
{k=i;
for(j=i+1;
if(*(x+j)>
*(x+k))___k=j_________;
if(k!
=i)
{t=*(x+i);
_*(x+i)=*(x+k)___;
*(x+k)=t;
21.设函数findbig已定义为求3个数中的最大值。
以下程序将利用函数指针调用findbig函数。
{intfindbig(int,int,int);
int(*f)(),x,yz,z,big;
f=_findbig_________;
%d%d%d"
x,&
y,&
z);
big=____(*f)______(x,y,z);
bing=%d\n"
big);
22.以下程序是将若干字符串按字母顺序(由小到大)输出。
string.h>
voidmain()
{voidsort(char*name[],intn);
voidprint(char*name[],intn);
char*name[]={"
Followme"
BASIC"
GreatWall"
FORTRAN"
Computerdesign"
};
intn=5;
sort(name,n);
print(name,n);
voidsort(char*name[],intn)
{char*temp;
inti,j,k;
{k=i;
if(strcmp(name[k],name[j])>
0)__k=j___________;
{temp=name[i];
__name[i]=name[k]_______;
name[k]=temp;
voidprint(char*name[],intn)
{inti;
%s\n"
name[i]);
23.以下程序为从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。
#include<
voidmain(void)
{FILE*fp;
charch,filename[10];
filename);
if((fp=fopen(__filename,"
____________))==NULL)
{
cannotopenfile\n"
ch=getchar();
while(ch!
#'
_fputc(ch,fp)__________;
putchar(ch);
ch=getchar();
}
fclose(fp);
24.以下程序的功能是:
通过指针操作,找出三个整数中的最小值并输出。
{int*a,*b,*c,num,x,y,z;
a=&
x;
b=&
y;
c=&
z;
输入3个整数:
,x,y,z);
%d,%d,%d\n"
,*a,*b,*c);
num=*a;
if(*a>
*b)__num=*b__________;
if(num>
*c)__num=*c_________;
printf("
输出最小整数:
%d\n"
num);
25.下面程序段中,for循环的执行次数是____6_____。
char*s="
\ta\018bc"
*s!
s++)
*"
26.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表不带头结点)。
structlink
{chardata;
structlink*next;
};
…
structlink*p,*first;
intc=0;
p=first;
while(p!
=NULL________)
{c++;
p=P->
next___;
27.下面的程序是求如下表达式的值。
s=sqrt(ln
(1)+ln
(2)+ln(3)+……+ln(n)),当n=50时,给出程序运行结果(保留6位小数)。
doublefun(in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言习题 谭浩强 有答案版 语言 习题 答案