欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語(yǔ)言程序設(shè)計(jì)教程第九章習(xí)題答案

      時(shí)間:2019-05-12 23:26:14下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《C語(yǔ)言程序設(shè)計(jì)教程第九章習(xí)題答案》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《C語(yǔ)言程序設(shè)計(jì)教程第九章習(xí)題答案》。

      第一篇:C語(yǔ)言程序設(shè)計(jì)教程第九章習(xí)題答案

      1、li

      300.0 chang 30

      200.0 chang

      2、#include struct students {

      char sid[100];

      char name[100];

      float score[3];}student;void main(){

      int i;float j;

      printf(“nPlease input sid:

      ”);

      scanf(“%s”,student.sid);

      printf(“nPlease input name: ”);

      scanf(“%s”,student.name);

      printf(“nPlease input 3 score:(like1,1,1)”);/*輸入逗號(hào)隔開(kāi)*/

      scanf(“%f,%f,%f”,&student.score[0],&student.score[1],&student.score[2]);

      printf(“nsid = %s”,student.sid);

      printf(“nname = %s”,student.name);

      j=(student.score[0]+student.score[1]+student.score[2])/3.0;

      printf(“naverage = %.2f”,j);

      getch();}

      3、#include #include #define F sizeof(student)#define NULL 0 typedef struct scores { int english;int math;int c_language;int all;}TP;typedef struct students { char sid[15];char name[15];TP score;struct students *next;}student;student *input(){ student *head,*p1,*p2;int n=0;char ch;clrscr();head=(student *)malloc(F);head->next=NULL;

      do {

      n++;

      printf(“nnPlease input %d student message:

      nn”,n);

      printf(“t%d student sid:

      ”,n);

      p1=(student *)malloc(F);p1->next=NULL;

      scanf(“%s”,p1->sid);

      printf(“nt%d student name:

      ”,n);

      scanf(“%s”,p1->name);

      printf(“nt%d student scores(englesh,math,c_language):

      ”,n);

      scanf(“%d,%d,%d”,&p1->score.english,&p1->score.math,&p1->score.c_language);

      p1->score.all=p1->score.english+p1->score.math+p1->score.c_language;

      if(n==1)

      { head->next=p1;p2=p1;}

      else

      { p2->next=p1;

      p2=p1;

      }

      printf(“nntttContinue or back(press y/n):

      ”);

      ch=getch();

      }while(ch=='y'||ch=='Y');return head;} void average1(student *head){ student *p;int j;clrscr();p=head->next;

      while(p)

      { j=p->score.all/3;

      printf(“nnname:

      %staverage: %d”,p->name,j);

      p=p->next;

      } printf(“nnnPress eny key return.”);getch();} void average2(student *head){ student *p;int n=0,temp1=0,temp2=0,temp3=0;p=head->next;while(p){ temp1+=p->score.english;

      temp2+=p->score.math;

      temp3+=p->score.c_language;

      p=p->next;n++;} printf(“nnaverage english is : %dnaverage math is : %dnaverage c_language is : %dt”,temp1/n,temp2/n,temp3/n);} student *sort(student *head){ student *head1,*p,*q,*r;int temp1=0,temp2=0,temp3=0,temp4;char s[15],n[15];head1=head;for(p=head1->next;p->next!=NULL;p=p->next){ r=p;

      for(q=p->next;q;q=q->next)

      if(q->score.all>r->score.all)

      r=q;

      if(r!=p)

      { strcpy(s,p->sid);strcpy(n,p->name);

      temp1=p->score.english;

      temp2=p->score.math;

      temp3=p->score.c_language;

      temp4=p->score.all;

      strcpy(p->sid,r->sid);strcpy(p->name,r->name);

      p->score.english=r->score.english;

      p->score.math=r->score.math;

      p->score.c_language=r->score.c_language;

      p->score.all=r->score.all;

      strcpy(r->sid,s);strcpy(r->name,n);

      r->score.english=temp1;

      r->score.math=temp2;

      r->score.c_language=temp3;

      r->score.all=temp4;

      } } return head1;} void output(student *head){ student *head2,*p;int i=1;clrscr();head2=sort(head);for(p=head2->next;p!=NULL;p=p->next)

      printf(“nnname: %stsid: %stenglish: %dtmath: %dtc_language: %dtaverage: %dtmingci: %d”,p->name,p->sid,p->score.english,p->score.math,p->score.c_language,p->score.all/3,i++);

      average2(head);

      printf(“nnnttPress eny key back.”);getch();} void main(){ student *head,*p1,*p2;int i=0,j=1;head=input();do {

      clrscr();

      printf(“nn(1): average1.nn(2): average2.nn(3): sort.nn(4): output.nnn

      Please choose:

      ”);

      scanf(“%d”,&i);

      switch(i)

      { case 1: average1(head);break;

      case 2: clrscr();average2(head);printf(“nnnPress eny key retuen.”);getch();break;

      case 3: clrscr();p1=sort(head);for(p2=p1->next;p2!=NULL;p2=p2->next)printf(“nttname: %stmingci:%d”,p2->name,j++);printf(“nnnPress eny key back.”);getch();break;

      case 4: output(head);break;

      default: printf(“nYour choose is not right.”);break;

      } }while(i!=-1);}

      4、#include #include #define NULL 0 #define F sizeof(worker)typedef struct work { char sid[15];char name[15];int money;struct work *next;}worker;int min=0,max=0;char a[15],b[15];worker *input(){ worker *head,*p,*q;int n=0;char ch;head=(worker *)malloc(F);head->next=0;do { n++;

      p=(worker *)malloc(F);p->next=0;

      printf(“nntPlease input %d worker message :

      ”,n);

      printf(“n%d worker sid:

      ”,n);scanf(“%s”,p->sid);

      printf(“n%d worker name:

      ”,n);scanf(“%s”,p->name);

      printf(“n%d worker money:

      ”,n);scanf(“%d”,&p->money);

      if(n==1)

      {

      head->next=p;q=p;

      max=p->money;strcpy(a,p->name);

      min=p->money;strcpy(b,p->name);

      }

      else

      {

      q->next=p;

      if(p->money>max){max=p->money;strcpy(a,p->name);}

      if(p->moneymoney;strcpy(b,p->name);}

      q=p;

      }

      printf(“ntty/n”);ch=getch();}while(ch=='y'||ch=='Y');return head;} void output(){

      clrscr();printf(“nThe max money is: %dttname is: %snn”,max,a);printf(“nThe min money is: %dttname is: %s”,min,b);} void main(){

      input();output();getch();} 5、6、#include“stdio.h” #define F sizeof(stu)#define NULL 0 typedef struct student { int sid;int average;struct student *next;}stu;stu *head;stu *create(){ stu *p1,*p2;int n=0;char ch;head=(stu *)malloc(F);head->next=NULL;

      do {

      n++;

      printf(“nnPlease input %d student message:

      nn”,n);

      printf(“t%d student sid:

      ”,n);

      p1=(stu *)malloc(F);p1->next=NULL;

      scanf(“%d”,&p1->sid);

      printf(“nt%d student average:

      ”,n);

      scanf(“%d”,&p1->average);

      if(n==1)

      { head->next=p1;p2=p1;}

      else

      { p2->next=p1;

      p2=p1;

      }

      printf(“nntttContinue or back(press y/n):

      ch=getch();

      }while(ch=='y'||ch=='Y');return head;} stu *select(stu *head,int x){ stu *s;s=head->next;while(s){

      if(s->sid==x)

      break;

      s=s->next;} return s;}

      stu *insert(stu *head,int x,int y){ stu *p,*r,*q;clrscr();p=head->next;r=(stu *)malloc(sizeof(stu));r->sid=x;r->average=y;if(p==NULL)/*如果插入空表*/

      {

      p=r;

      r->next=NULL;

      ”);

      printf(“ninsert success!”);

      }

      else

      { while(x>p->sid)/*找到插入的位置,按學(xué)號(hào)大小。(找到位置或者到了表尾都會(huì)跳出循環(huán))*/

      {

      if(p->next==NULL)break;p=p->next;

      }

      if(x

      sid)

      /*插到中間位置*/

      {

      r->sid=p->sid;

      r->average=p->average;

      p->sid=x;

      p->average=y;

      r->next=p->next;

      p->next=r;

      printf(“ninsert success!”);

      }

      else if(x==p->sid)/*學(xué)號(hào)不能相同*/

      printf(“nError--->your input this same sid.”);

      else

      /*插到末尾*/

      {

      p->next=r;

      r->next=NULL;

      printf(“ninsert success!”);

      }

      }

      return head;} stu *get(stu *head,int n)/*得到位置為n的結(jié)點(diǎn)的指針*/ { stu *p;int i;p=head->next;if(n==0)return head;else

      {

      for(i=1;i

      p=p->next;

      return p;} } stu *delete(stu *head,int sid){

      stu *p,*q;int temp=0,i=0;p=head->next;if(!p)

      {

      printf(“nlist is empty.press eny key back.”);getch();return head;}/*表空*/ else { while(p)

      /*查找學(xué)號(hào)為sid的結(jié)點(diǎn)的指針*/

      {i++;/*標(biāo)記學(xué)號(hào)為sid的結(jié)點(diǎn)的位置*/

      if(p->sid==sid)

      {temp=1;break;} /*temp=1標(biāo)記找到了*/

      p=p->next;}

      if(temp==1)/*如果有學(xué)號(hào)為sid的結(jié)點(diǎn)*/

      { q=get(head,i-1);/*得到sid的前一個(gè)結(jié)點(diǎn)的指針*/

      q->next=p->next;

      free(p);

      printf(“nndelete sucess!!”);

      return head;

      }

      else

      /*沒(méi)有找到*/

      { printf(“nnNO this data.n”);

      return head;

      } } } void print(stu *head){ stu *p;p=head->next;if(!p){printf(“nlist is empty.press eny key back.”);getch();} while(p){

      printf(“n%d :t%d ”,p->sid,p->average);

      p=p->next;} } main(){ stu *p1,*p2;char ch1;int n,i=0,j=0;head=create();do {clrscr();printf(“n1.insert.”);printf(“n2.select.”);printf(“n3.delect.”);printf(“n4.print list.”);printf(“n5.EXIT

      ”);printf(“n

      ............choice(1-5).............”);ch1=getch();switch(ch1){

      case '1':

      { clrscr();

      printf(“nplease input insert sid.and average(like 1,1):”);

      scanf(“%d,%d”,&i,&j);

      head=insert(head,i,j);

      printf(“nnnPress eny key back.”);getch();

      break;

      }

      case '2':

      { clrscr();

      printf(“ninput you want to selete sid:

      ”);

      scanf(“%d”,&n);

      p1=select(head,n);

      {

      if(p1)printf(“nsid:%dtaverage:%d”,p1->sid,p1->average);

      else

      printf(“nNo this data.”);

      }

      printf(“nnnPress eny key back.”);getch();

      break;

      }

      case '3':

      { clrscr();printf(“nPlease input you want delete sid: ”);

      scanf(“%d”,&n);

      head=delete(head,n);

      printf(“nnnPress eny key back.”);getch();

      break;

      }

      case '4':

      { clrscr();

      printf(“All information :”);

      print(head);

      printf(“nnnPress eny key back.”);getch();

      break;

      }

      case '5': return;

      default: printf(“nnYour enter is not right.press eny key back.”);getch();}

      }while(n);}

      7、#include #define F sizeof(L)typedef struct list {

      char data;

      struct list *next;}L;L *set_list(){

      L *head,*p1,*p2;

      char c;

      int n=0;

      head=(L *)malloc(F);head->next=0;

      /*建立鏈表*/

      p1=p2=head;

      printf(“nPlease input char(press * finish):”);

      scanf(“%c”,&c);

      while(c!='*')

      {

      n++;

      if(n==1)

      p1->data=c;

      else

      {

      p1=(L *)malloc(F);

      p1->data=c;

      p2->next = p1;

      p2 = p1;

      p1->next = 0;

      }

      scanf(“%c”,&c);

      }

      p1=head;

      while(p1)

      {

      printf(“%c ”,p1->data);p1=p1->next;

      }

      printf(“nnn”);

      return head;} void change_list(L *head1)

      /*算法:p2指向最后一個(gè)元素,p1指向第一個(gè)元素。交換他們的值,p1,p2同時(shí)往中間靠攏。*/ {

      L *p1,*p2,*p3;

      int i,j,k,n=1;

      char temp;

      p1=head1;p2=head1;p3=head1;

      while(p3->next)

      { p3=p3->next;n++;

      }/*求鏈長(zhǎng)*/

      for(i=n;i>(n/2);i--)/*外循環(huán)使p1后移,p2前移。*/

      {

      p2=head1;for(j=1;j

      p2=p2->next;/*p2指向最后一個(gè)元素*/ temp=p1->data;p1->data=p2->data;p2->data=temp;/*交換他們的值*/ p1=p1->next;/*p1向后移*/

      }

      while(head1)

      { printf(“%c ”,head1->data);head1=head1->next;} } void main(){ L *head;head=set_list();change_list(head);getch();}

      第二篇:C語(yǔ)言程序設(shè)計(jì)教程課后習(xí)題答案

      C語(yǔ)言程序設(shè)計(jì)教程課后習(xí)題答案

      第一章 C語(yǔ)言程序設(shè)計(jì)概述 -習(xí)題答案 算法的描述有哪些基本方法?

      1、自然語(yǔ)言

      2、專用工具C語(yǔ)言程序的基本結(jié)構(gòu)是怎樣的?舉一個(gè)例子說(shuō)明。

      1、C語(yǔ)言程序由函數(shù)構(gòu)成;

      2、“/*”與“*/”之間的內(nèi)容構(gòu)成C語(yǔ)言程序的注釋部分;

      3、用預(yù)處理命令#include、#define可以包含有關(guān)文件或預(yù)定義信息;

      4、大小寫字母在C語(yǔ)言中是有區(qū)別的;

      5、除main()函數(shù)和標(biāo)準(zhǔn)庫(kù)函數(shù)外,用戶也可以自己編寫函數(shù),應(yīng)用程序一般由多個(gè)函數(shù)組成,這些函數(shù)指定實(shí)際所需要做的工作。C語(yǔ)言有什么特點(diǎn)?

      1、具有結(jié)構(gòu)語(yǔ)言的特點(diǎn),程序之間很容易實(shí)現(xiàn)段的共享;

      2、主要結(jié)構(gòu)成分為函數(shù),函數(shù)可以在程序中被定義完成獨(dú)立的任務(wù),獨(dú)立地編譯代碼,以實(shí)現(xiàn)程序的模塊化;

      3、運(yùn)算符豐富,包含的范圍很廣;

      4、數(shù)據(jù)類型豐富;

      5、允許直接訪問(wèn)物理地址,即可直接對(duì)硬件進(jìn)行損傷,實(shí)現(xiàn)匯編語(yǔ)言的大部分功能;

      6、限制不太嚴(yán)格,程序設(shè)計(jì)自由度大,這樣使C語(yǔ)言能夠減少對(duì)程序員的束縛;

      7、生成的目標(biāo)代碼質(zhì)量,程序執(zhí)行效率高,同時(shí)C語(yǔ)言編寫的程序的可移植性好。★指出合法與不合法的標(biāo)識(shí)符命名。

      AB12--√ leed_3--a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×說(shuō)明下列Turbo C熱鍵的功能。

      F2:源文件存盤 F10:調(diào)用主菜單 F4:程序運(yùn)行到光標(biāo)所在行(用于調(diào)試程序)Ctrl+F9:編譯并鏈接成可執(zhí)行文件 Alt+F5:將窗口切換到 DOS 下,查看程序運(yùn)行結(jié)果。說(shuō)明下列Turbo C方式下輸入并運(yùn)行下列程序,記錄下運(yùn)行結(jié)果。

      ①main()

      {printf(“********************n”);printf(“ welcome you n”);printf(“ very good n);printf(”********************n“);} ②main()

      { int a,b,c,t;printf(”please input three numbers;“);scanf(”%d,%d,%d“,&a,&b,&c);/*教材S是錯(cuò)誤的*/ t=max(max(a,b),c);printf(”max number is:%dn“,t);} int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);} 答

      運(yùn)行結(jié)果:

      ******************** welcome you very good ******************** 運(yùn)行結(jié)果:

      please input three numbers;3,1,4 /*左側(cè)下劃線內(nèi)容為鍵盤輸入*/ max number is:4 7 一個(gè)C程序是由若干個(gè)函數(shù)構(gòu)成的,其中有且只能有一個(gè)___函數(shù)。

      main()8 在Turbo C環(huán)境下進(jìn)行程序調(diào)試時(shí),可以使用Run下拉菜單的___命令或按___鍵轉(zhuǎn)到用戶屏幕查看程序運(yùn)行結(jié)果。

      1、User screen

      2、Alt+F5 9 ★C語(yǔ)言對(duì)標(biāo)識(shí)符與關(guān)鍵字有些什么規(guī)定?

      1、標(biāo)識(shí)符用來(lái)表示函數(shù)、類型及變量的名稱,它是由字母、下劃線和數(shù)字組成,但必須用字母或下劃線開(kāi)頭。

      2、關(guān)鍵字是一種語(yǔ)言中規(guī)定具有特定含義的標(biāo)識(shí)符,其不能作為變量或函數(shù)名來(lái)使用,用戶只能根據(jù)系統(tǒng)的規(guī)定使用它們。C源程序輸入后是如何進(jìn)行保存的?

      是以C為擴(kuò)展名保存的純文本文件。

      第二章 C語(yǔ)言程序的基本數(shù)據(jù)類型與表達(dá)式 -習(xí)題答案 ★指出下列常數(shù)中哪些是符合C語(yǔ)法規(guī)定的。

      ''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--×請(qǐng)找出下列程序中的錯(cuò)誤,改正后寫出程序運(yùn)行結(jié)果。

      ①void main(){int x,y=z=5,aver;x=7 AVER=(x+y+z)/3 printf(”AVER=%dn“,aver);} ②void main()

      { char c1='a';c2='b';c3='c';int a=3.5,b='A' printf(”a=%db='“endn”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 答

      main(){int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(“AVER=%dn”,aver);}

      運(yùn)行結(jié)果:AVER=5 ②main()

      { char c1='a', c2='b', c3='c';int a=3,b='A';printf(“a=%d,b='%c'”end“n”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);}

      運(yùn)行結(jié)果:a=3,b='A'“end”

      aabcc abc 3 寫出下列賦值的結(jié)果,表格中寫了數(shù)值的是要將它賦給其他類型的變量,將所有的空格填上賦值后的數(shù)據(jù)(實(shí)數(shù)保留到小數(shù)點(diǎn)后兩位)。int 99

      -1 char 'h'

      unsigned int

      float

      55.78

      long int

      答 int 99 104 66 55 68-1 char 'c' 'h' 'B' '7' 'D'

      unsigned int 99 104 66 55 68 65535

      float 99.00 104.00 66.00 55.78 68.00-1.00

      long int 99 104 66 55 68-1

      ★寫出程序運(yùn)行結(jié)果。

      ①void main(){int i,j;i=8,j=10;printf(“%d,%d,%d,%dn”,i,j,++i,j++);} ②main()

      { int a=1,b=2,c=30;;printf(“%d,%d,%d,%dn”,a=b=c,a=b==c,a==(b=c),a==(b==c));} 注意:a=b=c,a=b==c之間應(yīng)為逗號(hào),教材有誤 答

      運(yùn)行結(jié)果: 9,11,9,10 運(yùn)行結(jié)果: 30,1,0,0

      ③void main()

      {int a=10,b=20,c=30,d;d=++a<=10||b-->=20||c++;printf(“%d,%d,%d,%dn”,a,b,c,d);}

      運(yùn)行結(jié)果: 11,19,30,1

      ★寫出下面表達(dá)式的值(設(shè)a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3)

      ⑵n++,a+=a-=a*=a ⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a

      ⑼a+b,18+(b=4)*3,(a/b,a%b)

      ⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾a

      ⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 下列每組表達(dá)式中,被執(zhí)行后結(jié)果完全等價(jià)的是哪些(設(shè)a、b、m是已被賦值的整型變量)?

      ①m=(a=4,4*5)與m=a=4,4*5 ②(float)(a/b)與(float)a/b ③(int)a+b與(int)(a+b)④m%=2+a*3與m=m%2+a*3 ⑤m=1+(a=2)+(b=3)與a=2,b=3,m=1+a+b 答

      ①前面是賦值表達(dá)式,而后面的是一個(gè)逗號(hào)表達(dá)式,所以一定不同;

      ②前面的表達(dá)式中a/b結(jié)果為一整數(shù),結(jié)果已經(jīng)取整,精度可能受到影響,之后強(qiáng)制float后才為浮點(diǎn)型,后面的是先將a轉(zhuǎn)換為float后再與b相除,其值保證了精度,所以不同。

      ③因?yàn)閍、b均為整數(shù),其前后兩個(gè)表達(dá)式的計(jì)算結(jié)果是一致的。

      ④前一表達(dá)式是一算術(shù)表達(dá)式,而后者為一賦值表達(dá)式,此為一點(diǎn)不同;另外,前一表達(dá)式的m只被賦過(guò)一次值,后一表達(dá)式中的m曾兩次被賦值,第一次賦值時(shí)與第一表達(dá)式中的值一致,第二次賦值后即不再相同。⑤前后表達(dá)式的計(jì)算結(jié)果應(yīng)該是一致的:a=2, b=3, m=6 7 條件表達(dá)式x>0?x:-x的功能是什么?

      如果x的值是一正數(shù),則表達(dá)式的值為x值;如果x的值是一非正數(shù),則表達(dá)式的值為-x。其實(shí)該表達(dá)式的值即為x的絕對(duì)值,C語(yǔ)言中提供了一個(gè)函數(shù)fabs(x)即可完成此功能,該函數(shù)包含在math.h頭文件中。用一個(gè)條件表達(dá)式描述從a、b、c中找出最大都賦給max.答

      max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x為int型變量,則執(zhí)行以下語(yǔ)句后x的值為()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下類型說(shuō)明語(yǔ)句: char w;int x;float y;double z;則表達(dá)式w*x+z-y的結(jié)果為()類型。A.float B.char C.int D.double 答 D.第三章 順序結(jié)構(gòu)程序設(shè)計(jì) -習(xí)題答案 變量k為float類型,調(diào)用函數(shù)scanf(“%d”,&k),不能使變量k得到正確數(shù)值的原因是___。

      格式修飾符與變量類型不一致。因?yàn)?d輸入的數(shù)據(jù)類型應(yīng)該為十進(jìn)制整數(shù),而&k為占用4個(gè)字節(jié)的float類型變量的地址。★a=1234,b=12,c=34,則執(zhí)行“printf(“|%3d%3d%-3d|n”,a,b,c);”后的輸出是___。

      |1234 1234 |

      分析如下:

      ①%3d為右對(duì)齊輸出變量,且指定輸出變量的值寬度為3個(gè)字符位,如果變量實(shí)際位數(shù)小于3,則左端補(bǔ)空格,如果變量實(shí)際位數(shù)大于3,則按實(shí)際長(zhǎng)度輸出,不受限制。

      ②%-3d為左對(duì)齊輸出變量,在輸出變量時(shí),如是變量實(shí)際位數(shù)小于3,則在右端補(bǔ)空格,否則按實(shí)際輸出。★設(shè)有“int a=255,b=8;”,則“printf(“%x,%on”,a,b);”輸出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”則輸出為FF,10。說(shuō)明在輸出十六進(jìn)制字母時(shí),其大小寫受格式修飾符的限制,如果是“%x”則輸出小寫,如果是“%X”則輸出大寫。

      ②如果希望在輸出十六進(jìn)制時(shí)輸出前導(dǎo)符0x或0X,則以上輸出語(yǔ)句應(yīng)改“printf(“%#x,%on”,a,b);”為或“printf(“%#X,%on”,a,b);”。本條解釋不必須掌握?!镆韵鲁绦蜉敵龅慕Y(jié)果是___。main(){ int a1=1,a2=0,a3=2;printf(“%d,%d,%dn”,a1,a1+a2+a3,a3-a1);} 答 1,3,1 5 printf函數(shù)中用到格式符%5s,其中5表示輸出字符占用5列。如果字符串長(zhǎng)度大于5,則按___輸出;如果字符串長(zhǎng)度小于5,則按___輸出。

      ①實(shí)際 ②左端補(bǔ)空格 6 ★已定義變量如下: int a1,a2;char c1,c2;若要求輸入a1、a2、c1和c2的值,正確的輸入函數(shù)調(diào)用語(yǔ)句是___。

      scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);7 輸入兩個(gè)整型變量a、b的值,輸出下列算式以及運(yùn)算結(jié)果___。a+b、a-b、a*b、a/b、(float)a/b、a%b 每個(gè)算式占一行。如a=10,b=5,a+b輸出為:10+5=15 答

      設(shè)int a=10,b=5;以下為輸出語(yǔ)句及結(jié)果: ①printf(“%d+%d=%dn”,a,b,a+b);10+5=15 ②printf(“%d-%d=%dn”,a,b,a-b);10-5=5 ③printf(“%d*%d=%dn”,a,b,a*b);10*5=50 ④printf(“%d/%d=%dn”,a,b,a/b);10/5=2 ⑤printf(“%(float)d/%d=%fn”,a,b,(float)a/b);(float)10/5=2.000000 ⑥printf(“%d%%%d=%dn”,a,b,a%b);10%5=0 8 ★輸入一個(gè)非負(fù)數(shù),計(jì)算以這個(gè)數(shù)為半徑的圓周長(zhǎng)和面積。答

      #define PI 3.1415926 main(){ float r,l,area;printf(“Input a positive:”);scanf(“%f”,&r);l=2*PI*r;area=PI*r*r;printf(“l(fā)=%ftarea=%fn”,l,area);} 9 輸入任意一個(gè)3位數(shù),將其各位數(shù)字反序輸出(例如輸入123,輸出321)。

      main(){ int x,y;printf(“Input a number(100-999):”);scanf(“%d”,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意分析此處算法*/

      第三篇:《C語(yǔ)言程序設(shè)計(jì)教程(第二版)》習(xí)題答案

      第1章 程序設(shè)計(jì)基礎(chǔ)知識(shí)

      一、單項(xiàng)選擇題(第23頁(yè))1-4.CBBC 5-8.DACA

      二、填空題(第24頁(yè))

      1.判斷條件 2.面向過(guò)程編程 3.結(jié)構(gòu)化 4.程序 5.面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言 7.有窮性 8.直到型循環(huán) 9.算法 10.可讀性 11.模塊化 12.對(duì)問(wèn)題的分析和模塊的劃分

      三、應(yīng)用題(第24頁(yè))2.源程序:

      main()

      {int i,j,k;/* i:公雞數(shù),j:母雞數(shù),k:小雞數(shù)的1/3 */ printf(“cock hen chickn”);for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)

      if(i+j+k*3==100&&i*5+j*3+k==100)printf(“ %d %d %dn”,i,j,k*3);} 執(zhí)行結(jié)果:

      cock hen chick 4 18 78 8 11 81 12 4 84

      3.現(xiàn)計(jì)算斐波那契數(shù)列的前20項(xiàng)。

      遞推法 源程序:

      main()

      {long a,b;int i;a=b=1;

      for(i=1;i<=10;i++)/*要計(jì)算前30項(xiàng),把10改為15。*/ {printf(“%8ld%8ld”,a,b);a=a+b;b=b+a;}}

      遞歸法 源程序:

      main(){int i;

      for(i=0;i<=19;i++)printf(“%8d”,fib(i));} fib(int i)

      {return(i<=1?1:fib(i-1)+fib(i-2));}

      執(zhí)行結(jié)果:

      1 2 3 5 8 13 21 34 55

      233 377 610 987 1597 2584 4181 6765 4.源程序:

      #include “math.h”;main()

      {double x,x0,deltax;x=1.5;

      do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;

      }while(deltax>1e-12);printf(“%.10fn”,x);} 執(zhí)行結(jié)果:

      1.3247179572

      5.源程序略。(分子、分母均構(gòu)成斐波那契數(shù)列)結(jié)果是32.66026079864 6.源程序:

      main()

      {int a,b,c,m;

      printf(“Please input a,b and c:”);scanf(“%d %d %d”,&a,&b,&c);if(a

      printf(“%d %d %dn”,a,b,c);} 執(zhí)行結(jié)果:

      Please input a,b and c:123 456 789 789 456 123 7.源程序:

      main(){int a;

      scanf(“%d”,&a);

      printf(a%21==0?“Yes”:“No”);} 執(zhí)行結(jié)果:

      Yes 第2章 C語(yǔ)言概述

      一、單項(xiàng)選擇題(第34頁(yè))1-4.BDCB 5-8.AABC

      二、填空題(第35頁(yè))

      1.主 2.C編譯系統(tǒng) 3.函數(shù) 函數(shù) 4.輸入輸出 5.頭 6..OBJ 7.庫(kù)函數(shù) 8.文本

      三、應(yīng)用題(第36頁(yè))

      5.sizeof是關(guān)鍵字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是標(biāo)識(shí)符。

      8.源程序: main(){int a,b,c;

      scanf(“%d %d”,&a,&b);c=a;a=b;b=c;

      printf(“%d %d”,a,b);} 執(zhí)行結(jié)果:34 34 12 第3章 數(shù)據(jù)類型與運(yùn)算規(guī)則

      一、單項(xiàng)選擇題(第75頁(yè))

      1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

      二、填空題(第77頁(yè))

      1.補(bǔ)碼 2.±(10^-308~10^308)3.int(整數(shù))4.單目 自右相左 5.函數(shù)調(diào)用 6.a或b 7.1 8.65,89

      三、應(yīng)用題(第78頁(yè))1.10 9

      2.執(zhí)行結(jié)果: 0 0 12 1 第4章 順序結(jié)構(gòu)程序設(shè)計(jì)

      一、單項(xiàng)選擇題(第90頁(yè))1-5.DCDAD 6-10.BACBB

      二、填空題(第91頁(yè))

      1.一 ;2.5.169000 3.(1)-2002500(2)I=-200,j=2500(3)i=-200 j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf(“%lf%lf%lf”,&a,&b,&c);9.13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種算法不破壞b的值,也不用定義中間變量。)

      三、編程題(第92頁(yè))

      1.仿照教材第27頁(yè)例2-1。

      2.源程序:

      main(){int h,m;

      scanf(“%d:%d”,&h,&m);printf(“%dn”,h*60+m);} 執(zhí)行結(jié)果:

      9:23 563

      3.源程序:

      main()

      {int a[]={-10,0,15,34},i;for(i=0;i<=3;i++)

      printf(“%d370C=%g370Ft”,a[i],a[i]*1.8+32);} 執(zhí)行結(jié)果:

      -10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F 4.源程序:

      main()

      {double pi=3.14***9,r=5;

      printf(“r=%lg A=%.10lf S=%.10lfn”,r,2*pi*r,pi*pi*r);} 執(zhí)行結(jié)果:

      r=5 A=31.4159265359 S=49.3480220054 5.源程序:

      #include “math.h”;main()

      {double a,b,c;

      scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){double s=(a+b+c)/2;

      printf(“SS=%.10lfn”,sqrt(s*(s-a)*(s-b)*(s-c)));} else printf(“Data error!”);} 執(zhí)行結(jié)果:5 6

      SS=9.9215674165 6.源程序:

      main()

      {int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;

      printf(“a=%3d,b=%-4d,c=**%dnd=%gne=%6.2fnf=%-10.4f**n”,a,b,c,d,e,f);} 7.源程序:

      main()

      {int a,b,c,m;

      scanf(“%d %d %d”,&a,&b,&c);m=a;a=b;b=c;c=m;

      printf(“%d %d %dn”,a,b,c);} 執(zhí)行結(jié)果:6 7 6 7 5 8.源程序:

      main(){int a,b,c;

      scanf(“%d %d %d”,&a,&b,&c);

      printf(“average of %d,%d and %d is %.2fn”,a,b,c,(a+b+c)/3.);執(zhí)行結(jié)果: 7 9

      average of 6,7 and 9 is 7.33 9.不能。修改后的源程序如下:

      main()

      {int a,b,c,x,y;

      scanf(“%d %d %d”,&a,&b,&c);x=a*b;y=x*c;

      printf(“a=%d,b=%d,c=%dn”,a,b,c);printf(“x=%d,y=%dn”,x,y);} 第5章 選擇結(jié)構(gòu)程序設(shè)計(jì)

      一、單項(xiàng)選擇題(第113頁(yè))1-4.DCBB 5-8.DABD

      二、填空題(第115頁(yè))1.非0 0 2.k==0

      3.if(abs(x)>4)printf(“%d”,x);else printf(“error!”);

      4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf(“%d”,x);5.k=1(原題最后一行漏了個(gè)d,如果認(rèn)為原題正確,則輸出k=%。)6.8!Right!11 7.$$$a=0 8.a=2,b=

      1三、編程題(第116頁(yè))1.有錯(cuò)。正確的程序如下:

      main(){int a,b,c;

      scanf(“%d,%d,%d”,&a,&b,&c);

      printf(“min=%dn”,a>b?b>c?c:b:a>c?c:a);} 2.源程序:

      main()

      {unsigned long a;scanf(“%ld”,&a);

      for(;a;printf(“%d”,a%10),a/=10);} 執(zhí)行結(jié)果:

      12345 54321

      3.(1)源程序: main(){int x,y;

      scanf(“%d”,&x);if(x>-5&&x<0)y=x;if(x>=0&&x<5)y=x-1;if(x>=5&&x<10)y=x+1;printf(“%dn”,y);}(2)源程序:

      main(){int x,y;

      scanf(“%d”,&x);

      if(x<10)if(x>-5)if(x>=0)if(x>=5)y=x+1;else y=x-1;else y=x;printf(“%dn”,y);}(3)源程序:

      main(){int x,y;

      scanf(“%d”,&x);

      if(x<10)if(x>=5)y=x+1;else if(x>=0)y=x-1;else if(x>-5)y=x;printf(“%dn”,y);}(4)源程序:

      main(){int x,y;

      scanf(“%d”,&x);switch(x/5)

      {case-1:if(x!=-5)y=x;break;case 0:y=x-1;break;case 1:y=x+1;} printf(“%dn”,y);}

      4.本題為了避免考慮每月的天數(shù)及閏年等問(wèn)題,故采用面向?qū)ο蟮某绦蛟O(shè)計(jì)。

      現(xiàn)給出Delphi源程序和C++ Builder源程序。

      Delphi源程序:

      procedure TForm1.Button1Click(Sender: TObject);begin

      edit3.Text:=format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]);end;

      procedure TForm1.FormCreate(Sender: TObject);begin

      Edit2.Text:=datetostr(now);button1click(form1)end;

      C++ Builder源程序: void __fastcall TForm1::Button1Click(TObject *Sender){

      Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+“天”;}

      void __fastcall TForm1::FormCreate(TObject *Sender){

      Edit2->Text=DateToStr(Now());Button1Click(Form1);}

      執(zhí)行結(jié)果:(運(yùn)行于Windows下)http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

      5.源程序:

      main()

      {unsigned a,b,c;

      printf(“請(qǐng)輸入三個(gè)整數(shù):”);

      scanf(“%d %d %d”,&a,&b,&c);

      if(a&&b&&c&&a==b&&a==c)printf(“構(gòu)成等邊三角形n”);else if(a+b>c&&a+c>b&&b+c>a)

      if(a==b||a==c||b==c)printf(“構(gòu)成等腰三角形n”);else printf(“構(gòu)成一般三角形n”);else printf(“不能構(gòu)成三角形n”);} 執(zhí)行結(jié)果:

      請(qǐng)輸入三個(gè)整數(shù):5 6 5 構(gòu)成等腰三角形

      6.源程序:

      main(){int x,y;

      scanf(“%d”,&x);if(x<20)y=1;else switch(x/60)

      {case 0:y=x/10;break;default:y=6;}

      printf(“x=%d,y=%dn”,x,y);} 7.源程序:

      main()

      {unsigned m;float n;scanf(“%d”,&m);if(m<100)n=0;

      else if(m>600)n=0.06;else n=(m/100+0.5)/100;

      printf(“%d %.2f %.2fn”,m,m*(1-n),m*n);} 執(zhí)行結(jié)果:

      450 450 429.75 20.25

      8.2171天(起始日期和終止日期均算在內(nèi))

      本題可利用第4小題編好的程序進(jìn)行計(jì)算。把起始日期和終止日期分別打入“生日”和“今日”欄內(nèi),單擊“實(shí)足年齡”按鈕,將所得到的天數(shù)再加上1天即可。

      9.源程序:

      #include “math.h”;main()

      {unsigned long i;scanf(“%ld”,&i);

      printf(“%ld %dn”,i%10,(int)log10(i)+1);} 執(zhí)行結(jié)果:

      99887 7 5

      10.源程序:

      main()

      {unsigned long i;unsigned j[10],m=0;scanf(“%ld”,&i);

      for(;i;){j[m++]=(i+2)%10;i/=10;} for(;m;m--)i=i*10+j[m-1];printf(“%ldn”,i);} 執(zhí)行結(jié)果:

      6987 8109

      (注:要加密的數(shù)值不能是0或以0開(kāi)頭。如果要以0開(kāi)頭需用字符串而不能是整數(shù)。)第6章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

      一、單項(xiàng)選擇題(第142頁(yè))1-4.BCCB 5-8.CBCA

      二、填空題(第143頁(yè))

      1.原題可能有誤。如無(wú)誤,是死循環(huán) 2.原題有誤。如果把b=1后面的逗號(hào)改為分號(hào),則結(jié)果是8。3.20 4.11 5.2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x

      三、編程題(第145頁(yè))1.源程序:

      main()

      {int i=1,sum=i;

      while(i<101){sum+=i=-i-2;sum+=i=-i+2;} printf(“%dn”,sum);} 執(zhí)行結(jié)果: 51

      2.源程序: main()

      {double p=0,n=0,f;int i;for(i=1;i<=10;i++){scanf(“%lf”,&f);

      if(f>0)p+=f;else n+=f;}

      printf(“%lf %lf %lfn”,p,n,p+n);} 3.源程序:

      main()

      {unsigned a;scanf(“%ld”,&a);

      for(;a;printf(“%d,”,a%10),a/=10);printf(“b n”);} 執(zhí)行結(jié)果:

      23456 6,5,4,3,2 4.源程序:

      main()

      {unsigned long a,b,c,i;scanf(“%ld%ld”,&a,&b);c=a%1000;

      for(i=1;i

      57 009 5.略

      6.原題提供的計(jì)算e的公式有誤(前面漏了一項(xiàng)1)。正確的公式是e= 1 + 1 + 1/2!+ 1/3!+ … + 1/n!+ …(1)源程序:

      main()

      {double e=1,f=1;int n;

      for(n=1;n<=20;n++){f/=n;e+=f;} printf(“e=%.14lfn”,e);} 執(zhí)行結(jié)果:

      e=2.7***05(2)源程序:

      main()

      {double e=1,f=1;int n;

      for(n=1;f>1e-4;n++){f/=n;e+=f;} printf(“e=%.4fn”,e);} 執(zhí)行結(jié)果:

      e=2.7183 7.源程序:

      main()

      {unsigned long a=0,b=1,c=0;int i,d;scanf(“%d”,&d);

      for(i=1;i<=(d+2)/3;i++)

      printf(“%10ld%10ld%10ld”,a,b,(a+=b+c,b+=c+a,c+=a+b));} 本題還可以用遞歸算法(效率很低),源程序如下:

      unsigned long fun(int i)

      {return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);} main()

      {int i,d;scanf(“%d”,&d);for(i=1;i<=d;i++)

      printf(“%10ld”,fun(i));} 執(zhí)行結(jié)果:

      68

      230 423 778 1431 2632 4841 8.源程序:

      main(){int i;

      for(i=1010;i<=9876;i+=2)

      if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(“ %d”,i);} 執(zhí)行結(jié)果:

      1024 1026 1028 1032 1034 1036 …… …… 9874 9876 9.源程序:

      main(){int i,j,k;

      printf(“apple watermelon pearn”);for(i=1;i<=100;i++)for(j=1;j<=10;j++)

      if((k=100-i-j)*2==400-i*4-j*40)printf(“%4d%7d%9dn”,i,j,k);} 執(zhí)行結(jié)果:

      apple watermelon pear 5 5 90 24 4 72 43 3 54 62 2 36 81 1 18 10.源程序:

      #include “stdio.h”;

      #define N 4 /* N為階數(shù),可以改為其他正整數(shù) */ main(){int m=N*2,i,j;

      for(i=1;i

      putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));} 如果把N值改為5,則執(zhí)行結(jié)果如下:

      * *** ***** ******* ********* ******* ***** *** *

      作者:寧西貫通 2006-5-7 23:41 回復(fù)此發(fā)言

      ------------------說(shuō)明

      注意:上面最后一題的輸出結(jié)果應(yīng)該是由星號(hào)組成的一個(gè)菱形,第7章 數(shù) 組

      一、單項(xiàng)選擇題(第192頁(yè))1-4.BBCC 5-8.AABA

      二、填空題(第194頁(yè))

      1.1 2 4 8 16 32 64 128 256 512

      2.①a[age]++ ②i=18;i<26 3.①break ②i==8

      4.①a[i]>b[j] ②i<3 ③j<5

      5.①b[j]=a[j][0] ②b[j]

      三、編程題(第196頁(yè))1.源程序:

      main()

      {int a[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)

      if(i==j||i+j==3)s+=a[i][j];

      printf(“%dn”,s);} /* 注:5×5矩陣不能照此計(jì)算!*/ 執(zhí)行結(jié)果: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 68

      2.源程序:

      main()

      {int i,a[36];a[0]=2;

      for(i=1;i<=29;i++)a[i]=a[i-1]+2;for(;i<=35;i++)a[i]=a[(i-30)*5+2];for(i=0;i<=35;i++)printf(“%dt”,a[i]);} 執(zhí)行結(jié)果: 4 6 8 10 12 14 16 18 20 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 6 16 26 36 46 56 3.源程序:

      #include “stdlib.h” #include “time.h” main()

      {int a[30],i,m=0;randomize();

      for(i=0;i<=29;i++){a[i]=rand();if(m

      for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;printf(“n-----------------n”);for(i=0;i<=29;i++)

      if(~a[i])printf(“%dt”,a[i]);printf(“n”);} 執(zhí)行結(jié)果:

      20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 32499 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210-----------------

      20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210 4.源程序:

      main()

      {int i,n=0,b[16];scanf(“%d”,&i);

      for(;i;i>>=1)b[n++]=i&1;for(;n;)printf(“%d”,b[--n]);} 執(zhí)行結(jié)果:

      9876

      10011010010100

      本題也可以不用數(shù)組。源程序如下:

      #include “stdio.h” main(){int i,n;

      scanf(“%d”,&i);for(n=16;n;n--){asm ROL i,1

      putchar(i&1|48);}

      } /* ROL是循環(huán)左移的匯編指令 */ 5.源程序:

      #include “stdlib.h” #include “time.h” #define M 5 #define N 6 main()

      {int a[M][N],i,j,t[M];randomize();

      /*生成M行N列隨機(jī)數(shù)*/

      for(i=0;i

      printf(“%4d”,a[i][j]=random(50));

      /*找出每行的最小數(shù),t[M]是第M行的最小數(shù)所在的列數(shù)*/ for(i=0;i

      if(a[i][t[i]]>a[i][j])t[i]=j;

      /*比較每個(gè)最小數(shù)在其所在的列上是否也是最小*/ for(j=0;ja[i][t[j]]){t[j]=-1;break;} }

      printf(“-------------------n”);

      /*輸出在行和列上均為最小的數(shù)*/ for(i=0;i

      printf(“a[%d,%d]=%dn”,i,t[i],a[i][t[i]]);}

      執(zhí)行結(jié)果:

      13 20 0 1 20 41 6 16 35 30 3 5 37 8 23 15 6 36 24 29 18 1 1 5 28 21 46 34-------------------a[0,4]=0 a[1,2]=6 a[3,5]=1 a[4,0]=1 6.源程序:

      #include “stdlib.h” #include “time.h” #define M 5 #define N 7 main()

      {int a[M][N],i,j,t=0;randomize();for(i=0;i

      for(j=0;j

      {printf(“%4d”,a[i][j]=random(91)+10);a[i][N-1]+=a[i][j];}

      printf(“%4dn”,a[i][N-1]);} for(i=1;i

      if(a[i][N-1]>a[t][N-1])t=i;if(t)for(j=0;j

      {i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;} printf(“-----------------n”);for(i=0;i

      第7章 數(shù) 組 for(j=0;j

      執(zhí)行結(jié)果:

      17 32 95 35 20 288 39 48 22 27 73 22 231 51 87 39 71 84 46 378 84 94 97 77 27 26 405 69 50 56 89 37 46 347-----------------

      77 27 26 405 39 48 22 27 73 22 231 51 87 39 71 84 46 378 89 17 32 95 35 20 288 69 50 56 89 37 46 347 7.源程序:

      #include “stdlib.h” #include “time.h” #define M 5 #define N 6 main()

      {int a[M][N],i,j;

      struct data{int value,x,y;}max,min;max.value=0;min.value=100;randomize();

      for(i=0;i

      {printf(“%4d”,a[i][j]=random(100)+1);if(max.value

      {max.value=a[i][j];max.x=i;max.y=j;} if(min.value>a[i][j])

      {min.value=a[i][j];min.x=i;min.y=j;} }

      printf(“-----------------n”);

      i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;for(i=0;i

      執(zhí)行結(jié)果:

      65 30 40 30 26 50 6 61 27 47 16 54 58 76 19 57 74 44 92 71 48 73 57 60 32 73 67-----------------

      65 30 92 30 26 50 73 61 27 47 16 54 58 76 19 57 74 44 40 71 48 6 57 60 32 73 67 9.源程序:

      main()

      {char s[255];int i,j,b=1;printf(“Input a string:”);scanf(“%s”,s);i=strlen(s);

      for(j=1;j<=i/2;j++)b=b&&(s[j-1]==s[i-j]);printf(b?“Yesn”:“Non”);} 執(zhí)行結(jié)果:

      Input a string:level Yes

      10.源程序:

      main()

      {char s[255],t,max=0,min=0,l,i;printf(“Input a string(length>4):”);gets(s);l=strlen(s);

      for(i=0;i

      {if(s[max]s[i])min=i;}

      t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;t=s[l-2];s[l-2]=s[min];s[min]=t;printf(“%sn”,s);} 執(zhí)行結(jié)果:

      Input a string(length>4):C++Builder Cu+Beild+r 11.源程序:

      main()

      {char m[13][10]={“****”,“January”,“February”,“March”, “April”,“May”,“June”,“July”,“August”,“September”, “October”,“November”,“December”};int i,j,k,a,s,n;

      printf(“Please input an integer(100..999):”);scanf(“%d”,&n);

      printf(“%d:%d+%d+%d=%d, %d%%13=%d, %sn”, n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);} 執(zhí)行結(jié)果:

      Please input an integer(100..999):539 539:5+3+9=17, 17%13=4, April 第8章 函 數(shù)

      一、單項(xiàng)選擇題(第241頁(yè))

      1-5.BCCAA 6-10.CCDDD 11-15.ACACB

      二、填空題(第243頁(yè))

      1.看不出原題的意圖。因?yàn)橐?jì)算1~n的累加和,n應(yīng)是一個(gè)≥1的正整數(shù)??墒穷}目中卻出現(xiàn)了n=0的情況。除非另加規(guī)定當(dāng)n=0時(shí)1~n的累加和為0,或者把原題中的計(jì)算式改為計(jì)算0~n的累加和。據(jù)此猜測(cè),原題應(yīng)填為:①return(0)②return(n+sum(n-1))根據(jù)題意,如下程序較為合理:

      int sum(int n)

      {if(n<=0)return(-1);/*-1是出錯(cuò)標(biāo)志 */ else if(n==1)return(1);else return(n+sum(n-1));}

      2.①return(1)②return(n*facto(n-1))

      三、編程題(第244頁(yè))3.源程序:

      main()

      {int i,a,b,c;

      for(i=100;i<999;i++)

      if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)printf(“%dt”,i);} 執(zhí)行結(jié)果:

      153 370 371 407

      8.源程序(非遞歸算法):

      #define P 13 /* P可以改為其他正整數(shù) */

      main()

      {int a[P],r,c;

      for(r=0;r<=P;r++){a[r]=1;

      for(c=r-1;c>=1;a[c--]+=a[c-1]);printf(“%*d”,(P-r)*3+1,a[0]);

      for(c=1;c<=r;printf(“%6d”,a[c++]));printf(“n”);} }

      執(zhí)行結(jié)果:

      (應(yīng)該排列成一個(gè)三角形,是貼吧造成現(xiàn)在這個(gè)樣子的,不是程序有問(wèn)題)1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1

      126 84 36 9 1

      210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 9.源程序(遞歸算法):

      #include “stdio.h”

      void printOCT(unsigned long n){unsigned long i;

      if(i=n>>3)printOCT(i);putchar((n&7)+48);} main()

      {unsigned long i;scanf(“%ld”,&i);printOCT(i);} 執(zhí)行結(jié)果:

      1234567890 11145401322

      本題也可以不用遞歸算法,源程序請(qǐng)參考第7章第三題4?;貜?fù):【C語(yǔ)言】《C語(yǔ)言程序設(shè)計(jì)教程(第二版)》習(xí)題答案

      但是不同時(shí)間印刷的版本課后題不太一樣呢,象我們的是1999年12月第2版,2005年12月第69次印刷的。沒(méi)有選擇填空,應(yīng)用題和樓主不知道有多少相同的,因?yàn)榭床坏皆}。這個(gè)比較麻煩呢。

      作者:210.77.204.* 2006-5-9 18:38 回復(fù)此發(fā)言

      ------------------回復(fù):【C語(yǔ)言】《C語(yǔ)言程序設(shè)計(jì)教程(第二版)》習(xí)題答案

      你對(duì)照一下主編和出版社,看看對(duì)嗎?(見(jiàn)說(shuō)明的第一條。)14 第9章 指 針

      一、單項(xiàng)選擇題(第276頁(yè))

      1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

      二、填空題(第278頁(yè))1.①int * ②*z

      2.*p++

      3.①'