查看: 135|回复: 0

[软件] C语言经典算法27-37

[复制链接]

42

主题

0

好友

361

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 29 天

    连续签到: 3 天

    [LV.4]偶尔看看III

    发表于 2017-10-7 16:23:03 |显示全部楼层
    【程序27
    题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
    1.程序分析:
    2.程序源代码:
    #include "stdio.h"
    main()
    {
    int i=5;
    void palin(int n);
    printf("\40:");
    palin(i);
    printf("\n");
    }
    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.程序源代码:
    age(n)
    int n;
    {
    int c;
    if(n==1) c=10;
    else c=age(n-1)+2;
    return(c);
    }
    main()
    { printf("%d",age(5));
    }
    ==============================================================
    【程序29
    题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
    1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
    2.程序源代码:
    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);
    }
    ==============================================================
    【程序30
    题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
    1.程序分析:同29
    2.程序源代码:
    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");
    }
    【程序31
    题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
       判断第二个字母。
    1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
    2.程序源代码:
    #include
    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");
      }
     }
    }
    ==============================================================
    【程序32
    题目:Press any key to change color, do you want to try it. Please hurry up!
    1.程序分析:            
    2.程序源代码:
    #include
    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
    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");
    }
    ==============================================================
    【程序34
    题目:练习函数调用
    1. 程序分析:
    2.程序源代码:
    #include
    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
    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");
    }
    ==============================================================
    【程序36
    题目:求100之内的素数   
    1.程序分析:
    2.程序源代码:
    #include
    #include "math.h"
    #define N 101
    main()
    {
    int i,j,line,a[N];
    for(i=2;ifor(i=2;i for(j=i+1;j {
      if(a!=0&&a[j]!=0)
      if(a[j]%a==0)
      a[j]=0;}
    printf("\n");
    for(i=2,line=0;i{
     if(a!=0)
     {printf("%5d",a);
     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{
    printf("a[%d]=",i);
    scanf("%d",&a);}
    printf("\n");
    for(i=0;iprintf("%5d",a);
    printf("\n");
    /*sort ten num*/
    for(i=0;i{min=i;
    for(j=i+1;jif(a[min]>a[j]) min=j;
    tem=a;
    a=a[min];
    a[min]=tem;
    }
    /*output data*/
    printf("After sorted \n");
    for(i=0;iprintf("%5d",a);
    }
    ==============================================================

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-10-23 12:01 , Processed in 0.202946 second(s), 9 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部