当前位置: 首页 > news >正文

C语言小练

目录

打印斐波那契数列指定位置的值

给定两个数,求这两个数的最大公约数

三个数从大到小输出

模拟用户登陆情况,且只能输如三次

采用二分法查找数组中的指定元素

打印输出九九乘法表

数一下1-100中所有整数出现多少个数字9

打印1-200之间的素数,并输出总共有多少个

不引用第三个变量,交换两个数的值

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

企业发放的奖金根据利润提成。

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

输入某年某月某日,判断这一天是这一年的第几天?

打印出所有的"水仙花数"

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

用递归的方法求一个数的阶乘

利用递归函数调用方式,将所输入的字符串,以相反顺序打印出来。


打印斐波那契数列指定位置的值

菲波那切数列:指的是这样一个数列:1、1、2、3、5、8、13、21、34、……这个数列从第3项开始,每一项都等于前两项之和。

int fib(int n){if(n<=2)return 1;elsereturn fib(n-1)+fib(n-2);
}int main(){int i=0;int ret=0;scanf("%d",&i);ret=fib(i);printf("ret=%d",ret);return 0;
}

给定两个数,求这两个数的最大公约数

本算法主要利用辗转相除法求出两个数的最大公约数。

int main(){int m=0;int n=0;int r=0;scanf("%d %d",&m,&n);while(r=m%n){m=n;n=r;} printf("%d\n",n);return 0;
}

三个数从大到小输出


int main(){int a=0;int b=0;int c=0;scanf("%d%d%d",&a,&b,&c);//算法实现:a中放最大值   b次之   c中放最小值if(a<b){int tmp=a;a=b;b=tmp;} if(a<c){int tmp=a;a=c;c=tmp;}if (b<c){int tmp=b;b=c;c=tmp;}printf("%d %d %d\n",a,b,c);return 0;    
} 

模拟用户登陆情况,且只能输如三次


int main(){int i=0;char password[20]={0};for(i=0;i<3;i++){printf("请输入密码:>");scanf("%s",password);if(strcmp(password,123456)==0){  //==不能用来比较两个字符串是否相等,应该使用一个库函数--strcmp printf("登陆成功\n");break;}else{printf("密码错误\n");}}if(i==3)printf("三次密码错误,退出程序\n");return 0;

采用二分法查找数组中的指定元素


int main(){int arr[]={1,2,3,4,5,6,7,8,9,10};int k=7;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){right=mid-1;}else if(arr[mid]<k){left=mid+1;}else{printf("找到了,下标是:%d\n",mid);break;}    }if(left>right){printf("找不到\n");}return 0;
}

打印输出九九乘法表

int main()
{int i=0;int j=0;for(i=1;i<10;i++){    //一共9行 for(j=1;j<=i;j++){printf("%d*%d=%-2d ",i,j,i*j);  //"%-2d"的作用是使打印的结果左对齐 }printf("\n");   //打印完一行再分行 }return 0;
}

数一下1-100中所有整数出现多少个数字9


int main(){int i=0;int count=0;for(i=1;i<=100;i++){if(i%10==9){count++;}if(i/10==9){count++;}}printf("count=%d\n",count);return 0;
}

打印1-200之间的素数,并输出总共有多少个

int main(){int i=0;int count=0;for(i=100;i<=sqrt(i);i++){int j=0;for(j=2;j<i;j++){if(i%j==0){break;}}if(j>sqrt(i)){  //sqrt(i)表示开平方 --记得调用数学库函数count++;printf("%d\n",i);}}printf("count=%d\n",count);return 0;
}

不引用第三个变量,交换两个数的值
 

方法一:int main(){int a,b;  scanf("%d %d",&a,&b);a=a+b;b=a-b;a=a-b;printf("a=%d b=%d\n",a,b);  return 0;
} 
这种方法有缺陷,可能会导致整形溢出 。方法二:int main(){int a,b;scanf("%d %d",&a,&b);a=a^b;b=a^b;a=a^b; printf("a=%d b=%d\n",a,b); return 0;
}

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

程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。

int main()
{int i,j,k;for(i=1;i<5;i++) { // 以下为三重循环for(j=1;j<5;j++) {for (k=1;k<5;k++) { // 确保i、j、k三位互不相同if (i!=k&&i!=j&&j!=k) { printf("%d,%d,%d\n",i,j,k);}}}}
}

企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;

利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;

20万到40万之间时,高于20万元的部分,可提成5%;

40万到60万之间时高于40万元的部分,可提成3%;

60万到100万之间时,高于60万元的部分,可提成1.5%;

高于100万元时,超过100万元的部分按1%提成。

从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成双精度浮点(double)型。

#include<stdio.h>int main()
{double i;double bonus, bonus1, bonus2, bonus4, bonus6, bonus10 ;printf("你的净利润是:\n");scanf("%lf",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.075;bonus4=bonus2+200000*0.05;bonus6=bonus4+200000*0.03;bonus10=bonus6+400000*0.015;if(i<=100000) {bonus=i*0.1;} else if(i<=200000) {bonus=bonus1+(i-100000)*0.075;} else if(i<=400000) {bonus=bonus2+(i-200000)*0.05;} else if(i<=600000) {bonus=bonus4+(i-400000)*0.03;} else if(i<=1000000) {bonus=bonus6+(i-600000)*0.015;} else if(i>1000000) {bonus=bonus10+(i-1000000)*0.01;}printf("提成为:bonus=%.3lf",bonus);//结果限制到小数点后三位 return 0; 
}

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:

假设该数为 x。

1、则:x + 100 = n2, x + 100 + 168 = m2

2、计算等式:m2 - n2 = (m + n)(m - n) = 168

3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1

7、接下来将 i 的所有数字循环计算即可。

 /* 假设要求的数为: x;* 则x+100=n的平方;x+100+168=m的平方  ; * 从而有:m方-n方=(m+n)*(m-n)=168 ; *  再令m+n=i; m-n=j; i*j=168. */
int main (void)
{int  i, j, m, n, x;for (i = 1; i < 168 / 2 + 1; i++){if (168 % i == 0){j = 168 / i;if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0){m = (i + j) / 2;n = (i - j) / 2;x = n * n - 100;printf ("%d + 100 = %d * %d\n", x, n, n);printf ("%d + 268 = %d * %d\n", x, m, m);printf ("\n");}}}return 0;
}

输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

#include<stdio.h>
int main()
{int year, month, day,sumday=0;int monthday[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };printf("请输入年、月、日,格式为:年,月,日(2015 12 10)\n");scanf("%d %d %d",&year,&month,&day);if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)){monthday[1] =29;         		//闰年的话则把二月置为29天 }for (int i = 0; i < month-1; i++)	{sumday += monthday[i];}sumday += day;printf("这是%d年的第%d天\n",year,sumday);return 0;
}

打印出所有的"水仙花数"

所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

int main()
{int i,x,y,z;for(i=100;i<1000;i++){x=i%10;y=i/10%10;z=i/100%10;if(i==(x*x*x+y*y*y+z*z*z))printf("%d\n",i);}return 0;
}

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:利用while语句,条件为输入的字符不为'\n'。  也可以使用ASCⅡ码作为判断条件。

int main(void)
{char ch;int alpha = 0, num = 0, space = 0, others = 0;printf("请输入一些字母:\n");while((ch = getchar()) != '\n'){if((ch >= 'a' && ch <= 'z')||(ch >='A' && ch <='Z'))alpha++;else if(ch >= '0' && ch <= '9')num++;else if(ch == ' ')space++;elseothers++;}printf("字母=%d,数字=%d,空格=%d,其他=%d",alpha,num,space,others);return 0;
}

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

程序分析:关键是计算出每一项的值。

int main()
{int s=0,a,n,t;printf("请输入要加的数字a和要加的次数n:\n");scanf("%d%d",&a,&n);t=a;while(n>0){s+=t;a=a*10;t+=a;n--;}printf("a+aa+...=%d\n",s);return 0;
}

用递归的方法求一个数的阶乘

//用递归的方法求一个数的阶乘 
int fact(int n)
{if(n == 0 || n == 1)return 1;elsereturn n*fact(n - 1);
}int main(void)
{int i,x;printf("请输入要求多少的阶乘:");scanf("%d",&x);for(i = 0; i <= x; i++){printf("%d! = %d\n",i,fact(i));}return 0;
}

利用递归函数调用方式,将所输入的字符串,以相反顺序打印出来。

#include <stdio.h>void fun()
{char str;if((str=getchar())!='\n') {fun();}if(str!='\n') {printf("%c",str);}
}void main()
{printf("请输入字符: ");fun();
}

相关文章:

C语言小练

目录 打印斐波那契数列指定位置的值 给定两个数&#xff0c;求这两个数的最大公约数 三个数从大到小输出 模拟用户登陆情况&#xff0c;且只能输如三次 采用二分法查找数组中的指定元素 打印输出九九乘法表 数一下1-100中所有整数出现多少个数字9 打印1-200之间的素数&…...

Webhook端口中的自签名身份验证

概述 有时&#xff0c;可能需要通过 Webhook 端口从交易伙伴处接收数据&#xff0c;但该交易伙伴可能需要更多的安全性&#xff0c;而不仅仅是用于验证入站 Webhook 请求的基本身份验证用户名/密码 – 或者您可能只想在入站 Webhook 消息上添加额外的安全层。 使用 Webhook 端…...

CSS预处理器(如Sass或Less):变量、嵌套规则和混合器等高级功能

在Vue项目中&#xff0c;可以使用CSS预处理器&#xff08;如Sass或Less&#xff09;来编写样式。 这些预处理器提供了一些高级功能&#xff0c;如变量、嵌套规则和混合器等。 1. 变量 在Sass中&#xff0c;我们可以使用$符号定义变量。这些变量方便我们在多个地方重复使用&a…...

【Linux】Linux第一个小程序 --- 进度条

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和Linux还有算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 …...

每日一练:约瑟夫生者死者小游戏

1. 问题描述 约瑟夫问题&#xff08;Josephus problem&#xff09;是一个经典的数学和计算机科学问题&#xff0c;源于犹太历史学家弗拉维奥约瑟夫斯&#xff08;Flavius Josephus&#xff09;的著作《犹太战记》。问题的描述如下&#xff1a;   在这个问题中&#xff0c;有n…...

双指针算法(题目与答案讲解)

文章目录 题目移动零复写零两数之和N数之和(>2个数) 答案讲解移动零复写零两数之和N数之和 题目 力扣 移动零 1、移动零:题目链接 复写零 2、复写零:题目链接 两数之和 3、两数之和题目链接 N数之和(>2个数) 4、N数之和(三个数、四个数) 三个数:题目链接 四个数题目链接…...

python服装电商系统vue购物商城django-pycharm毕业设计项目推荐

系统面向的使用群体为商家和消费者&#xff0c;商家和消费者所承担的功能各不相同&#xff0c;所对象的权限也各不相同。对于消费者和商家设计的功能如下&#xff1a; 对于消费者设计了五大功能模块&#xff1a; &#xff08;1&#xff09; 商品信息&#xff1a;用户可在商品…...

数据治理技术:研究现状与数据规范

随着信息技术的迅速发展,数据规模逐渐扩大&#xff0c;与此同时&#xff0c;劣质数据也随之而来&#xff0c;极大地降低了数据挖掘的质量&#xff0c;对信息社会造成了严重的困扰&#xff0c;劣质数据大量存在于很多领域和机构&#xff0c;国外权威机构的统计表明&#xff1a;美…...

一文彻底理解索引下推

了解索引下推吗&#xff1f;二级索引取出的数据是依次回表还是一次回表&#xff1f;索引下推是为了什么发明的&#xff1f; 看完这个文章你将知道上面的问题。 索引下推的概念 从MySQL5.6开始引入的一个特性,索引下推通过减少回表的次数来提高数据库的查询效率; 注意&#…...

Springboot3+vue3从0到1开发实战项目(一)

一. 可以在本项目里面自由发挥拓展 二. 知识整合项目使用到的技术 后端开发 &#xff1a; Validation, Mybatis,Redis, Junit,SpringBoot3 &#xff0c;mysql&#xff0c;Swagger, JDK17 &#xff0c;JWT&#xff0c;项目部署 前端开发&#xff1a; Vue3&#xff0c;Vite&am…...

[字符串操作] 有年代的病历单

有年代的病历单 题目描述 小英是药学专业大三的学生&#xff0c;暑假期间获得了去医院药房实习的机会。 在药房实习期间&#xff0c;小英扎实的专业基础获得了医生的一致好评&#xff0c;得知小英在计算概论中取得过好成绩后&#xff0c;主任又额外交给她一项任务&#xff0c…...

怎么批量提取文件名字到Excel中?

怎么批量提取文件名字到Excel中&#xff1f;Excel是由微软公司开发的一种电子表格软件&#xff0c;它是Microsoft Office办公套件的一部分。Excel提供了强大的数据处理和分析功能&#xff0c;用户可以使用Excel创建、编辑和管理电子表格&#xff0c;进行各种计算、数据分析、图…...

QT搭建的Ros/librviz的GUI软件

1.前言 开发初期学习了下面博主的文章&#xff0c;也报了他在古月局的课&#xff0c;相当于感谢吧。 ROS Qt5 librviz人机交互界面开发一&#xff08;配置QT环境&#xff09;-CSDN博客​​​​​​​r 软件前期也是参考他的开源项目 GitHub - chengyangkj/Ros_Qt5_Gui_App …...

Docker 概述与安装

文章目录 1. Docker简介2. 传统虚拟机和容器3. Docker运行速度快的原因4. Docker软件4.1 Docker镜像4.2 Docker容器4.3 Docker仓库 5. Docker架构6. CentOS安装Docker6.1 卸载旧版本6.2 配置yum资源库6.3 安装Docker引擎6.4 启动docker引擎6.5 设置开机自启 7. 卸载Docker8. 运…...

JS作用域与作用域链

让我为大家介绍一下作用域与作用域链吧&#xff01; 作用域 作用域规定了变量能够访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问。 作用域分为&#xff1a;局部作用域&#xff0c;全局作用域 一、局部作用域 局部作用域分为函数作用域与块作用域 1.函数作…...

elmentui 查看大图组件 点击图片关闭弹窗方法

elmentui 查看大图组件 点击图片关闭弹窗方法 html <el-imageref"Imgs":src"item.url ? item.url : ":preview-src-list"item.url ? [item.url] : []"click.stop"handlePreviewClose"class"alarm_img"/>js //图片…...

蓝桥杯官网练习题(最长子序列)

题目描述 我们称一个字符串S 包含字符串 T 是指 T 是 S 的一个子序列&#xff0c;即可以从字符串 S 中抽出若干个字符&#xff0c;它们按原来的顺序组合成一个新的字符串与 T 完全一样。 给定两个字符串 S 和 T&#xff0c;请问 T 中从第一个字符开始最长连续多少个字…...

Make sure that using this pseudorandom number generator is safe here.

问题类型&#xff1a;安全热点 安全问题级别&#xff1a;MEDIUM 一、问题代码 工具类Package&#xff1a; Java commons-lang3 库 RandomUtils 随机数工具类 import org.apache.commons.lang3.RandomUtils; 用法&#xff1a; RandomUtils.nextInt(0, 999999999) //生成 0…...

【C/C++】常见模拟题题解

题解 模拟双目运算符一元二次方程求解水仙花数统计学生成绩学生成绩管理模拟选举大小写字符转换最大公约数、最小公倍数字符串反序 模拟双目运算符 编写一个根据用户键入的两个操作数和一个双目运算符&#xff0c;由计算机输出结果的程序。 #include<stdio.h>int opera…...

TikTok 购物和直播的 5 个简单技巧

TikTok 的一切都很大&#xff1a;应用程序下载量、受众规模和病毒式营销活动。因此&#xff0c;该公司多方面进军社交商务也就不足为奇了。是的&#xff0c;这将是巨大的。自去年年底以来&#xff0c;TikTok Shopping 和TikTok 直播购物活动已在一些市场上线&#xff0c;并将于…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...