版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、導讀:在程序填空題中,已經(jīng)給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內(nèi)容填入空白處,使程序完成既定的功能。這類習題的設計就是要引導讀者逐步掌握編程的方法。本節(jié)習題的難度適中,可能有些典型的程序在課堂上已經(jīng)有所接觸,讀者一定要獨立完成它,這樣就可以逐步提高自己的編程能力在程序設計語言學習的中期,讀者對程序設計已經(jīng)有了初步的了解,而自己編寫程序又不知從何處入手,此時解答此類題目可以避免盲目性,從而提高學習的效率3.1下面程序的功能是不用第三個變量,實現(xiàn)兩個數(shù)的對調(diào)操作。#include<stdio.h>main()inta,b;scanf("%d%d"
2、,&a,&b);printf("a=%d,b=%dn",a,b);a=;b=;a=;printf("a=%d,b=%dn",a,b);)3,2下面程序的功能是根據(jù)近似公式:兀2/6y1/12+1/22+1/32+1/n2,求兀值。#include<math.h>doublepi(longn)doubles=0.0;longi;for(i=1;i<=n;i+)s=s+;return();)3.3下面的程序的功能是求一維數(shù)組中的最小元素。findmin(int*s,intt,int*k)intp;for(p=0,*k=p;p
3、<t;p+)if(sp<s*k);)main()inta10,i,*k=&i;for(i=0;i<10;i+)scanf("%d",&ai);findmin(a,10,k);printf("%d,%dn",*k,a*k);)3,4下面程序的功能是計算1-3+5-7+-99+101的值。main()inti,t=1,s=0;for(i=1;i<=101;i+=2)(;s=s+t;;)printf("%dn",s);)3,5有以下程序段:s=1.0;for(k=1;k<=n;k+)s=s+1.
4、0/(k*(k+1);printf("%fn",s);填空完成下述程序,使之與上述程序的功能完全相同。s=0.0;;k=0;dos=s+d;;d=1.0/(k*(k+1);while();printf("%fn",s);3,6下面程序的功能是從鍵盤上輸入若干學生的學習成績,統(tǒng)計并輸出最高成績和最低成績,當輸入為負數(shù)時結(jié)束輸入。main()floatx,amax,amin;scanf("%f',&x);amax=x;amin=x;while()if(x>amax)amax=x;if()amin=x;scanf("%
5、f',&x);)printf("namax=%fnamin=%fn",amax,amin);)3.7下面程序的功能是將形參x的值轉(zhuǎn)換為二進制數(shù),所得的二進制數(shù)放在一個一維數(shù)組中返回,二進制數(shù)的最低位放在下標為0的元素中。fun(intx,intb)intk=0,r;dor=x%;bk+=r;x/=;while(x);)3.8下面程序的功能是輸出1到100之間每位數(shù)的乘積大于每位數(shù)的和的數(shù)。例如數(shù)字26,數(shù)位上數(shù)字的乘積12大于數(shù)字之和8omain()intn,k=1,s=0,m;for(n=1;n<=100;n+)k=1;s=0;;while()k*=
6、m%10;s+=m%10;;)if(k>s)printf("%d",n);)3,9下面程序的功能是統(tǒng)計用。至9之間的不同的數(shù)字組成的三位數(shù)的個數(shù)。main()intij,k,count=0;for(i=1;i<=9;i+)for(j=0;j<=9;j+)if()continue;elsefor(k=0;k<=9;k+)if()count+;printf("%d",count);)3,10下面程序的功能是輸出100以內(nèi)的個位數(shù)為6、且能被3整除的所有數(shù)。main()inti.j;for(i=0;;i+)j=i*10+6;if()co
7、untinue;printf("%d",j);)3,11下面程序的功能是用輾轉(zhuǎn)相除法求兩個正整數(shù)m和n的最大公約數(shù)。hcf(intm,intn)intr;if(m<n)r=m;;n=r;)r=m%n;while()m=n;n=r;r=m%n;);)3,12下面程序的功能是使用冒泡法對輸入的10個浮點數(shù)從小到大進行排序。排好序的10個數(shù)分兩行輸出。程序如下:#include<stdio.h>main()(;inti,j;printf("lnput10numberspleasen");for(i=0;;i+)scanf("%f
8、39;,&ai);printf("n");for(i=2;;i+)for(j=0;;j+)if()x=aj;;aj+1=x;)printf("Thesorted10numbers;n");for(i=0;;i+)if()printf("n");)printf("n");)3,13下面程序的功能是讀入20個整數(shù),統(tǒng)計非負數(shù)個數(shù),并計算非負數(shù)之和。#include"stdio.h"main()inti,a20,s,count;s=count=0;for(i=0;i<20;i+)scan
9、f("%d",);for(i=0;i<20;i+)if(ai<0);s+=ai;count+;)printf("s=%dtcount=%dn",s,count)3,14下面程序的功能是刪除字符串#include<stdio.h>main()char*s="Beijingligongdaxue"intij;for(i=j=0;si!='0'i+)if(si!=");else;sj尸'0'printf("%s",s);)3,15下面程序的功能是將字符串#
10、include<stdio.h>main()s中的空格。s中所有的字符 匕,刪除。請選擇填空。chars80;intij;gets(s);for(i=j=0;si!='0'i+)if(si!='c');sj尸'0'puts(s);)3,16下面程序的功能是輸出兩個字符串中對應相等的字符。請選擇填空。#include<stdio.h>charx="programming"chary="Fortran"main()inti=0;while(xi!='0'&&
11、;yi!='0')if(xi=yi)printf("%c",);elsei+;)3,17下面程序的功能是將字符串s中的每個字符按升序的規(guī)則插到數(shù)組中,字符串a(chǎn)已排好序。#include<string.h>main()chara20="cehiknqtw"chars="fbla"inti,kj;for(k=0;sk!='0'k+)j=0;while(sk>=aj&&aj!='0')j+;for();aj=sk;)puts(a);)3.18下面程序的功能是對
12、鍵盤輸入的兩個字符串進行比較,然后輸出兩個字符串中第一個不相同字符的ASCII碼之差。例如:輸入的兩個字符串分別為“abcdefg"和“abceef",則輸出為-1。#include<stdio.h>main()charstr1100,str2100,c;inti,s;printf("Enterstring1:");gets(str1);printf("Enterstring2:");gets(str2);i=0;while(str1i=str2i&&str1i!=)i+;s=;printf("%
13、dn",s);)【3.19下面的函數(shù)expand在將字符串s復制到字符串t時,將其中的換行符和制表符轉(zhuǎn)換為可見的轉(zhuǎn)義字符表示,即用VT表示換行符,用箕表示制a表符。expand(chars,chart)inti.j;for(i=j=0;si!='0'i+)switch(si)case'n':t=;tj+='n'break;case't':t=;tj+=t;break;default:t=si;break;)tj=;)3,20下面的函數(shù)index(chars,chart)檢查字符串s中是否包含字符串t,若包含,則返回t在s
14、中的開始位置(下標值),否則送回-1oindex(chars,chart)inti,j,k;for(i=0;si!='0'i+)for(j=i,k=0;&&sj=tk;j+,k+);if()return(i);)return(-1);)n【321下面程序的功能是計算S=k!ok=0longfun(intn)inti;longs;for(i=1;i;i+)s*=i;return();)main()intk,n;longs;scanf("%d",&n);s=;for(k=0;k<=n;k+)s+=;printf("%ldn
15、",s);)3,22下面程序的功能是顯示具有n個元素的數(shù)組s中的最大元素。#defineN20main()inti,aN;for(i=0;i<N;i+)scanf("%d",&ai);printf("%dn",);)fmax(ints,intn)intk,p;for(p=0,k=p;p<n;p+)if(sp>sk);return(k);)3,23下面程序的功能是由鍵盤輸入n,求滿足下述條件的x、y:nx和ny的末3位數(shù)字相同,且xy,x>y>n均為自然數(shù),并使x+y為最小。#include<stdio
16、.h>pow3(intn,intx)inti,last;for(last=1,i=1;i<=x;i+)last=;return(last);)main()intx,n,min,flag=1;scanf("%d",&n);for(min=2;flag;min+)for(x=1;x<min&&flag;x+)if(&&pow3(n,x)=pow3(n,min-x)printf("x=%d,y=%dn",x,min-x);;)3,24下面的程序是用遞歸算法求a的平方根。求平方根的迭代公式如下:#incl
17、ude<math.h>doublemysqrt(doublea,doublexO)doublex1,y;x1=;if(fabs(x1-x0)>0.00001)y=mysqrt();elsey=x1;return(y);)main()doublex;printf("Enterx:");scanf("%lf',&x);printf("Thesqrtof%lf=%lfn",x,mysqrt(x,1.0)3,25以下程序是計算學生的年齡。已知第一位最小的學生年齡為其余學生的年齡一個比一個大2歲,求第5個學生的年齡。#i
18、nclude<stdio.h>age(intn)intc;if(n=1)c=10;elsec=;return(c);)main()intn=5;printf("age:%dn",);)3,26下面的函數(shù)sum(intn)完成計算1n的累加和。sum(intn)if(n<=0)printf("dataerrorn")if(n=1);else;)3,27下面的函數(shù)是一個求階乘的遞歸調(diào)用函數(shù)。facto(intn)if(n=1);elsereturn();)3,28組合問題,由組合的基本性質(zhì)可知:(1) C(m,n)=C(n-m,n)(2)
19、C(m,n+1)=C(m,n)+C(m-1,n)公式(2)是一個遞歸公式,一直到滿足C(1,n)=n為止。當n<2*m時,可先用公式(1)進行簡化,填寫程序中的空白,使程序可以正確運行。#include"stdio.h"main()intm,n;printf("lnputm,n=");1。歲,scanf("%d%d",&m,&n);printf("Thecombinationnumbeersis%dn",combin(m,n);)combin(intm,intn)intcom;if(n<
20、2*m)m=n-m;if(m=0)com=1;elseif(m=1);else;return(com);)3,29下列函數(shù)是求一個字符串str的長度。?intstrlen(char*str)?if()return(0);?elsereturn();)3.30用遞歸實現(xiàn)將輸入小于32768的整數(shù)按逆序輸出。如輸入12345,則輸出54321o#include"stdio.h"main()intn;printf("lnputn:");scanf("%d",);r(n);printf("n");)r(intm)print
21、f("%d",);m=;if();)3.31輸入n值,輸出高度為n的等邊三角形。例如當n=4時的圖形如下:*#include<stdio.h>voidprt(charc,intn)if(n>0)printf("%c",c);;)main()inti,n;scanf("%d",&n);for(i=1;i<=n;i+);printf("n");)3,32下面的函數(shù)實現(xiàn)N層嵌套平方根的計算。doubley(doublex,intn)if(n=0)return(0);elsereturn(s
22、qrt(x+();)3.33函數(shù)revstr(s)將字符串s置逆,如輸入的實參s為字符串"abode",則返回時s為字符串"edcba"o遞歸程序如下:revstr(char*s)char*p=s,c;while(*p)p+;;if(s<p)c=*s;*s=*p;;revstr(s+1);;)如下是由非遞歸實現(xiàn)的revstr(s)函數(shù):revstr(s)char*s;char*p=s,c;while(*p)p+;;while(s<p)c=*s;=*p;*p-=c;)3.34下面函數(shù)用遞歸調(diào)用的方法,將str中存放的長度為n的字符串反轉(zhuǎn)過來,例
23、如原來是"ABCDE",反序為"EDCBA”。voidinvent(char*str,intn)chart;t=*str;*str=*(str+n-1);*(str+n-1)=t;if(n>2)invent(,n-2);else;)3,35從鍵盤上輸入10個整數(shù),程序按降序完成從大到小的排序。#include<stdio.h>intarray10;sort(int*p,int*q)int*max,*s;if()return;max=p;for(s=p+1;s<=q;s+)if(*s>*max);swap();sort();)swap(
24、int*x,int*y)inttemp;temp=*x;* x=*y;* y=temp;)main()inti;printf("Enterdata:n");for(i=0;i<10;i+)scanf("%d",&arrayi);sort();printf("Output:");for(i=0;i<10;i+)printf("%d",arrayi);)3,36下面函數(shù)的功能是將一個整數(shù)存放到一個數(shù)組中。存放時按逆序存放。例如:483存放成"384"o#include<st
25、dio.h>voidconvert(char*a,intn)inti;if(i=n/1O)!=O)convert(,i);* a=;)charstr1O=""main()intnumber;scanf("%d",&number);convert(str,number);puts(str);)3,37下面程序的功能是實現(xiàn)數(shù)組元素中值的逆轉(zhuǎn)。#include<string.h>main()inti,n=10,a10=1,2,3,4,5,6,7,8,9,10;invert(a,n-1);for(i=0;i<10;i+)print
26、f("%4d",ai);printf("n");)invert(int*s,intnum)int*t,k;t=s+num;while()k=*s;* s=*t;* t=k;)的內(nèi)容按3行X 4列的)3.38下面程序通過指向整型的指針將數(shù)組a34格式輸出,請給printf()填入適當?shù)膮?shù),使之通過指針p將數(shù)組元素按要求輸出。#include<stdio.h>inta34=1,2,3.4,5,6,7.8,9,10,11.12,*p=a;main()inti.j;for(i=0;i<3;i+)forO=0;j<4;j+)printf(
27、"%4d",);)3,39下面程序的功能是:從鍵盤上輸入一行字符,存入一個字符數(shù)組中,然后輸出該字符串。#include<stdio.h>main()charstr81,*sptr;inti;for(i=0;i<80;i+)stri=getchar();if(stri='n')break;)stri=;sptr=str;while(*sptr)putchar(*sptr);)3,40下面函數(shù)的功能是將字符變量的值插入已經(jīng)按ASCII碼值從小到大排好序的字符串中。voidfun(char*w,charx,int*n)inti,p=0;whil
28、e(x>wp);for(i=*n;i>=p;i-);wp=x;+*n;)3.41下面程序的功能是從鍵盤上輸入兩個字符串,對兩個字符串分別排序;然后將它們合并,合并后的字符串按ASCII碼值從小到大排序,并刪去相同的字符。#include<stdio.h>strmerge(a,b,c)/*將已排好序的字符串a(chǎn)、b合并到c*/char*a,*b,*c;chart,*w;w=c;while(*a!='0'*b!='0')t=?*a+:*b<*a?*b+:();/*將*a、*b的小者存入t*/if(*w'0')*w=t;el
29、seif(t*w)*+w=t;/*將與*w不相同的t存入w*/)while(*a!='0')/*以下將a或b中剩下的字符存入w*/if(*a!=*w)*+w=*a+;elsea+;while(*b!='0')if(*b!=*w)*+w=*b+;elseb+;*+w=;)strsort(char*s)/*將字符串s中的字符排序*/inti,j,n;chart,*w;;for(n=0;*w!='0')w+;for(i=0;i<n-1;i+)for(j=i+1;j<n;j+)if(si>sj)main()chars1100,s2100
30、,s3200;printf("nPleaseInputFirstString:");scanf("%s",s1);printf("nPleaseInputSecondString:");scanf("%s",s2);strsort(sl);strsort(s2);='0'strmerge(s1,s2,s3);printf("nResult:%s",s3);)3,42已知某數(shù)列前兩項為2和3,其后繼項根據(jù)前面最后兩項的乘積,按下列規(guī)則生成:若乘積為一位數(shù),則該乘積即為數(shù)列的后繼項;
31、若乘積為二位數(shù),則該乘積的十位上的數(shù)字和個位上的數(shù)字依次作為數(shù)列的兩個后繼項。下面的程序輸出該數(shù)列的前N項及它們的和,其中,函數(shù)sum(n.pa)返回數(shù)列的前N項和,并將生成的前N項存入首指針為pa的數(shù)組中,程序中規(guī)定輸入的N值必須大于2,且不超過給定的常數(shù)值MAXNUM。例如:若輸入N的值為10,則程序輸出如下內(nèi)容:sum(10)=442361886424#include"stdio.h"#defineMAXNUM100intsum(n,pa)intn,*pa;intcount,total,temp;*pa=2;=3;total=5;count=2;while(count
32、+<n)temp=*(pa-1)*pa;if(temp<10)total+=temp;*(+pa)=temp;)else=temp/10;total+=*pa;if(count<n)count+;pa+;=temp%10;total+=*pa;);)main()intn,*p,*q,numMAXNUM;doprintf("lnputN=?(2<N<%d):",MAXNUM+1);scanf("%d",&n);while();printf("nsum(%d)=%dn",n,sum(n,num);fo
33、r(p=num,q=;p<q;p+)printf("%4d",*p);printf("n");)3,43下面程序的功能是輸入學生的姓名和成績,然后輸出。#include<stdio.h>structstuinfcharname20;/*學生姓名*/intscore;/*學生成績*/stu,*p;main()p=&stu;printf("Entername:");gets();printf("Enterscore:");scanf("%d",);printf("
34、Output:%s,%dn",,);)3,44下面程序的功能是按學生的姓名查詢其成績排名和平均成績。查詢時可連續(xù)進行,直到輸入0時才結(jié)束。?#include<stdio.h>#include<string.h>#defineNUM4?structstudent?intrank;char*name;floatscore;?stu=3,"liming",89.3,?4,"zhanghua",78.2,?1,"anli",95.1,?2,"wangqi",90.6);?main()?ch
35、arstr10;?inti?doprintf("Enteraname");?scanf("%s",str);?for(i=0;i<NUM;i+)?if()?printf("Name:%8sn",);?printf("Rank:%3dn",stui.rank);?printf("Average:%5.1fn",stui.score);?if(i>=NUM)printf("Notfoundn");?while(strcmp(str,"0&q
36、uot;)!=0);?3,45下面程序的功能是從終端上輸入5個人的年齡、性別和姓名,然后輸出。#include"stdio.h"structmancharname20;unsignedage;charsex7;);main()structmanperson5;data_in(person,5);data_out(person,5);)data_in(structman*p,intn)structman*q=;for(;p<q;p+)printf("age:sex:name");scanf("%u%s",&p->ag
37、e,p->sex);)data_out(structman*p,intn)structman*q=_;for(;p<q;p+)printf("%s;%u;%sn",p->name,p->age,p->sex)3,46輸入N個整數(shù),儲存輸入的數(shù)及對應的序號,并將輸入的數(shù)按從小到大的順序進行排列。要求:當兩個整數(shù)相等時,整數(shù)的排列順序由輸入的先后次序決定。例如:輸入的第3個整數(shù)為5,第7個整數(shù)也為5,則將先輸入的整數(shù)5排在后輸入的整數(shù)5的前面。程序如下:#include"stdio.h"#defineN10structintno
38、;intnum;arrayN;main()inti,j,num;for(i=0;i<N;i+)printf("enterNo.%d:",i);scanf("%d",&num);for(;j>=O&&airayj.numnum;)arrayj+1=arrayj;array.num=num;array.no=i;)for(i=0;i<N;i+)printf("%d=%d,%dn",i,arrayi.num,arrayi.no);)3,47以下程序的功能是:讀入一行字符(如:a、.y、z),按輸入時
39、的逆序建立一個鏈接式的結(jié)點序列,即先輸入的位于鏈表尾(如下圖),然后再按輸入的相反順序輸出,并釋放全部結(jié)點。#include<stdio.h>main()structnodecharinfo;structnode*link*top,*p;charc;top=NULL;while(c=getchar()p=(structnode*)malloc(sizeof(structnode);p->info=c;p->link=top;top=p;)while(top);top=top->link;putchar(p->info);free(p);)3,48下面函數(shù)將指
40、針p2所指向的線性鏈表,串接到p1所指向的鏈表的末端。假定p1所指向的鏈表非空。#defineNULL0structlinkfloata;structlink*next;);concatenate(p1,p2)structlist*p1,*p2;if(p1->next=NULL)p1->next=p2;elseconcatenate(,p2);)3.49下面程序的功能是從鍵盤輸入一個字符串,然后反序輸出輸入的字符串。#include<stdio.h>structnodechardata;structnode*link;*head;main()charch;structn
41、ode*p;head=NULL;while(ch=getchar()!='n')p=(structnode*)malloc(sizeof(structnode);p->data=ch;p->link=;head=;);while(p!=NULL)printf("%c",p->data);p=p->link;)3,50下面程序的功能是從鍵盤上順序輸入整數(shù),直到輸入的整數(shù)小于時才停止輸入。然后反序輸出這些整數(shù)。#include<stdio.h>structdataintx;structdata*link;)*P;input()
42、intnum;structdata*q;printf("Enterdata:");scanf("%d",&num);if(num<0)q=;q->x=num;q->link=p;p=q;)main()printf("Enterdatauntildata<O:n");p=NULL;input();printf("Output:");while()printf("%dn",p->x);;)3,51下面函數(shù)的功能是創(chuàng)建一個帶有頭結(jié)點的鏈表,將頭結(jié)點返回給主調(diào)函數(shù)。
43、鏈表用于儲存學生的學號和成績。新產(chǎn)生的結(jié)點總是位于鏈表的尾部。structstudent0longnum;intscore;structstudent*next;);structstudent*creat()structstudent*head=NULL,*tail;longnum;inta;tail=malloc(LEN);doscanf("%ld,%d",&num,&a);if(num!=0)if(head=NULL)head=tail;else;tail->num=num;tail->score=a;tail->next=(struc
44、tstudent*)malloc(LEN);)elsetail->next=NULL;while(num!=O);return();)3,52下面create函數(shù)的功能是建立一個帶頭結(jié)點的單向鏈表,新產(chǎn)生的結(jié)點總是插入在鏈表的末尾。單向鏈表的頭指針作為函數(shù)值返回。#include<stdio.h>#defineLENsizeof(structstudent)structstudentlongnum;intscore;structstudent*next;);structstudent*creat()structstudent*head=NULL,*tail;longnum;i
45、nta;tail=()malloc(LEN);doscanf("%ld,%d",&num,&a);if(num!=0)if(head=NULL)head=tail;elsetail=tail->next;tail->num=num;tail->score=a;tail->next=()malloc(LEN);)elsetail->next=NULL;while(num!=O);;)3,53下面程序的功能是統(tǒng)計文件中的字符的個數(shù)。#include<stdio.h>main()longnum=0;*fp;if(fp=fo
46、pen("fname.dat","r")=NULL)printf("Can'topenthefile!");exit(O);)while()fgetc(fp);num+;)printf("num=%dn",num);fclose(fp);)3,54下面程序的功能是把從鍵盤輸入的文件(用作為文件結(jié)束標志)復制到一個名為second.txt的新文件中。#include<stdio.h>FILE*fp;main()charch;if(fp=fopen()=NULL)exit(O);while(ch=g
47、etchar()!='')fputc(ch,fp);;)3.55 程序的功能是將磁盤上的一個文件復制到另一個文件中,兩個文件名在命令行中給出(假定給定的文件名無誤)。#include<stdio.h>main(intargc,char*argv)FILE&f1,*f2;if(argc<)printf("Thecommandlineerror!");exit(O);)f1=fopen(argv1,"r");f2=fopen(arhv2,"w");while()fputs(fgetc(f1),);
48、;)3,56下面程序的功能是根據(jù)命令行參數(shù)分別實現(xiàn)一個正整數(shù)的累加或階乘。例如:如果可執(zhí)行文件的文件名是sm,則執(zhí)行該程序時輸入:"sm+10"可以實現(xiàn)10的累加;輸入:"sm-10",可以實現(xiàn)求10的階乘。#include<stdio.h>#include<stdlib.h>main(intargc,char*argv)intn;voidsum(),mult();void(*funcp)();n=atoi(argv2);if(argc!=3|n<=0)dispform();switch()casefuncp=sum;bre
49、ak;casefuncp=mult;break;default:dispform(););)voidsum(intm)inti,s=0;for(i=1;i<m;i+);printf("sum=%dn",s);)voidmult(intm)longinti,s=1;for(i=1;i<=m;i+)s*=i;printf("mult=%ldn"s);)dispform()printf("usage:smn(+/!)(n>0)n");exit(0);)3.57下面程序的功能是鍵盤上輸入一個字符串,把該字符串中的小寫字母轉(zhuǎn)換
50、為大寫字母,輸出到文件test.txt中,然后從該文件讀出字符串并顯示出來。#include<stdio.h>main()charstr100;inti=0;FILE*fp;if(fp=fopen("test.txt",)=NULL)printf("Can'topenthefileAn");exit(O);)printf("lnputastring:n");gets(str);while(stri)if(stri>='a'&&stri<='z')stri=
51、;fputc(stri,fp);i+;)fclose(fp);fp=fopen("test.txt",);fgets(str,strlen(str)+1,fp);printf("%sn",str);fclose(fp);)3,58下面程序的功能是將從終端上讀入的10個整數(shù)以二進制方式寫入名為”bi.dat”的新文件中。#include<stdio.h>FILE*fp;main()inti.j;if(fp=fopen(,"wb")=NULL)exit(0);for(i=0;i<10;i+)scanf("%d&
52、quot;,&j);fwrite(,sizeof(int),1,);)fclose(fp);)3.59以字符流形式讀入一個文件,從文件中檢索出六種C語言的關(guān)鍵字,并統(tǒng)計、輸出每種關(guān)鍵字在文件中出現(xiàn)的次數(shù)。本程序中規(guī)定:單詞是一個以空格或箕、VT結(jié)束的字符串。#include<stdio.h>#include<string.h>FILE*cp;charfname20,buf100intnum;structkeycharword10intcount;keyword="if',0,"char",0,"int",
53、0,"else",0,"while",0,"return",0;char*getword(FILE*fp)inti=0;charc;while(c=getc(fp)!=EOF&&(c=,'|c='t'|c='n')if(c=EOF)return(NULL);elsebufi+=c;while(c=&&c!=i&&c!='t'&&c!='n')bufi+=c;bufi='0'return
54、(buf);)lookup(char*p)inti;char*q,*s;for(i=0;i<num;i+)q=;s=P;while(*s&&(*s=*q)if()keywordi.count+;break;)return;)main()inti;char*word;printf("lnputfilename:");scanf("%s",fname);if(cp=fopen(fname,"r")=NULL)printf("Fileopenerror:%sn",fname);exit(O);)nu
55、m=sizeof(keyword)/sizeof(structkey);while()lookup(word);fclose(cp);for(i=0;i<num;i+)printf("keyword:%-20scount=%dn",keywordi.word,keywordi.count);)3,60下面程序的功能是從鍵盤接受姓名(例如:輸入"ZHANGSAN"),在文件”trydat”中查找,若文件中已經(jīng)存入了剛輸入的姓名,則顯示提示信息;若文件中沒有剛輸入的姓名,則將該姓名存入文件。要求:若磁盤文件"try.dat",已存在
56、,則要保留文件中原來的信息;若文件"try.dat"不存在,則在磁盤上建立一個新文件;當輸入的姓名為空時(長度為0),結(jié)束程序。#include<stdio.h>main()FILE*fp;intflag;charname30,data30;if(fp=fopen("try.dat",)=NULL)printf("Openfileerrorn");exit(O);)doprintf("Entername:");gets(name);if(strlen(name)=0)break;strcat(name,
57、"n");;flag=1;while(flag&&(fgets(data,30,fp)if(strcmp(data,name)=0);if(flag)fputs(name,fp);elseprintf("tDataentererror!n");while();fclose(fp);)參考答案3.1答案:a+ba-ba-b3.2答案:1.0/(float)(i*i)sqrt(6*s)P = k * 案 怦3.4 答案:3.5 答案:t=t*i t=t>0?-1:1d=1 k+ k<=n3.6答案:【37】答案:x>=0 x<amin 223.8 答案:3.9 答案:m=nm>0m=m/10i=jk!=i&&k!=j3.10答案:i<=9j%3!=03.11答案:m=nr!=0return(n)3.12答案:floata10,xi<=9i<=8j<=9-iaj>aj+1aj=aj+1i<=9i%5=03.13答案:&aicontinue注釋:是基本概念,使用scanf函數(shù)輸入數(shù)組元素的值。當輸入的元素值小于0時,應當跳過后面的語句,取下一個數(shù),所以要填入continue。3.14答案:sj+l=silsjl=silsj+=sixi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 注冊會計師證書租賃協(xié)議書范文
- 小學秋季政教處工作計劃
- 設備備品、備件、配件出入庫領用審批制度
- 工程質(zhì)量、安全生產(chǎn)、文明施工、工程進度技術(shù)組織措施
- 人工挖孔抗滑樁施工安全危險源分析及預防措施
- 事業(yè)單位個人工作總結(jié)范文
- 影片廣告植入合同
- 施工現(xiàn)場成品保護措施
- 房室建筑承包合同
- 汽車制造防爆電氣安裝方案
- 2024-2025學年冀人版五年級第一學期期末科學試題(含答案)
- 部編版五年級語文上冊快樂讀書吧測試題及答案
- 2023-2024年6月廣東省普通高中學業(yè)水平考試化學試題及答案
- 黑龍江省哈爾濱市香坊區(qū)2023-2024學年八年級上學期期末數(shù)學試題
- 《S7-1500PLC應用技術(shù)》 課件 第1、2章 PLC概述、S7-1500 PLC硬件系統(tǒng)
- 促銷費用管理辦法15
- 《三國演義》整本書閱讀任務單
- GB 13296-2013 鍋爐、熱交換器用不銹鋼無縫鋼管(高清版)
- 企業(yè)信用管理制度
- 中醫(yī)院中藥的飲片處方用名與調(diào)劑給付規(guī)定
- 鉆孔灌注樁及后注漿施工方案施工方案
評論
0/150
提交評論