![C語言程序設(shè)計課后習(xí)題編程答案_第1頁](http://file4.renrendoc.com/view/d6e2682f72cec2e069a8618c25eb7881/d6e2682f72cec2e069a8618c25eb78811.gif)
![C語言程序設(shè)計課后習(xí)題編程答案_第2頁](http://file4.renrendoc.com/view/d6e2682f72cec2e069a8618c25eb7881/d6e2682f72cec2e069a8618c25eb78812.gif)
![C語言程序設(shè)計課后習(xí)題編程答案_第3頁](http://file4.renrendoc.com/view/d6e2682f72cec2e069a8618c25eb7881/d6e2682f72cec2e069a8618c25eb78813.gif)
![C語言程序設(shè)計課后習(xí)題編程答案_第4頁](http://file4.renrendoc.com/view/d6e2682f72cec2e069a8618c25eb7881/d6e2682f72cec2e069a8618c25eb78814.gif)
![C語言程序設(shè)計課后習(xí)題編程答案_第5頁](http://file4.renrendoc.com/view/d6e2682f72cec2e069a8618c25eb7881/d6e2682f72cec2e069a8618c25eb78815.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章簡單程序設(shè)計
1.編程求方程2*x"2-3*x-5=0的根。
源代碼
#include<stdio.h>
intmain()
(
floatxl,x2;
xl=(3+7)A.0;
x2=(3-7)A.O;
printf("xl=%f/x2=%f\n",xl/x2);
return0;
}
2,已知正方體的棱長為4.3,求正方體的體積和表面積。(保留2位小數(shù))
源代碼
#include<stdio.h>
intmain()
(
floata;
floats,v;
a=4.3;
s=a*a*6;
v=a*a*a;
printf("V=%.2f,S=%.2f\n",v,s);
return0;
}
3.輸入3個整數(shù)啊a,b,c,編程交換它們的值,即把a(bǔ)的值給b,把b中的值給c,把c的
值給a。
源代碼
#include<stdio.h>
intmain()
(
inta,b,c;
inttemp;
scanf("%d%d%d"/&az&b,&c);
temp=a;
a=b;
b=c;
c=temp;
printf("a=%d,b=%d/c=%d\n",a,b,c);
return0;
}
4.編程將任意輸入的小寫字母轉(zhuǎn)化成大寫字母并輸出
源代碼
#include<stdio.h>
intmain()
(
charch;
,,
scanf(%c",&ch);
ch=ch-32;
printf("%c\n”,ch);
return0;
}
第四章選擇結(jié)構(gòu)
L設(shè)計一個簡單的計算器程序,用戶輸入運算數(shù)和四則運算符(+、-、*、/),輸出計算結(jié)果,
除法為整除。
源代碼
#include<stdio.h>
voidmain()
(
inta,b,c;
charchi;
scanf("%d%c%d"/&a,&chlz&b);
switch(chl)
(
case43:c=a+b;printf(,,c=%d\n,,,c);break;
case45:c=a-b;printf("c=%d\n",c);break;
case42:c=a*b;printf("c=%d\n",c);break;
case47:c=a/b;printf("c=%d\n",c);break;
default:printf("wrong!");
)
)
2?根據(jù)輸入的x的值求y的值,當(dāng)x>0且x!=2時,y=(x+1)/(x-2);當(dāng)x=0或x=2時,y=0;
當(dāng)x<0時,y=(x-l)/(x-2).
源代碼
#include<stdio.h>
voidmain()
(
floatx,y;
scanf("%f",&x);
if(x>0&&x!=2)
y=(x+l)*(x-2);
else
(
if(x==O||x==2)
y=o;
else
y=(x-l)*(x-2);
}
printf("y=%f\n",y);
)
3.編寫程序,從鍵盤輸入學(xué)生成績輸出對的的等級(100分為A,99-90為B,80-89為C,
70-79為D,60-69為E,小于60為F)。
源代碼
#include<stdio.h>
intmain()
(
floatnum;
scanf("%f",&num);
if(num==100)
printf("A\n");
else
{
if(num>=90)
printf("B\n");
else
(
if(num>=80)
printf("C\n");
else
{
if(num>=70)
printf("D\n");
else
(
if(num>=60)
printf("E\n");
else
printf("F\n");
)
)
}
)
return0;
)
4.編寫程序,輸入不多余4位的正整數(shù),判斷它是幾位數(shù)。
源代碼
#include<stdio.h>
voidmain()
(
inta;
scanf("%d",&a);
if(a>=1000)
printf("4\n");
else
(
if(a>=100)
printf("3\n");
else
(
if(a>=10)
printf(n2\n");
else
printf("l\n");
)
)
)
第五章循環(huán)結(jié)構(gòu)
1.求1-2+3-4+5-6+7+........+99-100.
源代碼
#include<stdio.h>
voidmain()
(
inti,s;
for(i=l/s=0;i<=100;i++)
(
if(i%2!=0)
s=s+i;
else
s=s-i;
)
printf("s=%d\n"/s);
)
2.任意輸入10個數(shù)的和,分別計算輸出其中正數(shù)和負(fù)數(shù)的和
源代碼
#include<stdio.h>
voidmain()
(
floatsl,s2,xzi;
for(sl=0/s2=0J=l;i<=10;i=i++)
(
scanf("%f"/&x);
if(x<0)
sl=sl+x;
else
s2=s2+x;
}
printf("%f,%f\n",sl,s2);
)
3.計算100里面所有含6的數(shù)字之和。
源代碼
#include<stdio.h>
voidmain()
(
inti,a,b,s;
for(i=l,s=0;i<100;i++)
(
a=i/10;
b=i%10;
if(6==a116==b)
s=s+i;
)
printf("%d\n",s);
)
4.輸出所有的3位水仙花數(shù)。
源代碼
#indude<stdio.h>
voidmain()
(
inti,a,b,c,d;
for(i=100;i<1000;i=i+l)
(
a=i/100;〃求的百位數(shù)字
c=i%10;〃求的個位數(shù)字
b=(i%100-c)/10;〃求的十位數(shù)字
d=a*a*a+b*b*b+c*c*c;
if(d==i)
printf("%d\n",i);
)
)
5,編寫程序輸出下面圖形:
1
23
456
7890
源代碼
#include<stdio.h>
voidmain()
intaJJ;
a=l;
for(i=l;i<=4;i++)
(
for(j=l;j<=i;j++,a++)
printf("%d",a);
printf("%\n");
)
)
6.編寫程序輸出下面圖形:
*
***
*****
*******
?****
***
*
源代碼
#include<stdio.h>
voidmain()
(
inti,j,k;
k=6;
for(i=0;i<=3;i++,k-=2)
{
for(j=0;j<k;j++)
printf("");
for(j=0;j<(2*i+l);j++)
printf("*");
printf("\n");
)
k=2;
i=2;
for(i=2;i>=0;k+=2,i-)
(
for(j=0;j<k;j++)
printf("");
for(j=0;j<(2*i+l);j++)
printf("*");
printf("\n");
)
第六章數(shù)組
1.編程求一個4*4矩陣兩條對角線所有元素之和。
源代碼
#include<stdio.h>
voidmain()
(
inta⑷⑷;〃定義一個4*4矩陣
ints,i,k;〃定義相關(guān)變量
s=0;〃令和為0
printf("pleaseinput16numbers:");
for(i=0;i<=3;i++)〃輸入這個矩陣的相關(guān)數(shù)值
(
for(k=0;k<=3;k++)
scanf("%d",&a[i][k]);
)
for(i=0,k=3;i<=3;i++)〃對矩陣對角線進(jìn)行求和
(
s=s+a[i][i];
s=s+a[i][k-i];
}
printf("%d\n",s);
)
2.輸入一個字符串,將指定位置的字符刪除。
源代碼
#include<stdio.h>
#include<string.h>
voidmain()
{
inti;
intn;
intlongth;
charch[100];
printf(HpleaseinputCharacters:\n");
gets(ch);
longth=strlen(ch);
printf("pleaseinputthenumberwhichcharacteryouwanttodelete:");
scanf("%d",&n);
if(n>longth||n<l)
printf("ERROR!\n");
else
(
for(i=0;i<longth-l;i++)
(
if(i>=n-l)
ch[i]=ch[i+l];
ch[longth-l]='\0';
puts(ch);
)
)
3.輸入一個字符串,在指定位置插如一個字符
源代碼
#include<stdio.h>
#include<string.h>
voidmain()
(
intizn;
charch[100];
intlongth;
printf("pleaseinputcharacters:\n");
gets(ch);
longth=strlen(ch);
printf("pleaseinputthecharachterwhichyouwanttoinsert:");
charsh;
scanf("%c",&sh);
printf("pleaseinputthenumber:");
scanf("%d”,&n);
for(i=longth;i>n-l;i-)
ch[i]=ch[i-l];
ch[n-l]=sh;
ch[longth+l]='\0';
puts(ch);
)
4.編寫程序,求下列矩陣各行元素之和,各列元素之和
13579
246810
35876
源代碼
#include<stdio.h>
voidmain()
(
inti,k;〃定義相關(guān)變量
introw;
intcol;
inta[3][5];
row=0;
col=0;
printf("求下面矩陣各行各列的和:\n");
for(i=l;i<=3;i++)〃輸出這個矩陣
for(k=l;k<=5;k++)
(
a[i-l][k-l]=i+2*(k-l);
printf("%3d",a[i-l][k-l]);
)
printf("\n");
}
for(i=0;i<=2;i++)〃控制行數(shù)
{
for(k=0;k<=4;k++)〃對各行進(jìn)行求和
(
row=row+a[i][k];
)
printf("row%d=%d\n",i+Lrow);〃輸出各行之和
}
for(k=0;k<=4;k++)〃控制列數(shù)
(
for(i=l;i<=2;i++)〃對各列進(jìn)行求和
(
col=col+a[i][k];
)
printf("col%d=%d\n'',k+Lcol);〃輸出各歹ij之和
}
)
5有一篇文章,共有3行文字,每行最多80個字符。要求分別統(tǒng)計其中英文大寫字母,小
寫字母,數(shù)字,空格,以及其他字符的數(shù)目。
源代碼
#include<stdio.h>
voidmain()
(
inti,k;〃定義相關(guān)變量
charch[80];
intbig,som,emp,num,oth;
big=O;
som=0;
emp=0;
num=0;
oth=0;
for(i=l;i<=3;i++)〃控制行數(shù)
{gets(ch);
for(k=0;k<=79;k++)
if(ch[k)>=K&&ch[kk=Z)〃對大寫字母進(jìn)行統(tǒng)計
big=big++;
else
(
訐(ch[k]>=T&&ch[k]<=9)〃對數(shù)字進(jìn)行統(tǒng)計
num=num++;
else
(
if(ch[k]>='a'&&ch[k]<=?)〃對小寫字母進(jìn)行統(tǒng)計
som=som++;
else
(
if(ch[k]=1)〃對空格鍵進(jìn)行統(tǒng)計
emp=emp++;
else
oth=oth++;〃對其他字符進(jìn)行統(tǒng)計
)
)
)
)
)
printf("big=%d,som=%d,emp=%cl,num=%cl,oth=%d\n",big/som,emp,num,oth);//$fl}Hj^iiT+^n7R:
)
第七章函數(shù)
1.編寫求兩個數(shù)的和、差、平均數(shù)的三個函數(shù),在主函數(shù)中調(diào)用它們并輸出結(jié)果
源代碼
#include<stdio.h>
intsum(inta,intb)
(
intc;
c=a+b;
return(c);
)
intchafinta,intb)
(
intc;
c=a-b;
return(c);
)
floatpingjun(inta,intb)
(
floatc;
c=(a+b)/2.0;
return(c);
)
voidmain()
(
intm,n;
intx,y;
floatz;
scanf("%d%d"z&m,&n);
x=sum(mzn);
y=cha(m/n);
z=pingjun(m,n);
pnntf("a+b=%d\n",x);
printf("a-b=%d\n"/y);
printf("(a+b)/2=%f\n"/z);
)
2.從鍵盤輸入3個整數(shù),求他們中的最大者,用函數(shù)調(diào)用實現(xiàn)
源代碼
#include<stdio.h>
intmax(inta,intb,intc)
(
if(a<b)
a=b;
if(a<c)
a=c;
return(a);
)
voidmain()
(
intx,y,z,m;
scanf("%d%d%d”,&x,&y,&z);
m=max(x,y,z);
printf("%d\n"zm);
)
3.按下列遞歸定義編寫一個計算事級函數(shù)
1,n=0
XAn={
X*XA(n-l)n>0
源代碼
#include<stdio.h>
longmiji(intnjntx)
(
longy;
if(n>0)
y=x*miji(n-lzx);
else
y=i;
return(y);
voidmain()
(
intazb;
longf;
printf("pleaseinputnandx:");
scanf("%d%d",&a,&b);
f=miji(a,b);
A
printf("Xn=%\ld\n"/f);
)
4.斐波那契數(shù):Xn=X(n-l)+X(n-2)n>2;Xn=ln=l或者n=2;
#include<stdio.h>
intfeibo(intn)
(
inty;
if(n>2)
y=feibo(n-l)+feibo(n-2);
else
y=i;
return(y);
)
voidmain()
(
intx;
inti;
inta[47];
scanf(H%d",&x);
for(i=0;i<x;i++)
a[i]=feibo(i+l);
for(i=0;i<x;i++)
printf("%4d",a[i]);
printf("\n");
5.編寫一個函數(shù)使輸入的一個字符串反序存放,并在函數(shù)中輸入輸出o
源代碼
#include<stdio.h>
#include<string.h>
voidopc(charch[100],intn)
inti;
chart;
for(i=0;i<(n/2);i++)
t=ch[i];
ch[i]=ch[n-i-l];
ch[n-i-l]=t;
}
voidmain()
(
intk,f;
charsh[100];
gets(sh);
k=strlen(sh);
opc(sh,k);
for(f=0;f<k;f++)
printf("%c”,sh[f]);
printf("\n");
}
6.編寫一個函數(shù)將輸入的十六進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),并輸出
源代碼
#include<stdio.h>
#include<string.h>
#include<math.h>
intchanger(charch[10]Jntm)
(
intk;
inti;
for(i=0,k=0;i<m;i++)
(
if(ch[i]>='0,&&ch[i]<='9')
(
ch[i]=ch[i]+O;
}
else
(
jf(ch[i]=='A')
(int)(ch[i]=10);
if(ch[i]=='B')
(int)(ch[i]=ll);
if(ch[i]=='C)
(int)(ch[i]=12);
if(ch[i]=='D,)
(int)(ch[i]=13);
if(ch[i]==,E,)
(int)(ch[i]=14);
if(ch[i]=='F')
(int)(ch[i]=15);
)
k=ch[i]*pow(10zm-l-i)+k;
}
return(k);
voidmain()
{
ints,n;
charsh[10];
gets(sh);
n=strlen(sh);
s=changer(sh,n);
printf("s=%d\n"/s);
}
第八章指針
1.編寫一個程序,輸入10個整數(shù)存入一維數(shù)組中,再按逆序重新存放后輸出
源代碼
#include<stdio.h>
voidchange(int*p)〃定義函數(shù)
(
inti,t;
for(i=0;iv5;i++)〃循環(huán)進(jìn)行逆序交換
(
t=*(p+i);〃將第i+1個數(shù)用T備份
*(p+i)=*(p+9-i);〃將第10-i個數(shù)賦值給第i+1個數(shù)
*(p+9-i)=t;〃將T賦值給第10-i個數(shù)
}
)
voidmain()
(
inta[10J;〃定義一個有10個元素的數(shù)組
intk;
for(k=0;k<10;k++)
scanf("%d",&a[k]);〃輸入數(shù)
change⑶;〃調(diào)用函數(shù)
for(k=0;k<10;k++)
printf("%4d",a伙]);〃輸出函數(shù)處理后的數(shù)
printf("\n");
}
2.輸入一個字符串并將其逆序輸出
源代碼
#include<stdio.h>
#include<string.h>
voidchange(char*p,intn)〃定義函數(shù),用指針來當(dāng)字符串的形參
(
for(;n>=0;n-)
printf("%c",*(p+n-l));〃從最后一個起逆序輸出
printf("\n");
)
voidmain()
(
charch[100];
intk;
gets(ch);〃輸入字符串
k=strlen(ch);〃測量字符串的長度
change(ch,k);〃調(diào)用函數(shù)
)
3.輸入10個數(shù),將其中最大的數(shù)與最后一個一個數(shù)交換,最小的與第一個數(shù)交換
源代碼
#indude<stdio.h>
voidchange(int*pi)〃定義函數(shù),用指針來當(dāng)數(shù)組的形參
(
int*p,*q;〃定義兩個指針
p=pi;〃將兩個指針初始化為數(shù)組的首地址
q=pi;
inti,t;
for(i=0;i<10;i++)〃循環(huán)找最大值及最小值
(
if(*p<*(pi+i))〃找出數(shù)組中的最大數(shù)的地址
P=pi+i;
if(*q>*(pi+i))〃找出數(shù)組111的最小數(shù)的地址
q=pi+i;
}
printf("max=%d,min=%d\n",*p,*q);〃輸出最大數(shù)與最小數(shù)看看上面程序是否正確
if(p==pi&&q==(pi+9))
(
t=*p;〃將最大數(shù)備份
*p=*(pi+9);〃將最后一個數(shù)放在曾經(jīng)的最大數(shù)的地址內(nèi)
*(pi+9)=t;〃將最后?個數(shù)放在曾經(jīng)的最大數(shù)的地址內(nèi)
/*if語句防止當(dāng)上面條件成立時下面的語句會先將兩數(shù)交換后面有將兩數(shù)換回
來
有興趣可以將上面語句屏蔽掉輸入滿足上面條件的數(shù)試試看*/
else
(
t=*p;〃將最大數(shù)備份
*p=*(pi+9);〃將最后一個數(shù)放在曾經(jīng)的最大數(shù)的地址內(nèi)
*(pi+9)=t;〃將最后?個數(shù)放在曾經(jīng)的最大數(shù)的地址內(nèi)
t=*q;/*下面按照上面思路對最小數(shù)與最前面的數(shù)進(jìn)行交換*/
*q=*pi;
*pi=t;
)
voidmain()
(
inta[10];〃定義數(shù)組
intk;
for(k=0;k<10;k++)
scanf("%d",&a[k]);〃循環(huán)輸入10個數(shù)
change(a);〃調(diào)用函數(shù)
for(k=0;k<10;k++)
printf("%4d",a[k]);〃對調(diào)用函數(shù)后的結(jié)果進(jìn)行輸出
printf("\n");
)
4.將一個3*3的數(shù)組轉(zhuǎn)置
源代碼
#include<stdio.h>
voidchange(inta[3]⑶)
(
int*p=a[0];〃定義指針變量并將它指向數(shù)組列指針的首地址
inti,j;
printff'Thenthenumberare:\n");
〃運用循環(huán)直接將輸出的數(shù)組的行列坐標(biāo)轉(zhuǎn)換
for(i=0;i<3;i++)
(
for(j=0;j<3;j++)
printf("%4d”,*(p+3*j+i));〃將原本應(yīng)該輸出變?yōu)檩敵黾磳崿F(xiàn)了數(shù)組的轉(zhuǎn)
置
printf("\n");
)
)
voidmain()
intb⑶⑶;〃定義數(shù)組
intk,f;
for(k=0;k<3;k++)
for(f=0;f<3;f++)
scanf(”%d,&b[k][f]);〃輸入數(shù)
printf("Thenumberare:\n");
for(k=0;k<3;k++)〃這段代碼是將你輸入的數(shù)組打出來看看方便與后面函數(shù)執(zhí)行后數(shù)組
的變化進(jìn)行對比
(
for(f=0;f<3;f++)
printf("%4d",b[k][f]);
printf("\n");
}
change(b);〃調(diào)用函數(shù)
)
5.計算字符串的長度
源代碼
#include<stdio.h>
intlon(char*p)〃定義函數(shù),將指針P指向字符串的首地址
(
intk;
for(k=l;*p!=W;p++)〃在P沒有指向結(jié)束符前對K累加
k++;
return(k);〃返回K值
)
voidmain()
(
intt;
charch[100];〃定義一個字符串
gets(ch);〃輸入字符
t=lon(ch);
printf("ltis%d\n",t);
)
6.輸入?行字符將其中的字符從小到大輸出
源代碼
#include<stdio.h>
#include<string.h>
voidchange(char*p,intk)〃定義函數(shù),使指針指向字符串?dāng)?shù)組的首地址
inti,j;
chart;
〃運用簡單冒泡排序法排序
for(i=l;i<k;i++)
for(j=0;j<k-i;j++)
if(*(p+j)>*(p+j+l))
(
t=*(p+j);
*(p+j)=*(p+j+l);
*(p+j+l)=t;
)
)
)
voidmain()
(
charch[100);〃定義一個字符串
intn;
gets(ch);
n二strlen(ch);〃測量字符串的長度
change(ch,n);〃調(diào)用函數(shù)
puts(ch);〃輸出調(diào)用函數(shù)后的結(jié)果
第九章結(jié)構(gòu)體
1.定義一個結(jié)構(gòu)體通過指針輸入和輸出
源代碼
#include<stdio.h>
voidmain()
(
structstu
(
intnum;
charname[20];
intage;
}st⑶,*p;
p=st;
inti;
for(i=0;i<3;i++)
(
scanf("%d"z&st[i].num);
getchar();
gets(st[i].name);
scanf(”%cT,&st[i].age);
)
printf("No.\t\tName\tAge\n");
for(;p<st+3;p++)
printf("%d\t%s\t%d\n",p->num/p->name,p->age);
)
2?建立一個包括學(xué)生姓名,性別,年齡,一門課成績的結(jié)構(gòu)體,輸出考分最高的學(xué)生個人信
息。
源代碼
#include<stdio.h>
voidmain()
(
structstu
(
charname[20];
intnum;
charsex;
intage;
intscore;
}st[45],*p,*q;
P=st;
inti;
intn;
printf("pleaseinputthenumberofstudent:\n");
scanf(”%d,&n);
getchar();
for(i=0;i<n;i++)
(
printf("pleaseinputname:");
gets(st[i].name);
printf("pleaseinputnumber:");
scanf("%d”,&st[i].num);
getchar();
printf("pleaseinputsex:");
scanf(“%c”,&st[i].sex);
printf("pleaseinputage:");
scanf("%d"z&st[i].age);
printf("pleaseinputscore:");
scanf("%d",&st[i].score);
getchar();
}
printf("\t\tName\t\tNo.\t\tSex\tAge\tscore\nH);
for(i=0,p=st,q=st;i<n;i++)
if(q->score<(p+i)->score)
q=P+i;
printf("Thebeststudentis
%s\t%d\t\t%c\t%d\t%d\n",q->namezq->num,q->sex/q->age/q->score);
)
3.?個45人班級有兩門課,求所有成績中的最高成績,及對應(yīng)的姓名,學(xué)號課程編號,分
別求兩門課的平均成績,并找出兩門課都低于平均分的學(xué)生信息,按1課程成績從高到低排
序。(45人太多,本人改成了5人,只需將里面的5全部改成45即可)
源代碼:
#include<stdio.h>
structstu_type
(
charname[20];
intnum;
floatscore[2];
};
voidmaxnum(structstu_typestu[5])
(
intij,maxi,maxj;
floatmax;
max=stu[0].score[0];
for(i=0;i<5;i++)
(
for(i=0;i<5;i++)
(
for(j=0;j<2;j++)
if(stu[i].score[j]>max)
maxi=i;
maxj=j;
)
}
printf("Thebeststudentsis:\n");
printf("Name\tnum\tclass\n");
printf("%s\t%d\t%d\n"/stu[maxi].name,stu[maxi].num/maxj+l);
)
voidave(structstu_typestu[5])
(
floatkl=0,k2=0,k=0;
inti;
for(i=0;i<5;i++)
{
kl+=stu[i].score[0];
k2+=stu[i].score[l];
)
kl=kV5;
k2=kg
printf("pingjunl:%f\n",kl);
printf("pingjun2:%f\n”,k2);
printf("Thefailedstudientis
for(i=0;i<5;i++)
if(stu[i].score[0]<kl&&stu[i].score[l]<k2)
printf("%7s\t%d\n"/stu[i].name/stu[i].num);
else
k++;
)
if(k==O)
printf("Noone!\n");
}
voidpaixu(structstu_typestu[5])
(
inti,j;
structstu_typet;
for(i=0;i<4;i++)
for(j=0;j<5-i;j++)
if(stu[j].score[0]<stu[j+1].score[0])
(
t=stu[j];
stu[j]=stu[j+l];
stuO+l]=t;
}
printf("Name\tnum\tscorel\tscore2\n");
for(i=0;i<5;i++)
',
printf(%s\t%d\t%f\t%f\n"/stu[i].name/stu[i].num/stu[i].score[0]zstu[i].score[l]);
)
voidmain()
(
structstu_typestu[5];
intij;
for(i=0;i<5;i++)
{
scanf("%s",&stu[i].name);
scanf("%d",&stu[i].num);
for(j=0;j<2;j++)
scanf(”%f”,&stu[i].score[j]);
getchar();
}
paixu(stu);
maxnum(stu);
ave(stu);
4.輸入一個字符串用鏈表的形式儲存,沒個結(jié)點的數(shù)據(jù)域放一個字符,最后輸出鏈表中的全
部字符。
源代碼
#include<stdio.h>
#include<stdlib.h>
structnode
(
charch;
structnode*next;
);
intmain()
(
charsh;
structnode*head/*p,*r;
head=(structnode*)malloc(sizeof(structnode));
p=head;
while(scanf("%c"/&sh)&&sh!='\n')
{
r=(structnode*)malloc(sizeof(structnode));
r->ch=sh;
p->next=r;
P=r;
}
p->next=NULL;
p=head;
while(l)
(
if(p->next==NULL)
break;
p=p->next;
printf(”%c”,p?>ch);
)
printf("\n");
return0;
}
5,設(shè)有一個單項鏈表,現(xiàn)欲將其倒置,試編寫一函數(shù)實現(xiàn)此功能。
源代碼
#include<stdio.h>
#include<stdlib.h>
structnode
(
intdata;
structnode*next;
);
structnode*nizhi(structnode*h,intn)
printf("????\n");
inti,j,k,a;
structnode*s,*r,*q,*f;
k=n/2;
r=h;
for(i=l;i<=k;i++)
(
s=r->next;
for(j=l,f=h;j<=n+l-i;j++)
(
q=f->next;
f=q;
)
a=s->data;
s->data=q->data;
q->data=a;
r=s;
)
return(h);
)
intmain()
(
intnJ;
intnum;
structnode*head/*p,*r;
head=(structnode*)malloc(sizeof(structnode));
p=head;
scanf("%d",&n);
for(i=l;i<=n;i++)
{
scanf("%d",&num);
r=(structnode*)malloc(sizeof(structnode));
r->data=num;
p->next=r;
P=r;
)
p->next=NULL;
p=head;
while(l)
(
if(p->next==NULL)
break;
p=p->next;
printf("%d"zp->data);
)
printf(H\n");
head=nizhi(head,n);
while(l)
(
if(head->next==NULL)
break;
head=head->next;
printf("%d",head->data);
)
return0;
}
6.已知一個無符號的整數(shù)占4個字節(jié)內(nèi)存,現(xiàn)欲從低位存儲地址開始,將其每個字節(jié)作為單
獨的一個ASCII碼字符輸出,使用共用體實現(xiàn)上述轉(zhuǎn)換
源代碼
#include<stdio.h>
voidmain()
(
unionchan
(
longa;
charch[4];
}zi;
scanf("%xn,&zi.a);
,,
printf(%c%c%c%c"/zi.ch[0]/zi.ch[l]/zi.ch[2]/zi.ch[3]);
)
7,已知一個長度為2字節(jié)的整數(shù),欲將其高位字節(jié)與?低位字節(jié)交換后輸出,使用共用體實現(xiàn)。
源代碼
#include<stdio.h>
voidmain()
(
unionchan
{
inta;
charch[2];
}u;
scanf("%x",&u.a);
charsh;
sh=u.ch[0];
u.ch[0]=u.ch[l];
u.ch[l]=sh;
printf("%x\n",u.a);
}
8.用枚舉類型Score,用枚舉元素代表成績等級,通過鍵入?個學(xué)生的成績?nèi)缓筝敵龅燃?/p>
源代碼
#include<stdio.h>
voidmain()
(
inta,k;
enumscore{excellent=l,good/general/fail};
scanf("%d”,&a);
if(a>=90)
k=l;
if(a>=80&&a<=89)
k=2;
if(a>=60&&a<=79)
k=3;
if(a<60)
k=4;
switch(k)
(
caseexcellent:printf("excellent\n");break;
casegood:printf("good\n");break;
casegeneral:printf("general\n");break;
casefail:printf("fali\n");break;
)
)
第十章位運算
1.編寫一函數(shù)getbits,從一個16位的單元中取出某幾位(即該幾位保留原值,其余位為0)。
函數(shù)太用形式為為該位(兩個字節(jié))中的數(shù)據(jù)值,
getbits(value,nl,n2)oValue16nl
為欲取出的起始位,n2為欲取出的結(jié)束位。如:getbits(0101675,5,8)表示取出8進(jìn)制
數(shù)101675從左面起第5-8位。
源代碼
程序運行結(jié)果圖10-1
2.寫一函數(shù),對一個16二進(jìn)制數(shù)取出奇數(shù)位
源代碼
/include<stdio.h>
voidextracter(intnumber)
(
for(inti=0;i<16;i+=2)
(
//0x8000:1000,0000,0000,0000
if((0x8000?i)&number)
printf("l");
else
printf("O");
)
printf("\n");
)
intmain()
(
intn;
scanf("%d"z&n);
extracter(n);
return0;
)
3,設(shè)計一個函數(shù),使給出一個數(shù)的源碼,能夠得到這個數(shù)的補(bǔ)碼。
源代碼
#include<stdio.h>
#include<string.h>
intmain()
(
chara[20],b[20];
intlenj;
scanf("%s",a);
len=strlen(a);
if(a[O]=='O')
strcpy(b,a);
else
(
b[0]=a[0];
for(i=l;i<len;i++)
b[i]=(char)('l'+'O,-a[i]);
b[len]='\0';
b[len-l]+=l;
for(i=len-l;i>0;i-)
(
b[i]=(char)((b[i]-'0')%2+'0,);
b[i-l]+=(b[i]-'0')/2;
)
)
printf("%s\n",b);
return0;
第十一章文件
1.設(shè)計程序?qū)?6個英文大寫字母順序?qū)懭胛募esult.txt中。
源代碼
#include<stdio.h>
#include<process.h>
intmain()
(
charch[27];〃字符串變量
chartemp;〃排序時備份變量
inti,j;
FILE*fp;
for(i
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025車輛抵債合同書
- 2025煉化工程建設(shè)總承包合同
- 2025油漆工程承包合同
- 2024-2025學(xué)年新教材高中語文 第七單元 16.2 登泰山記說課稿(1)部編版必修上冊
- 2024-2025學(xué)年高中地理 第1章 旅游和旅游資源 第2節(jié) 旅游資源的類型說課稿 中圖版選修3
- 二手房交易時合同范例
- 飲料公司組建方案
- 《 負(fù)數(shù)》(說課稿)-2023-2024學(xué)年六年級下冊數(shù)學(xué)人教版
- 石材礦山起料方案
- 鑄造企業(yè)整治方案制定
- 喬遷新居結(jié)婚典禮主持詞
- 小學(xué)四年級數(shù)學(xué)競賽試題(附答案)
- 魯科版高中化學(xué)必修2全冊教案
- 建筑工程施工質(zhì)量驗收規(guī)范檢驗批填寫全套表格(浙江省)
- 《病理學(xué)基礎(chǔ)》知識考核試題題庫與答案
- 人口分布 高一地理下學(xué)期人教版 必修第二冊
- 部編版六年級下冊語文第3單元習(xí)作例文+習(xí)作PPT
- 四年級上冊英語試題-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宮內(nèi)膜異位癥診療指南
- 《高級計量經(jīng)濟(jì)學(xué)》-上課講義課件
- 護(hù)理診斷及護(hù)理措施128條護(hù)理診斷護(hù)理措施
評論
0/150
提交評論