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

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

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

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

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

      C語言程序設(shè)計教程_楊路明__課后習(xí)題答案

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

      第一篇:C語言程序設(shè)計教程_楊路明__課后習(xí)題答案

      C語言程序設(shè)計教程 楊路明 課后習(xí)題答案 北京郵電大學(xué)出

      版社

      第一章

      1、算法描述主要是用兩種基本方法:第一是自然語言描述,第二是使用專用工具進(jìn)行算法描述

      2、c語言程序的結(jié)構(gòu)如下:

      ①c語言程序由函數(shù)組成,每個程序必須具有一個main函數(shù)作為程序的主控函數(shù)。②“/*”與“*/”之間的內(nèi)容構(gòu)成c語言程序的注釋部分。③用預(yù)處理命令#include可以包含有關(guān)文件的信息。④大小寫字母在c語言中是有區(qū)別的。

      ⑤除main函數(shù)和標(biāo)準(zhǔn)庫函數(shù)以外,用戶可以自己編寫函數(shù),程序一般由多個函數(shù)組成,這些函數(shù)制定實際所需要做的工作。例如: void main()int a,b,c,s;a=8;b=12;c=6;s=a b*c;printf(“s=%d”,s);

      3、c語言的特點(diǎn):

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

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

      ③c語言運(yùn)算符豐富,運(yùn)算包含的范圍很廣; ④c語言數(shù)據(jù)類型豐富。

      ⑤c語言允許直接訪問物理地址,即可直接對硬件進(jìn)行操作,實現(xiàn)匯編語言的大部分功能; ⑥c語言語法限制不太嚴(yán)格,程序設(shè)計自由度大,這樣是c語言能夠減少對程序員的束縛; ⑦用c語言編程,生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,可移植性好;

      4、合法標(biāo)識符:AB12、leed_

      3、EF3_

      3、_762、PAS、XYZ43K2 不合法標(biāo)識符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D

      5、F2:將當(dāng)前編輯器中文件存盤 F10:調(diào)用主菜單

      F4:程序運(yùn)行到光標(biāo)所在行

      Ctrl F9:當(dāng)前編輯環(huán)境下,進(jìn)行編譯、連接且運(yùn)行程序; Alt F5:將窗口切換到DOS下,查看程序運(yùn)行結(jié)果

      6、(1): ******************** welcome you very good ********************(2): please input three number;5,7,8 max number is:8

      7、main

      8、User screen、Alt F5

      9、標(biāo)識符必須是字母或下劃線開頭,大小寫字母含義不同。由數(shù)字、字母和下劃線組成; 關(guān)鍵字是一種語言中規(guī)定具有特定含義的標(biāo)識符。關(guān)鍵字不能作為變量或函數(shù)名來使用,用戶只能根據(jù)系統(tǒng)的規(guī)定使用它們。

      10、選擇主菜單File項下拉子菜單中Save項或直接按F2鍵存盤。

      第二章

      1、符合C語法規(guī)定的常數(shù)為:0x1e、“ab”、1.e5

      2、(1): 錯誤如下:int x,y=5,z=5,aver;x=7;aver =(x y x)/3;結(jié)果如下:AVER=5(2): 錯誤如下:char c1='a',c2='b',c3='c';printf(“a=?=__end”,a,b);結(jié)果如下:a=3b='A'“end” aabcc abc3、4、(1):9,11,9,10(2):3,1,0,0(3):11,19,31,1

      5、(1):0(2):0(3):9.500000(4):90(5):10(6):10(7):65(8):4(9):4.500000(10):1(11):0(12):20(13):0

      6、(5)

      7、求x的絕對值

      8、c>(max=a>b?a:b)?c:max;

      9、B

      10、D

      第三章

      1、輸入函數(shù)scanf的參數(shù)錯誤,應(yīng)該為:scanf(“%f”,&k);

      2、|1234 1234 |

      3、ff10 4、1,3,1

      5、原字符串

      左邊加空格再加字符串本省,字符個數(shù)總和為5個

      6、scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);

      7、printf(“a b=%d”,a b);printf(“a-b=%d”,a-b);printf(“a*b=%d”,a*b);printf(“a/b=%d”,a/b);printf(“(float)a/b=%f”,(float)a/b);printf(“a%b=%d”,a%b);

      8、void main()float r;float s,c;printf(“please input the number:”);scanf(“%f”,&r);if(r>=0)s = 3.14*r*r;c = 2*3.14*r;printf(“s = %f, c = %f”,s,c);else printf(“you input number is error!”);

      9、void main()int n;printf(“please input the number:”);scanf(“%d”,&n);if(n>=100 && n printf(“%d%d%d”,n_,(n/10)_,n/100);else printf(“you input number is error!”);

      10、void main()int i,j,k;scanf(“%d,%d,%d”,&i,&j,&k);((i%2!= 0?1:0)(j%2!= 0?1:0)(k%2!= 0?1:0))== 2?printf(“YES”):printf(“NO”);

      11、void main()char a;scanf(“%c”,&a);printf(“%c,%c,%c”,a-1,a,a 1);printf(“%d,%d,%d”,a-1,a,a 1);

      12、void main()float a,b,c,s,Area;scanf(“%f,%f,%f”,&a,&b,&c);if(a b > c || a c > b || b c >a)s =(a b c)/2;Area = sqrt(s*(s-a)*(s-b)*(s-c));printf(“%f”,Area);else printf(“you input the number is error!”);

      第四章

      1: 0 2: 20 3:(x20)||(x 4: ***a=25,b=14,c=16*** 5: 37 6: if(a else printf(“2”);

      7、#include void main()char a,b,t1,t2;scanf(“%c,%c”,&a,&b);t1=a>b?a:b;t2=a if((t1-t2)%2==0)printf(“%c,%c”,a 1,b 1);else printf(“%c,%c”,a-1,b-1);getch();

      8、#include void main()int temp1=0,temp2=0,x,y,i=1;printf(“Please input(x,y): ”);scanf(“%d,%d”,&x,&y);while((i*y)if(x==(i*y))temp1=1;break;temp2=i;i;if(temp1)printf(“%d / %d = %d”,x,y,i);else printf(“%d / %d---> shang=%d,yushu=%d”,x,y,temp2,x-y*temp2);getch();

      9、#include void main()float x,y,m=0,n=0;scanf(“%f,%f”,&x,&y);n=(x-2)*(x-2);m=(y-2)*(y-2);if((m n)printf(“(%.3f,%.3f)In the yuan”,x,y);else printf(“(%.3f,%.3f)out of the yuan”,x,y);getch();

      10、#include void main()int temp=0,month,year;printf(“Please input(year,month): ”);scanf(“%d,%d”,&year,&month);

      if((year@0==0)||(year%4==0&&year_0!=0))temp=1;if(month==2)if(temp)printf(“%d year %d month have 29 ”,year,month);else printf(“%d year %d month have 28 ”,year,month);else if(month%2==0)printf(“%d year %d month have 30 ”,year,month);else printf(“%d year %d month have 31 ”,year,month);getch();

      11、switch(a/10)case 5:m=4;break;case 4:m=3;break;case 3:m=2;break;case 2:m=1;break;default:m=5;

      12、方法一: #include void main()int x,y;scanf(“%d”,&x);if(x-5)y=x-1;else if(x==0)y=x;else if(x>0&&x y=x 1;printf(“%d”,y);getch();方法二: #include void main()int x,y;scanf(“%d”,&x);if(x-5)if(x==0)y=x;else if(x>0&&x else y=x-1;printf(“%d”,y);else printf(“Input error!!”);getch();方法三: #include void main()int x,y,i;scanf(“%d”,&x);if(x-5)if(x==0)i=1;else if(x>0&&x else i=3;else i=4;switch(i)case 1:y=x;printf(“%d”,y);break;case 2:y=x 1;printf(“%d”,y);break;case 3:y=x-1;printf(“%d”,y);break;case 4:printf(“Input error!”);break;getch();

      第五章

      1、void main()int n,value;int i,count=0;float average = 0;long int sum = 0;scanf(“%d”,&n);for(i = 0;i scanf(“%d”,&value);if(value%2 == 0)sum =value;count;average = sum /(float)count;printf(“the average is %f”,average);

      2、#include “stdio.h” void main()char ch;int zm = 0, sz = 0;ch = getchar();while(ch!= '*')if((ch >= 'A' && ch = 'a' && ch zm;if(ch >= '0' && ch sz;ch = getchar();printf(“zm = %d;sz = %d”,zm,sz);

      3、void main()long i_value;int sum = 0;int temp = 0;scanf(“%ld”,&i_value);if(i_value for(;;)temp = i_value_;i_value = i_value/10;sum =temp;printf(“%d ”,temp);if(i_value == 0)break;printf(“=%d”,sum);

      4、#include “stdio.h” void main()char ch;ch = getchar();while(ch!= '.')if((ch >= 'A' && ch ch = ch 32;putchar(ch);else if((ch >= 'a' && ch ch = ch1;printf(“Total steps: %d”, steps);return 0;

      8、main()int i,j,k,n;printf(“the narcissus number is:”);for(n=100;n i=n/100;j=n/10-i*10;k=n_;if(i*i*i j*j*j k*k*k==n)printf(“%d”,n);

      9、main()float i,j,temp,n,sum;int t;i=2;j=1;sum=0;scanf(“%d”,&t);for(n=1;n sum=sum i/j;temp=i;i=i j;j=temp;printf(“2/1 3/2 5/3 8/5 13/8...=%f”,sum);

      10、void main()int nWidth,a,b;scanf(“%d”,&nWidth);for(a=(nWidth%2);a for(b=0;b char chOut =' ';int nleft =(nWidth-a)/2;int nright =(nWidth a)/2;if(b>=nleft&&b chOut ='*';printf(“%c”,chOut);printf(“");r

      11、void main()int i=1,j=1;for(i=1;i for(j=1;j printf(”%d*%d=%d“,i,j,i*j);printf(”“)

      12、#include ”stdio.h“ void main()char c;//count1是正數(shù)的個數(shù) //count2是負(fù)數(shù)的個數(shù) int count1=0,count2=0;//sum1是正數(shù)之和 //sum2是負(fù)數(shù)之和 int sum1=0,sum2=0;int flage = 0;c=getchar();while(c!= '*')if(c == '-')flage = 1;if(flage == 0)sum1 =(c-48);count1;else if(c!= '-')sum2-=(c-48);flage=0;count2;c = getchar();printf(”%d,%d“,count1,count2);printf(”%f,%f“,sum1/count1,sum2/count2);

      13、void main()int i,j;int s = 0;for(i = 100;i s = 0;for(j=1;j if(i%j == 0)s = s j;if(s == i)printf(”]“,i);

      14、#include #include void main()int n;long k = 1;float e = 1;n = 1;clrscr();while(fabs(1.0/k)>= 0.000001)n;e = e 1.0/k;k = k * n;printf(”%f“,e);

      15、#include ”math.h“ main()float x0,x1,x2,f0,f1,f2;x1=-10;f1=2*x1*x1*x1-4*x1*x1 3*x1;x2=10;f2=2*x2*x2*x2-4*x2*x2 3*x2;do x0=(x1 x2)/2;f0=2*x0*x0*x0-4*x0*x0 3*x0;if((f0*f1)x2=x0;f2=f0;else x1=x0;f1=f0;while(fabs(f0)>1e-6);printf(”______2*x*x*x-4*x*x 3*x=0______:n“);printf(”the root is %f“,x0);

      第六章

      1、#include int divisor(int a,int b)int r;while((r=a%b)!=0)a=b;b=r;return b;int multiple(int a,int b)int d;d=divisor(a,b);return a*b/d;void main()int a,b,c,d;printf(”intput(a,b): “);scanf(”%d,%d“,&a,&b);c=divisor(a,b);d=multiple(a,b);printf(”=%d=%d“,c,d);

      2、#include void tongji(char a[])int b[3]=0,0,0,i=0;while(a[i]!='')if((a[i]=65)||(a[i]=97))b[0];else if(a[i]=48)b[1];else b[2];i;printf(”zimu have: %d;shuzi have: %d;qita have: %d“,b[0],b[1],b[2]);getch();void main()char a[100];printf(”Please input a string: “);gets(a);tongji(a);

      3、#include int flower(int n)int x=0,i,j,k;i=(n_);j=(n/10_);k=(n/100);x=i*i*i j*j*j k*k*k;if(x==n)return 1;else return 0;void main()int i,n;printf(”Please intput n: “);scanf(”%d“,&n);if(n>999||n else for(i=100;i if(flower(i))printf(”%d “,i);getch();

      4、#include #define SWAP(a,b)t=b;b=a;a=t;main()float x,y,t;printf(”Enter two number(x,y): “);scanf(”%f,%f“,&x,&y);SWAP(x,y);printf(”:x=%f,y=%f“,x,y);getch();

      5、#include int fib(int n)int p;if(n==0)p=0;else if(n==1)p=1;else p=fib(n-1)fib(n-2);return p;void main()int n;printf(”Please input fib: “);scanf(”%d“,&n);printf(”=%d“,fib(n));

      6、#include long fac(int n)long f;if(n==0)f=1;else f=n*fac(n-1);return f;void main()int m,n;long f;printf(”Please input(m,n): “);scanf(”%ld,%ld“,&m,&n);f=fac(n m)fac(n);printf(”=%ld“,f);

      7、#include void list()int i,j;for(i=1;i for(j=1;j printf(”%d*%d=%d “,i,j,i*j);printf(”“);void main()list();

      8、#include int he(int n)int i,s=0;for(i=1;i if(n%i==0)s =i;return s;void main()int i,j;for(i=1;i for(j=1;j if((he(i)==j)&&(he(j)==i)&&(i!=j))printf(”%d%d “,i,j);

      9、#include #define max 100 struct work long sid;char name[15];worker[max];int size=0;struct work *set_list()do printf(”input(sid,name): “);scanf(”%ld,%s“,&worker[size].sid,worker[size].name);size;while(worker[size-1].sid!=0);return worker;void paixu(struct work a[])int i,j,k;long t;char v[15];for(i=0;i k=i;for(j=i;j if(a[i].sid>a[j].sid)k=j;if(k!=i)t=a[i].sid;a[i].sid=a[j].sid;a[j].sid=t;strcpy(v,a[i].name);strcpy(a[i].name,a[j].name);strcpy(a[j].name,v);for(i=0;i printf(”sid: %ld:%s“,a[i].sid,a[i].name);getch();void select(struct work a[])int i=0,found=1;long num;printf(”Input select sid: “);scanf(”%ld“,&num);for(i=0;i if(a[i].sid==num)found=0;printf(”%ld: %s“,num,a[i].name);break;if(found)printf(”this sid!!“);getch();void main()struct work *p;p=set_list();paixu(p);select(p);

      10、#include float jiecheng(int n)long s=1;int i;for(i=1;i s=s*i;return s;float chengfang(float x,int n)float s=1;int i;for(i=1;i s=s*x;return s;float f(float x,int n)float s=1,t=0;int i=1,j=-1;for(i=1;i t=j*chengfang(x,2*i)/jiecheng(2*i);s =t;j=j*j;return s;main()float s1=0,s2=0,s3=0,s4=0,x=5.6;int n=7;s1=f(x,n);s2=f(x 2.3,n);s3=f(x-3.2,n 3);s4=s1/(s2 s3);printf(”%f“,s4);getch();

      第七章

      1:(1)D(2)A(3)D(4)B(5)D 2:(1)1 5 4 4 6 7 8 2 3 4(2)6333 3:(1)a[8]=data;k>=0 a[k]=temp break k(2)”%s“ str[i]

      4、/*題目:求一組成績的平均分?jǐn)?shù)以及高于平均分的成績。*/ #include #define max 100 void main()float a[max],s=0,average=0;int i,n;printf(”Please input N: “);/*輸入要處理元素的個數(shù)*/ scanf(”%d“,&n);printf(”input %d ge shu: “,n);/*輸入90,85,92,77,80,62*/ for(i=0;i scanf(”%f“,&a[i]);s =a[i];average = s / n;printf(”= %.2f“,average);/*輸出81.00*/ for(i=0;i if(a[i]>average)printf(”%.2f “,a[i]);/*輸出90.00,85.00,92.00*/

      5、/*題目:編寫程序,輸入一組整數(shù),將他們排序后由小到大輸出。*/ #include #define max 100 void main()int a[max],j,i,k=0,t=0,n=0;printf(”Please input N: “);/*輸入要處理元素的個數(shù)*/ scanf(”%d“,&n);for(i=0;i scanf(”%d“,&a[i]);for(i=0;i k=i;for(j=i 1;j if(a[k]>a[j])k=j;if(k!=i)/*元素排序前下標(biāo)與排序后下標(biāo)不符,則交換其值*/ t=a[i];a[i]=a[k];a[k]=t;printf(”“);for(i=0;i printf(”%d “,a[i]);

      6、/*題目:從鍵盤輸入一個4x4的整數(shù)矩陣,以主對角線(┪猿浦?/ /*將左下角元素中較大者替換右上角元素,并將右上角含對稱軸輸出。*/ #include #include void main()int d[4][4]=0,0,0,0,i,j;clrscr();printf(”input 16 num: “);for(i=0;i for(j=0;j scanf(”%d“,&d[i][j]);for(i=0;i for(j=0;j if(d[i][j]>d[j][i])/*左下角元素大于右上角元素則交換*/ d[j][i]=d[i][j];for(i=0;i printf(”“);/*為了保持每行的間隔與每列的相同*/ for(j=0;j if(j>=i)printf(”%d“,d[i][j]);/*為了使位數(shù)不同的數(shù)輸出依然保持三角型* else printf(”“);

      7、*題目:輸入一個3x4的二維數(shù)組,然后分別按行和按列輸出。*/ #include #include void main()int d[3][4]=0,0,0,0,i,j;printf(”Please input 12 num: “);for(i=0;i for(j=0;j scanf(”%d“,&d[i][j]);printf(”hang: “);for(i=0;i for(j=0;j printf(”%d “,d[i][j]);

      / printf(” lie: “);for(i=0;i for(j=0;j printf(”%d “,d[j][i]);

      8、/*題目:編寫程序,將兩個字符串連接起來,不用strcat函數(shù)。*/ #include #include void main()char s1[50],s2[50];int i=0,j=0,t=0;printf(”Input one: “);gets(s1);while(s1[i]!='')i;/*統(tǒng)計s1中字符個數(shù)*/ printf(”second: “);gets(s2);while(s2[j]!='')j;/*統(tǒng)計s2中字符個數(shù)*/ for(t=0;t s1[i]=s2[t];i;printf(” second: “);puts(s1);

      9、/*輸入一行字符串,統(tǒng)計字符對ab的個數(shù)。*/ #include #include #define MAX 100 void main()char str[MAX];int i=0,flage=0;int count=0;printf(”input a string: “);gets(str);while(str[i])if(str[i]=='a')flage=1;else if(str[i]=='b')if(flage==1)count;flage=0;else flage=0;i;printf(”the double char ab count is %d“,count);

      10、#include /*相對于第一種方法,這種方法能把同為最大的字符串全部打印出來。*/#include int paixu(int a[],int n)/*構(gòu)造對長度為n的數(shù)組排序的函數(shù)*/ int i,j,t,k,temp;for(i=0;i k=i;for(j=i 1;j if(a[k]>a[j])k=j;if(k!=i)t=a[i];a[i]=a[k];a[k]=t;temp=a[n-1];return temp;/*返回最大字符串的長度的值*/ void main()char str1[50],str2[50],str3[50],str4[50],str5[50],str6[50];char str7[50],str8[50],str9[50],str10[50];int count[10]=0,temp[10]=0,i,j;int paixu(int a[],int n);for(i=1;i printf(”input %d string: “,i);if(i==1)gets(str1);while(str1[count[0]])count[0];temp[0];if(i==2)gets(str2);while(str2[count[1]])count[1];temp[1];if(i==3)gets(str3);while(str3[count[2]])count[2];temp[2];if(i==4)gets(str4);while(str4[count[3]])count[3];temp[3];if(i==5)gets(str5);while(str5[count[4]])count[4];temp[4];if(i==6)gets(str6);while(str6[count[5]])count[5];temp[5];if(i==7)gets(str7);while(str7[count[6]])count[6];temp[6];if(i==8)gets(str8);while(str8[count[7]])count[7];temp[7];if(i==9)gets(str9);while(str9[count[8]])count[8];temp[8];if(i==10)gets(str10);while(str10[count[9]])count[9];temp[9];j=paixu(temp,10);for(i=1;i if(count[i-1]==j)/*只要字符串長度與最大長度相等就打印出來*/ switch(i)case 1:puts(str1);printf(”“);break;case 2:puts(str2);printf(”“);break;case 3:puts(str3);printf(”“);break;case 4:puts(str4);printf(”“);break;case 5:puts(str5);printf(”“);break;case 6:puts(str6);printf(”“);break;case 7:puts(str7);printf(”“);break;case 8:puts(str8);printf(”“);break;case 9:puts(str9);printf(”“);break;case 10:puts(str10);printf(”“);break;

      11、/*給數(shù)組a輸入m個按升序排列的數(shù),給數(shù)組b輸入n個按降序排列的數(shù)*/ /*將a與b中的元素按降序排列存在數(shù)組c中。*/ #include void main()int a[100],b[100],c[100],i,m,n,j,k,temp=0,s;printf(”= “);scanf(”%d“,&m);/*確定M的個數(shù)*/ printf(”= “);scanf(”%d“,&n);/*確定N的個數(shù)*/ printf(”input m ge shu: “);for(s=0;s scanf(”%d“,&a[s]);printf(”input n ge shu: “);for(s=0;s scanf(”%d“,&b[s]);i=m-1;j=0;k=0;/*i,j,分別標(biāo)記a[]與b[]且都是從最大元素開始做標(biāo)記*/ for(;;)if(i==0)/*a[]中只有一個數(shù)或者a[]處理到了最后一個元素*/ if(a[i] else c[k]=a[i];k;for(;;)/*把b[]數(shù)組接到c[]后面*/ c[k]=b[j];j;k;if(j==n)/*如果b[]處理完,結(jié)束。并做標(biāo)記temp=1*/ temp=1;break;if(temp==1)break;/*標(biāo)記temp=1,全部處理結(jié)束*/ if((a[i] c[k]=b[j];j;k;if((a[i]>b[j])&&(i!=0)&&(j!=n))c[k]=a[i];i--;k;if(j==n)/*b[]處理到完*/ for(;;)/*把b[]數(shù)組接到c[]后面*/ if(i==0)

      /*如果a[]處理完,結(jié)束c[k]=a[i];temp=1;break;c[k]=a[i];i--;k;if(temp==1)break;/*標(biāo)記temp=1,全部處理結(jié)束*/ for(s=0;s printf(”%d ",c[s]);getch();

      并做標(biāo)記temp=1*/。

      第二篇:C語言程序設(shè)計教程(第2版)課后習(xí)題答案楊路明

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

      1、自然語言

      2、專用工具

      C語言程序的基本結(jié)構(gòu)是怎樣的?舉一個例子說明。

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

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

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

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

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

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

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

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

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

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

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

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

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

      F2:源文件存盤 F10:調(diào)用主菜單 F4:程序運(yùn)行到光標(biāo)所在行(用于調(diào)試程序)Ctrl+F9:編譯并鏈接成可執(zhí)行文件 Alt+F5:將窗口切換到 DOS 下,查看程序運(yùn)行結(jié)果。說明下列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是錯誤的*/ 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 一個C程序是由若干個函數(shù)構(gòu)成的,其中有且只能有一個___函數(shù)。

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

      1、User screen

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

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

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

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

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

      ''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--× 請找出下列程序中的錯誤,改正后寫出程序運(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ù)點(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)為逗號,教材有誤

      運(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é)果完全等價的是哪些(設(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á)式,而后面的是一個逗號表達(dá)式,所以一定不同;

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

      ④前一表達(dá)式是一算術(shù)表達(dá)式,而后者為一賦值表達(dá)式,此為一點(diǎn)不同;另外,前一表達(dá)式的m只被賦過一次值,后一表達(dá)式中的m曾兩次被賦值,第一次賦值時與第一表達(dá)式中的值一致,第二次賦值后即不再相同。

      ⑤前后表達(dá)式的計算結(jié)果應(yīng)該是一致的:a=2, b=3, m=6 7 條件表達(dá)式x>0?x:-x的功能是什么?

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

      max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x為int型變量,則執(zhí)行以下語句后x的值為()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下類型說明語句:

      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è)計 -習(xí)題答案 變量k為float類型,調(diào)用函數(shù)scanf(“%d”,&k),不能使變量k得到正確數(shù)值的原因是___。

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

      |1234 1234 | 分析如下:

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

      ②%-3d為左對齊輸出變量,在輸出變量時,如是變量實際位數(shù)小于3,則在右端補(bǔ)空格,否則按實際輸出?!镌O(shè)有“int a=255,b=8;”,則“printf(“%x,%on”,a,b);”輸出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”則輸出為FF,10。說明在輸出十六進(jìn)制字母時,其大小寫受格式修飾符的限制,如果是“%x”則輸出小寫,如果是“%X”則輸出大寫。②如果希望在輸出十六進(jìn)制時輸出前導(dǎo)符0x或0X,則以上輸出語句應(yīng)改“printf(“%#x,%on”,a,b);”為或“printf(“%#X,%on”,a,b);”。本條解釋不必須掌握。★以下程序輸出的結(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列。如果字符串長度大于5,則按___輸出;如果字符串長度小于5,則按___輸出。

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

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

      設(shè)int a=10,b=5;以下為輸出語句及結(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 ★輸入一個非負(fù)數(shù),計算以這個數(shù)為半徑的圓周長和面積。答

      #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 輸入任意一個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;/*注意分析此處算法*/ printf(“%d--->%dn”,x,y);} 10 ★輸入任意大小的3個整數(shù),判斷其中是否有兩個奇數(shù)一個偶數(shù)。若是則輸出YES,不是則輸 出NOT(要求用條件表達(dá)式進(jìn)行判斷,不使用if語句)。

      main(){ int x,y,z,oddcount=0;/*奇數(shù)數(shù)計數(shù)變量*/ printf(“Input x,y,z:”);scanf(“%d,%d,%d”,&x,&y,&z);x%2==1?oddcount++:0;y%2==1?oddcount++:0;z%2==1?oddcount++:0;oddcount==2?printf(“YES”):printf(“NOT”);} 11 求前驅(qū)字符和后繼字符。輸入一個字符,找出它的前驅(qū)字符和后繼字符,并按ASCII碼值,按從大到小的順序輸出這3個字符及其對應(yīng)的ASCII碼值。

      本題考查同學(xué)們對字符類型數(shù)據(jù)的認(rèn)識,如果在ASCII范圍內(nèi)則即可以顯示為字符,又可以顯示為整數(shù)值;無論是否能夠顯示為字符,字符類型數(shù)據(jù)是可能參與數(shù)值運(yùn)算的,切記。main(){ char c;printf(“Input character:”);scanf(“%c”,&c);printf(“%c----->%dn”,c-1,c-1);printf(“%c----->%dn”,c,c);printf(“%c----->%dn”,c +1,c+1);getch();/*為便于調(diào)試程序,運(yùn)行至此程序停頓,此時可以看到運(yùn)行結(jié)果,按任意鍵程序真難得結(jié)束并返回到編輯環(huán)境*/ } 12 ★輸入三角形的邊長,求三角形面積(面積=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2)。

      #include“math.h” /*由于程序中使用了開平方函數(shù)sqrt(),所以需要包含數(shù)學(xué)頭文件*/ main(){ float a,b,c,s,area;int ok=0;printf(“Input a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);a+b>c?ok++:0;/*以下3條語句為判斷是否輸入的數(shù)據(jù)是否構(gòu)成封閉三角形*/ a+c>b?ok++:0;b+c>a?ok++:0;ok==3?(s=(a+b+c)/2,area=sqrt(s*(s-a)*(s-b)*(s-c)),printf(“area=%f”,area)):printf(“error”);getch();}

      第四章 選擇結(jié)構(gòu)程序設(shè)計 -習(xí)題答案 ★設(shè)x、t均為int型變量,則執(zhí)行語句“x=10;t=x&&x>10;”后,t的值為___。

      答 0 2 ★假定所有變量均已正確定義,則程序段: int a=0, y=10;if(a=0)y--;else if(a>0)y++;else y+=y;運(yùn)行后 y 的值是___;

      答 20 3 ★能表述 20

      x>20&&x<30||+x<-100 4 ★若有定義語句“int a=25,b=14,c=19;”,則以下語句執(zhí)行結(jié)果是___。if(a<=25 && b<=2 && c)printf(“***a+b=%d, a-b=%d***n”, a+b, a-b);else printf(“***a=%d, b=%d, c=%d***n”,a, b, c);答

      ***a=25, b=14, c=19*** 5 ★假定 i 和 j 為 int 型變量,則執(zhí)行以下語句后 i 的值是___。int i=1;switch(i){ case 1: { for(j=0;j<9;j++)i+=j;break;} case 2: { for(j=1;j<10;j++)i+=j;break;} case 3: i++;} 答 37 分析:執(zhí)行了case 1: 和case 3: 中的代碼。同時case 1:語句中的{ }是可以取消的?!镆韵聝蓷l if 語句可合并成一條 if 語句,即___。

      if(a<=b)x=1;else y=2;if(a>b)printf(“***y=%dn”, y);else printf(“***x=%dn”,x);答

      if(a<=b)printf(“***x=%dn”,x=1);else printf(“***y=%dn”, y=2);7 ★輸入兩個字符,若這兩個字符的序號(ASCII碼)之差為偶數(shù),則輸出它們的后繼字符,否則輸出它們的前驅(qū)字符。

      main(){ char a,b;printf(“Input two chatacter a,b:”);scanf(“%c,%c”,&a,&b);if((a-b)/2==0)printf(“%c,%c”,a+1,b+1);else printf(“%c,%c”,a-1,b-1);} 8 ★輸入整數(shù) a 和 b,如果 a 能被 b 整除,就輸出算式和商,否則輸出算式、整數(shù)商和余數(shù)。答

      main(){ int a,b;printf(“Input two integer numbers a,b:”);scanf(“%d,%d”,&a,&b);if(b!=0&&a%b==0)printf(“%d/%d=%d”,a,b,a/b);else printf(“%d/%d=%d......%d”,a,b,a/b,a%b);} 9 輸入某個點(diǎn) A 的平面坐標(biāo)(x,y),判斷(輸出)A點(diǎn)是在圓內(nèi)、圓外還是在圓周上,其中圓心坐標(biāo)為(2,2),半徑為 1。

      include“math.h” main(){ float x,y,d;printf(“Input x,y:”);scanf(“%f,%f”,&x,&y);d=sqrt((x-2)*(x-2)+(y-2)*(y-2));if(d>1)printf(“outside”);else if(d<1)printf(“inside”);else printf(“inside”);} 10 ★輸入年號和月份,輸出這一年該月的天數(shù)(一個年份,先判斷是否閏年)。

      main(){ int y,m,d,f;printf(“Input year and month y-m:”);scanf(“%d-%d”,&y,&m);f=(y%4==0&&y/100!=0||y/400==0);if(m==2)d=28+f;/*依據(jù)是否閏年決定2月份的實際天數(shù),若是閏年,則f=1,d即為29天*/ else d=31-(m==4)+(m==6)+(m==9)+(m==11);/*m==4時其值為1,則本月為30天,典型算法,重要啊*/ printf(“%d-%d is %d days.n”,y,m,d);} 11 ★請將以下語句改寫成 switch 語句(a>0)。if(a<30)m=1;else if(a<40)m=2;else if(a<50)m=3;else if(a<60)m=4;else m=5 答

      switch(a/10){ case 1: case 2: case 3:m=1;break;case 4:m=2;break;case 5:m=3;break;case 6:m=4;break;default:m=5;} 12 有一函數(shù)

      x-1-5

      使用不嵌套的 if 語句程序如下: main(){ float x,y;printf(“Input x:”);scanf(“%f”,&x);if(x>-5&&x<0)y=x-1;if(x==0)y=0;if(x>0&&x<8)y=x+1;printf(“y=%fn”,y);}

      使用嵌套的 if 語句程序如下: main(){ float x,y;scanf(“%f”,&x);if(x>-5&&x<8)if(x<0)y=x-1;else if(x==0)y=0: else y=x+1;printf(“y=%fn”,y);} main()float x,y;scanf(“%f”,&x);if(x<8)if(x>0)y=x+1;else if(x==0)y=0;else if(x>-5)y=x-1;printf(“y=%fn”,y);} 使用多分支語句程序如下:

      main(){ float x,y;int m;printf(“Input x:”);scanf(“%f”,&x);if(x>-5&&x<8)if(x<0)m=-1;else if(x==0)m=0: else m=1;switch(m){ case-1:y=x-1;break;case 0:y=0;break;case 1:y=x+1;break;} printf(“y=%fn”,y);}

      以下為假設(shè)對int類型的變量進(jìn)行處理,但畢竟不算完美 main(){ int x,y;printf(“Input x:”);scanf(“%d”,&x);switch(x){ case-4: case-3: case-2: case-1: y=x-1;break;case 0: y=0;break;case 1: case 2: case 3: case 4: case 5: case 6: case 7: y=x+1;break;} printf(“y=%dn”,y);} 第五章 循環(huán)結(jié)構(gòu)程序設(shè)計 -習(xí)題答案 ★輸入 n 個整數(shù),求這 n 個數(shù)之中的偶數(shù)平均值,并輸出。

      main(){ int n,i,x,sum=0,count=0;printf(“Input n:”);scanf(“%d”,&n);for(i=0;i

      #include“stdio.h” main(){ char ch;int charcnt=0,numcnt=0;while((ch=getchar())!='*'){ if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')charcnt++;if(ch>='0'&&ch<='9')numcnt++;} printf(“Characters number:%dnDigits number:%dn”,charcnt,numcnt);getch();} 3 ★從鍵盤輸入一個正整數(shù) n,計算該數(shù)的各位數(shù)字之和并輸出。例如,輸入數(shù)是5246,則計算5+2+4+6=17并輸出。答

      #include“stdio.h” main(){ int n,i,sum=0,count=0;printf(“Input n:”);scanf(“%d”,&n);while((n/10)!=0){ count++;sum+=n%10;printf(“%d+”,n%10);n/=10;} printf(“=%d”,sum+n);getch();} 4 ★輸入一個字符串,將其中的大寫字母改為小寫字母,小寫字母改為大寫字母,然后輸出。

      #include“stdio.h” main(){ char ch;printf(“Input string:”);while((ch=getchar())!='n'){ if(ch>='a'&&ch<='z')printf(“%c”,ch-32);if(ch>='A'&&ch<='Z')printf(“%c”,ch+32);} getch();} 5 設(shè)某縣2000年工業(yè)總產(chǎn)值為200億元,如果該縣預(yù)計平均年工業(yè)總產(chǎn)值增長率為4.5%,那么多少年后該縣年工業(yè)總產(chǎn)值將超500億元。

      main(){ float x=200;int n=0;do { x*=(1+0.045);n++;}while(x<500);printf(“n=%d”,n);getch();} 6 ★輸出1~999中能被3整除,而且至少有一位數(shù)字是5的所有數(shù)字。答

      main(){ int x,y,flag;for(x=1;x<1000;x++){ flag=0;y=x;if(y%3==0)/*余數(shù)為0說明該數(shù)能夠被3整除*/ { while(y%10!=0){ if(y%10==5)flag=1;/*依個位、十位、百位順序判斷是否余數(shù)為5*/ y/=10;} if(flag==1)printf(“%dt”,x);} } getch();} 7 求愛因斯坦數(shù)學(xué)題。有一條長階,若每步跨2階,則最后剩1階,若每步跨3階,則最后剩2階,若每步跨5階,則最后剩4階每步跨6階,則最后剩5階每步跨7階,最后正好1階。

      main(){ int x=0,flag=0;while(1){ x++;if(x%2==1)if(x%3==2)if(x%5==4)if(x%6==5)if(x%7==0){ printf(“%d”,x);break;} } getch();} 8 輸入一個3位數(shù),判斷是否是一個“水仙花數(shù)”。水仙花數(shù)是指3位數(shù)的各位數(shù)字的立方和等于這個3位數(shù)本身。例如,153=1*1*1+5*5*5+3*3*3 答

      main(){ int x,a,b,c;printf(“Input number:”);scanf(“%d”,&x);a=x/100;/*變量a中記錄x的百位數(shù)字*/ b=x/10%10;/*變量b中記錄x的十位數(shù)字*/ c=x%10;/*變量c中記錄x的個位數(shù)字*/ if(a*a*a+b*b*b+c*c*c==x){ printf(“%d=%d*%d*%d+%d*%d*%d+%d*%d*%dn”,x,a,a,a,b,b,b,c,c,c);printf(“YES”);} else printf(“NOT”);getch();} 9 ★計算斐波那契分?jǐn)?shù)序列前n項之和(n是某個常數(shù),波那契分?jǐn)?shù)序列為2/1,3/2,5/3,8/5,...)。

      main(){ int i,n=10;float f1=1,f2=2,f,sum=0;for(i=0;i

      main(){ int n,i,j;printf(“Input n:”);scanf(“%d”,&n);for(i=0;i

      main(){ int i,j;for(i=1;i<=9;i++){ for(j=1;j<=i;j++)printf(“%d*%d=%-3d”,j,i,i*j);printf(“n”);} getch();} 12 輸入一串字符,直到輸入一個星號為止,統(tǒng)計(輸出)其中的正整數(shù)和負(fù)整數(shù)個數(shù)以及所有正整數(shù)的平均值和所有負(fù)整數(shù)的平均值。

      #include“stdio.h” #include“math.h” main(){ char ch;int x=0,y=1,f=0,pcnt=0,ncnt=0;float psum=0,nsum=0;while((ch=getchar())!='*'){ if(ch=='-'){ if(x!=0){ if(f==1){ x=-x;nsum+=x;ncnt++;} else { psum+=x;pcnt++;} printf(“%dn”,x);} f=1;x=0;y=1;continue;} else if(ch>='0'&&ch<='9'){ x=10*x+ch-'0';y=10*y;if(x!=0&&10*x

      main(){ int k1, k2, k3, k4, k5, k6, k7, k8, k9, k10;int i,a,n,s;for(a = 100;a <= 999;a++){ n = 0;/* n累計因子的個數(shù) */ s = a;/* s存放未求出的因子之和,初值為被測數(shù)本身 */ for(i = 1;i < a;i++)if(a % i == 0)/* 由i到a循環(huán)檢測i是否為a的因子 */ { n++;/* 找到一個因子 */ s = s-i;/* 減去已找到的因子 */ switch(n)/* 將找到的因子賦紿k1, k2,...*/ { case 1 : k1 = i;break;case 2 : k2 = i;break;case 3 : k3 = i;break;case 4 : k4 = i;break;case 5 : k5 = i;break;case 6 : k6 = i;break;case 7 : k7 = i;break;case 8 : k8 = i;break;case 9 : k9 = i;break;case 10 : k10 = i;break;} } if(s == 0)/* 已經(jīng)找到全部因子 */ { printf(“%d Its factors are ”, a);if(n > 1)printf(“%d,%d”, k1, k2);/* n>1表示a至少有2個因子 */ if(n > 2)printf(“,%d”, k3);/* 注意以下if的用法,追加的方法 */ if(n > 3)printf(“,%d”, k4);if(n > 4)printf(“,%d”, k5);if(n > 5)printf(“,%d”, k6);if(n > 6)printf(“,%d”, k7);if(n > 7)printf(“,%d”, k8);if(n > 8)printf(“,%d”, k9);if(n > 9)printf(“,%d”, k10);printf(“n”);} } getch();} 14 ★編寫程序按下列公式計算e的值(精度為1e-6)。e=1+1/1!+1/2!+1/3!...+1/n!答

      main(){ int i;double e=0,t=1;for(i=1;t>0.000001;i++){ for(j=1;j<=i;j++)t*=j;t=1/t;e+=t;} printf(“e=%fn”,e);getch();} 15 用二分法求方程2x3-4x2+3x=0在(-10,10)附近的根(二分法:先找到a、b,使f(a)、f(b)異號,說明在區(qū)間(a,b)內(nèi)一定有零點(diǎn),然后求f[(a+b)/2],現(xiàn)在假設(shè)f(a)<0,f(b>0,a

      #include“math.h” main(){ double x,fx,fa,fb,a=-10,b=10,z=0.0001;fa=2*a*a*a-4*a*a+3*a;fb=2*b*b*b-4*b*b+3*b;if(fa*fb<0){ do { x=(a+b)/2;fx=2*x*x*x-4*x*x+3*x;if(fx<0){ a=x;fa=2*a*a*a-4*a*a+3*a;} else { b=x;fb=2*b*b*b-4*b*b+3*b;} }while(fabs(fa-fb)>z);printf(“The root is:%lfn”,x);} getch();}

      第六章 函數(shù)與編譯預(yù)處理 -習(xí)題答案 ★寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結(jié)果。兩個整數(shù)由鍵盤輸入。

      main(){ unsigned int m,n,p,q;for(;;){ printf(“m,n=”);scanf(“%d,%d”,&m,&n);if(m<0||n<0){printf(“The end.n”);break;} p=funp(m,n);q=funq(m,n);printf(“p(%d,%d)=%dnq(%d,%d)=%dn”,m,n,p,m,n,q);} } int funp(int m,int n){ int i;if(m>n){i=m;m=n;n=i;} for(i=m;i>0;i--)if(m%i==0&&n%i==0)return(i);} int funq(int m,int n){ int i;if(m

      未制作函數(shù),主要利用了選擇語句結(jié)構(gòu):

      #include“stdio.h” main(){ int i,c,zm=0,sz=0,kg=0,qt=0;printf(“Input a string:”);while((c=getchar())!='n')if(c==' ')kg++;else if(c>47&&c<58)sz++;else if(c>='A'&&c<='Z'||c>='a'&&c<='z')zm++;else qt++;printf(“am=%d,sz=%d,kg=%d,qt=%dn”,zm,sz,kg,qt);}

      制作函數(shù),利用函數(shù)調(diào)用: #include“stdio.h” int analys(char ch);main(){ int i,zm=0,sz=0,qt=0,c;printf(“Input a string:”);while((c=getchar())!='n'){ i=analys(c);switch(i){ case 1: zm++;break;case 2: sz++;break;case 3: qt++;} } printf(“zm=%d,sz=%d,qt=%dn”,zm,sz,qt);} int analys(char ch){ if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')return 1;if(ch>47&&ch<58)return 2;return 3;} 3 ★按照第5章第8題的要求編寫判斷水仙花數(shù)的函數(shù),從主函數(shù)輸入正整數(shù)n,在主函數(shù)中調(diào)用判斷水仙花數(shù)的函數(shù),找出n以內(nèi)所有的水仙花數(shù)。

      【輸入一個3位數(shù),判斷是否是一個“水仙花數(shù)”。水仙花數(shù)是指3位數(shù)的各位數(shù)字的立方和等于這個3位數(shù)本身。例如,153=1*1*1+5*5*5+3*3*3】

      main(){ int x,i,f;printf(“Input number:”);scanf(“%d”,&x);for(i=0;i<=x;i++){ f=0;f=fun(i);if(f==1)printf(“%dt”,i);} getch();} int fun(int x){ int a,b,c;a=x/100;b=x/10%10;c=x%10;if(a*a*a+b*b*b+c*c*c==x)return 1;else return 0;} 4 ★定義一個宏,實現(xiàn)將兩個數(shù)互換,并寫出程序,輸入兩個數(shù)作為使用參數(shù),并顯示結(jié)果。

      #define f(a,b)(a=a+b,b=a-b,a=a-b)main(){ int x,y;printf(“Input x,y:”);scanf(“%d,%d”,&x,&y);printf(“%d,%d”,x,y);f(x,y);printf(“<-->%d,%dn”,x,y);getch();} 5 已知二階Fibonacci數(shù)列:

      0 若n=0 Fib(n)= 1 若n=1 Fib(n-1)+Fib(n-2)其它情況 定義遞歸函數(shù)求Fib(n)。

      main(){ int i,n;printf(“Input n:”);scanf(“%d”,&n);for(i=0;i<=n;i++)printf(“%dt”,fib(i));getch();} int fib(int n){ if(n==0)return 0;else if(n==1)return 1;else return(fib(n-1)+fib(n-2));} 6 定義函數(shù)求F=(n+m)!+n!,m、n均為任意正整數(shù)。要求使用遞歸調(diào)用。

      long int f(int x);main(){ int i,m,n;long int sum;printf(“Input m,n:”);scanf(“%d,%d”,&m,&n);sum=f(n+m)+f(n);printf(“%ld”,sum);getch();} long int f(int x){ int i,j;if(x==0||x==1)return 1;else return(x*f(x-1));} 7 ★定義一個函數(shù)完成第5章第11題的功能。【輸出九九乘法表?!?/p>

      main(){ fun();getch();} fun(){ int i,j;for(i=1;i<=9;i++){ for(j=1;j<=i;j++)printf(“%d*%d=%-3d”,j,i,i*j);printf(“n”);} } 8 如果有兩個數(shù),每一個數(shù)的所有約數(shù)(除了它本身以外)的和正好等于對方,則稱這兩個數(shù)為互滿數(shù),求出30000以內(nèi)所有的互滿數(shù),并顯示輸出,求一個數(shù)它的所有約數(shù)(除了它本身以處)的和,用函數(shù)實現(xiàn)。

      main(){ int x,y;for(x=1;x<30000;x++){ for(y=1;y

      ★設(shè)計程序完成下列計算。

      已經(jīng):y=f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3))其中:f(x,n)=1-x2/2!+x4/4-...+(-1)n·x2n/(2n)!(n≥0)當(dāng): x=5.6, n=7時,求:y 要求通過嵌套調(diào)用完成計算。

      #include float f(float x,int n);float f1(float x,int m);float f2(int m);main(){ float x=5.6,y;int n=7,i;y=1+f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3));printf(“y=%fnn”,y);} float f(float x,int n){ float sum=0.0;int i;for(i=1;i<=n;i++){ sum+=f1(-1,i)*f1(x,2*i)/f2(2*i);} return sum;} float f1(float x,int m){ int i;float y=1.0;for(i=1;i<=m;i++)

      { y*=x;} return y;} float f2(int m){ int i;float y=1;for(i=1;i<=m;i++){ y*=i;} return y;}

      第七章 數(shù)

      組 -習(xí)題答案 ★以下各題中,選擇一個正確的答案。

      1、能正確對一維數(shù)組 a 中所有元素進(jìn)行初始化的是()。

      A.int a[5]={ } B.int a[ ]={0} C.int a[5]=0,0,0,0,0 D.int a[5]={0}

      2、有說明 int k=3,a[10];則下列可以正確引用數(shù)組元素的表達(dá)式是()。A.a[k] B.a[10] C.a[1,3] D.a[3*5]

      3、有定義 int d[ ][3]={1,2,3,4,5,6};執(zhí)行語句printf(“%c”,d[1][0]+'A');結(jié)果是()。

      A.A B.B C.D D.E

      4、有定義 char c='A',ch[20]={'a','b','c','