【程式設計】C語言範例100題 - 科技始終來自於人性

文章推薦指數: 80 %
投票人數:10人

1.程式分析:分行與列考慮,共9行9列,i控制行,j控制列。

2.程式源代碼: #include "stdio.h" main() { int i,j,result; printf ... 關閉廣告 科技始終來自於人性 跳到主文 喜歡健身 出國旅遊 喜歡美食 享受世界 部落格全站分類:數位生活 相簿 部落格 留言 名片 Oct12Fri201819:09 【程式設計】C語言範例100題 【程式1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位元數?都是多少? 1.程式分析:可填在百位、十位元、個位的數字都是1、2、3、4。

組成所有的排列後再去       掉不滿足條件的排列。

  2.程式源代碼: main() { inti,j,k; printf("n"); for(i=1;i<5;i++)    /*以下為三重迴圈*/  for(j=1;j<5;j++)    for(k=1;k<5;k++)    {     if(i!=k&&i!=j&&j!=k)   /*確保i、j、k三位互不相同*/     printf("%d,%d,%dn",i,j,k);    } } ============================================================== 【程式2】 題目:企業發放的獎金根據利潤提成。

利潤(I)低於或等於10萬元時,獎金可提10%;利潤高    于10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可哥提    成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於    40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於    100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數? 1.程式分析:請利用數軸來分界,定位。

注意定義時需把獎金定義成長整型。

       2.程式源代碼: main() { longinti; intbonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15;  if(i<=100000)   bonus=i*0.1;  elseif(i<=200000)      bonus=bonus1+(i-100000)*0.075;     elseif(i<=400000)         bonus=bonus2+(i-200000)*0.05;        elseif(i<=600000)            bonus=bonus4+(i-400000)*0.03;           elseif(i<=1000000)               bonus=bonus6+(i-600000)*0.015;              else               bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); }  ============================================================== 【程式3】 題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少? 1.程式分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後       的結果滿足如下條件,即是結果。

請看具體分析: 2.程式源代碼: #include"math.h" main() { longinti,x,y,z; for(i=1;i<100000;i++)  {x=sqrt(i+100);  /*x為加上100後開方後的結果*/   y=sqrt(i+268);  /*y為再加上168後開方後的結果*/    if(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/     printf("n%ldn",i);  } } ============================================================== 【程式4】 題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 1.程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊       情況,閏年且輸入月份大於3時需考慮多加一天。

2.程式源代碼: #include #include  intmain(void) { intday,month,year,sum,leap; printf("npleaseinputyear,month,dayn"); scanf("%d,%d,%d",&year,&month,&day); switch(month) //先計算某月以前月份的總天數 { case1: sum=0; break; case2: sum=31; break; case3: sum=59; break; case4: sum=90; break; case5: sum=120; break; case6: sum=151; break; case7: sum=181; break; case8: sum=212; break; case9: sum=243; break; case10: sum=273; break; case11: sum=304; break; case12: sum=334; break; default: printf("dataerror"); break; } sum=sum+day; //再加上某天的天數 if(year%400==0||((year%4==0)&&(year%100!=0))) //判斷是不是閏年 leap=1; else leap=0; if(leap==1&&month>2) //如果是閏年且月份大於2,總天數應該加一天 sum++; printf("Itisthe%dthday.",sum); getch(); return0; }============================================================== 【程式5】 題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

1.程式分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,       然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

2.程式源代碼: main() { intx,y,z,t; scanf("%d%d%d",&x,&y,&z); if(x>y) {t=x;x=y;y=t;}/*交換x,y的值*/ if(x>z) {t=z;z=x;x=t;}/*交換x,z的值*/ if(y>z) {t=y;y=z;z=t;}/*交換z,y的值*/ printf("smalltobig:%d%d%dn",x,y,z); } ============================================================== 【程式6】 題目:用*號輸出字母C的圖案。

1.程式分析:可先用'*'號在紙上寫出字母C,再分行輸出。

2.程式源代碼: #include"stdio.h" main() { printf("HelloC-world!n"); printf("****n"); printf("*n"); printf("*n"); printf("****n"); } ============================================================== 【程式7】 題目:輸出特殊圖案,請在c環境中運行,看一看,VeryBeautiful! 1.程式分析:字元共有256個。

不同字元,圖形不一樣。

       2.程式源代碼: #include"stdio.h" main() { chara=176,b=219; printf("%c%c%c%c%cn",b,a,a,a,b); printf("%c%c%c%c%cn",a,b,a,b,a); printf("%c%c%c%c%cn",a,a,b,a,a); printf("%c%c%c%c%cn",a,b,a,b,a); printf("%c%c%c%c%cn",b,a,a,a,b);} ============================================================== 【程式8】 題目:輸出9*9口訣。

1.程式分析:分行與列考慮,共9行9列,i控制行,j控制列。

2.程式源代碼: #include"stdio.h" main() {  inti,j,result;  printf("n");  for(i=1;i<10;i++)   {for(j=1;j<10;j++)     {      result=i*j;      printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3位*/     }    printf("n");/*每一行後換行*/   } } ============================================================== 【程式9】 題目:要求輸出國際象棋棋盤。

1.程式分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

2.程式源代碼: #include"stdio.h" main() { inti,j; for(i=0;i<8;i++)  {   for(j=0;j<8;j++)    if((i+j)%2==0)     printf("%c%c",219,219);    else     printf("");    printf("n");  } } ==============================================================  【程式10】 題目:列印樓梯,同時在樓梯上方列印兩個笑臉。

  1.程式分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。

2.程式源代碼: #include"stdio.h" main() { inti,j; printf("11n");/*輸出兩個笑臉*/ for(i=1;i<11;i++)  {  for(j=1;j<=i;j++)   printf("%c%c",219,219);  printf("n");  } } ==============================================================  【程式11】 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月    後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... 2.程式源代碼: #include  #include intmain(void) { longf1,f2; inti; f1=f2=1; for(i=1;i<=20;i++) {printf("%12ld%12ld",f1,f2); if(i%2==0)printf("n");/*控制輸出,每行四個*/ f1=f1+f2;/*前兩個月加起來賦值給第三個月*/ f2=f1+f2;/*前兩個月加起來賦值給第三個月*/ } getch(); return0; }============================================================== 【程式12】 題目:判斷101-200之間有多少個素數,並輸出所有素數。

1.程式分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,       則表明此數不是素數,反之是素數。

       2.程式源代碼: #include"math.h" main() {  intm,i,k,h=0,leap=1;  printf("n");  for(m=101;m<=200;m++)   {k=sqrt(m+1);    for(i=2;i<=k;i++)      if(m%i==0)       {leap=0;break;}    if(leap){printf("%-4d",m);h++;         if(h%10==0)         printf("n");        }    leap=1;   }  printf("nThetotalis%d",h); } ============================================================== 【程式13】 題目:列印出所有的“水仙花數”,所謂“水仙花數”是指一個三位元數,其各位數字立方和等於該數    本身。

例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。

1.程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。

2.程式源代碼: main() { inti,j,k,n; printf("'waterflower'numberis:");  for(n=100;n<1000;n++)  {   i=n/100;/*分解出百位*/   j=n/10%10;/*分解出十位*/   k=n%10;/*分解出個位*/   if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)    {    printf("%-5d",n);    }  } printf("n"); } ============================================================== 【程式14】 題目:將一個正整數分解質因數。

例如:輸入90,列印出90=2*3*3*5。

程式分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:  (1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。

(2)如果n<>k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,  重複執行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。

2.程式源代碼: /*zhengintisdividedyinshu*/ main() { intn,i; printf("npleaseinputanumber:n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++)  {   while(n!=i)  //if省略,只能除一次而已   {    if(n%i==0)    {printf("%d*",i);     n=n/i;    //算式    }    else     break;   } } printf("%d",n);} ============================================================== 【程式15】 題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,    60分以下的用C表示。

1.程式分析:(a>b)?a:b這是條件運算符的基本例子。

2.程式源代碼: main() {  intscore;  chargrade;  printf("pleaseinputascoren");  scanf("%d",&score);  grade=score>=90?'A':(score>=60?'B':'C');//括號可省略,可指定範圍內的值為參數  printf("%dbelongsto%c",score,grade); } ============================================================== 【程式16】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

1.程式分析:利用輾除法。

  2.程式源代碼: main() {  inta,b,num1,num2,temp;  printf("pleaseinputtwonumbers:n");  scanf("%d,%d",&num1,&num2);  if(num1  {temp=num1;   num1=num2;    num2=temp;  } a=num1;b=num2; while(b!=0)/*利用輾除法,直到b為0為止*/  {   temp=a%b;   a=b;   b=temp;  } printf("gongyueshu:%dn",a); printf("gongbeishu:%dn",num1*num2/a); } ============================================================== 【程式17】 題目:輸入一行字元,分別統計出其中英文字母、空格、數位和其他字元的個數。

1.程式分析:利用while語句,條件為輸入的字元不為'n'.        2.程式源代碼: #include"stdio.h" main() {charc;  intletters=0,space=0,digit=0,others=0;  printf("pleaseinputsomecharactersn");  while((c=getchar())!='n')    //setinput(重要)  {  if(c>='a'&&c<='z'||c>='A'&&c<='Z')   letters++;  elseif(c=='')   space++;    elseif(c>='0'&&c<='9')        digit++;      else        others++; } printf("allinall:char=%dspace=%ddigit=%dothers=%dn",letters, space,digit,others); } ============================================================== 【程式18】 題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。

例如2+22+222+2222+22222(此時    共有5個數相加),幾個數相加有鍵盤控制。

1.程式分析:關鍵是計算出每一項的值。

2.程式源代碼: main() {  inta,n,count=1;  longintsn=0,tn=0;  printf("pleaseinputaandnn");  scanf("%d,%d",&a,&n);  printf("a=%d,n=%dn",a,n);  while(count<=n)  {   tn=tn+a;   sn=sn+tn;   a=a*10;   ++count;  } printf("a+aa+...=%ldn",sn); }                                                     //輸出怪怪的 ============================================================== 【程式19】 題目:一個數如果恰好等於它的因數之和,這個數就稱為“完數”。

例如6=1+2+3.編程    找出1000以內的所有完數。

1.程式分析:請參照程式0)  {x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/  x2=x1;  //x2=x1=1,4,10...倒推  day--;  } printf("thetotalis%dn",x1); } ============================================================== 【程式22】 題目:兩個乒乓球隊進行比賽,各出三人。

甲隊為a,b,c三人,乙隊為x,y,z三人。

已抽籤決定    比賽名單。

有人向隊員打聽比賽的名單。

a說他不和x比,c說他不和x,z比,請編程式找出    三隊賽手的名單。

  1.程式分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,       則表明此數不是素數,反之是素數。

       2.程式源代碼: main() { chari,j,k;/*i是a的對手,j是b的對手,k是c的對手*/ for(i='x';i<='z';i++)  for(j='x';j<='z';j++)  {  if(i!=j)   for(k='x';k<='z';k++)   {if(i!=k&&j!=k)    {if(i!='x'&&k!='x'&&k!='z')    printf("orderisa--%ctb--%ctc--%cn",i,j,k);    }   }  } } ============================================================== 【程式23】  題目:列印出如下圖案(菱形) * *** ****** ******** ****** *** * 1.程式分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利用雙重       for迴圈,第一層控制行,第二層控制列。

  2.程式源代碼: main() { inti,j,k; for(i=0;i<=3;i++)  {  for(j=0;j<=2-i;j++)   printf("");  for(k=0;k<=2*i;k++)   printf("*");  printf("n");  } for(i=0;i<=2;i++)  {  for(j=0;j<=i;j++)   printf("");  for(k=0;k<=4-2*i;k++)   printf("*");  printf("n");  } } ============================================================== 【程式24】  題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。

1.程式分析:請抓住分子與分母的變化規律。

  2.程式源代碼: main() { intn,t,number=20; floata=2,b=1,s=0; for(n=1;n<=number;n++)  {  s=s+a/b;  t=a;a=a+b;b=t;/*這部分是程式的關鍵,請讀者猜猜t的作用*/  } printf("sumis%9.6fn",s); } ============================================================== 【程式25】  題目:求1+2!+3!+...+20!的和 1.程式分析:此程式只是把累加變成了累乘。

  2.程式源代碼: main() { floatn,s=0,t=1; for(n=1;n<=20;n++)  {  t*=n;  s+=t;  } printf("1+2!+3!...+20!=%en",s); } ============================================================== 【程式26】  題目:利用遞迴方法求5!。

1.程式分析:遞迴公式:fn=fn_1*4! 2.程式源代碼: #include"stdio.h" main() { inti; intfact(); for(i=0;i<5;i++)  printf("40:%d!=%dn",i,fact(i)); } intfact(j) intj; { intsum; if(j==0)  sum=1; else  sum=j*fact(j-1); returnsum; } ============================================================== 【程式27】  題目:利用遞迴函數調用方式,將所輸入的5個字元,以相反順序列印出來。

1.程式分析: 2.程式源代碼: #include"stdio.h" main() { inti=5; voidpalin(intn); printf("40:"); palin(i); printf("n"); } voidpalin(n) intn; { charnext; if(n<=1)  {  next=getchar();  printf("n:");  putchar(next);  } else  {  next=getchar();  palin(n-1);  putchar(next);  } } ============================================================== 【程式28】  題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。

問第4個人歲數,他說比第    3個人大2歲。

問第三個人,又說比第2人大兩歲。

問第2個人,說比第一個人大兩歲。

最後     問第一個人,他說是10歲。

請問第五個人多大? 1.程式分析:利用遞迴的方法,遞迴分為回推和遞推兩個階段。

要想知道第五個人歲數,需知道       第四人的歲數,依次類推,推到第一人(10歲),再往回推。

2.程式源代碼: age(n) intn; { intc; if(n==1)c=10; elsec=age(n-1)+2; return(c); } main() {printf("%d",age(5)); } ============================================================== 【程式29】  題目:給一個不多於5位元的正整數,要求:一、求它是幾位數,二、逆序列印出各位數位。

1.程式分析:學會分解出每一位數,如下解釋:(這裏是一種簡單的演算法,師專數002班趙鑫提供)  2.程式源代碼: main() { longa,b,c,d,e,x; scanf("%ld",&x);   //ld的l可省略 a=x/10000;/*分解出萬位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出個位*/ if(a!=0)printf("thereare5,%ld%ld%ld%ld%ldn",e,d,c,b,a); elseif(b!=0)printf("thereare4,%ld%ld%ld%ldn",e,d,c,b);   elseif(c!=0)printf("thereare3,%ld%ld%ldn",e,d,c);     elseif(d!=0)printf("thereare2,%ld%ldn",e,d);       elseif(e!=0)printf("thereare1,%ldn",e); } ============================================================== 【程式30】 //程式29延伸 題目:一個5位數,判斷它是不是回文數。

即12321是回文數,個位與萬位相同,十位與千位相同。

    1.程式分析:同29例 2.程式源代碼: main() { longge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if(ge==wan&&shi==qian)/*個位等於萬位並且十位等於千位*/  printf("thisnumberisahuiwenn"); else  printf("thisnumberisnotahuiwenn"); } ============================================================== 【程式31】 題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續    判斷第二個字母。

1.程式分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。

2.程式源代碼: #include    //需輸入大寫的字母 voidmain() { charletter; printf("pleaseinputthefirstletterofsomedayn"); while((letter=getch())!='Y')/*當所按字母為Y時才結束*/  //不等於Y,執行下面的東東 {switch(letter) {case'S':printf("pleaseinputsecondlettern");      if((letter=getch())=='a')       printf("saturdayn");      elseif((letter=getch())=='u')          printf("sundayn");        elseprintf("dataerrorn");      break; case'F':printf("fridayn");break; case'M':printf("mondayn");break; case'T':printf("pleaseinputsecondlettern");      if((letter=getch())=='u')       printf("tuesdayn");      elseif((letter=getch())=='h')          printf("thursdayn");        elseprintf("dataerrorn");      break; case'W':printf("wednesdayn");break; default:printf("dataerrorn");   }  } } ============================================================== 【程式32】 題目:Pressanykeytochangecolor,doyouwanttotryit.Pleasehurryup! 1.程式分析:             2.程式源代碼:   #include    //fail,無法complier voidmain(void) { intcolor; for(color=0;color<8;color++)  {   textbackground(color);/*設置文本的背景顏色*/  cprintf("Thisiscolor%drn",color);  cprintf("Pressanykeytocontinuern");  getch();/*輸入字元看不見*/  } } ============================================================== 【程式33】 題目:學習gotoxy()與clrscr()函數    1.程式分析: 2.程式源代碼: #include   //無法辨識cprintf voidmain(void) { clrscr();/*清屏函數*/ textbackground(2); gotoxy(1,5);/*定位函數*/ cprintf("Outputatrow5column1n"); textbackground(3); gotoxy(20,10); cprintf("Outputatrow10column20n"); } ============================================================== 【程式34】 題目:練習函數調用 1.程式分析:  2.程式源代碼: #include           //調用函數 voidhello_world(void) { printf("Hello,world!n"); } voidthree_hellos(void) { intcounter; for(counter=1;counter<=3;counter++) hello_world();/*調用此函數*/ } voidmain(void) { three_hellos();/*調用此函數*/ } ============================================================== 【程式35】 題目:文本顏色設置 1.程式分析: 2.程式源代碼: #include  voidmain(void) { intcolor; for(color=1;color<16;color++)  {  textcolor(color);/*設置文本顏色*/  cprintf("Thisiscolor%drn",color);  } textcolor(128+15); cprintf("Thisisblinkingrn"); } ============================================================== 【程式36】 題目:求100之內的素數    1.程式分析: 2.程式源代碼: #include  #include"math.h" #defineN101 main() { inti,j,line,a[N]; for(i=2;ifor(i=2;i for(j=i+1;j {   if(a[i]!=0&&a[j]!=0)   if(a[j]%a[i]==0)   a[j]=0;} printf("n"); for(i=2,line=0;i{  if(a[i]!=0)  {printf("%5d",a[i]);  line++;}  if(line==10)  {printf("n"); line=0;} } } ============================================================== 【程式37】 題目:對10個數進行排序 1.程式分析:可以利用選擇法,即從後9個比較過程中,選擇一個最小的與第一個元素交換,       下次類推,即用第二個元素與後8個進行比較,並進行交換。

        2.程式源代碼: #defineN10 main() {inti,j,min,tem,a[N]; /*inputdata*/ printf("pleaseinputtennum:n"); for(i=0;i{ printf("a[%d]=",i); scanf("%d",&a[i]);} printf("n"); for(i=0;iprintf("%5d",a[i]); printf("n"); /*sorttennum*/ for(i=0;i{min=i; for(j=i+1;jif(a[min]>a[j])min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; } /*outputdata*/ printf("Aftersortedn"); for(i=0;iprintf("%5d",a[i]); } ============================================================== 【程式38】 題目:求一個3*3矩陣對角線元素之和  1.程式分析:利用雙重for迴圈控制輸入二維陣列,再將a[i][i]累加後輸出。

2.程式源代碼: main() { floata[3][3],sum=0; inti,j; printf("pleaseinputrectangleelement:n"); for(i=0;i<3;i++)  for(j=0;j<3;j++)  scanf("%f",&a[i][j]); for(i=0;i<3;i++)  sum=sum+a[i][i]; printf("duijiaoxianheis%6.2f",sum); } ============================================================== 【程式39】 題目:有一個已經排好序的陣列。

現輸入一個數,要求按原來的規律將它插入陣列中。

1.程式分析:首先判斷此數是否大於最後一個數,然後再考慮插入中間的數的情況,插入後      此元素之後的數,依次後移一個位置。

  2.程式源代碼: main() { inta[11]={1,4,6,9,13,16,19,28,40,100}; inttemp1,temp2,number,end,i,j; printf("originalarrayis:n"); for(i=0;i<10;i++)  printf("%5d",a[i]); printf("n"); printf("insertanewnumber:"); scanf("%d",&number); end=a[9]; if(number>end)  a[10]=number; else  {for(i=0;i<10;i++)   {if(a[i]>number)    {temp1=a[i];     a[i]=number;    for(j=i+1;j<11;j++)    {temp2=a[j];     a[j]=temp1;     temp1=temp2;    }    break;    }   } } for(i=0;i<11;i++)  printf("%6d",a[i]); } ============================================================== 【程式40】 題目:將一個陣列逆序輸出。

1.程式分析:用第一個與最後一個交換。

2.程式源代碼: #defineN5 main() {inta[N]={9,6,5,4,1},i,temp;  printf("noriginalarray:n");  for(i=0;i printf("%4d",a[i]);  for(i=0;i {temp=a[i];   a[i]=a[N-i-1];   a[N-i-1]=temp;  } printf("nsortedarray:n"); for(i=0;i printf("%4d",a[i]); } ============================================================== 【程式41】 題目:學習static定義靜態變數的用法    1.程式分析: 2.程式源代碼: #include"stdio.h" varfunc() { intvar=0; staticintstatic_var=0; printf("\40:varequal%d\n",var); printf("\40:staticvarequal%d\n",static_var); printf("\n"); var++; static_var++; } voidmain() {inti;  for(i=0;i<3;i++)   varfunc(); } ============================================================== 【程式42】  題目:學習使用auto定義變數的用法 1.程式分析:       2.程式源代碼: #include"stdio.h" main() {inti,num; num=2;  for(i=0;i<3;i++)  {printf("\40:Thenumequal%d\n",num);   num++;   {   autointnum=1;   printf("\40:Theinternalblocknumequal%d\n",num);   num++;   }  } } ============================================================== 【程式43】 題目:學習使用static的另一用法。

    1.程式分析: 2.程式源代碼: #include"stdio.h" main() { inti,num; num=2; for(i=0;i<3;i++) { printf("\40:Thenumequal%d\n",num); num++; { staticintnum=1; printf("\40:Theinternalblocknumequal%d\n",num); num++; } } } ============================================================== 【程式44】 題目:學習使用external的用法。

1.程式分析: 2.程式源代碼: #include"stdio.h" inta,b,c; voidadd() {inta; a=3; c=a+b; } voidmain() {a=b=4; add(); printf("Thevalueofcisequalto%d\n",c); } ============================================================== 【程式45】 題目:學習使用register定義變數的方法。

1.程式分析: 2.程式源代碼: voidmain() { registerinti; inttmp=0; for(i=1;i<=100;i++) tmp+=i; printf("Thesumis%d\n",tmp); } ============================================================== 【程式46】 題目:宏#define命令練習(1)    1.程式分析: 2.程式源代碼: #include"stdio.h" #defineTRUE1 #defineFALSE0 #defineSQ(x)(x)*(x) voidmain() { intnum; intagain=1; printf("\40:Programwillstopifinputvaluelessthan50.\n"); while(again) { printf("\40:Pleaseinputnumber==>"); scanf("%d",&num); printf("\40:Thesquareforthisnumberis%d\n",SQ(num)); if(num>=50)  again=TRUE; else  again=FALSE; } } ============================================================== 【程式47】 題目:宏#define命令練習(2) 1.程式分析:             2.程式源代碼: #include"stdio.h" #defineexchange(a,b){\/*巨集定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/             intt;\             t=a;\             a=b;\             b=t;\            } voidmain(void) { intx=10; inty=20; printf("x=%d;y=%d\n",x,y); exchange(x,y); printf("x=%d;y=%d\n",x,y); } ============================================================== 【程式48】 題目:宏#define命令練習(3)    1.程式分析: 2.程式源代碼: #defineLAG> #defineSMA< #defineEQ== #include"stdio.h" voidmain() {inti=10; intj=20; if(iLAGj) printf("\40:%dlargerthan%d\n",i,j); elseif(iEQj) printf("\40:%dequalto%d\n",i,j); elseif(iSMAj) printf("\40:%dsmallerthan%d\n",i,j); else printf("\40:Nosuchvalue.\n"); } ============================================================== 【程式49】 題目:#if#ifdef和#ifndef的綜合應用。

1.程式分析:  2.程式源代碼: #include"stdio.h" #defineMAX #defineMAXIMUM(x,y)(x>y)?x:y #defineMINIMUM(x,y)(x>y)?y:x voidmain() {inta=10,b=20; #ifdefMAX printf("\40:Thelargeroneis%d\n",MAXIMUM(a,b)); #else printf("\40:Theloweroneis%d\n",MINIMUM(a,b)); #endif #ifndefMIN printf("\40:Theloweroneis%d\n",MINIMUM(a,b)); #else printf("\40:Thelargeroneis%d\n",MAXIMUM(a,b)); #endif #undefMAX #ifdefMAX printf("\40:Thelargeroneis%d\n",MAXIMUM(a,b)); #else printf("\40:Theloweroneis%d\n",MINIMUM(a,b)); #endif #defineMIN #ifndefMIN printf("\40:Theloweroneis%d\n",MINIMUM(a,b)); #else printf("\40:Thelargeroneis%d\n",MAXIMUM(a,b)); #endif } ============================================================== 【程式50】 題目:#include的應用練習    1.程式分析: 2.程式源代碼: test.h文件如下: #defineLAG> #defineSMA< #defineEQ== #include"test.h"/*一個新檔50.c,包含test.h*/ #include"stdio.h" voidmain() {inti=10; intj=20; if(iLAGj) printf("\40:%dlargerthan%d\n",i,j); elseif(iEQj) printf("\40:%dequalto%d\n",i,j); elseif(iSMAj) printf("\40:%dsmallerthan%d\n",i,j); else printf("\40:Nosuchvalue.\n"); } ============================================================== 【程式51】 題目:學習使用按位與&。

    1.程式分析:0&0=0;0&1=0;1&0=0;1&1=1 2.程式源代碼: #include"stdio.h" main() { inta,b; a=077; b=a&3; printf("\40:Thea&b(decimal)is%d\n",b); b&=7; printf("\40:Thea&b(decimal)is%d\n",b); } ============================================================== 【程式52】 題目:學習使用按位或|。

1.程式分析:0|0=0;0|1=1;1|0=1;1|1=1             2.程式源代碼: #include"stdio.h" main() { inta,b; a=077; b=a|3; printf("\40:Thea&b(decimal)is%d\n",b); b|=7; printf("\40:Thea&b(decimal)is%d\n",b); } ============================================================== 【程式53】 題目:學習使用按位異或^。

    1.程式分析:0^0=0;0^1=1;1^0=1;1^1=0 2.程式源代碼: #include"stdio.h" main() { inta,b; a=077; b=a^3; printf("\40:Thea&b(decimal)is%d\n",b); b^=7; printf("\40:Thea&b(decimal)is%d\n",b); } ============================================================== 【程式54】 題目:取一個整數a從右端開始的4~7位。

程式分析:可以這樣考慮:  (1)先使a右移4位。

(2)設置一個低4位全為1,其餘全為0的數。

可用~(~0<<4) (3)將上面二者進行&運算。

2.程式源代碼: main() { unsigneda,b,c,d; scanf("%o",&a); b=a>>4; c=~(~0<<4); d=b&c; printf("%o\n%o\n",a,d); } ============================================================== 【程式55】 題目:學習使用按位取反~。

    1.程式分析:~0=1;~1=0; 2.程式源代碼: #include"stdio.h" main() { inta,b; a=234; b=~a; printf("\40:Thea's1complement(decimal)is%d\n",b); a=~a; printf("\40:Thea's1complement(hexidecimal)is%x\n",a); }  ============================================================== 【程式56】 題目:畫圖,學用circle畫圓形。

    1.程式分析: 2.程式源代碼: /*circle*/ #include"graphics.h" main() {intdriver,mode,i; floatj=1,k=1; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); for(i=0;i<=25;i++) { setcolor(8); circle(310,250,k); k=k+j; j=j+0.3; } }  ============================================================== 【程式57】 題目:畫圖,學用line畫直線。

1.程式分析:            2.程式源代碼: #include"graphics.h" main() {intdriver,mode,i; floatx0,y0,y1,x1; floatj=12,k; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(GREEN); x0=263;y0=263;y1=275;x1=275; for(i=0;i<=18;i++) { setcolor(5); line(x0,y0,x0,y1); x0=x0-5; y0=y0-5; x1=x1+5; y1=y1+5; j=j+10; } x0=263;y1=275;y0=263; for(i=0;i<=20;i++) { setcolor(5); line(x0,y0,x0,y1); x0=x0+5; y0=y0+5; y1=y1-5; } } ============================================================== 【程式58】 題目:畫圖,學用rectangle畫方形。

    1.程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。

2.程式源代碼: #include"graphics.h" main() {intx0,y0,y1,x1,driver,mode,i; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); x0=263;y0=263;y1=275;x1=275; for(i=0;i<=18;i++) { setcolor(1); rectangle(x0,y0,x1,y1); x0=x0-5; y0=y0-5; x1=x1+5; y1=y1+5; } settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(150,40,"Howbeautifulitis!"); line(130,60,480,60); setcolor(2); circle(269,269,137); } ============================================================== 【程式59】 題目:畫圖,綜合例子。

1.程式分析: 2.程式源代碼: #definePAI3.1415926 #defineB0.809 #include"graphics.h" #include"math.h" main() { inti,j,k,x0,y0,x,y,driver,mode; floata; driver=CGA;mode=CGAC0; initgraph(&driver,&mode,""); setcolor(3); setbkcolor(GREEN); x0=150;y0=100; circle(x0,y0,10); circle(x0,y0,20); circle(x0,y0,50); for(i=0;i<16;i++) {  a=(2*PAI/16)*i;  x=ceil(x0+48*cos(a));  y=ceil(y0+48*sin(a)*B);  setcolor(2);line(x0,y0,x,y);} setcolor(3);circle(x0,y0,60); /*Make0timenormalsizeletters*/ settextstyle(DEFAULT_FONT,HORIZ_DIR,0); outtextxy(10,170,"pressakey"); getch(); setfillstyle(HATCH_FILL,YELLOW); floodfill(202,100,WHITE); getch(); for(k=0;k<=500;k++) {  setcolor(3);  for(i=0;i<=16;i++)  {   a=(2*PAI/16)*i+(2*PAI/180)*k;   x=ceil(x0+48*cos(a));   y=ceil(y0+48+sin(a)*B);   setcolor(2);line(x0,y0,x,y);  }  for(j=1;j<=50;j++)  {   a=(2*PAI/16)*i+(2*PAI/180)*k-1;   x=ceil(x0+48*cos(a));   y=ceil(y0+48*sin(a)*B);   line(x0,y0,x,y);  } } restorecrtmode(); } ============================================================== 【程式60】 題目:畫圖,綜合例子。

    1.程式分析: 2.程式源代碼: #include"graphics.h" #defineLEFT0 #defineTOP0 #defineRIGHT639 #defineBOTTOM479 #defineLINES400 #defineMAXCOLOR15 main() { intdriver,mode,error; intx1,y1; intx2,y2; intdx1,dy1,dx2,dy2,i=1; intcount=0; intcolor=0; driver=VGA; mode=VGAHI; initgraph(&driver,&mode,""); x1=x2=y1=y2=10; dx1=dy1=2; dx2=dy2=3; while(!kbhit()) {  line(x1,y1,x2,y2);  x1+=dx1;y1+=dy1;  x2+=dx2;y2+dy2;  if(x1<=LEFT||x1>=RIGHT)  dx1=-dx1;  if(y1<=TOP||y1>=BOTTOM)   dy1=-dy1;  if(x2<=LEFT||x2>=RIGHT)   dx2=-dx2;  if(y2<=TOP||y2>=BOTTOM)   dy2=-dy2;  if(++count>LINES)  {   setcolor(color);   color=(color>=MAXCOLOR)?0:++color;  } } closegraph(); }

==============================================================   【程式61】 題目:列印出楊輝三角形(要求列印出10行如下圖)    1.程式分析:      1       1 1       1 2 1       1 3 3 1       1 4 6 4 1       1 5 10 10 5 1   2.程式源代碼: main() {inti,j; inta[10][10]; printf("\n"); for(i=0;i<10;i++)  {a[i][0]=1;  a[i][i]=1;} for(i=2;i<10;i++)  for(j=1;jn2)swap(pointer1,pointer2); if(n1>n3)swap(pointer1,pointer3); if(n2>n3)swap(pointer2,pointer3); printf("thesortednumbersare:%d,%d,%d\n",n1,n2,n3); } swap(p1,p2) int*p1,*p2; {intp; p=*p1;*p1=*p2;*p2=p; } ============================================================== 【程式67】 題目:輸入陣列,最大的與第一個元素交換,最小的與最後一個元素交換,輸出陣列。

1.程式分析:譚浩強的書中答案有問題。

       2.程式源代碼: main() { intnumber[10]; input(number); max_min(number); output(number); } input(number) intnumber[10]; {inti; for(i=0;i<9;i++)  scanf("%d,",&number[i]);  scanf("%d",&number[9]); } max_min(array) intarray[10]; {int*max,*min,k,l; int*p,*arr_end; arr_end=array+10; max=min=array; for(p=array+1;p*max)max=p;  elseif(*parray;p--)  *p=*(p-1);  *array=array_end;  m--;  if(m>0)move(array,n,m); } ============================================================== 【程式69】 題目:有n個人圍成一圈,順序排號。

從第一個人開始報數(從1到3報數),凡報到3的人退出    圈子,問最後留下的是原來第幾號的那位。

1.程式分析: 2.程式源代碼: #definenmax50 main() { inti,k,m,n,num[nmax],*p; printf("pleaseinputthetotalofnumbers:"); scanf("%d",&n); p=num; for(i=0;i\n"); for(i=0;i<=4;i++) {  scanf("%d",&num);  ptr->data=num;  ptr->next=(link)malloc(sizeof(node));  if(i==4)ptr->next=NULL;  elseptr=ptr->next; } ptr=head; while(ptr!=NULL) {printf("Thevalueis==>%d\n",ptr->data);  ptr=ptr->next; } } ============================================================== 【程式73】 題目:反向輸出一個鏈表。

    1.程式分析: 2.程式源代碼: /*reverseoutputalist*/ #include"stdlib.h" #include"stdio.h" structlist {intdata;  structlist*next; }; typedefstructlistnode; typedefnode*link; voidmain() {linkptr,head,tail;   intnum,i;  tail=(link)malloc(sizeof(node));  tail->next=NULL;  ptr=tail;  printf("\npleaseinput5data==>\n");  for(i=0;i<=4;i++)  {   scanf("%d",&num);   ptr->data=num;   head=(link)malloc(sizeof(node));   head->next=ptr;   ptr=head;  } ptr=ptr->next; while(ptr!=NULL) {printf("Thevalueis==>%d\n",ptr->data);  ptr=ptr->next; }} ============================================================== 【程式74】 題目:連接兩個鏈表。

1.程式分析: 2.程式源代碼: #include"stdlib.h" #include"stdio.h" structlist {intdata; structlist*next; }; typedefstructlistnode; typedefnode*link; linkdelete_node(linkpointer,linktmp) {if(tmp==NULL)/*deletefirstnode*/  returnpointer->next; else {if(tmp->next->next==NULL)/*deletelastnode*/   tmp->next=NULL;  else/*deletetheothernode*/   tmp->next=tmp->next->next;  returnpointer; } } voidselection_sort(linkpointer,intnum) {linktmp,btmp;  inti,min;  for(i=0;idata;  btmp=NULL;  while(tmp->next)  {if(min>tmp->next->data)  {min=tmp->next->data;   btmp=tmp;  }  tmp=tmp->next;  } printf("\40:%d\n",min); pointer=delete_node(pointer,btmp); } } linkcreate_list(intarray[],intnum) {linktmp1,tmp2,pointer; inti; pointer=(link)malloc(sizeof(node)); pointer->data=array[0]; tmp1=pointer; for(i=1;inext=NULL;  tmp2->data=array[i];  tmp1->next=tmp2;  tmp1=tmp1->next; } returnpointer; } linkconcatenate(linkpointer1,linkpointer2) {linktmp; tmp=pointer1; while(tmp->next)  tmp=tmp->next; tmp->next=pointer2; returnpointer1; } voidmain(void) {intarr1[]={3,12,8,9,11};  linkptr;  ptr=create_list(arr1,5);  selection_sort(ptr,5); } ============================================================== 【程式75】 題目:放鬆一下,算一道簡單的題目。

1.程式分析: 2.程式源代碼: main() { inti,n; for(i=1;i<5;i++) {n=0;  if(i!=1)  n=n+1;  if(i==3)  n=n+1;  if(i==4)  n=n+1;  if(i!=4)  n=n+1;  if(n==3)   printf("zhuhaoshideshi:%c",64+i);  } } ============================================================== 【程式76】 題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數    1/1+1/3+...+1/n(利用指標函數) 1.程式分析: 2.程式源代碼: main() #include"stdio.h" main() { floatpeven(),podd(),dcall(); floatsum; intn; while(1) {  scanf("%d",&n);  if(n>1)   break; } if(n%2==0) {  printf("Even=");  sum=dcall(peven,n); } else {  printf("Odd=");  sum=dcall(podd,n); } printf("%f",sum); }floatpeven(intn) { floats; inti; s=1; for(i=2;i<=n;i+=2)  s+=1/(float)i; return(s); } floatpodd(n) intn; { floats; inti; s=0; for(i=1;i<=n;i+=2)  s+=1/(float)i; return(s); } floatdcall(fp,n) float(*fp)(); intn; { floats; s=(*fp)(n); return(s); } ============================================================== 【程式77】 題目:填空練習(指向指標的指標) 1.程式分析:      2.程式源代碼: main() {char*s[]={"man","woman","girl","boy","sister"}; char**q; intk; for(k=0;k<5;k++) {       ;/*這裏填寫什麼語句*/  printf("%s\n",*q); } } ============================================================== 【程式78】 題目:找到年齡最大的人,並輸出。

請找出程式中有什麼問題。

1.程式分析: 2.程式源代碼: #defineN4 #include"stdio.h" staticstructman {charname[20]; intage; }person[N]={"li",18,"wang",19,"zhang",20,"sun",22}; main() {structman*q,*p; inti,m=0; p=person; for(i=0;iage)  q=p++;  m=q->age;} printf("%s,%d",(*q).name,(*q).age); } ============================================================== 【程式79】 題目:字串排序。

1.程式分析: 2.程式源代碼: main() { char*str1[20],*str2[20],*str3[20]; charswap(); printf("pleaseinputthreestrings\n"); scanf("%s",str1); scanf("%s",str2); scanf("%s",str3); if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf("afterbeingsorted\n"); printf("%s\n%s\n%s\n",str1,str2,str3); } charswap(p1,p2) char*p1,*p2; { char*p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); } ============================================================== 【程式80】 題目:海灘上有一堆桃子,五隻猴子來分。

第一隻猴子把這堆桃子憑據分為五份,多了一個,這只    猴子把多的一個扔入海中,拿走了一份。

第二隻猴子把剩下的桃子又平均分成五份,又多了    一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,    問海灘上原來最少有多少個桃子? 1.程式分析: 2.程式源代碼: main() {inti,m,j,k,count; for(i=4;i<10000;i+=4) {count=0; m=i; for(k=0;k<5;k++) {  j=i/4*5+1;  i=j;  if(j%4==0)   count++;  else   break; }  i=m;  if(count==4)  {printf("%d\n",count);   break;} } }   ============================================================== 【程式81】 題目:809*??=800*??+9*??+1其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。

求??代表的兩位數,及809*??後的結果。

1.程式分析: 2.程式源代碼: output(longb,longi) {printf("\n%ld/%ld=809*%ld+%ld",b,i,i,b%i); } main() {longinta,b,i; a=809; for(i=10;i<100;i++) {b=i*a+1; if(b>=1000&&b<=10000&&8*i<100&&9*i>=100) output(b,i);} } ============================================================== 【程式82】 題目:八進制轉換為十進位 1.程式分析:            2.程式源代碼: main() {char*p,s[6];intn; p=s; gets(p); n=0; while(*(p)!='\0') {n=n*8+*p-'0'; p++;} printf("%d",n); } ============================================================== 【程式83】 題目:求0—7所能組成的奇數個數。

1.程式分析: 2.程式源代碼: main() { longsum=4,s=4; intj; for(j=2;j<=8;j++)/*jisplaceofnumber*/ {printf("\n%ld",sum); if(j<=2) s*=7; else s*=8; sum+=s;} printf("\nsum=%ld",sum); } ============================================================== 【程式84】 題目:一個偶數總能表示為兩個素數之和。

1.程式分析: 2.程式源代碼: #include"stdio.h" #include"math.h" main() {inta,b,c,d; scanf("%d",&a); for(b=3;b<=a/2;b+=2) {for(c=2;c<=sqrt(b);c++) if(b%c==0)break; if(c>sqrt(b)) d=a-b; else break; for(c=2;c<=sqrt(d);c++) if(d%c==0)break; if(c>sqrt(d)) printf("%d=%d+%d\n",a,b,d); } } ============================================================== 【程式85】 題目:判斷一個素數能被幾個9整除 1.程式分析: 2.程式源代碼: main() {longintm9=9,sum=9; intzi,n1=1,c9=1; scanf("%d",&zi); while(n1!=0) {if(!(sum%zi)) n1=0; else {m9=m9*10; sum=sum+m9; c9++; } } printf("%ld,canbedividedby%d\"9\"",sum,c9); } ============================================================== 【程式86】 題目:兩個字元串連接程式 1.程式分析: 2.程式源代碼: #include"stdio.h" main() {chara[]="acegikm"; charb[]="bdfhjlnpq"; charc[80],*p; inti=0,j=0,k=0; while(a[i]!='\0'&&b[j]!='\0') {if(a[i]50); for(i=1;i<=a;i++)  printf("*"); printf("\n"); n++;} getch(); } ============================================================== 【程式89】 題目:某個公司採用公用電話傳遞資料,資料是四位元的整數,在傳遞過程中是加密的,加密規則如下:    每位元數位都加上5,然後用和除以10的餘數代替該數位,再將第一位和第四位交換,第二位和第三位交換。

1.程式分析: 2.程式源代碼: main() {inta,i,aa[4],t; scanf("%d",&a); aa[0]=a%10; aa[1]=a%100/10; aa[2]=a%1000/100; aa[3]=a/1000; for(i=0;i<=3;i++)  {aa[i]+=5;  aa[i]%=10;  } for(i=0;i<=3/2;i++)  {t=aa[i];  aa[i]=aa[3-i];  aa[3-i]=t;  } for(i=3;i>=0;i--) printf("%d",aa[i]); } ============================================================== 【程式90】 題目:專升本一題,讀結果。

1.程式分析: 2.程式源代碼: #include"stdio.h" #defineM5 main() {inta[M]={1,2,3,4,5}; inti,j,t; i=0;j=M-1; while(ii) {printf("pleaseinputalittlesmaller.\n"); scanf("%d",&guess);} else {printf("pleaseinputalittlebigger.\n"); scanf("%d",&guess);} } end=clock(); b=time(NULL); printf("\1:Ittookyou%6.3fseconds\n",var=(double)(end-start)/18.2); printf("\1:ittookyou%6.3fseconds\n\n",difftime(b,a)); if(var<15) printf("\1\1Youareveryclever!\1\1\n\n"); elseif(var<25) printf("\1\1youarenormal!\1\1\n\n"); else printf("\1\1youarestupid!\1\1\n\n"); printf("\1\1Congradulations\1\1\n\n"); printf("Thenumberyouguessis%d",i); } printf("\ndoyouwanttotryitagain?(\"yy\".or.\"n\")\n"); if((c=getch())=='y') gotoloop; } ============================================================== 【程式95】 題目:家庭財務管理小程式 1.程式分析: 2.程式源代碼: /*moneymanagementsystem*/ #include"stdio.h" #include"dos.h" main() { FILE*fp; structdated; floatsum,chm=0.0; intlen,i,j=0; intc; charch[4]="",ch1[16]="",chtime[12]="",chshop[16],chmoney[8]; pp:clrscr(); sum=0.0; gotoxy(1,1);printf("|---------------------------------------------------------------------------|"); gotoxy(1,2);printf("|moneymanagementsystem(C1.0)2000.03|"); gotoxy(1,3);printf("|---------------------------------------------------------------------------|"); gotoxy(1,4);printf("|--moneyrecords--|--todaycostlist--|"); gotoxy(1,5);printf("|------------------------|-------------------------------------|"); gotoxy(1,6);printf("|date:--------------||"); gotoxy(1,7);printf("|||||"); gotoxy(1,8);printf("|--------------||"); gotoxy(1,9);printf("|thgs:------------------||"); gotoxy(1,10);printf("|||||"); gotoxy(1,11);printf("|------------------||"); gotoxy(1,12);printf("|cost:----------||"); gotoxy(1,13);printf("|||||"); gotoxy(1,14);printf("|----------||"); gotoxy(1,15);printf("|||"); gotoxy(1,16);printf("|||"); gotoxy(1,17);printf("|||"); gotoxy(1,18);printf("|||"); gotoxy(1,19);printf("|||"); gotoxy(1,20);printf("|||"); gotoxy(1,21);printf("|||"); gotoxy(1,22);printf("|||"); gotoxy(1,23);printf("|---------------------------------------------------------------------------|"); i=0; getdate(&d); sprintf(chtime,"%4d.%02d.%02d",d.da_year,d.da_mon,d.da_day); for(;;) { gotoxy(3,24);printf("Tab__browsecostlistEsc__quit"); gotoxy(13,10);printf(""); gotoxy(13,13);printf(""); gotoxy(13,7);printf("%s",chtime); j=18; ch[0]=getch(); if(ch[0]==27) break; strcpy(chshop,""); strcpy(chmoney,""); if(ch[0]==9) { mm:i=0; fp=fopen("home.dat","r+"); gotoxy(3,24);printf(""); gotoxy(6,4);printf("listrecords"); gotoxy(1,5);printf("|-------------------------------------|"); gotoxy(41,4);printf(""); gotoxy(41,5);printf("|"); while(fscanf(fp,"%10s%14s%f\n",chtime,chshop,&chm)!=EOF) {if(i==36) {getch(); i=0;} if((i%36)<17) {gotoxy(4,6+i); printf(""); gotoxy(4,6+i);} else if((i%36)>16) {gotoxy(41,4+i-17); printf(""); gotoxy(42,4+i-17);} i++; sum=sum+chm; printf("%10s%-14s%6.1f\n",chtime,chshop,chm);} gotoxy(1,23);printf("|---------------------------------------------------------------------------|"); gotoxy(1,24);printf("||"); gotoxy(1,25);printf("|---------------------------------------------------------------------------|"); gotoxy(10,24);printf("totalis%8.1f$",sum); fclose(fp); gotoxy(49,24);printf("pressanykeyto.....");getch();gotopp; } else { while(ch[0]!='\r') {if(j<10) {strncat(chtime,ch,1); j++;} if(ch[0]==8) { len=strlen(chtime)-1; if(j>15) {len=len+1;j=11;} strcpy(ch1,""); j=j-2; strncat(ch1,chtime,len); strcpy(chtime,""); strncat(chtime,ch1,len-1); gotoxy(13,7);printf("");} gotoxy(13,7);printf("%s",chtime);ch[0]=getch(); if(ch[0]==9) gotomm; if(ch[0]==27) exit(1); } gotoxy(3,24);printf(""); gotoxy(13,10); j=0; ch[0]=getch(); while(ch[0]!='\r') {if(j<14) {strncat(chshop,ch,1); j++;} if(ch[0]==8) {len=strlen(chshop)-1; strcpy(ch1,""); j=j-2; strncat(ch1,chshop,len); strcpy(chshop,""); strncat(chshop,ch1,len-1); gotoxy(13,10);printf("");} gotoxy(13,10);printf("%s",chshop);ch[0]=getch();} gotoxy(13,13); j=0; ch[0]=getch(); while(ch[0]!='\r') {if(j<6) {strncat(chmoney,ch,1); j++;} if(ch[0]==8) {len=strlen(chmoney)-1; strcpy(ch1,""); j=j-2; strncat(ch1,chmoney,len); strcpy(chmoney,""); strncat(chmoney,ch1,len-1); gotoxy(13,13);printf("");} gotoxy(13,13);printf("%s",chmoney);ch[0]=getch();} if((strlen(chshop)==0)||(strlen(chmoney)==0)) continue; if((fp=fopen("home.dat","a+"))!=NULL); fprintf(fp,"%10s%14s%6s",chtime,chshop,chmoney); fputc('\n',fp); fclose(fp); i++; gotoxy(41,5+i); printf("%10s%-14s%-6s",chtime,chshop,chmoney); }}}  ============================================================== 【程式96】 題目:計算字串中子串出現的次數 1.程式分析: 2.程式源代碼: #include"string.h" #include"stdio.h" main() {charstr1[20],str2[20],*p1,*p2; intsum=0; printf("pleaseinputtwostrings\n"); scanf("%s%s",str1,str2); p1=str1;p2=str2; while(*p1!='\0') { if(*p1==*p2) {while(*p1==*p2&&*p2!='\0') {p1++; p2++;} } else p1++; if(*p2=='\0') sum++; p2=str2; } printf("%d",sum); getch();}  ============================================================== 【程式97】 題目:從鍵盤輸入一些字元,逐個把它們送到磁片上去,直到輸入一個#為止。

1.程式分析:      2.程式源代碼: #include"stdio.h" main() {FILE*fp; charch,filename[10]; scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannotopenfile\n"); exit(0);} ch=getchar(); ch=getchar(); while(ch!='#') {fputc(ch,fp);putchar(ch); ch=getchar(); } fclose(fp); } ============================================================== 【程式98】 題目:從鍵盤輸入一個字串,將小寫字母全部轉換成大寫字母,然後輸出到一個磁片檔“test”中保存。

   輸入的字串以!結束。

  1.程式分析: 2.程式源代碼: #include"stdio.h" main() {FILE*fp; charstr[100],filename[10]; inti=0; if((fp=fopen("test","w"))==NULL) {printf("cannotopenthefile\n"); exit(0);} printf("pleaseinputastring:\n"); gets(str); while(str[i]!='!') {if(str[i]>='a'&&str[i]<='z') str[i]=str[i]-32; fputc(str[i],fp); i++;} fclose(fp); fp=fopen("test","r"); fgets(str,strlen(str)+1,fp); printf("%s\n",str); fclose(fp); } ============================================================== 【程式99】 題目:有兩個磁片檔A和B,各存放一行字母,要求把這兩個檔中的資訊合併(按字母順序排列),     輸出到一個新檔C中。

1.程式分析: 2.程式源代碼: #include"stdio.h" main() {FILE*fp; inti,j,n,ni; charc[160],t,ch; if((fp=fopen("A","r"))==NULL) {printf("fileAcannotbeopened\n"); exit(0);} printf("\nAcontentsare:\n"); for(i=0;(ch=fgetc(fp))!=EOF;i++) {c[i]=ch; putchar(c[i]); } fclose(fp); ni=i; if((fp=fopen("B","r"))==NULL) {printf("fileBcannotbeopened\n"); exit(0);} printf("\nBcontentsare:\n"); for(i=0;(ch=fgetc(fp))!=EOF;i++) {c[i]=ch; putchar(c[i]); } fclose(fp); n=i; for(i=0;ic[j]) {t=c[i];c[i]=c[j];c[j]=t;} printf("\nCfileis:\n"); fp=fopen("C","w"); for(i=0;i ============================================================== 文章標籤 C 全站熱搜 創作者介紹 音樂天空 科技始終來自於人性 音樂天空發表在痞客邦留言(3)人氣() 全站分類:數位生活個人分類:資訊教學此分類上一篇:【ubuntu】VirtualBox無法取得USB解決辦法 此分類下一篇:【Ubuntu】各種壓縮與解壓縮指令 上一篇:【日本旅遊】往沖繩航班怎麼選擇 下一篇:【Ubuntu】各種壓縮與解壓縮指令 ▲top 留言列表 發表留言 熱門文章 參觀人氣 本日人氣: 累積人氣: 文章精選 文章精選 2020六月(1) 2020二月(3) 2019九月(2) 2019八月(2) 2019七月(1) 2019五月(2) 2019四月(1) 2019三月(3) 2019二月(1) 2018十二月(2) 2018十一月(2) 2018十月(2) 2018九月(2) 2018四月(3) 2018一月(1) 2017十一月(1) 2016十一月(3) 2016八月(2) 2016六月(3) 所有文章列表 文章搜尋 文章分類 資訊教學(26)玩一玩(6)找地方(1)動一動(1)吃東西(3) 最新文章 最新留言 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2022PIXNET 關閉視窗


請為這篇文章評分?