首页 > 其他分享 >C语言小案例

C语言小案例

时间:2023-11-05 10:35:39浏览次数:25  
标签:返回 调用 return int C语言 案例 printf include

1.编写一函数int count(),使得第一次调用时返回1,第二次调用时返回2,即返回当前的调用次数。

#include <stdio.h>
int count() {
    static int counter = 0;
    counter++;
    return counter;
}

int main() {
    printf("%d\n", count());  // 第一次调用,返回1
    printf("%d\n", count());  // 第二次调用,返回2
    printf("%d\n", count());  // 第三次调用,返回3
    return 0;
}

解析:要编写一个函数int count(),使得第一次调用时返回1,第二次调用时返回2,即返回当前的调用次数,可以使用静态变量来实现。静态变量只会在第一次调用时初始化,之后每次调用都会保留上一次的值,因此可以用静态变量来记录调用次数。

2.假设系统只支持输出一个字符的功能,试设计一个函数void print(double d)输出一个实型数d,保留8位精度。如果d大于108或者d小于10^-8,则按科学计数法输出。

#include <stdio.h>
#include <math.h>
void print(double d) {
	if(d>pow(10,8) || d<pow(10,-8)){
    	printf("%e\n",d);   //以科学计数法形式输出
	}else{
		printf("%.8lf\n",d);
	}
}

int main() {
    double d;
    printf("请输入d:");
    scanf("%lf",&d);
    print(d);
	return 0;
}

3.创建一个函数Fib,每调用一次就返回Fibonacci序列(即:斐波那契数列)的下一个值,即第一次调用就返回1,第二次调用就返回1,第三次调用就返回2,第四次调用就返回3等等。

#include <stdio.h>
int Fib() {
  static int t1 = 1;
  static int t2 = 1;
  static nextTerm = 0;
  t1=t2;
  t2=nextTerm;
  nextTerm=t1+t2;
  return nextTerm;
}

int main() {
	for(int i=1;i<=10;i++){
		printf("%d ",Fib());
	}
	return 0;
}

4.已知华氏温度到摄氏温度的转换公式为:C=5/9*(F-32),试编写一个将华氏温度转换到摄氏温度的函数

#include <stdio.h>
double Convert(double F) {
  double c;
  c=(5/9.0)*(F-32);
  return c;
}

int main() {
	double C,F;
	printf("请输入华氏温度:");
	scanf("%lf",&F);
	C=Convert(F);
	printf("C=%.2lf℃\n",C);
	return 0;
}

5.写一个函数bool isEven(int n);当n的每一位数都是偶数时,返回1,否则返回0。如n的值是1234,函数返回false;如n的值为2048,返回true。用递归和非递归两种方法实现。

递归方式:

#include<stdio.h>
#include <stdbool.h>
// 递归判断n的每一位是否都是偶数
bool isEvenHelper(int n){
    // 当n小于10时,只有一位数,判断是否为偶数即可
    if(n < 10){
        return (n % 2 == 0);
    }
    // 判断最后一位是否为偶数
    if(n % 2 != 0){
        return false;
    }
    // 递归判断剩余位数
    return isEvenHelper(n / 10);
}

// 调用递归函数判断是否所有位数都是偶数
bool isEven(int n){
    // 处理n为负数的情况
    if(n < 0){
        n = -n;
    }
    // 调用递归函数
    return isEvenHelper(n);
}

int main(){
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);
    
    if(isEven(n)){
        printf("所有位数都是偶数\n");
        printf("%d",true);
    }else{
        printf("存在奇数位数\n");
        printf("%d",false);
    }
    
    return 0;
}

非递归方式:

#include<stdio.h>
#include <stdbool.h>
// 判断n的每一位是否都是偶数
bool isEven(int n){
    // 处理n为负数的情况
    if(n < 0){
        n = -n;
    }
    // 依次判断每一位是否为偶数
    while(n > 0){
        int digit = n % 10;
        if(digit % 2 != 0){
            return false;
        }
        n /= 10;
    }
    return true;
}

int main(){
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);
    
    if(isEven(n)){
        printf("所有位数都是偶数\n");
        printf("%d",true);
    }else{
        printf("存在奇数位数\n");
        printf("%d",false);
    }
    
    return 0;
}

C语言小案例_递归

C语言小案例_静态变量_02

第5题的内容涉及到了递归这个概念,大家不了解的可以看一下这个链接:

https://blog.csdn.net/weixin_44572229/article/details/119909728

 

标签:返回,调用,return,int,C语言,案例,printf,include
From: https://blog.51cto.com/u_16174658/8190205

相关文章

  • 高精度减法(C语言实现)
    高精度减法(C语言实现)介绍众所周知,整数在C和C++中以int,long,longlong三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆longlong的超大数运算,这个时候,就需要我们使用高精度算法,来实现巨大数的运算。高精度的本质是将数字以字符串的形式......
  • python面向对象-学习笔记(八、综合案例)
    计算器,实现一些基本的操作,加减乘除运算,以及打印结果操作点击查看代码importwin32com.clientclassCaculator:#装饰器私有def__check_num_zsq(func):definner(self,n):ifnotisinstance(n,int):raiseTypeError("......
  • 【UEC++游戏案例】向上的小松饼
    一.效果与资源准备1.1游戏演示效果效果:00-课程演示_哔哩哔哩_bilibili  1.2游戏资产素材与源码素材与源码:提示信息-SiKi学院|SiKi学堂-unity|u3d|虚幻|ue4/5|java|python|人工智能|视频教程|在线课程  1.3前期准备创建无初学者内容的空项目将素材文......
  • JavaScript函数变量的生命周期,自执行函数、闭包、反转数组案例及冒泡排序案例
    一、变量的生命周期JavaScript变量的生命期从它们被声明的时间开始。局部变量会在函数运行以后被删除。全局变量会在页面关闭后被删除。二、自执行函数执行函数通常都是定义之后立即执行,以后都不再会调用,所以声明时可以省略函数名,因此自执行函数又叫匿名函数。通用的自执行......
  • 实验3 C语言函数应用编程
    任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidprint_blank_lines(intn......
  • 高精度加法(C语言实现)
    高精度加法(C语言实现)介绍众所周知,整数在C和C++中以int,long,longlong三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆longlong的超大数运算,这个时候,就需要我们使用高精度算法,来实现巨大数的运算。高精度的本质是将数字以字符串的形式......
  • C语言小案例
    1.设计一个递归函数,计算Ackerman的值。Ackerman函数定义如下:       n+1                 m=0A(m,n)=A(m-1,1)             m≠0,n=0       A(m-1,A(m,n-1))        m≠0,n......
  • JavaScript Array对象(属性、方法) 留言板案例
    一、创建数组对象的方式vararrOb=newArray(值,........)vararrOb=Array(值,.......)vararrOb=[值,.........]vararrOb=newArray(n);arrOb[0]=值1;arrOb[1]=值2;二、数组的属性length   //数组中元素的数目vararr=['云南','九寨沟','拉萨','西双版纳','......
  • B站C语言第十课
    1,函数#include<stdio.h>#include<string.h>#include<stdlib.h>//intAdd(intx,inty){ intz=0; z=x+y; returnz;}intmain(){ inta=10; intb=20; intsum=Add(a,b); printf("%d\n",sum); return0;}2,牢记......
  • 贪心算法(C语言)
    一、会议安排问题1.1问题(1)对于每个会议i,起始时间bi和结束时间ei,且bi<ei(2)[bi,ei]与[bj,ej]不相交,则会议i和会议j相容,bi≥ej或bj≥ei(3)目标:在有限的时间内,尽可能多地安排会议1.2分析选择最早结束的会议1.3实现(1)初始化:按结束时间递增排序(2)选中第一......