c語言程序填空題11_第1頁
c語言程序填空題11_第2頁
c語言程序填空題11_第3頁
c語言程序填空題11_第4頁
c語言程序填空題11_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第頁三、程序填空題

導(dǎo)讀:在程序填空題中,已經(jīng)給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內(nèi)容填入空白處,使程序完成既定的功能。這類習(xí)題的設(shè)計就是要引導(dǎo)讀者逐步掌握編程的方法。本節(jié)習(xí)題的難度適中,可能有些典型的程序在課堂上已經(jīng)有所接觸,讀者一定要獨立完成它,這樣就可以逐步提高自己的編程能力。在程序設(shè)計語言學(xué)習(xí)的中期,讀者對程序設(shè)計已經(jīng)有了初步的了解,而自己編寫程序又不知從何處入手,此時解答此類題目可以避免盲目性,從而提高學(xué)習(xí)的效率?!?.1】下面程序的功能是不用第三個變量,實現(xiàn)兩個數(shù)的對調(diào)操作。

#include<stdio.h>

main()

{inta,b;

scanf("%d%d",&a,&b);

printf("a=%d,b=%d\n",a,b);

a=①;

b=②;

a=③;

printf("a=%d,b=%d\n",a,b);

}

【3.2】下面程序的功能是根據(jù)近似公式:π2/6≈1/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<t;p++)

if(s[p]<s[*k])

①;

}

main()

{inta[10],i,*k=&i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

findmin(a,10,k);

printf("%d,%d\n",*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("%d\n",s);

}

【3.5】有以下程序段:

s=1.0;

for(k=1;k<=n;k++)

s=s+1.0/(k*(k+1));

printf("%f\n",s);

填空完成下述程序,使之及上述程序的功能完全相同。

s=0.0;

①;

k=0;

do

{s=s+d;

②;

d=1.0/(k*(k+1));

}while(③);

printf("%f\n",s);

【3.6】下面程序的功能是從鍵盤上輸入若干學(xué)生的學(xué)習(xí)成績,統(tǒng)計并輸出最高成績和最低成績,當(dāng)輸入為負(fù)數(shù)時結(jié)束輸入。

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while(①)

{if(x>amax)amax=x;

if(②)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

【3.7】下面程序的功能是將形參x的值轉(zhuǎn)換為二進(jìn)制數(shù),所得的二進(jìn)制數(shù)放在一個一維數(shù)組中返回,二進(jìn)制數(shù)的最低位放在下標(biāo)為0的元素中。

fun(intx,intb[])

{intk=0,r;

do

{r=x%①;

b[k++]=r;

x/=②;

}while(x);

}

【3.8】下面程序的功能是輸出1到100之間每位數(shù)的乘積大于每位數(shù)的和的數(shù)。例如數(shù)字26,數(shù)位上數(shù)字的乘積12大于數(shù)字之和8。

main()

{intn,k=1,s=0,m;

for(n=1;n<=100;n++)

{k=1;

s=0;

①;

while(②)

{k*=m%10;

s+=m%10;

③;

}

if(k>s)

printf("%d",n);

}

}

【3.9】下面程序的功能是統(tǒng)計用0至9之間的不同的數(shù)字組成的三位數(shù)的個數(shù)。

main()

{inti,j,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(②)countinue;

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ù)從小到大進(jìn)行排序。排好序的10個數(shù)分兩行輸出。程序如下:

#include<stdio.h>

main()

{①;

inti,j;

printf("Input10numbersplease\n");

for(i=0;②;i++)

scanf("%f",&a[i]);

printf("\n");

for(i=2;③;i++)

for(j=0;④;j++)

if(⑤)

{x=a[j];

⑥;

a[j+1]=x;

}

printf("Thesorted10numbers;\n");

for(i=0;⑦;i++)

{if(⑧)

printf("\n");

printf("%f\t",a[i]);

}

printf("\n");

}

【3.13】下面程序的功能是讀入20個整數(shù),統(tǒng)計非負(fù)數(shù)個數(shù),并計算非負(fù)數(shù)之和。

#include"stdio.h"

main()

{inti,a[20],s,count;

s=count=0;

for(i=0;i<20;i++)

scanf("%d",①);

for(i=0;i<20;i++)

{if(a[i]<0)

②;

s+=a[i];

count++;

}

printf("s=%d\tcount=%d\n",s,count);

}

【3.14】下面程序的功能是刪除字符串s中的空格。

#include<stdio.h>

main()

{char*s="Beijingligongdaxue";

inti,j;

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='')①;

else②;

s[j]='\0';

printf("%s",s);

}

【3.15】下面程序的功能是將字符串s中所有的字符'c'刪除。請選擇填空。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')①;

s[j]='\0';

puts(s);

}【3.16】下面程序的功能是輸出兩個字符串中對應(yīng)相等的字符。請選擇填空。

#include<stdio.h>

charx[]="programming";

chary[]="Fortran";

main()

{inti=0;

while(x[i]!='\0'&&y[i]!='\0')

if(x[i]==y[i])

printf("%c",①);

else

i++;

}

【3.17】下面程序的功能是將字符串s中的每個字符按升序的規(guī)則插到數(shù)組a中,字符串a(chǎn)已排好序。

#include<string.h>

main()

{chara[20]="cehiknqtw";

chars[]="fbla";

inti,k,j;

for(k=0;s[k]!='\0';k++)

{j=0;

while(s[k]>=a[j]&&a[j]!='\0')

j++;

for(①)

②;

a[j]=s[k];

}

puts(a);

}

【3.18】下面程序的功能是對鍵盤輸入的兩個字符串進(jìn)行比較,然后輸出兩個字符串中第一個不相同字符的ASCII碼之差。例如:輸入的兩個字符串分別為"abcdefg"和"abceef",則輸出為-1。

#include<stdio.h>

main()

{charstr1[100],str2[100],c;

inti,s;

printf("Enterstring1:");gets(str1);

printf("Enterstring2:");gets(str2);

i=0;

while((str1[i]==str2[i]&&str1[i]!=①))

i++;

s=②;

printf("%d\n",s);

}

【3.19】下面的函數(shù)expand在將字符串s復(fù)制到字符串t時,將其中的換行符和制表符轉(zhuǎn)換為可見的轉(zhuǎn)義字符表示,即用'\n'表示換行符,用'\t'表示制表符。

expand(chars[],chart[])

{inti,j;

for(i=j=0;s[i]!='\0';i++)

switch(s[i])

{case'\n':t[①]=②;

t[j++]='n';

break;

case'\t':t[③]=④;

t[j++]='t';

break;

default:t[⑤]=s[i];

break;

}

t[j]=⑥;

}

【3.20】下面的函數(shù)index(chars[],chart[])檢查字符串s中是否包含字符串t,若包含,則返回t在s中的開始位置(下標(biāo)值),否則送回-1。

index(chars[],chart[])

{inti,j,k;

for(i=0;s[i]!='\0';i++)

{for(j=i,k=0;①&&s[j]==t[k];j++,k++);

if(②)

return(i);

}

return(-1);

}

n

【3.21】下面程序的功能是計算S=k!。

k=0

longfun(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("%ld\n",s);

}

【3.22】下面程序的功能是顯示具有n個元素的數(shù)組s中的最大元素。

#defineN20

main()

{inti,a[N];

for(i=0;i<N;i++)

scanf("%d",&a[i]);

printf("%d\n",①);

}

fmax(ints[],intn)

{intk,p;

for(p=0,k=p;p<n;p++)

if(s[p]>s[k])②;

return(k);

}

【3.23】下面程序的功能是由鍵盤輸入n,求滿足下述條件的x、y:

nx和ny的末3位數(shù)字相同,且x≠y,x、y、n均為自然數(shù),并使x+y為最小。

#include<stdio.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=%d\n",x,min-x);

③;

}

}

【3.24】下面的程序是用遞歸算法求a的平方根。求平方根的迭代公式如下:

#include<math.h>

doublemysqrt(doublea,doublex0)

{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=%lf\n",x,mysqrt(x,1.0));

}

【3.25】以下程序是計算學(xué)生的年齡。已知第一位最小的學(xué)生年齡為10歲,其余學(xué)生的年齡一個比一個大2歲,求第5個學(xué)生的年齡。

#include<stdio.h>

age(intn)

{intc;

if(n==1)c=10;

elsec=①;

return(c);

}

main()

{intn=5;

printf("age:%d\n",②);

}

【3.26】下面的函數(shù)sum(intn)完成計算1~n的累加和。

sum(intn)

{if(n<=0)

printf("dataerror\n");

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)C(m,n+1)=C(m,n)+C(m-1,n)

公式(2)是一個遞歸公式,一直到滿足C(1,n)=n為止。當(dāng)n<2*m時,可先用公式(1)進(jìn)行簡化,填寫程序中的空白,使程序可以正確運(yùn)行。

#include"stdio.h"

main()

{intm,n;

printf("Inputm,n=");

scanf("%d%d",&m,&n);

printf("Thecombinationnumbeersis%d\n",combin(m,n));

}

combin(intm,intn)

{intcom;

if(n<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,則輸出54321。

#include"stdio.h"

main()

{intn;

printf("Inputn:");

scanf("%d",①);

r(n);

printf("\n");

}

r(intm)

{printf("%d",②);

m=③;

if(④)

⑤;

}【3.31】輸入n值,輸出高度為n的等邊三角形。例如當(dāng)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(sqrt(x+(①)));

}

【3.33】函數(shù)revstr(s)將字符串s置逆,如輸入的實參s為字符串"abcde",則返回時s為字符串"edcba"。遞歸程序如下:

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)過來,例如原來是"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>

intarray[10];

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(int*x,int*y){inttemp;

temp=*x;

*x=*y;

*y=temp;

}

main()

{inti;printf("Enterdata:\n");for(i=0;i<10;i++)

scanf("%d",&array[i]);sort(⑤);

printf("Output:");

for(i=0;i<10;i++)

printf("%d",array[i]);

}

【3.36】下面函數(shù)的功能是將一個整數(shù)存放到一個數(shù)組中。存放時按逆序存放。例如:483存放成"384"。

#include<stdio.h>

voidconvert(char*a,intn)

{inti;

if((i=n/10)!=0)

convert(①,i);

*a=②;

}

charstr[10]="";

main()

{intnumber;

scanf("%d",&number);

convert(str,number);

puts(str);

}

【3.37】下面程序的功能是實現(xiàn)數(shù)組元素中值的逆轉(zhuǎn)。

#include<string.h>

main()

{inti,n=10,a[10]={1,2,3,4,5,6,7,8,9,10};

invert(a,n-1);

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

}

invert(int*s,intnum)

{int*t,k;

t=s+num;

while(①)

{k=*s;

*s=*t;

*t=k;

②;

③;

}

}

【3.38】下面程序通過指向整型的指針將數(shù)組a[3][4]的內(nèi)容按3行×4列的格式輸出,請給printf()填入適當(dāng)?shù)膮?shù),使之通過指針p將數(shù)組元素按要求輸出。

#include<stdio.h>

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a;

main()

{inti,j;

for(i=0;i<3;i++)

{for(j=0;j<4;j++)

printf("%4d",①);

}

}

【3.39】下面程序的功能是:從鍵盤上輸入一行字符,存入一個字符數(shù)組中,然后輸出該字符串。

#include<stdio.h>

main()

{charstr[81],*sptr;

inti;

for(i=0;i<80;i++)

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]=①;

sptr=str;

while(*sptr)

putchar(*sptr②);

}

【3.40】下面函數(shù)的功能是將字符變量的值插入已經(jīng)按ASCII碼值從小到大排好序的字符串中。

voidfun(char*w,charx,int*n)

{inti,p=0;

while(x>w[p])①;

for(i=*n;i>=p;i--)②;

w[p]=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;

elseif(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(s[i]>s[j])

{⑨}

}

main()

{chars1[100],s2[100],s3[200];

printf("\nPleaseInputFirstString:");

scanf("%s",s1);

printf("\nPleaseInputSecondString:");

scanf("%s",s2);

strsort(s1);

strsort(s2);

⑩='\0';

strmerge(s1,s2,s3);

printf("\nResult:%s",s3);

}

【3.42】已知某數(shù)列前兩項為2和3,其后繼項根據(jù)前面最后兩項的乘積,按下列規(guī)則生成:

①若乘積為一位數(shù),則該乘積即為數(shù)列的后繼項;

②若乘積為二位數(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)=44

2361886424

#include"stdio.h"

#defineMAXNUM100

intsum(n,pa)

intn,*pa;

{intcount,total,temp;

*pa=2;

①=3;

total=5;

count=2;

while(count++<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,num[MAXNUM];

do

{printf("InputN=?(2<N<%d):",MAXNUM+1);

scanf("%d",&n);

}while(⑤);

printf("\nsum(%d)=%d\n",n,sum(n,num));

for(p=num,q=⑥;p<q;p++)

printf("%4d",*p);

printf("\n");

}

【3.43】下面程序的功能是輸入學(xué)生的姓名和成績,然后輸出。

#include<stdio.h>

structstuinf

{charname[20];/*學(xué)生姓名*/

intscore;/*學(xué)生成績*/

}stu,*p;

main()

{p=&stu;

printf("Entername:");

gets(①);

printf("Enterscore:");

scanf("%d",②);

printf("Output:%s,%d\n",③,④);

}

【3.44】下面程序的功能是按學(xué)生的姓名查詢其成績排名和平均成績。查詢時可連續(xù)進(jìn)行,直到輸入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()

{charstr[10];

inti;

do

{printf("Enteraname");

scanf("%s",str);

for(i=0;i<NUM;i++)

if(②)

{printf("Name:%8s\n",stu[i].name);

printf("Rank:%3d\n",stu[i].rank);

printf("Average:%5.1f\n",stu[i].score);

③;

}

if(i>=NUM)printf("Notfound\n");

}while(strcmp(str,"0")!=0);

}

【3.45】下面程序的功能是從終端上輸入5個人的年齡、性別和姓名,然后輸出。

#include"stdio.h"

structman

{charname[20];

unsignedage;

charsex[7];

};

main()

{structmanperson[5];

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->age,p->sex);

②;

}

}

data_out(structman*p,intn)

{structman*q=__③__;

for(;p<q;p++)

printf("%s;%u;%s\n",p->name,p->age,p->sex);

}【3.46】輸入N個整數(shù),儲存輸入的數(shù)及對應(yīng)的序號,并將輸入的數(shù)按從小到大的順序進(jìn)行排列。要求:當(dāng)兩個整數(shù)相等時,整數(shù)的排列順序由輸入的先后次序決定。例如:輸入的第3個整數(shù)為5,第7個整數(shù)也為5,則將先輸入的整數(shù)5排在后輸入的整數(shù)5的前面。程序如下:

#include"stdio.h"

#defineN10

struct

{intno;

intnum;

}array[N];

main()

{inti,j,num;

for(i=0;i<N;i++)

{printf("enterNo.%d:",i);

scanf("%d",&num);

for(①;j>=0&&array[j].num②num;③)

array[j+1]=array[j];

array[④].num=num;

array[⑤].no=i;

}

for(i=0;i<N;i++)

printf("%d=%d,%d\n",i,array[i].num,array[i].no);

}

【3.47】以下程序的功能是:讀入一行字符(如:a、...y、z),按輸入時的逆序建立一個鏈接式的結(jié)點序列,即先輸入的位于鏈表尾(如下圖),然后再按輸入的相反順序輸出,并釋放全部結(jié)點。#include<stdio.h>

main()

{structnode

{charinfo;

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ù)將指針p2所指向的線性鏈表,串接到p1所指向的鏈表的末端。假定p1所指向的鏈表非空。

#defineNULL0

structlink

{floata;

structlink*next;

};

concatenate(p1,p2)

structlist*p1,*p2;

{if(p1->next==NULL)

p1->next=p2;

else

concatenate(①,p2);

}

【3.49】下面程序的功能是從鍵盤輸入一個字符串,然后反序輸出輸入的字符串。

#include<stdio.h>

structnode

{chardata;

structnode*link;

}*head;

main()

{charch;

structnode*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ù)小于0時才停止輸入。然后反序輸出這些整數(shù)。

#include<stdio.h>

structdata

{intx;

structdata*link;

}*p;

input()

{intnum;

structdata*q;

printf("Enterdata:");

scanf("%d",&num);

if(num<0)

①;

q=②;

q->x=num;

q->link=p;

p=q;

③;

}

main()

{printf("Enterdatauntildata<0:\n");

p=NULL;

input();

printf("Output:");

while(④)

{printf("%d\n",p->x);

⑤;

}

}

【3.51】下面函數(shù)的功能是創(chuàng)建一個帶有頭結(jié)點的鏈表,將頭結(jié)點返回給主調(diào)函數(shù)。鏈表用于儲存學(xué)生的學(xué)號和成績。新產(chǎn)生的結(jié)點總是位于鏈表的尾部。

structstudent

{longnum;

intscore;

structstudent*next;

};

structstudent*creat()

{structstudent*head=NULL,*tail;

longnum;inta;

tail=①malloc(LEN);

do

{scanf("%ld,%d",&num,&a);

if(num!=0)

{if(head==NULL)head=tail;

else②;

tail->num=num;tail->score=a;

tail->next=(structstudent*)malloc(LEN);

}

elsetail->next=NULL;

}while(num!=0);

return(③);

}

【3.52】下面create函數(shù)的功能是建立一個帶頭結(jié)點的單向鏈表,新產(chǎn)生的結(jié)點總是插入在鏈表的末尾。單向鏈表的頭指針作為函數(shù)值返回。

#include<stdio.h>

#defineLENsizeof(structstudent)

structstudent

{longnum;

intscore;

structstudent*next;

};

structstudent*creat()

{structstudent*head=NULL,*tail;

longnum;

inta;

tail=(①)malloc(LEN);

do

{scanf("%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!=0);

③;

}

【3.53】下面程序的功能是統(tǒng)計文件中的字符的個數(shù)。

#include<stdio.h>

main()

{longnum=0;

①*fp;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenthefile!");

exit(0);

}

while(②)

{fgetc(fp);

num++;

}

printf("num=%d\n",num);

fclose(fp);

}

【3.54】下面程序的功能是把從鍵盤輸入的文件(用@作為文件結(jié)束標(biāo)志)復(fù)制到一個名為second.txt的新文件中。

#include<stdio.h>

FILE*fp;

main()

{charch;

if((fp=fopen(①))==NULL)

exit(0);

while((ch=getchar())!='@')

fputc(ch,fp);

②;

}

【3.55】下面程序的功能是將磁盤上的一個文件復(fù)制到另一個文件中,兩個文件名在命令行中給出(假定給定的文件名無誤)。

#include<stdio.h>

main(intargc,char*argv[])

{,*f2;

if(argc<①)

{printf("Thecommandlineerror!");

exit(0);

}

f1=fopen(argv[1],"r");

f2=fopen(arhv[2],"w");

while(②)

fputs(fgetc(f1),③);

④;

⑤;

}

【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(argv[2]);

if(argc!=3||n<=0)

dispform();

switch(①)

{case'+':funcp=sum;

break;

case'-':funcp=mult;

break;

default:dispform();

}

②;

}

voidsum(intm)

{inti,s=0;

for(i=1;i<m;i++)

③;

printf("sum=%d\n",s);

}

voidmult(intm)

{longinti,s=1;

for(i=1;i<=m;i++)

s*=i;

printf("mult=%ld\n";s);

}

dispform()

{printf("usage:smn(+/!)(n>0)\n");

exit(0);

}

【3.57】下面程序的功能是鍵盤上輸入一個字符串,把該字符串中的小寫字母轉(zhuǎn)換為大寫字母,輸出到文件test.txt中,然后從該文件讀出字符串并顯示出來。

#include<stdio.h>

main()

{charstr[100];

inti=0;

FILE*fp;

if((fp=fopen("test.txt",①))==NULL)

{printf("Can'topenthefile.\n");

exit(0);

}

printf("Inputastring:\n");

gets(str);

while(str[i])

{if(str[i]>='a'&&str[i]<='z')

str[i]=②;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test.txt",③);

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}

【3.58】下面程序的功能是將從終端上讀入的10個整數(shù)以二進(jìn)制方式寫入名為"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論