首页 > 编程语言 > 详细

初涉 C 语言——(3)

时间:2015-09-25 16:32:25      阅读:172      评论:0      收藏:0      [点我收藏+]
  1. 编写程序求解:
    有1、2、3、4这几个数字,能组成多少个互不相同且无重复数字的三位数?

#include <stdio.h>
int main()
{
    int i, j, k;
    int count = 0;
    for (i = 1; i <= 4; i++)        //每个数字都有1234这四种可能
    {
        for (j = 1; j <= 4; j++)
        {
            for (k = 1; k <= 4; k++)
            {
                if ((i != j) && (j != k) && (i != k))  //前提是要无重复
                {
                    count++;
                    printf("%d%d%d\n", i, j, k);
                }
            }
        }
    }
    printf("count = %d\n", count);
    system("pause");
    return 0;
}

我的思路差不多也是这样,终于有一道题能对上老师的思路了技术分享


2.编写猜数字游戏。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
    int i = 0;
    int random = 0;
    while (1)
    {
        srand((unsigned)time(NULL));  /*rand是一个在标准库中可移植的实现伪随机数发生器的
        random = rand()%100;            函数,srand是一个初始化种子数的函数*/
        while (1)                      //模100取余是得到一个两位数
        {
            printf("请输入你猜的数:");
            scanf("%d", &i);
            if (i > random)
            {
                printf("猜大了唉~~\n");
            }
            else if (i < random)
            {
                printf("猜的有些小哦!\n");
            }
            else
            {
                printf("猜对了!你好厉害!\n");
                break;
            }
        }
    }
    return 0;
}

3.打印杨辉三角

                   1

                  1 1

                 1 2 1

                1 3 3 1

               1 4 6 4 1

                ......            特点是每个数等于肩上两个数的和

#include<stdio.h>
int main()
{
    int i = 0,j = 0,k = 0;
    int num = 0;
    int n = 0;
    scanf("%d",&n);
    for(i = 0;i < n;i++)
    {
        for(j = 0;j < n-i-1;j++)
        {
            printf(" ");
        }
        num = 1;
        printf("1 ");
        for(k = 1;k <= i;k++)
        {
            num = (num*(i-k+1))/k;
            printf("%d ",num);
        }
        printf("\n");
    }
    return 0;
}

其实我想了很久,找出来了每一行的数字和行号之间的关系,第i行的第n个数字的公式为:

1*(i/1)*((i-1)/2)*((i-2)/3)*((i-3)/4)*......*((i-n-1)/(n-1))

老师用的是用数组来存放每个数肩上的数字,不断地移动来相加得到,这也是我最初的想法,可是没能实现,就另谋出路了。

本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1698235

初涉 C 语言——(3)

原文:http://2627lounuo.blog.51cto.com/10696599/1698235

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!