C语言经典题目(四)

简介: C语言经典题目(四)

16.计算短信费用

在这里插入图片描述

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int arr[20];
    double count=0;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(int i=0;i<n;i++)
    {
        if(arr[i]<=60)
            count +=0.1;
        else
            count +=0.2;
    }
    printf("%.1lf",count);
    return 0;
}

17.编写函数不允许创建临时变量,求字符串的长度

题目分析:不允许创建临时变量,只能使用函数递归。

#incude <stdio.h>
int Strlen(const char*str)
{
 if(*str == '\0')
 return 0;
 else
        return 1+Strlen(str+1);
}
int main()
{
 char *p = "abcdef";
 int len = Strlen(p);
 printf("%d\n", len);
 return 0;
}

18.汉诺塔问题

汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则:
● 每次只能移动柱子最顶端的一个圆盘;
● 每个柱子上,小圆盘永远要位于大圆盘之上;

#include <stdio.h>
void hanoi(int num, char sou, char tar,char aux) {
    //统计移动次数
    static int i = 1;
    //如果圆盘数量仅有 1 个,则直接从起始柱移动到目标柱
    if (num == 1) {
        printf("第%d次:从 %c 移动至 %c\n", i, sou, tar);
        i++;
    }
    else {
        //递归调用 hanoi() 函数,将 num-1 个圆盘从起始柱移动到辅助柱上
        hanoi(num - 1, sou, aux, tar);
        //将起始柱上剩余的最后一个大圆盘移动到目标柱上
        printf("第%d次:从 %c 移动至 %c\n", i, sou, tar);
        i++;
        //递归调用 hanoi() 函数,将辅助柱上的 num-1 圆盘移动到目标柱上
        hanoi(num - 1, aux, tar, sou);
    }
}

19.走台阶问题

在这里插入图片描述

题目分析:第18题、第19题是经典的斐波那契系题目。
在这里插入图片描述

#include <stdio.h>
 
int main()
{
    int arr[31]={0,1,2,3},n,i;
    scanf("%d",&n);
    for(i = 4;i<=n;i++)
    {
        arr[i] = arr[i-1] + arr[i-2];
    }
    printf("%d",arr[n]);
    return 0;
}

20.兔子的序列

在这里插入图片描述

#include <stdio.h>
#include <math.h>
int main()
{
    int max = -1, len, n;
    scanf("%d", &len);
    for(int i = 0; i < len; i++)
    {
        scanf("%d", &n);
        max = (pow((int)sqrt(n), 2) != n) && max < n? n : max;
    }
    printf("%d", max);
    return 0;
}
相关文章
|
5月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
5月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
42 1
|
10月前
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
71 1
|
10月前
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
53 1
|
2月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
4月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
41 1
|
5月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
4月前
|
C语言
c语言循环题目
c语言循环题目
|
5月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
5月前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)