• C语言100个经典的算法


    C语言的学习要从基础開始。这里是100个经典的算法-1C语言的学习要从基础開始,这里是100个经典的算法


    题目:古典问题:有一对兔子,从出生后第3个月起每一个月都生一对兔子。小兔


    子长到第三个月后每一个月又生一对兔子,假如兔子都不死,问每一个月的兔子总数


    为多少?




    __________________________________________________________________




    程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....




    ___________________________________________________________________


    程序源码:
    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(" ");/*控制输出,每行四个*/
    f1=f1+f2;/*前两个月加起来赋值给第三个月*/
    f2=f1+f2;/*前两个月加起来赋值给第三个月*/
    }
    }


    上题还可用一维数组处理。you try!




    题目:推断101-200之间有多少个素数,并输出全部素数。




    __________________________________________________________________




    程序分析:推断素数的方法:用一个数分别去除2到sqrt(这个数),假设能被整


    除,则表明此数不是素数,反之是素数。




    ___________________________________________________________________




    程序源码:
    #include "math.h"
    main()
    {
    int m,i,k,h=0,leap=1;
    printf(" ");
    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(" ");
    }
    leap=1;
    }
    printf(" The total is %d",h);
    }




    题目:打印出全部的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位


    数字立方和等于该数本身。

    比如:153是一个“水仙花数”,由于153=1的三次方


    +5的三次方+3的三次方。




    __________________________________________________________________




    程序分析:利用for循环控制100-999个数,每一个数分解出个位,十位。百位。




    ___________________________________________________________________




    程序源码:
    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);
    }
    }
    printf(" ");
    }


     


    题目:将一个正整数分解质因数。比如:输入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的值,反复运行第一步。




    ___________________________________________________________________


     


    程序源码:
    /* zheng int is divided yinshu*/
    main()
    {
    int n,i;
    printf(" please input a number: ");
    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);
    }




    题目:利用条件运算符的嵌套来完毕此题:学习成绩>=90分的同学用A表示。60


    -89分之间的用B表示,60分下面的用C表示。






    __________________________________________________________________




    程序分析:(a>b)?a:b这是条件运算符的基本样例。






    ___________________________________________________________________




    程序源码:
    main()
    {
    int score;
    char grade;
    printf("please input a score ");
    scanf("%d",&score);
    grade=score>=90?

    'A'score>=60?

    'B':'C');
    printf("%d belongs to %c",score,grade);
    }


     


    题目:输入两个正整数m和n,求其最大公约数和最小公倍数。




    __________________________________________________________________




    程序分析:利用辗除法。




    ___________________________________________________________________




    程序源码:
    main()
    {
    int a,b,num1,num2,temp;
    printf("please input two numbers: ");
    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:%d ",a);
    printf("gongbeishu:%d ",num1*num2/a);
    }




    题目:输入一行字符。分别统计出当中英文字母、空格、数字和其他字符的个数







    __________________________________________________________________




    程序分析:利用while语句,条件为输入的字符不为' '.




    ___________________________________________________________________




    程序源码:
    #include "stdio.h"
    main()
    {char c;
    int letters=0,space=0,digit=0,others=0;
    printf("please input some characters ");
    while((c=getchar())!=' ')
    {
    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 ",letters,space,digit,others);
    }




    题目:求s=a+aa+aaa+aaaa+aa...a的值,当中a是一个数字。比如


    2+22+222+2222+22222(此时共同拥有5个数相加),几个数相加有键盘控制。




    __________________________________________________________________




    程序分析:关键是计算出每一项的值。




    ___________________________________________________________________




    程序源码:
    main()
    {
    int a,n,count=1;
    long int sn=0,tn=0;
    printf("please input a and n ");
    scanf("%d,%d",&a,&n);
    printf("a=%d,n=%d ",a,n);
    while(count<=n)
    {
    tn=tn+a;
    sn=sn+tn;
    a=a*10;
    ++count;
    }
    printf("a+aa+...=%ld ",sn);
    }




    题目:一个数假设恰好等于它的因子之和,这个数就称为“完数”。

    比如6=1+2


    +3.编程找出1000以内的全部完数。




    ___________________________________________________________________




    程序源码:
    main()
    {
    static int k[10];
    int i,j,n,s;
    for(j=2;j<1000;j++)
    {
    n=-1;
    s=j;
    for(i=1;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 printf("%d,",k);
    printf("%d ",k[n]);
    }
    }
    }


     


    题目:一球从100米高度自由落下。每次落地后反跳回原高度的一半。再落下,


    求它在第10次落地时。共经过多少米?第10次反弹多高?




    ___________________________________________________________________




    程序源码:
    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 ",sn);
    printf("the tenth is %f meter ",hn);
    }




    题目:一仅仅猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的


    一半又多吃了一个,到第十天的时候发现另一个.




    ___________________________________________________________________




    程序源码:
    /* 猴子吃桃问题 */
    main()

    int i,s,n=1;
    for(i=1;i<10;i++)
    {
    s=(n+1)*2
    n=s;
    }
    printf("第一天共摘了%d个桃 ",s);
    }


     


    迭代法求方程根


    ___________________________________________________________________


     


    /* 迭代法求一个数的平方根 */
    #define Epsilon 1.0E-6 /*控制解的精度*/
    #include<math.h>
    main()
    {
    float a,x0,x1;
    printf("请输入要求的数:");
    scanf("%f",&a);
    x0=a/2;
    x1=(x0+a/x0)/2;
    while(fabs(x1-x0)>=Epsilon)
    {
    x0=x1;
    x1=(x0+a/x0)/2;
    }
    printf("%f的平方根:%f.5 ",x1);
    }


     


    /* 上题的还有一种算法 */
    #define Epsilon 1.0E-6 /*控制解的精度*/ 
    #include <stdio.h>
    #include <math.h> 
    main() 
    {
    float num,pre,this; 
    do 

    scanf("%f",&num);/*输入要求平方根的数*/ 
    }while(num<0); 
    if (num==0) 
    printf("the root is 0"); 
    else 
    {
    this=1; 
    do

    pre=this;
    this=(pre+num/pre)/2; 
    }while(fabs(pre-this)>Epsilon);/*用解的精度,控制循环次数*/ 

    printf("the root is %f",this); 
    }




    用牛顿迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根
    /* 牛顿迭代法 */
    #define Epsilon 1.0E-6 /*控制解的精度*/
    #include<math.h>
    main()

    float x1,x0=1.5;
    x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);
    while(fabs(x1-x0>=Epsilon)

    x0=x1;
    x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);
    }
    printf("方程的根为%f ",x1);
    }




    用二分法求上题
    /* 二分法 */
    #define Epsilon 1.0E-5 /*控制解的精度*/
    #include<math.h>


    main()

    folat x1,x2,x0,f1,f2,f0;
    x0=(x1+x2)/2;
    f0=2*x0*x0*x0-4*x0*x0+3*x0-6; /* 求中点的函数值 */
    while(fabs(f0)>=Epsilon)

    if(f0*f1<0)
    { x2=x0;
    f2=2*x2*x2*x2-4*x2*x2+3*x2-6;
    }
    if(f0*f2<0)
    { x1=x0;
    f1=2*x1*x1*x1-4*x1*x1+3*x1-6;
    }
    x0=(x1+x2)/2;
    f0=2*x0*x0*x0-4*x0*x0+3*x0-6;
    }
    printf("用二分法求得方程的根:%f ",x0); 
    }




    题目:打印出例如以下图案(菱形)


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


    ___________________________________________________________________




    程序分析:先把图形分成两部分来看待。前四行一个规律,后三行一个规律,利


    用双重for循环。第一层控制行。第二层控制列。




    ___________________________________________________________________




    程序源码:
    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(" ");
    }
    for(i=0;i<=2;i++)
    {
    for(j=0;j<=i;j++)
    printf(" ");
    for(k=0;k<=4-2*i;k++)
    printf("*");
    printf(" ");
    }
    }




    题目:一个5位数,推断它是不是回文数。即12321是回文数,个位与万位同样,


    十位与千位同样。


    ___________________________________________________________________




    程序分析:同29例


    ___________________________________________________________________




    程序源码:
    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 ");
    else
    printf("this number is not a huiwen ");
    }


     


    题目:请输入星期几的第一个字母来推断一下是星期几,假设第一个字母一样。


    则继续推断第二个字母。


    ___________________________________________________________________




    程序分析:用情况语句比較好。假设第一个字母一样,则推断用情况语句或if语


    句推断第二个字母。




    ___________________________________________________________________




    程序源码:
    #include <stdio.h>
    void main()
    {
    char letter;
    printf("please input the first letter of someday ");
    while ((letter=getch())!='Y') /*当所按字母为Y时才结束*/
    { switch (letter)
    {case 'S':printf("please input second letter ");
    if((letter=getch())=='a')
    printf("saturday ");
    else if ((letter=getch())=='u')
    printf("sunday ");
    else printf("data error ");
    break;
    case 'F':printf("friday ");break;
    case 'M':printf("monday ");break;
    case 'T':printf("please input second letter ");
    if((letter=getch())=='u')
    printf("tuesday ");
    else if ((letter=getch())=='h')
    printf("thursday ");
    else printf("data error ");
    break;
    case 'W':printf("wednesday ");break;
    default: printf("data error ");
    }
    }
    }




    题目:Press any key to change color, do you want to try it. Please


    hurry up!


    ___________________________________________________________________




    程序源码:
    #include <conio.h>
    void main(void)
    {
    int color;
    for (color = 0; color < 8; color++)

    textbackground(color); /*设置文本的背景颜色*/
    cprintf("This is color %d ", color);
    cprintf("ress any key to continue ");
    getch(); /*输入字符看不见*/
    }
    }




    题目:学习gotoxy()与clrscr()函数


    ___________________________________________________________________




    程序源码:
    #include <conio.h>
    void main(void)
    {
    clrscr(); /*清屏函数*/
    textbackground(2);
    gotoxy(1, 5); /*定位函数*/
    cprintf("Output at row 5 column 1 ");
    textbackground(3);
    gotoxy(20, 10);
    cprintf("Output at row 10 column 20 ");
    }


     


    题目:练习函数调用


    ___________________________________________________________________




    程序源码:
    #include <stdio.h>
    void hello_world(void)
    {
    printf("Hello, world! ");
    }
    void three_hellos(void)
    {
    int counter;
    for (counter = 1; counter <= 3; counter++)
    hello_world();/*调用此函数*/
    }
    void main(void)
    {
    three_hellos();/*调用此函数*/
    }


     


    题目:文本颜色设置


    ___________________________________________________________________




    程序源码:
    #include <conio.h>
    void main(void)
    {
    int color;
    for (color = 1; color < 16; color++)
    {
    textcolor(color);/*设置文本颜色*/
    cprintf("This is color %d ", color);
    }
    textcolor(128 + 15);
    cprintf("This is blinking ");
    }




    题目:求100之内的素数


    ___________________________________________________________________




    程序源码:
    #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(" ");
    for(i=2,line=0;i<N;i++)
    {
    if(a!=0)
    {printf("%5d",a);
    line++;}
    if(line==10)
    {printf(" ");
    line=0;}
    }
    }




    题目:对10个数进行排序


    ___________________________________________________________________




    程序分析:能够利用选择法,即从后9个比較过程中。选择一个最小的与第一个


    元素交换,下次类推。即用第二个元素与后8个进行比較,并进行交换。




    程序源码:
    #define N 10
    main()
    {int i,j,min,tem,a[N];
    /*input data*/
    printf("please input ten num: ");
    for(i=0;i<N;i++)
    {
    printf("a[%d]=",i);
    scanf("%d",&a);}
    printf(" ");
    for(i=0;i<N;i++)
    printf("%5d",a);
    printf(" ");
    /*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 ");
    for(i=0;i<N;i++)
    printf("%5d",a);
    }




    题目:求一个3*3矩阵对角线元素之和


    ___________________________________________________________________




    程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。


    ___________________________________________________________________




    程序源码:
    main()
    {
    float a[3][3],sum=0;
    int i,j;
    printf("please input rectangle element: ");
    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);
    }




    题目:有一个已经排好序的数组。现输入一个数。要求按原来的规律将它插入数


    组中。


    ___________________________________________________________________




    程序分析:首先推断此数是否大于最后一个数。然后再考虑插入中间的数的情况


    ,插入后此元素之后的数,依次后移一个位置。


    ___________________________________________________________________




    程序源码:
    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: ");
    for(i=0;i<10;i++)
    printf("%5d",a);
    printf(" ");
    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);
    }




    题目:将一个数组逆序输出。


    ___________________________________________________________________




    程序分析:用第一个与最后一个交换。




    ___________________________________________________________________




    程序源码:
    #define N 5
    main()
    { int a[N]={9,6,5,4,1},i,temp;
    printf(" original array: ");
    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(" sorted array: ");
    for(i=0;i<N;i++)
    printf("%4d",a);
    }


     


    题目:学习static定义静态变量的使用方法


    ___________________________________________________________________




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


     


    题目:学习使用auto定义变量的使用方法


    ___________________________________________________________________




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




    C语言的学基础,100个经典的算法-2
    程序源码:
    #include "stdio.h"
    main()
    {
    int i,num;
    num=2;
    for(i=0;i<3;i++)
    {
    printf("40: The num equal %d ",num);
    num++;
    {
    static int num=1;
    printf("40:The internal block num equal %d ",num);
    num++;
    }
    }
    }


     


    题目:学习使用external的使用方法。


    ___________________________________________________________________




    程序源码:
    #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 %d ",c);
    }


     


    题目:学习使用register定义变量的方法。


    ___________________________________________________________________




    程序源码:
    void main()
    {
    register int i;
    int tmp=0;
    for(i=1;i<=100;i++)
    tmp+=i;
    printf("The sum is %d ",tmp);
    }


     


    题目:宏#define命令练习(1)


    ___________________________________________________________________




    程序源码:
    #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. ");
    while(again)
    {
    printf("40lease input number==>");
    scanf("%d",&num);
    printf("40:The square for this number is %d ",SQ(num));
    if(num>=50)
    again=TRUE;
    else
    again=FALSE;
    }
    }


     


    题目:宏#define命令练习(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=%d ",x,y);
    exchange(x,y);
    printf("x=%d; y=%d ",x,y);
    }


     


    题目:宏#define命令练习(3)


    ___________________________________________________________________




    程序源码:
    #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 ",i,j);
    else if(i EQ j)
    printf("40: %d equal to %d ",i,j);
    else if(i SMA j)
    printf("40:%d smaller than %d ",i,j);
    else
    printf("40: No such value. ");
    }


     


    题目:#if #ifdef和#ifndef的综合应用。


    ___________________________________________________________________




    程序源码:
    #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 %d ",MAXIMUM(a,b));
    #else
    printf("40: The lower one is %d ",MINIMUM(a,b));
    #endif
    #ifndef MIN
    printf("40: The lower one is %d ",MINIMUM(a,b));
    #else
    printf("40: The larger one is %d ",MAXIMUM(a,b));
    #endif
    #undef MAX
    #ifdef MAX
    printf("40: The larger one is %d ",MAXIMUM(a,b));
    #else
    printf("40: The lower one is %d ",MINIMUM(a,b));
    #endif
    #define MIN
    #ifndef MIN
    printf("40: The lower one is %d ",MINIMUM(a,b));
    #else
    printf("40: The larger one is %d ",MAXIMUM(a,b));
    #endif
    }


     


    题目:#include 的应用练习


    ___________________________________________________________________




    程序源码:
    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 ",i,j);
    else if(i EQ j)
    printf("40: %d equal to %d ",i,j);
    else if(i SMA j)
    printf("40:%d smaller than %d ",i,j);
    else
    printf("40: No such value. ");
    }




    题目:学习使用按位与 & 。




    ___________________________________________________________________




    程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1


    ___________________________________________________________________




    程序源码:
    #include "stdio.h"
    main()
    {
    int a,b;
    a=077;
    b=a&3;
    printf("40: The a & b(decimal) is %d ",b);
    b&=7;
    printf("40: The a & b(decimal) is %d ",b);
    }


     


    题目:学习使用按位或 | 。


    ___________________________________________________________________




    程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1


    ___________________________________________________________________




    程序源码:
    #include "stdio.h"
    main()
    {
    int a,b;
    a=077;
    b=a|3;
    printf("40: The a & b(decimal) is %d ",b);
    b|=7;
    printf("40: The a & b(decimal) is %d ",b);
    }


     


    题目:学习使用按位异或 ^ 。




    ___________________________________________________________________




    程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0


    ___________________________________________________________________




    程序源码:
    #include "stdio.h"
    main()
    {
    int a,b;
    a=077;
    b=a^3;
    printf("40: The a & b(decimal) is %d ",b);
    b^=7;
    printf("40: The a & b(decimal) is %d ",b);
    }


     


    题目:取一个整数a从右端開始的4~7位。




    ___________________________________________________________________




    程序分析:能够这样考虑: 
    (1)先使a右移4位。
    (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
    (3)将上面二者进行&运算。


    ___________________________________________________________________




    程序源码:
    main()
    {
    unsigned a,b,c,d;
    scanf("%o",&a);
    b=a>>4; 
    c=~(~0<<4);
    d=b&c;
    printf("%o %o ",a,d);
    }


     


    题目:学习使用按位取反~。




    ___________________________________________________________________




    程序分析:~0=1; ~1=0;


    ___________________________________________________________________




    程序源码:
    #include "stdio.h"
    main()
    {
    int a,b;
    a=234;
    b=~a;
    printf("40: The a's 1 complement(decimal) is %d ",b);
    a=~a;
    printf("40: The a's 1 complement(hexidecimal) is %x ",a);
    }


     


    题目:绘图,学用circle画圆形。


    ___________________________________________________________________




    程序源码:
    /*circle*/
    #include "graphics.h"
    main()
    {
    int driver,mode,i;
    float j=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;
    }
    }


     


    题目:绘图。学用line画直线。




    ___________________________________________________________________




    程序源码:
    #include "graphics.h"
    main()
    {
    int driver,mode,i;
    float x0,y0,y1,x1;
    float j=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;
    }
    }


     


    题目:绘图。学用rectangle画方形。


    ___________________________________________________________________




    程序分析:利用for循环控制100-999个数,每一个数分解出个位,十位,百位。




    ___________________________________________________________________




    程序源码:
    #include "graphics.h"
    main()
    {
    int x0,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,"How beautiful it is!");
    line(130,60,480,60);
    setcolor(2);
    circle(269,269,137);



     

  • 相关阅读:
    HDOJ 4747 Mex
    HDU 1203 I NEED A OFFER!
    HDU 2616 Kill the monster
    HDU 3496 Watch The Movie
    Codeforces 347A A. Difference Row
    Codeforces 347B B. Fixed Points
    Codeforces 372B B. Hungry Sequence
    HDU 1476 Sudoku Killer
    HDU 1987 How many ways
    HDU 2564 词组缩写
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5411523.html
Copyright © 2020-2023  润新知