首页 > 其他分享 >47.C语言函数练习题整理

47.C语言函数练习题整理

时间:2024-05-24 09:20:17浏览次数:21  
标签:练习题 main int 47 void C语言 ++ printf include

题目来自练习册和牛客网的一些编程题目整理

函数都有返回值 且只有一个返回值
声明类型为void 可以返回空值
若调用一个函数中没有return语句 返回一个不确定的值 
形参是动态变量 实参和形参之间的数据传递方式为 实参到形参的单向值传递
形参的值发生改变 不会影响主调函数中的实参的值
存储类别:
static 静态存储 调用结束后不释放 下一次继续使用
extern 可以在一个文件中引用另一个文件中定义的变量或者函数
auto 自动变量 调用结束后自动释放
register 变量存储在寄存器中 而非内存中
嵌套调用:调用一个函数的过程调用另一个函数
递归调用:调用一个函数的过程直接或间接调用函数本身
每一个变量和函数两个属性:数据类型和数据的存储类别
函数两部分组成:函数首部和函数体
全局变量采用静态存储方式
汉诺塔 递归函数

image
image

规律就是:f(n)=2*f(n-1)+1

#include<stdio.h>
int Han(int x){
    if(x==1){
        return 1;
    } else{
        return 2*Han(x-1)+1;
    }
}
int main(){
    //汉诺塔
    //规律f(n)=2*f(n-1)+1
    int n,num;
    scanf("%d",&n);
    num=Han(n);
    printf("%d个圆盘需要移动%d次",n,num);
}
不死神兔问题 斐波那契数列 递归函数
有一对兔子,从出生后第 3 个月起每个月都生一对兔子
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?

image


#include<stdio.h>

int fun(int n) {
    if(n<=2){
        return 1;
    } else{
        return fun(n - 1) + fun(n - 2);
    }
}

int main() {
    //有一对兔子,从出生后第 3 个月起每个月都生一对兔子
    // 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?
    //斐波那契数列
    int n;
    scanf("%d", &n);
    printf("总共 %d 对", fun(n));
}
#include<stdio.h>

void fun(int x) {
    if (x / 3 > 0)
        fun(x / 3);
    printf("%d", x);
}

int main() {
    fun(6);
    printf("\n");
}

image

#include<stdio.h>
#include<string.h>
int main(){
    //键盘输入两个字符串,将这两个字符串进行拼接后输出
    char arr1[10];
    char arr2[10];
    gets(arr1);
    gets(arr2);
    puts(strcat(arr1,arr2));
#include<stdio.h>
void swap(int *x,int *y){
    int tem=0;
    tem= *x;
    *x=*y;
    *y=tem;
}
int main(){
    // 编写一个函数,实现两个整数的交换,要求采用指针的方式实现
    int n,m;
    scanf("%d\n",&n);
    scanf("%d",&m);
    swap(&n,&m);
    printf("%d %d",n,m);
}
#include<stdio.h>
long long factorial(int n){
    long long sum=1;
    for (int i = 1; i < n+1; ++i) {
         sum*=i;
    }
    return sum;
}
int main(){
   // 编写一个函数 long long factorial(int n),用于计算 n 的阶乘。(要求使用递归实现)
   int n;
    scanf("%d",&n);
    printf("%lld",factorial(n));
}
#include<stdio.h>
//输入一个只包含'a','b','c'的字符串,问'a','b','c'分别出现了多少次。
int main() {
    int a = 0, b = 0, c = 0;
    char d;
    while ((d = getchar()) != '\n') {
        if (d == 'a')
            a++;
        else if (d == 'b')
            b++;
        else if (d == 'c')
            c++;
    }
    printf("%d %d %d", a, b, c);
    return 0;
}
#include<stdio.h>
int my_pow(int x,int n){
    int fang=1;
    for (int i = 1; i < n+1; ++i) {
        fang*=x;
    }
    return fang;
}
int main(){
    //函数的方式实现pow()求x的n次方
    int x,n;
    scanf("%d",&x);
    scanf("%d",&n);
    printf("%d",my_pow(x,n));
}
#include<stdio.h>

int a = 0, b = 0;

void fun() {
    int a = 5;
    printf("%d,%d;", a, b);
}

void main() {
    b = 5;
    fun();
    printf("%d,%d\n", a, b);
}
静态局部变量默认值为0
#include<stdio.h>
void fun(){
    static int m;
    m+=5;
    printf("%d ",m);
}

void main() {
    int n;
    for (int n = 1; n < 5; ++n)
        fun();
    printf("\n");

}
#include<stdio.h>

int a = 1;

int f(int n) {
    static int a = 2;
    int t = 0;
    if (n % 2) {
        static int a = 3;
        t += a++;
    } else {
        static int a = 4;
        t += a++;
    }
    return t + a++;
}


void main() {
    int s = a, i;
    for (i = 0; i < 2; i++)
        s += f(i);
    printf("%d\n", s);
}

image
image
image
image
image
image
image

#include<stdio.h>
f2()局部数组 修改值对全局数组无影响
f1()为全局数组赋值
f3()打印值

#define M 5
int a[M];

void f2() {
    int a[M], i, n;
    n = 3;
    for (int i = 0; i < n; ++i)
        a[i] = i;
}

void f1() {
    for (int i = 0; i < M; ++i)
        a[i] = i + i;
}

void f3(int a[]) {
    int i;
    for (int i = 0; i < M; ++i)
        printf("%d,", a[i]);
}


void main() {
    f1();
    f3(a);
    f2();
    f3(a);
    printf("\n");
}
#include<stdio.h>
//转为大写
void fun(char c[]) {
    int i = 0;
    while (c[i]) {
        if (c[i] >= 'a' && c[i] <= 'z')
            c[i] -= ('a' - 'A');
        i++;
    }
}

void main() {
    char s[81];
    gets(s);
    fun(s);
    puts(s);
}
下标为奇数的字符右移到下一个奇数位置 最右边被移出字符串的字符放到第一个奇数位置
下标为偶数的字符不动 例如:abcdefgh 结果ahcbedgf
#include<stdio.h>

void f(char s[]) {
    int i, n, k;
    char c;
    n = 0;
    for (i = 0; s[i] != '\0'; i++)
        n++;
    if (n % 2 == 0)
        k = n - 1;
    else
        k = n - 2;
    c = s[k];
    for (i = k - 2; i >= 1; i -= 2)
        s[i + 2] = s[i];
    s[1] = c;
}

void main() {
    char s[20] = "abcdefgh";
    f(s);
    printf("%s", s);
}

image
image

#include <stdio.h>

// s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+4+....+n) 计算结果
// 函数来计算前n个自然数的和
double sum_of_n(int n) {
    return (double) n * (n + 1) / 2;
}

// 函数来计算给定的序列s
double calculate_s(int n) {
    double s = 0.0;
    for (int i = 1; i <= n; i++) {
        s += 1.0 / sum_of_n(i);
    }
    return s;
}

int main() {
    int n;
    scanf("%d", &n);
    double result = calculate_s(n);
    printf("%f\n", result);
    return 0;
}
求输入数包含整数的位数:
#include <stdio.h>

int countDigits(int number) {
    int count = 0;
    while (number != 0) {
        number /= 10;
        count++;
    }
    return count;
}

int main() {
    int number;
    scanf("%d", &number);
    int digitCount = countDigits(number);
    printf("该整数包含 %d 位\n", digitCount);
    return 0;
}

标签:练习题,main,int,47,void,C语言,++,printf,include
From: https://www.cnblogs.com/gaodiyuanjin/p/18209844

相关文章

  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-47-自动滚动到元素出现的位置
    1.简介在我们日常工作中或者生活中,经常会遇到我们的页面内容较多,一个屏幕范围无法完整展示内容,我们就需要滚动滚动条去到我们想要的地方,如下图页面,我们虽然在豆瓣首页,但是内容并不完整,如果我们想要直接点击电影模块中的选电影按钮,是需要往下滑动的。当页面超过屏幕的高度时候,需要......
  • C语言:动态内存管理的学习1
    动态内存管理本章重点为什么存在动态内存分配?动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误·几个经典的笔试题·柔性数组一.为什么存在动态内存分配?我们已经学到的开辟空间的方法:inta;intarr[100];单个开辟空间或者连续开辟空间;在数组的......
  • 初识c语言.1
    什么是c语言?语言?人与人交流:汉语、英语、俄语人与计算机交流——计算机语言:c\c++、JAVA、Python、GOc语言是一种通用的计算机编程语言,广泛应用于底层开发。底层软件开发:比如说买来一台电脑(硬件)要使电脑正常工作得需要操作系统(windows),而操作系统如何让硬件工作?需安装驱动(网......
  • 应广Mini-C语言开发PMS150G
    应广Mini-C语言开发PMS150G(上)OTP单片机以消费类电子市场,价格低廉著称.今天就以应广PMS150G(1毛/片)芯片学习一下应广公司的Mini-C语言.Mini-C语言是台湾应广公司推出的自家单片机开发语言,兼容C语言,支持的语法更少更容易上手,既然是一种新的兼容语言自然要研究一下.到应广网......
  • 实验5 C语言指针应用编程
    task1_1.c#include<stdio.h>#defineN5voidinput(intx[],intn);voidoutput(intx[],intn);voidfind_min_max(intx[],intn,int*pmin,int*pmax);intmain(){inta[N];intmin,max;printf("录入%d个数据:\n",N);i......
  • 关于如何使用JNI将C语言接口打包成可供java环境调用的so库文件
    一、环境检查在linux下打包.so文件,首先需要确认是否有安装java环境,可通过在终端中输入指令java的方式来进行查看。如下图所示,则为已安装java环境。  若当前未安装java环境,则可通过在终端中输入如下指令进行安装,我这里使用的java环境为1.8.0版本。sudoapt-getinstallo......
  • PureBasic是一种基于BASIC语言的编程语言,它提供了一个简单易用的开发环境,旨在帮助开发
    PureBasic是一种基于BASIC语言的编程语言,它提供了一个简单易用的开发环境,旨在帮助开发人员快速创建跨平台的应用程序。PureBasic的特点如下:简单易学:PureBasic的语法类似于传统的BASIC语言,非常容易学习和理解,适合初学者入门。跨平台支持:PureBasic可以在多个操作系统上运行,包括W......
  • C语言基本概念
    C语言基本概念概念​ 1、什么是语言:语言是人类进行沟通和交流的工具,广义上说,语言是一台共有规则的指令,指令可以通过文字,嗅觉、触觉等方式传递。​ 2、目的:实现人与人之间的交流,而当计算机出现了人与计算机交流,也需要一套共用的指令,所以就设计了一套编码与解码的指令,来给计算......
  • 实验5_C语言指针应用编程
    Task1task1_11#include<stdio.h>2#defineN53#include<stdlib.h>45voidinput(intx[],intn);6voidoutput(intx[],intn);7voidfind_min_max(intx[],intn,int*pmin,int*pmax);89intmain(){10inta[N];11......
  • 实验5 C语言指针应用编程
    task1_1.c1#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain(){9inta[N];10intmin,max;1112print......