【C语言】题集 of ③

简介: 设置个字符串数组arr,把它所进行打印。然后求字符串数量,再用for循环再去遍历。打印出来本题目就可以了,其实就是这么容易。唯一需要考虑的就是如何把小写字母转换成大写字母这个操作,其实这个并不需要去担心。因为我们可以用到一个函数就可以把小写字母转换成大写字母。C库函数 int tolower(int c)转换给定的字母为小写。

📚第十一题→将字符串小写字母转换成大写字母📚

这类题目就是很容易的其实,一句概括核心那就是题目当中的内容。


首先设置个字符串数组arr,把它所进行打印。然后求字符串数量,再用for循环再去遍历。打印出来本题目就可以了,其实就是这么容易。


唯一需要考虑的就是如何把小写字母转换成大写字母这个操作,其实这个并不需要去担心。因为我们可以用到一个函数就可以把小写字母转换成大写字母。


C库函数 int tolower(int c)转换给定的字母为小写。


C库函数 int toupper(int c)转换给定的字母为大写,本题目使用的就是这个。


使用库函数的头文件是:#include<ctype.h>


📚第十二题→输入三个数字,从大到小依次的进行排列📚

首先这道题目很明确的说明了做题的思路。


输入:用scanf()函数输入即可


三个数字:创建三个整形变量。


从大到小依次进行排列:用判断语句 if  就能实现。举出一个例子吧。


如果,a>b 这种就没有任何必要进行交换了,因为本身就是按照大小进行打印了这就。像如果a<b 这种就要把 a 和 b 的值进行交换这样就实现了从大到小依次排列。那么这里要进行三次判断,a,b,c每次都要进行一次。a<b、a<c、b<c


最终打印三个变量即可。


📚第十三题→实现一个函数,打印乘法口诀表,口诀表的行列数自己指定📚

这道题目在C语言 题目9当中出现过。只不过它是叫我们打印出9*9的乘法口诀表,而这个是叫我们实现一个函数,并且行列数自己决定。这个意思是:假设我输入5,那么打印 5*5 的乘法口诀表。假设我输入的是8,那么打印 8*8的乘法口诀表。相信你已经有思路了那么开始刷题吧。这也是比较经典的题目新手是必须要掌握的。


📚第十四题→有1、2、3、4个数字,能组成多少个互不相同且无重复的三位数,都是多少?并且把组成的数的总数给打印出来📚

这道题目说实话可能是遇到跟之前相比算是有难度了,有些人一看这道题目可能不知道无从开始,没事让我们来分析下它!


首先:有1、2、3、4个数字,能组成多少个互不相同且无重复的三位数,都是多少?


这个看关键字,1、2、3、4个、无重复的三位数!很明显这道题目要从数学角度来算的话是这个样子的。


那么要把 1、2、3、4 的数字分别得到百位、十位、个位。


能组成多少个互不相同且无重复的三位数。进行 if 判断即可。判断百位 ,十位 ,个位都不相同。注意:创建三个变量 百 十 个。


并且把组成的数的总数给打印出来!创建个变量++即可!


组成数字的总数这个只要能判断成功的话那么就用Count++ 就可以实现。


📚第十五题→递归实现N的阶乘计算📚

这道题目如果你不知道递归那是完全做不来的,所以我们来说说递归!


程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中是广泛应用的。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题转换位一个与原问题相似的规模较小的问题来去进行求解,递归策略只需少了的程序就可以描述出解题的过程所需要的多次重复计算,大大减少了程序的代码量。递归的人主要思考方式就在于:把大事化小。递归之所以能够实现,是因为函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和和该函数的其它执行过程是不会发生关系的。


注意:当递归进入到最内层的时候,递归就结束了,就开始逐层退出了,也就是逐层执行 return 语句。当执行最后层的 return 之后,就执行上面一层的递归!


再来说说递归的条件


每一个递归函数都应该只进行有限次的递归调用,否则它就会进入死胡同,永远也不能退出了,这样的程序是没有意义的。

存在限制条件,当满足这个限制条件之后的时候,递归便会不再继续。

每次递归调用之后都会越来越接近这个限制条件。

阶层实际上就是假如5的阶层:5x4x3x2x1 同理。

🖊第十一题の代码🖊

#include<stdio.h>
#include<ctype.h>
int main(void)
{
  char arr[20] = "hello Cyuyan";
  printf("打印前:%s\n", arr);
  printf("********************\n");
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < sz; i++)
  {
    arr[i] = toupper(arr[i]);
  }
  printf("打印后:%s\n", arr);
}

运行结果🖊

  • 打印前:hello Cyuyan
  • 打印后:HELLO CYUYAN

🖊第十二题の代码🖊

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
  int a, b, c, max;
  scanf("%d %d %d", &a, &b, &c);
  if (a<b)
  {
    max = a, a = b, b = max;
  }
  if (a<c)
  {
    max = a, a = c, c = max;
  }
  if (b<c)
  {
    max = b, b = c, c = max;
  }
  printf("%d %d %d\n", a, b, c);
  return 0;
}         

运行结果🖊

  • 3 4 5
  • 5 4 3

🖊第十三题の代码🖊

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void formula_table(int Custons)
{
  int row = 0;
  for (row = 1; row <= Custons; row++)
  {
    int col = 0;
    for (col = 1; col <= row; col++)
    {
      printf("%d * %d = %-4d ", col, row, row*col);
    }
    printf("\n");
  }
}
int main(void)
{
  unsigned int Custon = 0;
  printf("请输入行列数:");
  scanf("%d", &Custon);
  formula_table(Custon);
  return 0;
}

运行结果🖊

请输入的行列数:6
1 * 1= 1
2 * 1= 2 2 * 2= 4
3 * 1= 3 3 * 2= 6 3 * 3= 9
4 * 1= 4 4 * 2= 8 4 * 3= 12 4 * 4= 16
5 * 1= 5 5 * 2= 10 5 * 3= 15 5 * 4= 20 5 * 5= 25
6 * 1= 6 6 * 2= 12 6 * 3= 18 6 * 4= 24 6 * 5= 30 6 * 6= 36
请输入的行列数:9
1 * 1= 1
2 * 1= 2 2 * 2= 4
3 * 1= 3 3 * 2= 6 3 * 3= 9
4 * 1= 4 4 * 2= 8 4 * 3= 12 4 * 4= 16
5 * 1= 5 5 * 2= 10 5 * 3= 15 5 * 4= 20 5 * 5= 25
6 * 1= 6 6 * 2= 12 6 * 3= 18 6 * 4= 24 6 * 5= 30 6 * 6= 36
7 * 1= 7 7 * 2= 14 7 * 3= 21 7 * 4= 28 7 * 5= 35 7 * 6= 42 7 * 7= 49
8 * 1= 8 8 * 2= 16 8 * 3= 24 8 * 4= 32 8 * 5= 40 8 * 6= 48 8 * 7= 56 8 * 8= 64
9 * 1= 9 9 * 2= 18 9 * 3= 27 9 * 4= 36 9 * 5= 45 9 * 6= 54 9 * 7= 63 9 * 8= 72 9 * 9= 81

🖊第十四题の代码🖊

#define _CRT_SECURE_NO_WARNINGS 1
#define number 4
#include<stdio.h>
int main(void)
{
  int a = 0;
  int b = 0;
  int c = 0;//创建三个变量
  int Count = 0;//计算总数
  for (a = 1; a <= number; a++)//百位
  {
    for (b = 1; b <= number; b++)//十位
    {
      for (c = 1; c <= number; c++)//个位
      {
        if (a != b && b != c && a != c)//判断(无重复数字)
        {
          printf("%d%d%d ", a, b, c);
          Count++;//Count = Count + 1
        }
      }
    }
    printf("\n");//换行
  }
  printf("Count = %d\n", Count);
  return 0;
}

运行结果🖊

  • 123 124 132 134 142 143
  • 213 214 231 234 241 243
  • 312 314 321 324 341 342
  • 412 413 421 423 431 432
  • Count = 24

🖊第十五题の代码🖊

#include<stdio.h>
int face(int n)
{
  if (n <= 1)
    return 1;
  else
    return n*face(n - 1);
}
int main(void)
{
  int n = 0;
  printf("请输入你的数字:");
  scanf_s("%d", &n);
  int ret = face(n);
  printf("%d\n", ret);
}

运行结果🖊


请输入你的数字:5


ret = 120


5 * face(4) → 调用形式face(5)

4 * face(3) → 调用形式face(4)

3 * face(2) → 调用形式face(3)

2 * face(1) → 调用形式face(2)

1 * face(0) → 调用形式face(1)


1 * wu       → 调用形式face(1)  表达式当前调用的值:1

2 * face(1) → 调用形式face(2)  表达式当前调用的值:2

3 * face(2) → 调用形式face(3)  表达式当前调用的值:6

4 * face(3) → 调用形式face(4)  表达式当前调用的值:24

5 * face(4) → 调用形式face(5)  表达式当前调用的值:120


1 * wu = 0

2 * 1 = 2

3 * 2 = 6

4 * 6 = 24

5 * 24 = 120


目录
相关文章
|
6月前
|
C语言
【C语言】——三道基础程序练习
【C语言】——三道基础程序练习
|
6月前
|
存储 程序员 编译器
C语言第三十五弹---文件操作(上)
C语言第三十五弹---文件操作(上)
|
6月前
|
算法 搜索推荐 程序员
C语言第二十三练——剩余类
C语言第二十三练——剩余类
59 0
|
C语言
别瞎找了,你要的C语言经典示例都在这~
别瞎找了,你要的C语言经典示例都在这~
53 1
|
存储 程序员 C语言
【C语言】文件的相关操作(一文10分钟彻底弄懂)
🐳文件简介 当程序结束时,内存中的数据就会丢失,这样每次运行程序时都要重新输入数据。那么有没有可以长久保存数据的方法呢?当然是有的啦!这个方法就是使用文件操作,用文件保存键盘输入和屏幕输出的数据,将数据以文件的形式存放在光盘、磁盘等外存储器上,可达到重复使用、永久保存数据的目的。
97 0
|
存储 编译器 C语言
【C语言】指针内容全篇(下)
【C语言】指针内容全篇(下)
【C语言】指针内容全篇(下)
|
存储 C语言
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(三)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
112 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(三)
|
编译器 C语言
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(一)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
126 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(一)
|
存储 Java C#
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(二)
就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第一章和第二章是以截图形式展现的。由于本人一开始是在有道云笔记上写的初稿,当时想方便省事(有道云排版个人感觉确实比较美观)就直接以截图的形式完成了第一章和第二章。本人考虑到因为是截图,不能复制文中出现的代码,不方便读者进行复制粘贴,所以我打算重新写一下第一章和第一章的内容,并且重新进行了排版。
148 0
【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)(二)