程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話法式設計50例(經典珍藏)

C說話法式設計50例(經典珍藏)

編輯:關於C++

C說話法式設計50例(經典珍藏)。本站提示廣大學習愛好者:(C說話法式設計50例(經典珍藏))文章只能為提供參考,不一定能成為您想要的結果。以下是C說話法式設計50例(經典珍藏)正文


【法式1】
標題:有1、2、3、4個數字,能構成若干個互不雷同且無反復數字的三位數?都是若干?
1.法式剖析:可填在百位、十位、個位的數字都是1、2、3、4。構成一切的分列後再去
      失落不知足前提的分列。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,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,%d\n",i,j,k);
      }
  getch();
}

==============================================================
【法式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.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  long int i;
  int bonus1,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;
    else if(i<=200000)
      bonus=bonus1+(i-100000)*0.075;
        else if(i<=400000)
          bonus=bonus2+(i-200000)*0.05;
            else if(i<=600000)
              bonus=bonus4+(i-400000)*0.03;
                else if(i<=1000000)
                  bonus=bonus6+(i-600000)*0.015;
                    else
                      bonus=bonus10+(i-1000000)*0.01;
  printf("bonus=%d",bonus);
  getch();
}

==============================================================
【法式3】
標題:一個整數,它加上100後是一個完整平方數,再加上168又是一個完整平方數,請問該數是若干?
1.法式剖析:在10萬之內斷定,先將該數加上100後再開方,再將該數加上268後再開方,假如開方後
      的成果知足以下前提,等於成果。請看詳細剖析:
2.法式源代碼:

#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
  long int i,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%ld\n",i);
  }
  getch();
}

==============================================================
【法式4】
標題:輸出某年某月某日,斷定這一天是這一年的第幾天?
1.法式剖析:以3月5日為例,應當先把前兩個月的加起來,然後再加上5天即今年的第幾天,特別
      情形,閏年且輸出月份年夜於3時需斟酌多加一天。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int day,month,year,sum,leap;
  printf("\nplease input year,month,day\n");
  scanf("%d,%d,%d",&year,&month,&day);
  switch(month) /*先盤算某月之前月份的總天數*/
  {
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:printf("data error");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("It is the %dth day.",sum);
  getch();
}

==============================================================
【法式5】
標題:輸出三個整數x,y,z,請把這三個數由小到年夜輸入。
1.法式剖析:我們想方法把最小的數放到x上,先將x與y停止比擬,假如x>y則將x與y的值停止交流,
      然後再用x與z停止比擬,假如x>z則將x與z的值停止交流,如許能使x最小。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int x,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("small to big: %d %d %d\n",x,y,z);
  getch();
}

==============================================================
【法式6】
標題:用*號輸入字母C的圖案。
1.法式剖析:可先用'*'號在紙上寫出字母C,再分行輸入。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  printf("Hello C-world!\n");
  printf(" ****\n");
  printf(" *\n");
  printf(" * \n");
  printf(" ****\n");
  getch();
}

==============================================================
【法式7】
標題:輸入特別圖案,請在c情況中運轉,看一看,Very Beautiful!
1.法式剖析:字符共有256個。分歧字符,圖形紛歧樣。      
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  char a=176,b=219;
  printf("%c%c%c%c%c\n",b,a,a,a,b);
  printf("%c%c%c%c%c\n",a,b,a,b,a);
  printf("%c%c%c%c%c\n",a,a,b,a,a);
  printf("%c%c%c%c%c\n",a,b,a,b,a);
  printf("%c%c%c%c%c\n",b,a,a,a,b);
  getch();
}

==============================================================
【法式8】
標題:輸入9*9口訣。
1.法式剖析:分行與列斟酌,共9行9列,i掌握行,j掌握列。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,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"); /*每行後換行*/
  }
  getch();
}

==============================================================
【法式9】
標題:請求輸入國際象棋棋盤。
1.法式剖析:用i掌握行,j來掌握列,依據i+j的和的變更來掌握輸入黑方格,照樣白方格。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,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");
  }
  getch();
}

==============================================================
【法式10】
標題:打印樓梯,同時在樓梯上方打印兩個笑容。
1.法式剖析:用i掌握行,j來掌握列,j依據i的變更來掌握輸入黑方格的個數。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,j;
  printf("\1\1\n"); /*輸入兩個笑容*/
  for(i=1;i<11;i++)
  {
    for(j=1;j<=i;j++)
      printf("%c%c",219,219);
    printf("\n");
  }
  getch();
}

【法式11】
標題:古典成績:有一對兔子,從出身後第3個月起每一個月都生一對兔子,小兔子長到第三個月
   後每一個月又生一對兔子,假設兔子都不逝世,問每一個月的兔子總數為若干?
1.法式剖析: 兔子的紀律為數列1,1,2,3,5,8,13,21....
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  long f1,f2;
  int i;
  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();
}

==============================================================
【法式12】
標題:斷定101-200之間有若干個素數,並輸入一切素數。
1.法式剖析:斷定素數的辦法:用一個數分離去除2到sqrt(這個數),假如能被整除,
      則注解此數不是素數,反之是素數。       
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
#include "math.h"
main()
{
  int m,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("\nThe total is %d",h);
  getch();
}

==============================================================
【法式13】
標題:打印出一切的“水仙花數”,所謂“水仙花數”是指一個三位數,其列位數字立方和等於該數
   自己。例如:153是一個“水仙花數”,由於153=1的三次方+5的三次方+3的三次方。
1.法式剖析:應用for輪回掌握100-999個數,每一個數分化出個位,十位,百位。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,j,k,n;
  printf("'water flower'number is:");
  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);
  }
  getch();
}

==============================================================
【法式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.法式源代碼:

/* zheng int is divided yinshu*/
#include "stdio.h"
#include "conio.h"
main()
{
  int n,i;
  printf("\nplease input a number:\n");
  scanf("%d",&n);
  printf("%d=",n);
  for(i=2;i<=n;i++)
    while(n!=i)
    {
      if(n%i==0)
      {
        printf("%d*",i);
        n=n/i;
      }
      else
        break;
    }
  printf("%d",n);
  getch();
}

==============================================================
【法式15】
標題:應用前提運算符的嵌套來完成此題:進修成就>=90分的同窗用A表現,60-89分之間的用B表現,
   60分以下的用C表現。
1.法式剖析:(a>b)?a:b這是前提運算符的根本例子。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int score;
  char grade;
  printf("please input a score\n");
  scanf("%d",&score);
  grade=score>=90?'A':(score>=60?'B':'C');
  printf("%d belongs to %c",score,grade);
  getch();
}

==============================================================
【法式16】
標題:輸出兩個正整數m和n,求其最年夜條約數和最小公倍數。
1.法式剖析:應用輾除法。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int a,b,num1,num2,temp;
  printf("please input two numbers:\n");
  scanf("%d,%d",&num1,&num2);
  if(num1<num2)/*交流兩個數,使年夜數放在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:%d\n",a);
  printf("gongbeishu:%d\n",num1*num2/a);
  getch();
}

==============================================================
【法式17】
標題:輸出一行字符,分離統計出個中英文字母、空格、數字和其它字符的個數。
1.法式剖析:應用while語句,前提為輸出的字符不為'\n'.
      
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  char c;
  int letters=0,space=0,digit=0,others=0;
  printf("please input some characters\n");
  while((c=getchar())!='\n')
  {
    if(c>='a'&&c<='z'||c>='A'&&c<='Z')
      letters++;
      else if(c==' ')
        space++;
        else if(c>='0'&&c<='9')
          digit++;
        else
          others++;
  }
  printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
  space,digit,others);
  getch();
}

==============================================================
【法式18】
標題:求s=a+aa+aaa+aaaa+aa...a的值,個中a是一個數字。例如2+22+222+2222+22222(此時
   共有5個數相加),幾個數相加有鍵盤掌握。
1.法式剖析:症結是盤算出每項的值。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int a,n,count=1;
  long int sn=0,tn=0;
  printf("please input a and n\n");
  scanf("%d,%d",&a,&n);
  printf("a=%d,n=%d\n",a,n);
  while(count<=n)
  {
    tn=tn+a;
    sn=sn+tn;
    a=a*10;
    ++count;
  }
  printf("a+aa+...=%ld\n",sn);
  getch();
}

==============================================================
【法式19】
標題:一個數假如正好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3.編程
   找出1000之內的一切完數。
1. 法式剖析:請參照法式<--上頁法式14.
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  static int k[10];
  int i,j,n,s;
  for(j=2;j<1000;j++)
  {
    n=-1;
    s=j;
    for(i=1;i<j;i++)
    {
      if((j%i)==0)
      {
        n++;
        s=s-i;
        k[n]=i;
      }
    }
    if(s==0)
    {
      printf("%d is a wanshu",j);
      for(i=0;i<n;i++)
      printf("%d,",k);
      printf("%d\n",k[n]);
    }
  }
  getch();
}

==============================================================
【法式20】
標題:一球從100米高度自在落下,每次落地後反跳回原高度的一半;再落下,求它在
   第10次落地時,共經由若干米?第10次反彈多高?
1.法式剖析:見上面正文
2.法式源代碼:

#include "stdio.h"
#include "stdio.h"
main()
{
  float sn=100.0,hn=sn/2;
  int n;
  for(n=2;n<=10;n++)
  {
    sn=sn+2*hn;/*第n次落地時共經由的米數*/
    hn=hn/2; /*第n次反跳高度*/
  }
  printf("the total of road is %f\n",sn);
  printf("the tenth is %f meter\n",hn);
  getch();
}

【法式21】
標題:山公吃桃成績:山公第一天摘下若干個桃子,立即吃了一半,還不瘾,又多吃了一個
   第二天早上又將剩下的桃子吃失落一半,又多吃了一個。今後天天早上都吃了前一天剩下
   的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了若干。
1.法式剖析:采用逆向思想的辦法,從後往前揣摸。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int day,x1,x2;
  day=9;
  x2=1;
  while(day>0)
  {
    x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
    x2=x1;
    day--;
  }
  printf("the total is %d\n",x1);
  getch();
}

==============================================================
【法式22】
標題:兩個乒乓球隊停止競賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決議
   競賽名單。有人向隊員探聽競賽的名單。a說他和睦x比,c說他和睦x,z比,請編法式找出
   三隊賽手的名單。
1.法式剖析:斷定素數的辦法:用一個數分離去除2到sqrt(這個數),假如能被整除,
      則注解此數不是素數,反之是素數。       
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  char i,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("order is a--%c\tb--%c\tc--%c\n",i,j,k);
         }
      }
    }
  getch();
}

==============================================================
【法式23】
標題:打印出以下圖案(菱形)
   *
  ***
*****
*******
*****
  ***
   *
1.法式剖析:先把圖形分紅兩部門來對待,前四行一個紀律,後三行一個紀律,應用兩重
      for輪回,第一層掌握行,第二層掌握列。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,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");
  }
  getch();
}

==============================================================
【法式24】
標題:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
1.法式剖析:請捉住份子與分母的變更紀律。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int n,t,number=20;
  float a=2,b=1,s=0;
  for(n=1;n<=number;n++)
  {
    s=s+a/b;
    t=a;a=a+b;b=t;/*這部門是法式的症結,請讀者猜猜t的感化*/
  }
  printf("sum is %9.6f\n",s);
  getch();
}

==============================================================
【法式25】
標題:求1+2!+3!+...+20!的和
1.法式剖析:此法式只是把累加釀成了累乘。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  float n,s=0,t=1;
  for(n=1;n<=20;n++)
  {
    t*=n;
    s+=t;
  }
  printf("1+2!+3!...+20!=%e\n",s);
  getch();
}

==============================================================
【法式26】
標題:應用遞歸辦法求5!。
1.法式剖析:遞歸公式:fn=fn_1*4!
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i;
  int fact();
  for(i=0;i<5;i++)
  printf("\40:%d!=%d\n",i,fact(i));
  getch();
}
int fact(j)
int j;
{
  int sum;
  if(j==0)
    sum=1;
  else
    sum=j*fact(j-1);
  return sum;
}

==============================================================
【法式27】
標題:應用遞歸函數挪用方法,將所輸出的5個字符,以相反次序打印出來。
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i=5;
  void palin(int n);
  printf("\40:");
  palin(i);
  printf("\n");
  getch();
}
void palin(n)
int n;
{
  char next;
  if(n<=1)
  {
    next=getchar();
    printf("\n\0:");
    putchar(next);
  }
  else
  {
    next=getchar();
    palin(n-1);
    putchar(next);
  }
}

==============================================================
【法式28】
標題:有5小我坐在一路,問第五小我若干歲?他說比第4小我年夜2歲。問第4小我歲數,他說比第
   3小我年夜2歲。問第三小我,又說比第2人年夜兩歲。問第2小我,說比第一小我年夜兩歲。最初
   問第一小我,他說是10歲。請問第五小我多年夜?
1.法式剖析:應用遞歸的辦法,遞歸分為回推和遞推兩個階段。要想曉得第五小我歲數,需曉得
      第四人的歲數,順次類推,推到第一人(10歲),再往回推。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
age(n)
int n;
{
  int c;
  if(n==1) c=10;
  else c=age(n-1)+2;
  return(c);
}
main()
{
  printf("%d",age(5));
  getch();
}

==============================================================
【法式29】
標題:給一個不多於5位的正整數,請求:1、求它是幾位數,2、逆序打印出列位數字。
1. 法式剖析:學會分化出每位數,以下說明:(這裡是一種簡略的算法,師專數002班趙鑫供給)
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main( )
{
  long a,b,c,d,e,x;
  scanf("%ld",&x);
  a=x/10000;/*分化出萬位*/
  b=x%10000/1000;/*分化出千位*/
  c=x%1000/100;/*分化出百位*/
  d=x%100/10;/*分化出十位*/
  e=x%10;/*分化出個位*/
  if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
  else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
    else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
      else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
        else if (e!=0) printf(" there are 1,%ld\n",e);
  getch();
}

==============================================================
【法式30】
標題:一個5位數,斷定它是否是回文數。即12321是回文數,個位與萬位雷同,十位與千位雷同。   
1.法式剖析:同29例
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main( )
{
  long ge,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("this number is a huiwen\n");
  else
    printf("this number is not a huiwen\n");
  getch();
}

【法式31】
標題:請輸出禮拜幾的第一個字母來斷定一下是禮拜幾,假如第一個字母一樣,則持續
   斷定第二個字母。
1.法式剖析:用情形語句比擬好,假如第一個字母一樣,則斷定用情形語句或if語句斷定第二個字母。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
void main()
{
  char letter;
  printf("please input the first letter of someday\n");
  while((letter=getch())!='Y')/*當所按字母為Y時才停止*/
  {
    switch (letter)
    {
      case 'S':printf("please input second letter\n");
      if((letter=getch())=='a')
        printf("saturday\n");
        else if ((letter=getch())=='u')
          printf("sunday\n");
          else printf("data error\n");
      break;
      case 'F':printf("friday\n");break;
      case 'M':printf("monday\n");break;
      case 'T':printf("please input second letter\n");
      if((letter=getch())=='u')
        printf("tuesday\n");
        else if ((letter=getch())=='h')
          printf("thursday\n");
        else printf("data error\n");
      break;
      case 'W':printf("wednesday\n");break;
      default: printf("data error\n");
    }
  }
  getch();
}

==============================================================
【法式32】
標題:Press any key to change color, do you want to try it. Please hurry up!
1.法式剖析:            
2.法式源代碼:

#include "conio.h"
#include "stdio.h"
void main(void)
{
  int color;
  for (color = 0; color < 8; color++)
  {
    textbackground(color);/*設置文本的配景色彩*/
    cprintf("This is color %d\r\n", color);
    cprintf("Press any key to continue\r\n");
    getch();/*輸出字符看不見*/
  }
}

==============================================================
【法式33】
標題:進修gotoxy()與clrscr()函數   
1.法式剖析:
2.法式源代碼:

#include "conio.h"
#include "stdio.h"
void main(void)
{
  clrscr();/*清屏函數*/
  textbackground(2);
  gotoxy(1, 5);/*定位函數*/
  cprintf("Output at row 5 column 1\n");
  textbackground(3);
  gotoxy(20, 10);
  cprintf("Output at row 10 column 20\n");
  getch();
}

==============================================================
【法式34】
標題:演習函數挪用
1. 法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
void hello_world(void)
{
  printf("Hello, world!\n");
}
void three_hellos(void)
{
  int counter;
  for (counter = 1; counter <= 3; counter++)
    hello_world();/*挪用此函數*/
}
void main(void)
{
  three_hellos();/*挪用此函數*/
  getch();
}

==============================================================
【法式35】
標題:文本色彩設置
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
void main(void)
{
  int color;
  for (color = 1; color < 16; color++)
  {
    textcolor(color);/*設置文本色彩*/
    cprintf("This is color %d\r\n", color);
  }
  textcolor(128 + 15);
  cprintf("This is blinking\r\n");
  getch();
}

==============================================================
【法式36】
標題:求100以內的素數   
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "math.h"
#define N 101
main()
{
  int i,j,line,a[N];
  for(i=2;i<N;i++) a=i;
    for(i=2;i<sqrt(N);i++)
      for(j=i+1;j<N;j++)
      {
        if(a!=0&&a[j]!=0)
          if(a[j]%a==0)
            a[j]=0;
      }
  printf("\n");
  for(i=2,line=0;i<N;i++)
  {
    if(a!=0)
    {
      printf("%5d",a);
      line++;
    }
    if(line==10)
    {
      printf("\n");
      line=0;
    }
  }
  getch();
}

==============================================================
【法式37】
標題:對10個數停止排序
1.法式剖析:可以應用選擇法,即從後9個比擬進程中,選擇一個最小的與第一個元故舊換,
      下次類推,即用第二個元素與後8個停止比擬,並停止交流。       
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
#define N 10
main()
{
  int i,j,min,tem,a[N];
  /*input data*/
  printf("please input ten num:\n");
  for(i=0;i<N;i++)
  {
    printf("a[%d]=",i);
    scanf("%d",&a);
  }
  printf("\n");
  for(i=0;i<N;i++)
    printf("%5d",a);
  printf("\n");
  /*sort ten num*/
  for(i=0;i<N-1;i++)
  {
    min=i;
    for(j=i+1;j<N;j++)
      if(a[min]>a[j])
        min=j;
    tem=a;
    a=a[min];
    a[min]=tem;
  }
  /*output data*/
  printf("After sorted \n");
  for(i=0;i<N;i++)
  printf("%5d",a);
  getch();
}

==============================================================
【法式38】
標題:求一個3*3矩陣對角線元素之和
1.法式剖析:應用兩重for輪回掌握輸出二維數組,再將a累加後輸入。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
/* 假如應用的是TC系列編譯器則能夠須要添加下句 */
static void dummyfloat(float *x){ float y; dummyfloat(&y);}
main()
{
  float a[3][3],sum=0;
  int i,j;
  printf("please input rectangle element:\n");
  for(i=0;i<3;i++)
    for(j=0;j<3;j++)
      scanf("%f",&a[j]);
  for(i=0;i<3;i++)
    sum=sum+a;
  printf("duijiaoxian he is %6.2f",sum);
  getch();
}

==============================================================
【法式39】
標題:有一個曾經排好序的數組。現輸出一個數,請求按本來的紀律將它拔出數組中。
1. 法式剖析:起首斷定此數能否年夜於最初一個數,然後再斟酌拔出中央的數的情形,拔出後
     此元素以後的數,順次後移一個地位。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int a[11]={1,4,6,9,13,16,19,28,40,100};
  int temp1,temp2,number,end,i,j;
  printf("original array is:\n");
  for(i=0;i<10;i++)
    printf("%5d",a);
  printf("\n");
  printf("insert a new number:");
  scanf("%d",&number);
  end=a[9];
  if(number>end)
    a[10]=number;
  else
  {
    for(i=0;i<10;i++)
    {
      if(a>number)
      {
        temp1=a;
        a=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);
  getch();
}

==============================================================
【法式40】
標題:將一個數組逆序輸入。
1.法式剖析:用第一個與最初一個交流。
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
#define N 5
main()
{
  int a[N]={9,6,5,4,1},i,temp;
  printf("\n original array:\n");
  for(i=0;i<N;i++)
    printf("%4d",a);
  for(i=0;i<N/2;i++)
  {
    temp=a;
    a=a[N-i-1];
    a[N-i-1]=temp;
  }
  printf("\n sorted array:\n");
  for(i=0;i<N;i++)
    printf("%4d",a);
  getch();
}

==============================================================
【法式41】
標題:進修static界說靜態變量的用法   
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
varfunc()
{
  int var=0;
  static int static_var=0;
  printf("\40:var equal %d \n",var);
  printf("\40:static var equal %d \n",static_var);
  printf("\n");
  var++;
  static_var++;
}
void main()
{
  int i;
  for(i=0;i<3;i++)
    varfunc();
  getch();
}

==============================================================
【法式42】
標題:進修應用auto界說變量的用法
1.法式剖析:      
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,num;
  num=2;
  for(i=0;i<3;i++)
  {
    printf("\40: The num equal %d \n",num);
    num++;
    {
      auto int num=1;
      printf("\40: The internal block num equal %d \n",num);
      num++;
    }
  }
  getch();
}

==============================================================
【法式43】
標題:進修應用static的另外一用法。   
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
main()
{
  int i,num;
  num=2;
  for(i=0;i<3;i++)
  {
    printf("\40: The num equal %d \n",num);
    num++;
    {
      static int num=1;
      printf("\40:The internal block num equal %d\n",num);
      num++;
    }
  }
  getch();
}

==============================================================
【法式44】
標題:進修應用external的用法。
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
int a,b,c;
void add()
{
  int a;
  a=3;
  c=a+b;
}
void main()
{
  a=b=4;
  add();
  printf("The value of c is equal to %d\n",c);
  getch();
}

==============================================================
【法式45】
標題:進修應用register界說變量的辦法。
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
void main()
{
  register int i;
  int tmp=0;
  for(i=1;i<=100;i++)
  tmp+=i;
  printf("The sum is %d\n",tmp);
  getch();
}

==============================================================
【法式46】
標題:宏#define敕令演習(1)   
1.法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
void main()
{
  int num;
  int again=1;
  printf("\40: Program will stop if input value less than 50.\n");
  while(again)
  {
    printf("\40:Please input number==>");
    scanf("%d",&num);
    printf("\40:The square for this number is %d \n",SQ(num));
    if(num>=50)
      again=TRUE;
    else
      again=FALSE;
  }
  getch();
}

==============================================================
【法式47】
標題:宏#define敕令演習(2)
1.法式剖析:            
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
/*宏界說中許可包括兩道衣裳敕令的情況,此時必需在最左邊加上"\"*/
#define exchange(a,b) { \
                        int t;\
                        t=a;\
                        a=b;\
                        b=t;\
                      }
void main(void)
{
  int x=10;
  int y=20;
  printf("x=%d; y=%d\n",x,y);
  exchange(x,y);
  printf("x=%d; y=%d\n",x,y);
  getch();
}

==============================================================
【法式48】
標題:宏#define敕令演習(3)   
1.法式剖析:
2.法式源代碼:

#define LAG >
#define SMA <
#define EQ ==
#include "stdio.h"
#include "conio.h"
void main()
{
  int i=10;
  int j=20;
  if(i LAG j)
    printf("\40: %d larger than %d \n",i,j);
    else if(i EQ j)
      printf("\40: %d equal to %d \n",i,j);
      else if(i SMA j)
        printf("\40:%d smaller than %d \n",i,j);
      else
        printf("\40: No such value.\n");
  getch();
}

==============================================================
【法式49】
標題:#if #ifdef和#ifndef的綜合運用。
1. 法式剖析:
2.法式源代碼:

#include "stdio.h"
#include "conio.h"
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
void main()
{
  int a=10,b=20;
#ifdef MAX
  printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
  printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#ifndef MIN
  printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
  printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
  printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
  printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MIN
  printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
  printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
  getch();
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved