C語言程序設(shè)計課后習(xí)題編程答案_第1頁
C語言程序設(shè)計課后習(xí)題編程答案_第2頁
C語言程序設(shè)計課后習(xí)題編程答案_第3頁
C語言程序設(shè)計課后習(xí)題編程答案_第4頁
C語言程序設(shè)計課后習(xí)題編程答案_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論