版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
習(xí)題1和參考解答
1.什么是程序?
【答案】在計算機中,程序是指導(dǎo)計算機執(zhí)行某個功能或功能組合的一組指令。每一條
指令都讓計算機執(zhí)行完成一個具體的操作,一個程序所規(guī)定的操作全部執(zhí)行完畢后,就能產(chǎn)
生計算結(jié)果。
2.計算機語言經(jīng)歷了哪幾個階段?
【答案】計算機語言按其發(fā)展的先后順序,經(jīng)歷了機器語言、匯編語言和高級語言三個
階段。
3.程序的翻譯方式有哪幾種?
【答案】按翻譯方式的不同,程序的翻譯方式有解釋和編譯兩種,其中C語言采用的是
編譯的方式。
4.編寫一個簡單的C程序,使得在屏幕上顯示下列信息:
Cisveryfun.
【參考源程序】
#include<stdio.h>
intmain()
{
printff'Cisveryfun.\rT);
return0;
}
5.編寫一個簡單的C程序,使得在屏幕上顯示下列信息:
***
【參考源程序】
#include<stdio.h>
intmain()
(
printff*");
printfT****);
printf(u*****”);
***‘').
return0;
習(xí)題2和參考解答
1.求下列表達式的值。
(1)3.5+1/2
(2)設(shè)intx=18,k=14;,表達式為x%=k-k%5
(3)(int)((double)(5/2)+2.5)
(4)設(shè)x=2.5,a=7,y=4.7,表達式為x+a%3*(int)(x+y)%2/4
(5)設(shè)a=2,b=3,x=3.5,y=2.5,表達式為(float)(a+b)/2+(inl)x%(inl)y
(6)設(shè)a=2,b=5,表達式為a++,b++,a+b
(7)a為int類型,且其值為3,表達式為a+=a-=a*a
(8)x=y=6,x+y,x+l
(9)x=(y=6,y*2,y+l)
【答案】
(1)3.5
(2)8
(3)4
(4)2.5
(5)3.5
(6)9
(7)-12
(8)7
(9)7
2.編寫程序:輸入一個矩形的長和寬,計算該矩形的面積。
【參考源程序】
#include<stdio.h>
intmain()
{
floatlength,width,area;
scanf(<<%f%f,,&length,&width);
area=length*width;
printf(tuarea=%fAn,,,area);
return0;
)
3.編寫程序:輸入半徑的值,計算并輸出球的體積。
【參考源程序】
#include<stdio.h>
intmain()
(
floatr,v;
scanfC%f;&r);
v=4*3.1415*r*r*r/3;
printfCtv=%f\n,,,v);
return0;
4.編寫程序:輸入一個三位整數(shù),求其百位、十位、個位上的數(shù)字,并求出各位數(shù)字之和
以及各位數(shù)字之積。
【參考源程序】
#include<stdio.h>
intmain()
(
intn,g,s,b;
scanf(tt%d,\&n);
b=n/100;
s=n/10%10;
g=n%10;
printfCtsum=%d,product=%d\n,,,b+s+g,b*s*g);
return0;
)
習(xí)題3和參考解答
i.從鍵盤輸入任意一個整數(shù),判斷其是否為偶數(shù)。
【參考源程序】
#include<stdio.h>
intmain()
(
intn;
printf(€tpleaseinputanumber:\n^^);
scanfT%d”,&n);
if(n%2==0)
printfCYes!”);
else
printfTNo!");
return0;
)
2.有如下函數(shù):
-x(x<1)
y=?2x-l(l<x<10)
.3x-l(x210)
編寫程序,使輸入x時,輸出相應(yīng)的y值。
【參考源程序】
#include<stdio.h>
intmain()
(
intx,y;
printff'pleaseinputthex:\n");
scanfC%d”,&x);
if(x<l)
y=x;
elseif(x>=l&&x<10)
y=2*x-l;
elseif(x>=10)
y=3*x-l;
printfCyis%d”,y);
return0;
)
3.輸入一個整數(shù),若該數(shù)能夠被3和7整除,則輸出2;若只能被3和7中的任意一個
整除,則輸出1;若不能被3和7中的任意一個整除,則輸出0。
【參考源程序】
#include<sldio.h>
intmain()
{
intn,m;
printfi^pleaseinputn:\n,^);
scanf("%d'',&n);
if(n%3==0&&n%7==0)
m=2;
elseif(n%3==0||n%7==0)
m=l;
else
m=0;
printfC'theresultis%d”,m);
return0;
)
4.愛因斯坦的階梯問題。愛因斯坦曾提出過這樣一道有趣的數(shù)學(xué)題:有一個長階梯,
若每步上2階,最后剩1階;若每步上3階,最后剩2階;若每步上5階,最后剩4階;若
每步上6階,最后剩5階;只有每步上7階,最后剛好一階不剩。問該階梯至少有多少階?
編寫程序解決這個問題。
【參考源程序】
#include<stdio.h>
intmain()
{
inti,n=l,m=l;
while(m)
(
if(n%2==l)
if(n%3==2)
if(n%5==4)
if(n%6==5)
if(n%7==0)
printfT%d”,n);
m=0;
n++;
)
return0;
)
5.輸出所有的水仙花數(shù)。所謂水仙花數(shù)是一個3位整數(shù),它的各位數(shù)字的立方和等于
該數(shù)本身。
【參考源程序】
#include<stdio.h>
intmain()
(
inti,a,b,c;
for(i=100;i<1000;i++)
(
a=i%10;
b=i/10%10;
c=i/100;
if(a*a*a+b*b*b+c*c*c==i)
printed”,i);
)
return0;
)
6.編寫程序,打印九九乘法表。
【參考源程序】
#include<sldio.h>
intmain()
(
inti,j;
for(i=l;i<10;i++)
(
for(j=l;j<=i;j++)
printfT%3d'',i*j);
printf("\n”);
)
return0;
}
7.編寫程序,打印如下圖形。
***
*******
***
【參考源程序】
#include<stdio.h>
intmain()
inti,j;
for(i=l;i<=4;i++)
(
for(j=1;j<=4-i;j++)
printfT");
for(j=l;j<=2*i-l;j++)
printfT*");
prints%”);
)
for(i=l;i<=3;i++)
(
for(j=l;j<=i;j++)
printf("");
for(j=1;j<=7-2*i;j++)
printf("*”);
printfC'n");
)
return0;
}
8.用/4=1-1/3+1/5?1/7+…求兀的近似值,直到最后一項的絕對值小于IO"6為止。
【參考源程序】
#include<stdio.h>
intmain()
(
floatsum=0.0,t=1.0,s=-l;
inti=l;
while(t>le-6)
(
s=s*(-l);
t=t*s;
sum+=t;
t=1.0/(2*i+l);
i++;
)
sum=sum*4;
printf("%r',sum);
return0;
9.一個數(shù)如果恰好等于它的因子之和,就稱其為完數(shù)。例如,6的因子為1、2、3,
而6=1+2+3,因此6是完數(shù)。編寫程序找出1000以內(nèi)的所有完數(shù),并按下面格式輸出
其因子:6itsfactorsare1,2,3°
【參考源程序】
#include<stdio.h>
intmain()
(
inta,i,m;
for(a=l;a<=1000;a++)
(
for(m=0,i=l;i<=a/2;i++)
if(!(a%i))
m+=i;
if(m==a)
(
printf(u%4ditsfactorsaren,a);
for(i=l;i<=a/2;i4-+)
if(!(a%i))
printf(n%d",i);
printf(H\nn);
return0;
)
10.給出任意一個不多于5位的正整數(shù),要求如下:
①求出它是幾位數(shù)。
②分別輸出每一位數(shù)字。
③按逆序輸出各位數(shù)字。例如,原數(shù)為321,應(yīng)輸出123。
【參考源程序】
#include<stdio.h>
intmain()
(
intn,m,i,a,b,c,d,e,j=0;
scanf(u%dn,&n);
m=n;
while(n)
(
j++;
n/=10;
)
printf(n%d\n';j);
a=m/10000;
if(a!=0)
printf(u%d0,a);
b=m%10000/1000;
if(b!=O)
printf(n%d二b);
c=m%1000/100;
if(c!=0)
printf(*'%d”,c);
d=m%100/10;
if(d!=0)
printf(*'%d”,d);
e=m%10;
if(e!=0)
printf("%d\nn,e);
n=m;
while(n)
(
i=n%10;
printf("%d”,i);
n/=10;
)
return0;
習(xí)題4和參考解答
i.有十五個數(shù)按由大到小的順序放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找
出該數(shù)是數(shù)組中第幾個元素。如果該數(shù)不在數(shù)組中,則輸出“無此數(shù)
【參考源程序】
#include<stdio.h>
intmain()
(
intx[10],i,tJow=0,high=9,mid;
for(i=0;i<10;i++)
scanf(n%d",&x[i]);
printf("inputthesearchnumber:");
scanf(n%dn,&t);
while(low<=high)
(
mid=(low+high)/2;
if(x[mid]==t)
(
printf(u%du,mid);
break;
)
if(x[mid]>t)
low=mid+1;
else
high=mid-l;
)
if(low>high)
printf("無此數(shù)!”);
return0;
)
2.編寫程序,將字符數(shù)組s2中的全部字符復(fù)制到字符數(shù)組si中。
【參考源程序】
#include<stdio.h>
intmain()
(
inti=0,j=0;
charsl[20],s2[20];
gets(s2);
while(s2[i])
sl[j++]=s2[i+4-];
slU]=s2[i];
puts(sl);
return0;
)
3.編寫程序,從鍵盤任意輸入20個整數(shù),統(tǒng)計其中非負(fù)數(shù)個數(shù),并計算非負(fù)數(shù)之和。
【參考源程序】
#include<stdio.h>
intmain()
(
inta[5],ij=0,sum=0;
for(i=0;i<5;i++)
(
scanf(H%d';&a[i]);
if(a[i]>=0)
(
j++;
sum+=a[i];
)
)
printf(Hj=%d,sum=%d",j,sum);
return0;
)
4.輸入一字符串,長度小于50,統(tǒng)計其中相鄰字符對出現(xiàn)的頻次,然后輸出統(tǒng)計結(jié)果。
例如,輸入“abcsl23",因為a與b、b與c、1與2、2與3都是相鄰字符對,所以結(jié)果輸出4。
【參考源程序】
#include<stdio.h>
intmain()
chars[50];
inti,n;
gets(s);
i=0;
n=0;
while(s[i+l]!='\O')
(
if(s[i]+l==s[i+l])
n++;
i++;
}
printf(M%d\nn,n);
return0;
)
5.編寫程序,找出一個二維數(shù)組中的鞍點,即該位置上的元素在該行上最大、在該列
上最小。也可能沒有鞍點。
【參考源程序】
#include<stdio.h>
intmain()
(
inti,j,k,flagl,flag2ta[3][4],max,maxj;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
flag2=0;
for(i=0;i<3;i++)
(
max=a[i][0];
for(j=0;j<4;j++)
if(a[i][j]>max)
(
max=a[i][j];
maxj=j;
)
for(k=0,flagl=l;k<3&&flagl;k++)
if(max>a[k][maxj])
flag1=0;
if(flagl)
(
printf(n\n第%(1行,第%d列的%d是鞍點maxj,max);
flag2=l;
if(!flag2)
printf("\n矩陣中無鞍點八n");
return0;
)
6.有十個字符串,編程序在每個字符串中,找出最大字符按一一對應(yīng)的順序存入一維
數(shù)組a中,即第i個字符串中的最大字符放入a[i]中,輸出每個字符串中的最大字符。
【參考源程序】
#include<stdio.h>
intmain()
(
chars[10][20],a[10];
inti,j;
for(i=0;i<10;i++)
gets(s[i]);
for(i=0;i<10;i++)
(
a[i]=s[il[0];
fora=l;s[i]U]!='\0';j++)
if(a[i]<s[i][j])
a[i]=s[i][j];
)
for(i=0;i<10;i++)
printf("%d%c",i,a[i]);
return0;
)
7.編寫程序?qū)⒍S數(shù)組a中每個元素右移一列,最右一列換到最左一列,移后的數(shù)組
存到另一數(shù)組b中,并按矩陣形式輸出b。
【參考源程序】
#include<stdio.h>
intmain()
(
inta[2][3]={l,2,3,4,5,6},b[2][3];
inti,j;
for(i=0;i<=l;i++)
for(j=l;j<3;j++)
b[i]U]=a[i][j-l];
for(i=0;i<2;i++)
b[i][0]=a[i][2];
printf("arrayb:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%5d",b[i]|j]);
printf(,'\n,');
)
return0;
)
8.編寫程序為一個5x5的二維數(shù)組a賦1到25的自然數(shù),然后輸出該數(shù)組的左下半三角元
素。
【參考源程序】
#include<stdio.h>
intmain()
(
inta[5][5],i,j,k=l;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=k++;
for(i=0;i<5;i++)
(
for(j=0;j<=i;j++)
printf("%3d",a[i][j]);
printf("\n");
)
return0;
)
9.從鍵盤上接收十個三位的正整數(shù)(各個數(shù)位都不包括0)存入一個數(shù)組當(dāng)中,試將數(shù)
組中的每個數(shù)的百位與個位進行交換(例123交換后成為321),將組合成的新數(shù)仍存入原數(shù)
組中。
【參考源程序】
#include<stdio.h>
intmain()
(
inta[10],i;
for(i=0;i<10;i++)
(
scanf("%d”,&a[i]);
a[i]=a[i]%10*100+a[i]/10%10*10+a[i]/100;
)
for(i=0;i<10;i++)
printf("%dM,a[i]);
return0;
習(xí)題5和參考解答
i.編寫程序,調(diào)用函數(shù)求一個圓柱體的表面積和體積。
【參考源程序】
#include<stdio.h>
voidfun(intr,inth)
(
floatarea;
area=2*3.14*r*h;
vol=3.14*r*r*h;
printf(,'area=%.2f,vol=%.2f,area,vol);
)
intmain()
(
intr,h;
scanf("%d%d';&r,&h);
fun(r,h);
return0;
)
2.編寫一個函數(shù),輸出一個整數(shù)的全部素數(shù)因子。例如:01=120時,因子為2,3,5。
【參考源程序】
#include<stdio.h>
intfun(intn)
{
intflag=l,i;
for(i=2;i<n;i++)
if(n%i==0)
flag=0;
returnflag;
)
intmain()
(
intm,i;
scanf("%d",&m);
for(i=2;i<m;i++)
if(m%i==0)
if(fun(i))
printf(n%d”,i);
return0;
)
3.編寫程序,調(diào)用函數(shù)使輸入的一個字符串反序存放并輸出。
【參考源程序】
#include<stdio.h>
#include<string.h>
voidfun(chars[])
(
inti=0,n;
chart;
n=strlen(s)-l;
while(i<=n)
(
t=s[i];s[i]=s[n];s[n]=t;
i++;n-;
)
)
intmain()
(
chars[20];
gets(s);
fun(s);
puts(s);
return0;
)
4.編寫一個函數(shù),輸入一個十六進制數(shù),輸出相應(yīng)的十進制數(shù)。
【參考源程序】
#include<stdio.h>
intfun(chars[J)
{
inti=0,n,m=0;
if(s[i]>=,a,)
n=s[i]Ja'+10;
else
n=s[i]-,0,;
while(s[++i]!='\0,)
(
if(s[i]>='a')
m=s[i]-'a'+10;
else
m=s[iJ-,0';
n=n*16+m;
)
returnn;
voidmain()
(
chars[6J;
intn;
gets(s);
n=fun(s);
printf("%d\n,\n);
5.編寫程序完成以下功能:在主函數(shù)中通過鍵盤輸入10個互不相同的整數(shù)并存入在一
維數(shù)組中,調(diào)用函數(shù)找出數(shù)組中的最大值,并從數(shù)組中刪除該值,在主函數(shù)中輸出
刪除后的數(shù)組。
【參考源程序】
#include<stdio.h>
voidfun(inta[10])
(
inti,j=0,max=a[0];
for(i=l;i<10;i++)
(
if(max<a[i])
(
max=a[i];j=i;
)
)
for(i=j;i<9;i++)
a[i]=a[i+l];
)
intmain()
(
inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fun(a);
for(i=0;i<9;i++)
printf("%d",a[i]);
return0;
}
6.編寫程序,調(diào)用函數(shù)輸出如下楊輝三角形:
1
11
121
1331
14641
15101051
【參考源程序】
#include<stdio.h>
voidyhui(inta[7][7])
(
inti,j;
for(i=l;i<7;i++)
a[i][l]=l;a[i][i]=l;
fbr(i=3;i<7;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-l][j-l]+a[i-l]lj];
for(i=l;i<7;i++)
(
for(j=l;j<=i;j++)
printf("%3d",a[i][j]);
printf("\n");
)
)
intmain()
(
inta[7][7];
yhui(a);
return0;
)
7.用遞歸法計算的f+2?+32+……+/值,n的值由鍵盤輸入。
【參考源程序】
#include<stdio.h>
intsum(intn)
(
intr;
if(n<=0)
printf(udataerror\nM);
if(n==l)
r=l;
else
r=sum(n-l)+n*n;
returnr;
)
intmain()
(
intn;
scanf(n%d",&n);
printf(nresult=%d\nn,sum(n));
return0;
)
8.用遞歸法計算1+2+3+……+〃的值,n的值由鍵盤輸入。
【參考源程序】
#include<stdio.h>
intsum(intn)
intr;
if(n<=0)
print-"dataerror\n");
if(n==l)
r=l;
else
r=sum(n-l)+n;
returnr;
)
intmain()
{
intn;
scanf("%d”,&n);
printf(Hsum(%d)=%d\n,',n,sum(n));
return0;
)
x
9.已知e.可以用下面的公式表示:
編寫函數(shù)求",要求最后一項近似到1(尸。利用該函數(shù)求e,『,
【參考源程序】
#include<stdio.h>
floatfun1(intn)
inti;
floatr=l;
for(i=l;i<=n;i++)
r=r*i;
returnr;
floatfun2(floatx,intn)
inti;
floatr=l;
for(i=l;i<=n;i++)
returnr;
floatfun(floatx)
floatp,s=0;
intn=0;
p=fun2(x,n)/funl(n);
while(p>le-4)
(
s+二p;
n++;
p=fun2(x,n)/funl(n);
)
returns;
}
intmain()
(
printf(1,%f,,fun(l));
printf(n%f,,fun(2));
printf(n%f,,fun(-0.5));
return0;
習(xí)題6和參考解答
1.編寫程序,將一無符號八進制數(shù)字字符串轉(zhuǎn)換為十進制整數(shù)。例如,輸入的字符串
為“556”,則輸出十進制整數(shù)366。
【參考源程序】
#include<stdio.h>
intmain()
(
char*p,s[6J;
intn;
P=s;
gets(p);
n=*p-O;
while(*(++p)!='\01)
n=n*8+*p-'0‘;
printf("%d\nH,n);
return0;
)
2.編寫程序,從鍵盤上接收一個字符串,判斷其是否是回文(順讀和倒讀都一樣的字
符串稱為回文,如“l(fā)evel”)。
【參考源程序】
#include<stdio.h>
#include<string.h>
intmain()
chars[81],*pl,*p2;
intn;
gets(s);
n=strlen(s);
pl=s;
p2=s+n-1;
while(pl<p2)
(
if(*pl!=*p2)
break;
else
(
pl++;
p2-;
)
}
if(pl<p2)
printf(”NO'n");
else
printf(uYES\nn);
return0;
)
3.編寫程序,將一字符串中的內(nèi)容按逆序輸出,但不改變字符串中的內(nèi)容。
【參考源程序】
#include<stdio.h>
intinverp(char*a)
(
if(!*a)
return0;
inverp(a+l);
printf(n%c",*a);
)
voidmain()
{
chars[10];
gets(s);
inverp(s);
)
4.編寫程序,找出二維數(shù)組中的最大元素并輸出。
【參考源程序】
#include<stdio.h>
intmain()
inta[3][4],i,j,max,(*p)[4];
fdr(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(n%dn,&a[i][j]);
max=a[O][O];
for(p=a;p<a+3;p++)
for(j=0;j<4;j++)
if(*(*p+j)>max)
max=*(*p+j);
printf(nmax=%d",max);
return0;
)
5.編寫程序,輸入10個整數(shù),將其中最小的數(shù)與第一個數(shù)對換,將最大的數(shù)與最后一
個數(shù)對換。
【參考源程序】
#include<stdio.h>
intmain()
(
inta[10],*min,*max,i,t;
for(i=0;i<10;i++)
scanf("%d”,&a[i]);
min=a;max=a;
for(i=l;i<10;i++)
(
if(*min>a[i])
min=&a[i];
if(*max<a[i])
max=&a[i];
}
t=*min;*min=a[0];a[0]=t;
t=*max;*max=a[9];a[9]=t;
for(i=0;i<10;i++)
printf(u%d-
return0;
)
6.有n個整數(shù),編寫程序使前面各數(shù)順序向后移m個位置,最后m個數(shù)變成最前面m
個數(shù)。
【參考源程序】
#include<stdio.h>
voidexchange(inta[],intn,intm)
(
inti,j,e,t;
for(i=0,e=n-m;e〈n;e++,i++)
t=*(a+e);
for(j=e;j>=i;j-)
*(a+j)=*(a+j-l);
*(a+i)=t;
)
)
intmain()
(
inta[100],i,n,m;
printf(npleaseinputn,m:u);
scanf(',%d%d'\&n,&m);
for(i=0;i<n;i++)
scanf(n%dH,&a[i]);
exchange(a,n,m);
for(i=0;i<n;i++)
printf(”%d",a[i]);
return0;
)
7.編寫程序,輸入月份,輸出該月的英文月名。例如,輸入3,則輸出March,要求
用指針數(shù)組處理。
【參考源程序】
#include<stdio.h>
intmain()
(
char"months口二{“January”,“February”,“March”,“April”,“May”JJune”,“July”,“August”,
"September",,,October',,',November",',December"};
intn;
scanf("%d'\&n);
if(n<=12&&n>=l)
printf(*'%d月的英文名稱是:%s\n”,n,months[n-l]);
else
printf("輸入的月份無效!”);
return0;
)
8.編寫程序,將一字符串正序反序連接,連接后仍存入原數(shù)組中。例如,字符數(shù)組s
中存有字符串“abcde",連接后s中的內(nèi)容為“abcdeedcba
【參考源程序】
#include<stdio.h>
intmain()
(
chars[100],*p,*q;
p=s;q=s;
gets(s);
while(*q)
q++;
p=q-i;
while(p>=s)
(
*q=*p;p-;q++;
)
*q='\0';
puts(s);
return0;
)
9.編寫函數(shù),實現(xiàn)去掉一個字符串前后空格字符的功能,并在主函數(shù)中調(diào)用該函數(shù)。
【參考源程序】
#include<stdio.h>
voiddelnum(char*s)
(
inti,j;
for(i=0j=0;s[i]!='\0';i++)
if(s[i]!=,!)
{
s[j]=s[i];j+4-;
)
s[j尸\(y;
)
voidmain()
(
char*item,s[80];
item=s;
printf(n\ninputastring:\nu);
gets(item);
delnum(item);
printf(,'\n%s,'?item);
)
10.編寫一個函數(shù)insert(sl,s2,n),其功能是在字符串si中的指定位置n處插入字符串s2。
【參考源程序】
#include<stdio.h>
#include<string.h>
voidinsert(char*sl,char*s2,intn)
(
inti,j;
char
t=sl;
i=strlen(sl);
j=strlen(s2);
while(t<sl+n-l)
t++;
for(p=s1+i+j+2;p>t;p—)
*p=*(p-j);
for(;*s2;t++,s2++)
*t=*s2;
)
intmain()
(
charstrl[50],str2[20];
intn;
gets(strl);
gets(str2);
scanf("%d",&n);
insert(strl,str2,n);
puts(strl);
return0;
習(xí)題7和參考解答
i.定義一個結(jié)構(gòu)體變量,其成員包括年、月、日。計算該日在本年中是第幾天。
【參考源程序】
#include<stdio.h>
struct
(
intyear;
intmonth;
intday;
}date;
intmain()
(
inti,days;
intday_tab[l3]={0,31,28,31,30,31,30,31,31,30,31,30,31);
scanf(<4%d%d%d,,,&date.year,&date.month,&date.day);
days=0;
for(i=l;i<date.month;i+4-)
days+=day_tab[ij
days+=date.day;
if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)
days+=l;
printff'%d/%disthe%dthdayin%d,,,date.month,date.month.day,days,date.year);
return0;
)
2.定義一個結(jié)構(gòu)體變量,其成員包括職工姓名、職工號、性別、工資、婚姻狀況和家
庭地址。
【參考源程序】
structemployee
charname[20];
charnumber[10];
charsex;
floatwage;
charmarry;
charaddress[50];
}zhang;
3.建立一個職工情況統(tǒng)計表,包括職工的工作證號、姓名、年齡、工資等內(nèi)容。輸出
該單位職工的平均年齡、平均工資和各年齡段職工人數(shù)的分布情況。
【參考源程序】
#include<stdio.h>
structemployee
(
charnumber[10J;
charname[20];
intage;
floatwage;
}e[100];
intmain()
(
floatsl=0,s2=0;
inta1=0,a2=0,a3=0,a4=0,i;
for(i=0;i<100;i++)
scanf(u%s%s%d%f,,e[i].number,e[i].name,&e[i].age,&e[i].wage);
for(i=0;i<100;i++)
if(e[i].age<30)al++;
elseif(e[i].age<40)a2++;
elseif(e[i].age<50)a3++;
elseif(e[i].age<60)a4++;
sl+=e[i].age;
s2+=e[i].wage;
)
printfC平均年齡:%.2f,平均工資:%.2f,20歲:%d,30歲:%d,40歲:%d,
50歲:%d”,sl/100,s2/100,al,a2,a3,a4);
return0;
)
4.建立一個鏈表,每個結(jié)點包括職工號、姓名、性別和年齡,輸入一個退休年齡,如
果鏈表中的結(jié)點所包含的年齡等于此年齡,就刪除該結(jié)點。
【參考源程序】
#include<stdio.h>
#include<malloc.h>
structemployee
(
charnumber[10];
charname[20];
charsex[2];
intage;
structemployee*nexl;
}emp[10J;
voidmain()
(
structemployee*p,*pt,*head;
inti,length,iage,flag=1;
intfind=O;
while(flag==l)
(
printfif^inputlengthoflist:^^);
scanf("%d”,&length);
if(length<10)
flag=0;
)
for(i=0;i<length;i++)
(
p=(slructemployee*)malloc(sizeof(structemployee));
if(i==0)
head=pt=p;
else
pt->next=p;
Pt=P;
scanfC6%s%s%s%d,,,p->number,p->name,p->sex,&p->age);
)
p->next=NULL;
p=head;
Pl二P;
printff'inputage:");
scanfT%d”,&iage);
if(pt->age==iage)
(
p=pt->next;
head=pt=p;
find=l;
)
else
pt=pt->next;
while(pt!=NULL)
(
if(pt->age==iage)
(
p->next=pt->next;
find=l;
)
else
P=Pt;
pt=pt->next;
)
if(!find)
printff'notfind%d.M,iage);
p=head;
printf(€t\nNo.Namesexage\nn);
while(p!=NULL)
|
printf(4€%6s%8s,,,p->number,p->name);
printf(u%6s%6d\n,,,p->sex,p->age);
p=p->next;
習(xí)題8和參考解答
1.編寫程序,從鍵盤輸入100個字符,存入名為file.txt的文件中。
【參考源程序】
#include<stdio.h>
intmain()
(
FILE*fp;
charch;
inti;
if((用=fbpen(“行l(wèi)e.txt"JW"))=NULL)
(
printfi(4lcannotopenfile\n^^);
exit(0);
}
for(i=0;i<100;i++)
(
ch=getchar();
fputc(ch,fp);
fclose(fp);
return0;
)
2.編寫程序,從鍵盤輸入一個字符串,將其中的小寫字母全部轉(zhuǎn)換成大寫字母,然后
輸出到文件file.txt中保存,輸入的字符串以#結(jié)束。
【參考源程序】
#include<stdio.h>
#include<stdio.h>
intmain()
(
FILE*fp;
charch;
if((fp=fopen(<€file.txt,,,,,W,,))=NULL)
(
printfV'cannotopenfile\n^^);
exit(O);
)
while((ch=getchar())!='#')
(
if(ch>=,a,&&chv=Z)
ch=ch-32;
fputc(ch,fp);
)
fclose(fp);
return0;
)
3.現(xiàn)有5個學(xué)生,從鍵盤輸入如下數(shù)據(jù):學(xué)號、姓名、語文成績、數(shù)學(xué)成績和英語成
績,計算出每個學(xué)生3門課的平均成績,將原有數(shù)據(jù)和計算出的平均分都存放在文
件score.txt中。
【參考源程序】
#include<stdio.h>
#include<stdio.h>
structstudent
(
charnum[10];
charname[20];
floats[4];
}stu[5];
intmain()
(
FILE*fp;
charch;
inti;
if((fp=fbpenCscore.txt,,,,,W,,))==NULL)
printff'cannotopenfile\rT);
exit(O);
)
for(i=0;i<5;i++)
(
scanf(“%s”,stu[i].num);
scanf(46%s,5,stu[i].name);
scanf(t<%f%f%f,,&stu[i].s[O],&stu[i].s[l],&stu[i].s[2]);
stu[i].s[3]=(stu[i].s[O]+stu[i].s[1]+stu[i].s[2])/3;
fwrite(&stu[i],sizeof(structstudent),!,fp);
)
fclose(fp);
return0;
1
4.編寫程序,將文件filename.dat中的內(nèi)容復(fù)制到文件newfile.dat中。
【參考源程序】
#include<stdio.h>
#include<stdio.h>
intmain()
(
intc;
FILE*fpl,*fp2;
fp1=fbpen("fnename.dat",‘Tb'');
fjp2=fbpen("newfHe.dat'‘,"wb");
c=fgetc(fpl);
while(c!=EOF)
(
fputc(c,fp2);c=fgetc(fpl);
}
fclose(fpl);
fclose(fp2);
return0;
)
5.編寫程序,統(tǒng)計用戶指定文件的長度。
【參考源程序】
#include<stdio.h>
#include<stdio.h>
intmain()
(
FILE*fp;
longfl;
S=fopen("test.dat";Tb");
fseek(fp,0,SEEK_END)_;
fl=ftell(fp);
fclose(fp);
printf(,,%d\n,,;fl);
return0;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度手汽車進口及銷售代理合同
- 二零二五年度知識產(chǎn)權(quán)與保密協(xié)議范本-物聯(lián)網(wǎng)技術(shù)合作協(xié)議
- 2025年度環(huán)保技術(shù)研發(fā)合作合同終止與解除執(zhí)行細(xì)則
- 非洲動物課程設(shè)計
- 2025年度海洋資源開發(fā)股份轉(zhuǎn)讓協(xié)議書
- 飛機寫生課程設(shè)計
- 二零二五年度2025年特色小鎮(zhèn)門面租賃與轉(zhuǎn)讓合同
- 貼片流水燈課程設(shè)計
- 魚化石創(chuàng)意課程設(shè)計
- 鹽城兒童體適能課程設(shè)計
- 醫(yī)療安全(不良)事件總結(jié)分析會議記錄
- 建筑用砂采石場安全生產(chǎn)綜合應(yīng)急預(yù)案
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)、預(yù)防措施、追責(zé)建議
- 常用護理技能操作流程
- 小批量試制總結(jié)報告
- 墨魚干最好的泡發(fā)方法
- 生豬領(lǐng)域:牧原食品企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 人生目標(biāo)規(guī)劃PPT模板課件
- 老年人健康和慢性病管理課件
- 消防設(shè)施操作員報名承諾書
- (完整)Tribon m3培訓(xùn)資料
評論
0/150
提交評論