#include “conio.h”
#include “stdio.h”
void main(void)
{
  long i;
  clrscr();/*清屏函数*/

目录

Technorati 标签: 趣味,c语言,编程,100例

  for(i=0;i<10000000;i++)
  {textbackground(4);

函数名: bar
功  能: 画一个二维条形图
用  法: void far bar(int left, int top, int right, int bottom);
程序例:

经典c程序100例==31–40

  cprintf(“***************n”);
  cprintf(“***************n”);
  cprintf(“***************n”);
  cprintf(“***************n”);
  cprintf(“***************n”);
  cprintf(“***************n”);
  cprintf(“***************n”);
  }getch();
}

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

【程序31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
   判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
2.程序源代码:
#include <stdio.h>
void main()
{
char letter;
printf(“please input the first letter of somedayn”);
while ((letter=getch())!=’Y’)/*当所按字母为Y时才结束*/
{ switch (letter)
{case ‘S’:printf(“please input second lettern”);
     if((letter=getch())==’a’)
      printf(“saturdayn”);
     else if ((letter=getch())==’u’)
         printf(“sundayn”);
       else printf(“data errorn”);
     break;
case ‘F’:printf(“fridayn”);break;
case ‘M’:printf(“mondayn”);break;
case ‘T’:printf(“please input second lettern”);
     if((letter=getch())==’u’)
      printf(“tuesdayn”);
     else if ((letter=getch())==’h’)
         printf(“thursdayn”);
       else printf(“data errorn”);
     break;
case ‘W’:printf(“wednesdayn”);break;
default: printf(“data errorn”);
  }
 }

  这个程序运行起来蛮有趣的,呵呵!

int main(void)
{
   /*
request auto detection */
   int gdriver = DETECT, gmode,
errorcode;
   int midx, midy, i;

}

【程序32】
题目:Press any key to change color, do you want to try it. Please hurry
up!
1.程序分析:            
2.程序源代码:
#include <conio.h>
void main(void)
{
int color;
for (color = 0; color < 8; color++)
 {
 textbackground(color);/*设置文本的背景颜色*/
 cprintf(“This is color %drn”, color);
 cprintf(“Press any key to continuern”);
 getch();/*输入字符看不见*/
 }

   /*
initialize graphics and local variables */
   initgraph(&gdriver, &gmode, “”);

}

【程序33】
题目:学习gotoxy()与clrscr()函数   
1.程序分析:
2.程序源代码:
#include <conio.h>
void main(void)
{
clrscr();/*清屏函数*/
textbackground(2);
gotoxy(1, 5);/*定位函数*/
cprintf(“Output at row 5 column 1n”);
textbackground(3);
gotoxy(20, 10);
cprintf(“Output at row 10 column 20n”);

   /*
read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error
occurred */
   {
      printf(“Graphics error: %sn”, grapherrormsg(errorcode));
      printf(“Press any key to halt:”);
      getch();
      exit(1); /* terminate
with an error code */
   }

}

【程序34】
题目:练习函数调用

  1. 程序分析:
    2.程序源代码:
    #include <stdio.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();/*调用此函数*/

    }

    【程序35】
    题目:文本颜色设置
    1.程序分析:
    2.程序源代码:
    #include <conio.h>
    void main(void)
    {
    int color;
    for (color = 1; color < 16; color++)
     {
     textcolor(color);/*设置文本颜色*/
     cprintf(“This is color %drn”, color);
     }
    textcolor(128 + 15);
    cprintf(“This is blinkingrn”);

    }

    【程序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]=i;
    for(i=2;i<sqrt(N);i++)
     for(j=i+1;j<N;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<N;i++)
    {
     if(a[i]!=0)
     {printf(“%5d”,a[i]);
     line++;}
     if(line==10)
     {printf(“n”);
    line=0;}
    }

    }

    【程序37】
    题目:对10个数进行排序
    1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
          下次类推,即用第二个元素与后8个进行比较,并进行交换。
          
    2.程序源代码:
    #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[i]);}
    printf(“n”);
    for(i=0;i<N;i++)
    printf(“%5d”,a[i]);
    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[i];
    a[i]=a[min];
    a[min]=tem;
    }
    /*output data*/
    printf(“After sorted n”);
    for(i=0;i<N;i++)
    printf(“%5d”,a[i]);

    }

    【程序38】
    题目:求一个3*3矩阵对角线元素之和
    1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
    2.程序源代码:
    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[i][j]);
    for(i=0;i<3;i++)
     sum=sum+a[i][i];
    printf(“duijiaoxian he is %6.2f”,sum);

    }

    【程序39】
    题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
    1.
    程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
         此元素之后的数,依次后移一个位置。
    2.程序源代码:
    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[i]);
    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[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.程序源代码:
    #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[i]);
     for(i=0;i<N/2;i++)
     {temp=a[i];
      a[i]=a[N-i-1];
      a[N-i-1]=temp;
     }
    printf(“n sorted array:n”);
    for(i=0;i<N;i++)
     printf(“%4d”,a[i]);
    }

经典c程序100例==41–50

【程序41】
题目:学习static定义静态变量的用法   
1.程序分析:
2.程序源代码:
#include “stdio.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();

   midx = getmaxx() / 2;
   midy = getmaxy() / 2;

}

【程序42】
题目:学习使用auto定义变量的用法
1.程序分析:      
2.程序源代码:
#include “stdio.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++;
  }
 }

   /*
loop through the fill patterns */
   for (i=SOLID_FILL;
i<USER_FILL; i++)
   {
      /* set the fill style */
      setfillstyle(i, getmaxcolor());

}

【程序43】
题目:学习使用static的另一用法。   
1.程序分析:
2.程序源代码:
#include “stdio.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 %dn”,num);
num++;
}
}

      /* draw the bar */
      bar(midx-50, midy-50, midx+50,
         midy+50);

}

【程序44】
题目:学习使用external的用法。
1.程序分析:
2.程序源代码:
#include “stdio.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 %dn”,c);

      getch();
   }

}

【程序45】
题目:学习使用register定义变量的方法。
1.程序分析:
2.程序源代码:
void main()
{
register int i;
int tmp=0;
for(i=1;i<=100;i++)
tmp+=i;
printf(“The sum is %dn”,tmp);

   /*
clean up */
   closegraph();
   return 0;
}

}

【程序46】
题目:宏#define命令练习(1)   
1.程序分析:
2.程序源代码:
#include “stdio.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;
}

函数名: bar3d
功  能: 画一个三维条形图
用  法: void far bar3d(int left, int top, int right, int bottom, int depth, int topflag);
程序例:

}

【程序47】
题目:宏#define命令练习(2)
1.程序分析:            
2.程序源代码:
#include “stdio.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=%dn”,x,y);
exchange(x,y);
printf(“x=%d; y=%dn”,x,y);

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

}

【程序48】
题目:宏#define命令练习(3)   
1.程序分析:
2.程序源代码:
#define LAG >
#define SMA <
#define EQ ==
#include “stdio.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”);

int main(void)
{
   /*
request auto detection */
   int gdriver = DETECT, gmode,
errorcode;
   int midx, midy, i;

}

【程序49】
题目:#if #ifdef和#ifndef的综合应用。

  1. 程序分析:
    2.程序源代码:
    #include “stdio.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 %dn”,MAXIMUM(a,b));
    #else
    printf(“40: The lower one is %dn”,MINIMUM(a,b));
    #endif
    #ifndef MIN
    printf(“40: The lower one is %dn”,MINIMUM(a,b));
    #else
    printf(“40: The larger one is %dn”,MAXIMUM(a,b));
    #endif
    #undef MAX
    #ifdef MAX
    printf(“40: The larger one is %dn”,MAXIMUM(a,b));
    #else
    printf(“40: The lower one is %dn”,MINIMUM(a,b));
    #endif
    #define MIN
    #ifndef MIN
    printf(“40: The lower one is %dn”,MINIMUM(a,b));
    #else
    printf(“40: The larger one is %dn”,MAXIMUM(a,b));
    #endif

    }

    【程序50】
    题目:#include 的应用练习   
    1.程序分析:
    2.程序源代码:
    test.h 文件如下:
    #define LAG >
    #define SMA <
    #define EQ ==
    #include “test.h” /*一个新文件50.c,包含test.h*/
    #include “stdio.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”);
    }

 

转到:趣味c语言编程100例(一) 

转到:趣味c语言编程100例(三)

转到:趣味c语言编程100例(四)

转自:


   /*
initialize graphics, local variables */
   initgraph(&gdriver, &gmode, “”);

   /*
read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error
occurred */
   {
      printf(“Graphics error: %sn”, grapherrormsg(errorcode));
      printf(“Press any key to halt:”);
      getch();
      exit(1); /* terminate
with error code */
   }

   midx = getmaxx() / 2;
   midy = getmaxy() / 2;

   /*
loop through the fill patterns */
   for (i=EMPTY_FILL;
i<USER_FILL; i++)
   {
      /* set the fill style */
      setfillstyle(i, getmaxcolor());

      /* draw the 3-d bar */
      bar3d(midx-50, midy-50, midx+50, midy+50, 10, 1);

      getch();
   }

   /*
clean up */
   closegraph();
   return 0;
}

函数名: bdos
功  能: DOS系统调用
用  法: int bdos(int dosfun, unsigned dosdx, unsigned dosal);
程序例:

#include <stdio.h>
#include <dos.h>

/* Get
current drive as ‘A’, ‘B’, … */
char current_drive(void)
{
   char curdrive;

   /*
Get current disk as 0, 1, … */
   curdrive = bdos(0x19, 0, 0);
   return(‘A’ +
curdrive);
}

int main(void)
{
   printf(“The current drive is %c:n”, current_drive());
   return 0;
}

函数名: bdosptr
功  能: DOS系统调用
用  法: int bdosptr(int dosfun, void *argument, unsigned dosal);
程序例:

#include <string.h>
#include <stdio.h>
#include <dir.h>
#include <dos.h>
#include <errno.h>
#include <stdlib.h>

#define  BUFLEN  80

int main(void)
{
   char  buffer[BUFLEN];
   int   test;

   printf(“Enter full pathname of a directoryn”);
   gets(buffer);

   test = bdosptr(0x3B,buffer,0);
      if(test)
      {
  printf(“DOS error message: %dn”, errno);
  /*
See errno.h for error listings */
  exit (1);
      }

   getcwd(buffer, BUFLEN);
   printf(“The current directory is: %sn”, buffer);

   return 0;
}

函数名: bioscom
功  能: 串行I/O通信
用  法: int bioscom(int cmd, char abyte, int port);
程序例:

#include <bios.h>
#include <conio.h>

#define COM1       0
#define DATA_READY 0x100
#define TRUE       1
#define FALSE      0

#define SETTINGS ( 0x80 | 0x02 |
0x00 | 0x00)

int main(void)
{
   int in, out, status, DONE =
FALSE;

   bioscom(0, SETTINGS, COM1);
   cprintf(“… BIOSCOM [ESC] to exit …n”);
   while (!DONE)
   {
      status = bioscom(3, 0, COM1);
      if (status & DATA_READY)
  if ((out = bioscom(2, 0,
COM1) & 0x7F) != 0)
     putch(out);
  if (kbhit())
  {
     if ((in = getch()) == ‘x1B’)
        DONE = TRUE;
     bioscom(1, in, COM1);
  }
   }
   return 0;
}

函数名: biosdisk
功  能: 软硬盘I/O
用  法: int biosdisk(int cmd, int drive, int head, int track, int sector
       int nsects, void *buffer);
程序例:

#include <bios.h>
#include <stdio.h>

int main(void)
{
   int result;
   char buffer[512];

   printf(“Testing to see if drive a: is
readyn”);
   result = biosdisk(4,0,0,0,0,1,buffer);
   result &= 0x02;
   (result) ? (printf(“Drive A: Readyn”)) :
       (printf(“Drive A: Not Readyn”));

   return 0;
}

函数名: biosequip
功  能: 检查设备
用  法: int biosequip(void);
程序例:

#include <bios.h>
#include <stdio.h>

int main(void)
{
   int result;
   char buffer[512];

   printf(“Testing to see if drive a: is
readyn”);
   result = biosdisk(4,0,0,0,0,1,buffer);
   result &= 0x02;
   (result) ? (printf(“Drive A: Readyn”)) :
       (printf(“Drive A: Not Readyn”));

   return 0;
}

函数名: bioskey
功  能: 直接使用BIOS服务的键盘接口
用  法: int bioskey(int cmd);
程序例:

#include <stdio.h>
#include <bios.h>
#include <ctype.h>

#define RIGHT  0x01
#define LEFT   0x02
#define CTRL   0x04
#define ALT    0x08

int main(void)
{
   int key, modifiers;

   /*
function 1 returns 0 until a key is pressed */
   while (bioskey(1) == 0);

   /*
function 0 returns the key that is waiting */
   key = bioskey(0);

   /*
use function 2 to determine if shift keys were used */
   modifiers = bioskey(2);
   if (modifiers)
   {
      printf(“[“);
      if (modifiers & RIGHT)
printf(“RIGHT”);
      if (modifiers &
LEFT)  printf(“LEFT”);
      if (modifiers &
CTRL)  printf(“CTRL”);
      if (modifiers & ALT)  
printf(“ALT”);
      printf(“]”);
   }
   /*
print out the character read */
   if (isalnum(key & 0xFF))
      printf(“‘%c’n”, key);
   else
      printf(“%#02xn”, key);
   return 0;
}

函数名: biosmemory
功  能: 返回存储块大小
用  法:int biosmemory(void);
程序例:

#include <stdio.h>
#include <bios.h>

int main(void)
{
   int memory_size;

   memory_size = biosmemory();  /* returns
value up to 640K */
   printf(“RAM size = %dKn”,memory_size);
   return 0;
}

函数名: biosprint
功  能: 直接使用BIOS服务的打印机I/O
用  法: int biosprint(int cmd, int byte, int port);
程序例:

#include <stdio.h>
#include <conio.h>
#include <bios.h>

int main(void)
{
   #define STATUS  2    /* printer
status command */
   #define PORTNUM 0    /* port
number for LPT1 */

   int status, abyte=0;

   printf(“Please turn off your printer.  Press any key to
continuen”);
   getch();
   status = biosprint(STATUS, abyte, PORTNUM);
   if (status & 0x01)
      printf(“Device time out.n”);
   if (status & 0x08)
      printf(“I/O error.n”);

   if (status & 0x10)
      printf(“Selected.n”);
   if (status & 0x20)
      printf(“Out of paper.n”);

   if (status & 0x40)
      printf(“Acknowledge.n”);
   if (status & 0x80)
      printf(“Not busy.n”);

   return 0;
}

函数名: biostime
功  能: 读取或设置BIOS时间
用  法: long biostime(int cmd, long newtime);
程序例:

#include <stdio.h>
#include <bios.h>
#include <time.h>
#include <conio.h>

int main(void)
{
   long bios_time;

   clrscr();
   cprintf(“The number of clock ticks since midnight
is:rn”);
   cprintf(“The number of seconds since midnight
is:rn”);
   cprintf(“The number of minutes since midnight
is:rn”);
   cprintf(“The number of hours since midnight
is:rn”);
   cprintf(“rnPress any key to quit:”);
   while(!kbhit())
   {
      bios_time = biostime(0, 0L);

      gotoxy(50, 1);
      cprintf(“%lu”,
bios_time);

      gotoxy(50, 2);
      cprintf(“%.4f”,
bios_time / CLK_TCK);

      gotoxy(50, 3);
      cprintf(“%.4f”,
bios_time / CLK_TCK / 60);

      gotoxy(50, 4);
      cprintf(“%.4f”,
bios_time / CLK_TCK / 3600);
   }
   return 0;
}

函数名: brk
功  能: 改变数据段空间分配
用  法: int brk(void *endds);
程序例:

#include <stdio.h>
#include <alloc.h>

int main(void)
{
   char *ptr;

   printf(“Changing allocation with brk()n”);
   ptr = malloc(1);
   printf(“Before brk() call: %lu bytes freen”, coreleft());
   brk(ptr+1000);
   printf(” After brk() call: %lu bytes freen”, coreleft());
   return 0;
}

函数名: bsearch
功  能: 二分法搜索
用  法: void *bsearch(const void *key, const void *base, size_t *nelem,  size_t
width, int(*fcmp)(const void *, const *));
程序例:

#include <stdlib.h>
#include <stdio.h>

#define NELEMS(arr) (sizeof(arr) /
sizeof(arr[0]))

int numarray[] = {123, 145, 512, 627, 800, 933};

int numeric (const int *p1, const int *p2)
{
   return(*p1 – *p2);
}

int lookup(int key)
{
   int *itemptr;

   /*
The cast of (int(*)(const void *,const void*))
      is needed to avoid a type mismatch error at
      compile time */
   itemptr = bsearch (&key, numarray, NELEMS(numarray),
      sizeof(int), (int(*)(const void *,const void *))numeric);
   return (itemptr != NULL);
}

int main(void)
{
   if (lookup(512))
      printf(“512 is in the table.n”);
   else
      printf(“512 isn’t in the table.n”);

   return 0;
}

目录

Null’s
Notebook