最新整理c语言习题谭浩强有参考答案版.docx
- 文档编号:11184072
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:31
- 大小:26.41KB
最新整理c语言习题谭浩强有参考答案版.docx
《最新整理c语言习题谭浩强有参考答案版.docx》由会员分享,可在线阅读,更多相关《最新整理c语言习题谭浩强有参考答案版.docx(31页珍藏版)》请在冰豆网上搜索。
最新整理c语言习题谭浩强有参考答案版
(完整)c语言习题谭浩强有参考答案版
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)c语言习题谭浩强有参考答案版)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)c语言习题谭浩强有参考答案版的全部内容。
1.若有以下定义和语句:
inta[4]={0,1,2,3},*p;
p=&a[2];
则++(*p)的值是___3__。
2.与表达式a|=b等价的另一书写形式是_a=a|b________。
3.链表中的每个结点都是_结构体________类型数据。
4.设有语句:
char*a="I_love_china!
”;a=a+2;则执行printf(“%s\n”,a);的输出结果是___love_china!
__________。
5.若有宏义:
#definef(x)x*x则当a=3时,执行f(a-1)的值是____-1___。
6.有以下函数调用语句,请问函数fun1到底有___4____个参数。
fun1(x,(y,z),10,fun2((x-1,y—1)))
7。
设有以下定义和语句,则*(*(p+2)+1)的值为__60________。
inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;
8.若有inta=1;intb=2;则a|b的值为___3______。
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;
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。
设有语句:
char*a=”I_love_china!
";a=a+7;则执行printf(“%s\n",a);的输出结果是_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 h> #include〈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" #include"stdio。 h" sort(char*a[],intn) {inti,j; char*p; for(j=1;j〈=__n-1________;j++) for(i=0;_i if(___strcmp(a[i],a[i+1])___〉0) {p=a[i]; a[i]=a[i+1]; a[i+1]=p; } } 3.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi。 dat的新文件中,请填空. #include"stdio。 h” FILE*fp; {charch; if((fp=fopen(“bi.dat”,”w"___________))==NULL)exit(0); while((ch=getchar())! ='___@____')fputc(ch,fp); fclose(fp); } 4。 若已定义: structnum {inta; intb; floatf; }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 #include #defineM81 intfun(char*ss,charc) {inti=0; for(;___*ss! ='\0’_____________;ss++) if(*ss==c)i++; returni; } main() {chara[M],ch; clrscr(); printf(”pleaseenterastring: \n");gets(a); printf("pleaseenterachar: ";ch=getchar()); printf("\nThenumberofthecharis: %d\n",fun(__a[M],ch______)); } 6。 下面函数的功能是: 找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回,n是数据个数。 请填空. voidfun(inta[],intn,int*max,int*d) {inti; *max=a[0]; *d=0; for(i=0;___i〈n________;i++) 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 } 9.以下程序将数组a的4个元素和数组b的6个元素写到名为lett。 dat的二进制文件中,请填空。 #include main() {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); fclose(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。 以下程序是将一个磁盘文件中的信息复制到另一个磁盘文件中.请填空。 #include〈stdlib。 h> #include〈stdio。 h〉 voidmain() {FILE*in,*out; charch,infile[10],outfile[10]; printf("Entertheinfilename: \n”); scanf("%s”,infile); printf(”Entertheoutfilename: \n"); scanf("%s”,outfile); if((in=fopen(__infile,"r”_______))==NULL) {printf("cannotopeninfile\n"); exit(0); } if((out=fopen(outfile,"w”))==NULL) {printf(”cannotopenoutfile\n”); exit(0); } 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; for(i=0;i for(j=0;j〈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); printf("max=%d,line=%d\n”,max,n); 13。 下面程序是对输入的两个整数按大小顺序输出.请填空。 #include h> intmain() {voidswap(int*p1,int*p2);(226) inta,b; int*pointer_1,*pointer_2; printf("pleaseenteraandb: "); scanf(”%d,%d",&a,&b); pointer_1=&a; pointer_2=&b; if(a〈b)swap(___pointer_1,pointer_2______); printf(”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 main() {inta[M],i,j,t; for(i=0;i〈M;i++)scanf("%d",a+i); i=0;j=M-1; while(i {t=*(a+i); *(a+i)=*(a+j)_________; *(__a+j_____)=t; i++;j-—; } for(i=0;i } 15。 mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。 请填空。 intmystrlen(char*str) {inti; for(i=0;__str[i]_______! =‘\0';i++); return(___i____); } 16。 下面的程序中,函数fun的功能是: 根据形参m,计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))请填空。 #include #include〈stdio。 h> doublefun(intm) {doublet=1.0; inti=2; for(i=2;i〈=m;i++) t+=1。 0/(i*(i+1)); ____return(t)_________; } main() {intm;clrscr();printf(”\n请输入一个整数: "); scanf("%d”,&m); printf("\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; ch=getchar(); } t3-〉next=NULL; _return(t1)____; } 19.下面程序是判断输入的字符串是否是“回文",(正读和倒读都一样的字符串称“回文",如level).请填空。 #include〈stdio.h> #include main() {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; for(i=0;i〈n—1;i++) {k=i; for(j=i+1;j〈n;j++) if(*(x+j)〉*(x+k))___k=j_________; if(k! =i) {t=*(x+i);_*(x+i)=*(x+k)___;*(x+k)=t;} } } 21.设函数findbig已定义为求3个数中的最大值。 以下程序将利用函数指针调用findbig函数。 请填空。 main() {intfindbig(int,int,int); int(*f)(),x,yz,z,big; f=_findbig_________; scanf(”%d%d%d",&x,&y,&z); big=____(*f)______(x,y,z); printf("bing=%d\n",big); } 22。 以下程序是将若干字符串按字母顺序(由小到大)输出。 请填空。 #include h〉 #include〈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; for(i=0;i {k=i; for(j=i+1;j if(strcmp(name[k],name[j])〉0)__k=j___________; if(k! =i) {temp=name[i];__name[i]=name[k]_______;name[k]=temp;} } } voidprint(char*name[],intn) {inti; for(i=0;i〈n;i++) printf("%s\n",name[i]); } 23.以下程序为从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#"为止。 请填空。 #include #include h〉 voidmain(void) {FILE*fp; charch,filename[10]; scanf("%s”,filename); if((fp=fopen(__filename,”w"____________))==NULL) { printf("cannotopenfile\n”);exit(0); } ch=getchar(); ch=getchar(); while(ch! ='#’) { _fputc(ch,fp)__________; putchar(ch);ch=getchar(); } fclose(fp); } 24.以下程序的功能是: 通过指针操作,找出三个整数中的最小值并输出。 请填空。 #include”stdio.h” main() {int*a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z; printf("输入3个整数: "); scanf("%d%d%d",x,y,z); printf("%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"; for(;*s! ='\0';s++) printf(”*”); 26.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 整理 语言 习题 谭浩强有 参考答案