【C语言】题集 of ⑥

简介: 是考察你对循环的理解,本道题目要特别注意下循环当中的表达式,以及创建个sum总值用于每次循环i相乘sum,直到循环结束打印sum。

✨第二十六题→实现N的阶层(分别实现while、for)✨

首先N的阶层实际上就是假设5的阶层就是1x2x3x4x5这种就叫做是5的阶层,本题要求用while循环和for循环求阶层这道题目实际上就是考察你对循环的理解,本道题目要特别注意下循环当中的表达式,以及创建个sum总值用于每次循环i相乘sum,直到循环结束打印sum。

✨第二十七题→在一个有序的数组中查找具体某个数字k(二分查找)✨

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。最后,当我们找到元素进行打印再跳出。如果没找到就跳出循环。

✨第二十八题→使用for循环语句显示10个随机数!打印产生随机数1~100~✨

在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:

int rand (void);那么上述程序当中需要我们生成随机数是1~100这个怎么去生成,实际上很容易。我们直到rand()生成的最大值是0~32768,那么在本题目当中我们需要生成1~100也就是说我们需要产生一定随机值的方法,这个时候就可以用到取模运算符。示例如下代码所示:

int ret = rand() % 10;    //产生0~9的随机数 - 注意10会被整除

当然如果你这里取模100只是会产生0~99的数字,你必须还要+1才行这样就是1~100范围之间的数字了刚好吻合题目要求。所以,在本道题目实际上就是用到取模运算符来解决这个问题。

使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒),就像下面这样:

srand((unsigned)time(NULL));通常只需要引用一次即可!

✨第二十九题→打印出金字塔✨

打印金字塔无非就是用for循环进行嵌套,当我们输入数字5的时候,我们来假设它的一个运行结果来看看这样有利于我们解题↓

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

上述就是输入数字5,所打印出的金字塔。从这个运行结果我们再来做题就好办多了。 如果你不理解它的运行步骤可以多去调试,调试真的能帮助你解决很多问题,尤其是你刚学C语言的人或者是初学者,那怕是大牛阿,都是需要调试的。可以说一个人写代码的时间可能只有百分之30~40,而大多数人写代码调试的时间却有百分之60~70了。

✨第三十题→输入两个数字,求它们的最大公约数✨

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。

a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。

这个也是在数学当中我们会经常用到短除法。

✨第二十六题代码✨

for循环的使用↓

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
  int i = 0;
  int j = 0;
  int sum = 1;
  printf("请输入数字:");
  scanf("%d", &j);
  for (i = 1; i <= j; i++)
  {
    sum = sum * i;//sum 实现N的阶乘之和
  }
  printf("sum = %d\n", sum);
  return 0;
}

while循环的使用↓

🖊运行结果

可能运行结果 👇

请输入数字:5

sum = 120


✨第二十七题代码✨

#include<stdio.h>
int main(void)
{
  int k = 7;
  int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  int sz = sizeof(arr) / sizeof(arr[0]); 
  int left = 0;                  
  int right = sz - 1;           
  while (left <= right)        
  {
    int mid = (left + right) / 2;    
    if (arr[mid] < k)
    {
      left = mid + 1;
    }
    else if (arr[mid] > k)
    {
      right = mid - 1;
    }
    else
    {
      printf("找到了,数组下标:%d,元素%d\n", mid,arr[mid]);
      break;
    }
  }
  if (left > right)
  {
    printf("找不到!\n");
  }
  return 0;
}

🖊运行结果

找到了,数组下标6,元素7

✨第二十八题代码✨

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NUM 10
int main(void)
{
  int i = 1;
  srand((unsigned)time(NULL));
  for (i = 1; i <= NUM; i++)
  {
    int ret = rand() % 100 + 1;
    printf("第%-2d次:数字-->%d\n", i, ret);
  }
  return 0;
}

}

🖊运行结果

第1 次 : 数字-->13

第2 次 : 数字-->74

第3 次 : 数字-->71

第4 次 : 数字-->42

第5 次 : 数字-->23

第6 次 : 数字-->10

第7 次 : 数字-->10

第8 次 : 数字-->47

第9 次 : 数字-->11

第10次: 数字-->46

✨第二十九题代码✨

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
  int i, j, k;
  int input;
  printf("请输入数字:-->");
  scanf("%d", &input);
  for (i = 1; i <= input; i++)
  {
    //思路:空格 & 打印 *
    for (j = 1; j <= input - i; j++)
    {
      printf(" ");
    }
    for (k = 1; k <= 2 * i - 1; k++)
    {
      printf("*");
    }
    printf("\n");
  }
  return 0;
}

🖊运行结果

请输入数字:-->5

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

✨第三十题代码✨

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int a = 0, b = 0, t = 0;
  printf("请输入两个数字:");
  scanf("%d %d", &a, &b);
  while (t = a%b)
  {
    a = b;
    b = t;
  }
    //假设:a = 10、b = 20
    //t = 10 
  printf("|--------------------|\n");
  printf("|两个数的最大公约数:%d|\n",b);
  printf("|--------------------|\n");
  return 0;
}

🖊运行结果

请输入两个数字:10 20

两个数的最大公约数:10

目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 C语言
【c语言基础题】— —第五版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第五版,可当作日常练习和期末复习,有奇效哟!
|
6月前
|
存储 程序员 编译器
C语言第三十五弹---文件操作(上)
C语言第三十五弹---文件操作(上)
|
6月前
|
机器学习/深度学习 C语言
【c语言基础题】— —第二版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第二版,可当作日常练习和期末复习,有奇效哟!
|
6月前
|
算法 搜索推荐 程序员
C语言第二十三练——剩余类
C语言第二十三练——剩余类
59 0
|
存储 程序员 C语言
【C语言】文件的相关操作(一文10分钟彻底弄懂)
🐳文件简介 当程序结束时,内存中的数据就会丢失,这样每次运行程序时都要重新输入数据。那么有没有可以长久保存数据的方法呢?当然是有的啦!这个方法就是使用文件操作,用文件保存键盘输入和屏幕输出的数据,将数据以文件的形式存放在光盘、磁盘等外存储器上,可达到重复使用、永久保存数据的目的。
97 0
|
人工智能 C语言
记录一次非常简单的C语言随堂练习
#include <stdio.h> int main() { int a = 0, y; scanf("%d", &a); if (a < 0) { printf("y=-5"); } else if (a == 0) { printf("y = 0"); } else if (a > 0) { printf("y = 5"); }
77 0
|
存储 C语言
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(三)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
112 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(三)
|
编译器 C语言
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(一)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
126 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(一)
|
存储 C语言
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(四)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
100 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(四)
|
存储 Java C#
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(二)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
148 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(二)