作为一个小白,自己学C的时候就想找些代码练练手,就整理了一些。

1.最大公约数和最小公倍数

# include <stdio.h>
int main(void)
{
     int i, j;
    int p, q;
    int m, n;
    printf("请输入您想要操作的两个数:");
    scanf("%d %d", &p, &q);
    i = p;
    j = q;
    // 将较小的数放在 i, 较大的数放在 j
    int temp;
    if (i>j)
    {
      temp = j;
      j = i;
      i = temp;
    }
    int r;
    r = j%i;
    while (r!=0)
    {
       j = i;
      i = r;
      r = j%i;
    }
    m = i;
    n = (p*q)/m;
    printf("最大公约数为:%d\n最小公倍数为:%d\n", m, n);
    return 0;
}
 

2.

将大写字母与小写字母相互转换

# include <stdio.h>
int main(void)
{
   char big, small;
   big = getchar();
   small = big + ;
   putchar(small);    return ;
}

3.约瑟夫环问题

问题描述:
     杰克船长想要从 20 个水手中选出一个人做大副,为了公平
  起见,所有人围坐成一个圈,依次从 1 ~ 3 循环报数,当
  报到 3 时的人退出,最后的人即为大副。如果你想要做大副
  你要坐在那个位子?

# include <stdio.h>
# define PERSON_CNT
# define OUT_NUM
int main(void)
{
  int Person[PERSON_CNT] = {}, count, PersonOut;
   int i;
   // 为每个人编号,编号是下标加 1
   for (i=; i<PERSON_CNT; ++i)
   Person[i] = i + ;
   // 记录报数的人的人数
   PersonOut = PERSON_CNT;
   count = ;
   while (PersonOut > ) // 判断还剩下一个人
   {
     for (i=; i<PERSON_CNT; ++i) // 一个个报数排除
     {
       if (Person[i] != )
       {
         count++; // 报数循环
         if (count == OUT_NUM)
         {
           // 将出局的人打印出来
            printf("No.%-2d Out! \n", Person[i]);
           Person[i] = ; // 将编号设置为 0
           count = ; // 将计数器归零
           PersonOut--;
         }
       }
       }
     }
   for (i=; i<PERSON_CNT; ++i)
   {
     if (Person[i] != )
     printf("The last person is No.%-2d!\n", Person[i]);
   }    return ;
}

4. 杨辉三角

问题描述:
       要求程序输出一个由数字组成的等腰三角形,三角形
    的两个腰上的数字和顶角上的数字都为以,而三角形
    内的每个数字等于它上一行正对的头顶上的两数字的
    和。
 数学分析结果:
    为了使输出结果是等腰三角形,可知道若三角形共有
    n 行,则第 i 行之前需要输出的空格数为 n-i-1个。
 代码分析:
    下面的代码是将数据做了类似与数组的处理,每行的
    每个数都是从第 0 行 第 0 个数据开始

# include <stdio.h>
int main(void)
{
   int i, n, r, j, s;
   printf("请输入您想要输出的行数:");
   scanf("%d", &n);
   for (i=; i<n; ++i) // 控制行的循环
   {
      for (j=; j<=n--i; ++j) // 控制每行前面要输出的空格
     printf(" "); // 里面是两个空格。
      for (r=; r<=i; ++r) // 控制每一行的每个数字的输出{
      {
       s = ; // 每个数据都相当于 i 个数中取 r 的数的组合数,求组合数的值
       for (j=; j<=r; j++) // 求组合数
        if (j!=) // 每行第零个数都是 1
         s = s * (i-r+j) / j;
       printf("%4d", s); // 输出第 i 行的第 r 个数
     }
       printf("\n"); // 每行输出结束后,输出换行
   }    return ;
}

5.输出三位数的逆序数

# include <stdio.h>
int main(void)
{
   int number_1;
   printf("请输入一个三位数:");
   scanf("%d", &number_1);
   int i, j, k;
   i = number_1/;
   j = (number_1 - i*)/;
   k = number_1%;
   int number_2;
   number_2 = i + j* + k*;
   printf("%d", number_2); return ;
}

6.十进制转化为二进制数

# include <stdio.h>
# define N // 两个字节
int main(void)
{
unsigned int decimal; // 定义无符号十进制数
int arry[N], i, j;
printf("请输入您想要转换的数:");
scanf("%d", &decimal);
i = ;
do
{
arry[i] = decimal%;
++i;
decimal /= ;
} while (decimal);
printf("\n转换后的二进制数为:");
for (j=i-; j>=; --j) // 逆序输出
{
printf("%d", arry[j]);
if (j% == && j != ) // 每个四位打印分隔符
{
printf(" ");
}
}
printf("\n"); return ;
}

7. 生成随机数种子

srand 函数

# include <stdio.h>
# include <time.h>
# include <stdlib.h>
int main(void)
{
srand(time());
printf("%ld", + rand()%); return ;
}

每次运行后产生的结果都不相同。

8.判断某年是否为闰年

# include <stdio.h>
int main(void)
{
int i;
printf("请输入您想要判定的年份:");
scanf("%d", &i);
if (i%== && i%!= ||i%==)
printf("%d 年是闰年!\n", i);
else
printf("%d年不是闰年!\n", i); return ;
}

9.日期转换,将年月日转换成某年的第几天

# include <stdio.h>
int main(void)
{
int DayTab[][] = {
{, , , , , , , , , , , },
{, , , , , , , , , , , }
}; // 使用一个二维数组储存闰年和非闰年的每月的天数
int Year, Month, Day, DayCnt, Leap, i;
printf("请按照年月日的顺序输入日期:");
// 获取日期
scanf("%d%*c%d%*c%d", &Year, &Month, &Day);
/*
由于无法保证用户输入日期的格式,使用%*c表示跳过一个输
入的字符,如要跳过两个字符,使用&2*c
*/
DayCnt = Day;
// 判断是否为闰年
Leap = Year% == && Year% != || Year% == ;
for (i=; i<Month-; ++i)
{
DayCnt += DayTab[Leap][i];
}
printf("%d年%d月%d日是%d年的第%d天!\n", Year, Month, Day, Year, DayCnt); return ;
}

10.

取出一个整数的第 k 位
   问题描述:即将一个数的二进制数的从右数起的第
   k 为二进制数字输出。

# include <stdio.h>
int main(void)
{
int i, j, k;
printf("请输入您想要操作的数:");
scanf("%d", &i);
printf("请输入您想要拿出的位数:");
scanf("%d", &j);
i >>= j-; // 将 i 向右移动 j-1 位
k = i&; // 按位与运算
printf("%d\n", k); return ;
}

11.判断一个数字是否为素数

# include <stdio.h>
int main(void)
{
int i, j;
printf("请输入您想要判定的数:");
scanf("%d", &i);
for (j=; j<i; ++j)
{
if (i%j == )
break;
}
if (j == i)
printf("%d是素数!\n", i);
else
printf("%d不是素数!\n", i); return ;
}

12. 矩阵转置  将一个 3*4 的矩阵转置成一个 4*3 的矩阵

# include <stdio.h>
# include <time.h>
# include <stdlib.h>
int main(void)
{
srand(time()); // 生成随机数种子
int arry_1[][], arry_2[][];
int i, j;
for (i=; i<; ++i)
for (j=; j<; ++j)
{
arry_1[i][j] = rand()%; // 生成随机数
}
for (i=; i<; ++i)
for (j=; j<; ++j)
{
arry_2[j][i] = arry_1[i][j]; // 矩阵转置
}
for (i=; i<; ++i) // 打印原矩阵
{
for (j=; j<; ++j)
{
printf("%-4d", arry_1[i][j]);
}
printf("\n");
}
for (i=; i<; ++i) // 打印转置后的矩阵
{
for (j=; j<; ++j)
{
printf("%-4d", arry_2[i][j]);
}
printf("\n");
} return ;
}

13.九九乘法口诀表

# include <stdio.h>
int main(void)
{
int i, j, k;
for (i=; i<=; ++i)
{
for (j=; j<=i; ++j)
{
k = j*i;
printf("%2d * %2d = %2d", j, i, k);
}
printf("\n");
} return ;
}

14.

比赛选手评分
   规则:去除最高分和最低分,以剩下的分数的平均分为准。

# include <stdio.h>
// 前置申明
double MAX(double *, int);
double MIN(double *, int);
int main(void)
{
int i; // 裁判人数
double sum = , ave, max, min, score[i];
// 数据代表 总分,平均分,最高分,最低分,每个裁判各处的分数
printf("请输入裁判人数:");
scanf("%d", &i);
printf("\n请输入每个裁判给的分数:");
int j;
for (j=; j<i; ++j) // 输入裁判评分情况
{
scanf("%lf", &score[j]);
}
max = MAX(score, i); //求出最高分
min = MIN(score, i); //求出最低分
for (j=; j<i; ++j)
{
sum += score[j];
}
ave = (sum - min - max) * (1.0/(i - ));
printf("选手总分为:%lf,选手平均得分为:%lf", sum, ave); return ;
}
// 求最大值
double MAX(double * a, int i)
{
double max;
for (int j=; j<i-; ++j)
{
if (a[j] > a[j+])
max = a[j];
else
max = a[j+];
}
return max;
}
// 求最小值
double MIN(double * a, int i)
{
double min;
for (int j=; j<i-; ++j)
{
if (a[j] < a[j+])
min = a[j];
else
min = a[j+];
}
return min;
}

15. Fibonacci

# include <stdio.h>
int main(void)
{
int i, j, k;
int val;
i = ;
j = ;
for (k = ; k <= ; ++k)
{
if ( == k)
val = i;
else if ( == k)
val = j;
else
{
val = i + j;
i = j;
j = val;
}
printf("%d\n", val);
} return ; // 次程序和上一个程序的区别是使用循环和选择将数组替换了
}

16.

猴子吃桃问题:
   猴子第一天摘了若干个桃子,当即吃了一半零一个,以后每天
   都吃剩下的一半零一个,到第十天,准备吃的时候,只剩下了
   一个,问最开始猴子摘了多少个桃子。

# include <stdio.h>
int main(void)
{
int i, sum = ;
for (i=; i<; ++i)
{
sum = (sum+) * ;
}
printf("%d", sum); return ;
}

17.将一个整数的二进制表示的第 k 位清零

# include <stdio.h>
int main(void)
{
int i, j, k;
printf("请输入您想要操作的数和所操作的位数:");
scanf("%d %d", &i, &j);
k = i&~(<<j-);
printf("%o,%o\n", i, k); return ;
}

18. 交换两数的值

# include <stdio.h>
int main(void)
{
int i, j, temp;
printf("请输入两个需要被交换的数:");
scanf("%d %d", &i, &j);
temp = i;
i = j;
j = temp;
printf("%d, %d", i, j); return ;
}

适合初学C语言是练习的代码的更多相关文章

  1. 初学c语言

    虽然有一点点基础,但是还是从头学吧,这一周也就一些c语言的几个代码代表的意思和一个Hello world的程序. #include是头文件名,<>这是要返回的函数类型,然后是main主函数 ...

  2. 为什么还坚持.NET? 找一门适合自己的语言去做编程

    为什么还坚持.NET? 找一门适合自己的语言去做编程 接触了.NET快十二年了,现在专注于分布式服务的开发. 中间经历过各种编程语言的诱惑,ios等. 前几年才对自己有比较明确的定位 技术上:找到适合 ...

  3. Tinyhttpd - 超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client(Qt也有很多第三方HTTP类)

    - 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Htt ...

  4. NSGA,NSGA-II,Epsilon-MOEA,DE C语言Deb教授原版代码

    NSGA,NSGA-II,Epsilon-MOEA,Basic Differential Evolution (DE) C语言Deb教授原版代码地址 觉得有用的话,欢迎一起讨论相互学习~[Follow ...

  5. c语言心形告白代码实现

    c语言心形告白代码实现 1.彩色告白 include<stdio.h> include<math.h> include<windows.h> include< ...

  6. 初学Objective-C语言需要了解的星星点点

             其实大多数开发初学者都有一些相同的特点,可以说是一种“职业病”.Most有其他平台开发基础的初学者,看到Xcode就想摩拳擦掌:看到Interface Builder就想跃跃欲试:而 ...

  7. PHP和Java的主要区别有哪些?哪个最适合Web开发语言?

    一.前言 PHP和Java都是现在比较流行的二种编程语言. 对于许多新手来说,都会思考如果学的时候,该学哪种语言呢?下面这篇文章给大家整理两者的区别以及一些选择建议,一起来看看吧. 二.简介 PHP与 ...

  8. 适合学习C语言开源项目——嵌入式脚本语言 Berry

    嵌入式脚本语言 Berry github网址 :https://github.com/Skiars/berry Berry 是一款面向小型嵌入式系统的脚本语言,目前发布了 0.1.0 版本.相比于其他 ...

  9. zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)

    af 公用荷兰语 af-ZA 公用荷兰语 - 南非 sq 阿尔巴尼亚 sq-AL 阿尔巴尼亚 -阿尔巴尼亚 ar 阿拉伯语 ar-DZ 阿拉伯语 -阿尔及利亚 ar-BH 阿拉伯语 -巴林 ar-EG ...

随机推荐

  1. Java开发中常见的异常问题

    要调试程序,自然需要对程序中的常见的异常有一定的了解,因此在这里我将一些常见的Java程序中的异常列举出来给大家参考 AD: 作为一名开发者,Java程序员,很自然必须熟悉对程序的调试方法.而要调试程 ...

  2. 洛谷——P4109 [HEOI2015]定价

    P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...

  3. React深入 - 手写redux api

    简介: 手写实现redux基础api createStore( )和store相关方法 api回顾: createStore(reducer, [preloadedState], enhancer) ...

  4. xshell连接Linux(centos6.8)失败的解决方法

    注意:本人使用的是Centos6.8版本. Centos7以上版本linux命令会又不一样的地方. 启动xshell终端进行连接服务器:使用命令:ssh + ip地址或是手动使用可视化操作窗口操作, ...

  5. mysql EXPLAIN Join Types 手册解释 及数据实操

     第一部分:名称解释 文档地址 https://dev.mysql.com/doc/refman/5.7/en/explain-output.html EXPLAIN Join Types: The ...

  6. vue ui组件muse-ui的使用

    安装 npm install muse-ui typeface-roboto material-design-icons vuex axios --save Muse UI 是一套 Material ...

  7. 【HDU 2028】Lowest Common Multiple Plus

    Problem Description 求n个数的最小公倍数. Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output 为每组测试数据输出它们的最小公倍数 ...

  8. Linux 命令大全 - 管理文件和目录的命令

    1.pwd 显示当前目录 该命令的英文解释为print working directory(打印工作目录).输入pwd命令,Linux会输出当前目录. 2.cd 命令用来改变所在目录 cd / 转到根 ...

  9. jar包、war包、ear包傻傻分不清?

    在工作中,需要在jboss上deploy一个health check的war包,因此了解一下: Jar文件(扩展名为. Jar,Java Application Archive)包含Java类的普通库 ...

  10. asp.net mvc数据验证

    文章:asp.net mvc3 的数据验证(一) 文章:ASP.NET MVC下的四种验证编程方式 这个讲了在一个地方展示验证信息 文章:[ASP.NET MVC系列]浅谈数据注解和验证 这个在每个输 ...