版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
10/10導(dǎo)讀:在程序填空題中,已經(jīng)給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內(nèi)容填入空白處,使程序完成既定的功能。這類習(xí)題的設(shè)計就是要引導(dǎo)讀者逐步掌握編程的方法。本節(jié)習(xí)題的難度適中,可能有些典型的程序在課堂上已經(jīng)有所接觸,讀者一定要獨立完成它,這樣就可以逐步提高自己的編程能力。在程序設(shè)計語言學(xué)習(xí)的中期,讀者對程序設(shè)計已經(jīng)有了初步的了解,而自己編寫程序又不知從何處入手,此時解答此類題目可以避免盲目性,從而提高學(xué)習(xí)的效率。[3.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>{①t=t*i;s=s+t;②;t>0?t=-1:1;}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)行簡化,填寫程序中的空白,使程序可以正確運行。
#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[]>
{FILE&f1,*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)制方式寫入名為"bi.dat"的新文件中。
#include<stdio.h>
FILE*fp;
main<>
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版孵化器投資入股合作協(xié)議范本(醫(yī)療健康)3篇
- 二零二五年度電影劇本改編與發(fā)行授權(quán)勞動合同3篇
- 2025年度新能源電池研發(fā)與應(yīng)用合作協(xié)議8篇
- 專利咨詢與策略支持協(xié)議文件版B版
- 二零二四外債債務(wù)承擔(dān)離婚協(xié)議范本3篇
- 二零二五年度股權(quán)代持合同:包含公司估值調(diào)整條款3篇
- 2025年電子商務(wù)合同網(wǎng)絡(luò)營銷推廣合作合同3篇
- 2025年度旅游客運車輛駕駛?cè)藛T培訓(xùn)合同范本4篇
- 2025年社區(qū)文化活動設(shè)施物業(yè)管理與服務(wù)合同2篇
- 2025年度風(fēng)景名勝區(qū)草皮更新與保護(hù)合同3篇
- 羊水少治療護(hù)理查房
- 中華人民共和國保守國家秘密法實施條例培訓(xùn)課件
- 管道坡口技術(shù)培訓(xùn)
- OQC培訓(xùn)資料教學(xué)課件
- 2024年8月CCAA國家注冊審核員OHSMS職業(yè)健康安全管理體系基礎(chǔ)知識考試題目含解析
- 體育賽事組織與實施操作手冊
- 2024年浙江省公務(wù)員考試結(jié)構(gòu)化面試真題試題試卷答案解析
- 2023年航空公司招聘:機(jī)場安檢員基礎(chǔ)知識試題(附答案)
- 皮膚儲存新技術(shù)及臨床應(yīng)用
- 《現(xiàn)在完成時》語法復(fù)習(xí)課件(共44張-)
- 二年級下冊語文《第3單元 口語交際:長大以后做什么》課件
評論
0/150
提交評論