算法入门笔记------------Day1
1.C语言使用%d显示float值,不会把float值转换为近似的int值,而是显示垃圾值,使用%f显示int值,也不会把该int值转换为浮点值
2.三位数反转:输入一个三位数,分离它的百位,十位和个位,反转后输出
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
printf("%d %d %d\n",a%10,a/10%10,a/100);
return 0;
} //考虑250的情况,是够需要输出52还是052
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
a=a%10*100+a/10%10*10+a/100;
printf("%03d\n",a);
return 0;
}
3.两数交换
//变量交换
#include<stdio.h>
int main(void)
{
int t,a,b;
scanf("%d%d",&a,&b);
t=a;
a=b;
b=t;
printf("%d %d",a,b);
return 0;
} //两变量方法
#include<stdio.h>
int main(void)
{
int a,b;
scanf("%d%d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("%d %d\n"a,b);
} //异或思想,慎用
#define swap(a,b) a^=b^=a^=b
注意这里的运用,对于同一变量的两次修改不能放在一个表达式里,
#include <stdio.h>
#define swap(a,b) a^=b^=a^=b
int main(void)
{
int a=1,b=2;
int c[]={1,2};
swap(a,b);
swap(c[0],c[1]);
printf("a=%d,b=%d\n",a,b);
printf("c[0]=%d,c[1]=%d\n",c[0],c[1]);
return 0;
} 在GCC下运行结果:
a=2,b=1
c[0]=0,c[1]=1
在VC6.0环境下运行结果:
a=2,b=1
c[0]=2,c[1]=1
4三整数
#include<stdio.h>
int main(void)
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b) {
t=a;a=b;b=t;
}
if(a>c){
t=a;a=c;c=t;
}
if(b>c){
t=b;b=c;c=t;
}
//从小到大排列
printf("%d %d %d\n",a,b,c);
return 0;
}
//注意这里如果是先a,b,再比较b,c,最后a,c,这里可能发生的是中间值被二次修改 #include<stdio.h>
int main(void)
{
int a,b,c,x,y,z;
scanf("%d%d%d",&a,&b,&c);
x=a;if(b<x) x=b;if(c<x) x=c;
z=a;if(b>z) z=b;if(c>z) z=c;
y=a+b+c-x-z;
printf("%d %d %d\n",x,y,z);
return 0;
}
5.C语言中三角函数使用弧度而不是角度
6.闰年的判断
if(year%4==0&&year%100!=0)||(year%400==0)
return 1;
else
return 0;
7.输出形如aabb的四位完全平方数
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,s;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
{
s=1100*a+11*b;
if(floor(sqrt(s)+0.5)==sqrt(s)) //floor是返回x的整数部分,为了减小误差采用四舍五入 floor(x+0.5)
printf("%d\n",s);
}
return 0;
} #include<stdio.h>
int main(void)
{
int x,n,hi,ho;
for(x=1;;x++)
{
n=x*x;
if(n<1000) continue;
if(n>9999) break;
hi=n/100;
ho=n%100;
if(hi/10==hi%10&&ho/10==ho%10) printf("%d\n",n);
}
return 0;
}
8.3n+1问题
#include<stdio.h>
int main(void)
{
int n,num=0;
scanf("%d",&n);
while(n>1)
{
if(n%2==1) n=3*n+1; //大数据,乘法可能溢出
else n=n/2;
num++;
}
printf("%d\n",num);
return 0;
} //当输出987654321的时候出现错误,原来是乘法溢出了
//为了解决这个问题,有个好点的方法可以解决,就是当n为奇数的时候,3n+1一定是偶数,这时候立刻除以2,也就是(3n+1)/2=(2n+n+1)/2=n+(n+1)/2;
#include<stdio.h>
int main(void)
{
int n,num=0;
scanf("%d",&n);
while(n>1)
{
if(n%2==1) {
n=n+(n+1)/2; //修改这里
num++;
}
else n=n/2;
num++;
}
printf("%d\n",num);
return 0;
}
9.阶乘之和
#include<stdio.h>
int main(void)
{
int i,j,n;
int s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int fac=1;
for(j=1;j<=i;j++)
fac*=j;
s+=fac;
}
printf("%d\n",s%1000000);
return 0;
} //这里可能会溢出,因为阶乘数据很大
所以采用对每一步进行对n取余,结果不变,这是一个数论的知识点
#include<stdio.h>
#include<time.h>
int main(void)
{
int i,j,n;
int s=0;
const int MOD=1000000;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int fac=1;
for(j=1;j<=i;j++)
fac=(fac*j%MOD);
s=(s+fac)%MOD;
}
printf("%d\n",s);
printf("Time used=%.2lf\n",(double)clock()/CLOCKS_PER_SEC); //学习一下time头文件的用法
return 0;
}
10.文件操作
#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main(void)
{
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif // LOCAL;
int x=0,n,min=INF,max=-INF,s=0;
while(scanf("%d",&n)==1)
{
if(n>max) max=n;
if(n<min) min=n;
s+=n;
x++;
}
printf("%d %d %.3lf\n",min,max,(double)s/x);
return 0;
} //文件输入输出操作,不使用重定向的方式
#include<stdio.h>
#define INF 10000000
int main(void)
{
FILE *fin,*fout;
fin=fopen("data.in","rb");
fout=fopen("data.out","wb");
int x=0,n,s=0,min=INF,max=-INF;
while(fscanf(fin,"%d",&n)==1)
{
if(n>max) max=n;
if(n<min) min=n;
s+=n;
x++;
}
fprintf(fout,"%d %d %.3lf\n",min,max,(double)s/x);
fclose(fin);
fclose(fout);
return 0;
}
习题
//输入一个不超过10的9次方的整数,输出它的位数
#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
int num=1;
while(n>9)
{
n=n/10;
num++;
}
printf("%d\n",num); } //水仙花数
#include<stdio.h>
int main(void)
{
int a,b,c;
for(int i=100;i<=999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);
}
return 0;
} //韩信点兵
#include<stdio.h>
int main(void)
{
int a,b,c,i;
scanf("%d%d%d",&a,&b,&c);
for(i=10;i<=100;i++)
{
if(i%3==a&&i%5==b&&i%7==c)
{
printf("%d\n",i); break;
}
else continue;
}
if(i>100) printf("No answer\n");
return 0;
} //倒三角
#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
for(int i=n;i>=1;i--)
{
for(int j=1;j<=2*i-1;j++)
printf("#");
printf("\n");
for(int k=n;k>=i;k--)
printf(" ");
}
return 0;
} //分数化小数
#include<stdio.h>
int main(void)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.*lf\n",c,(double)a/b);
return 0;
} //近似计算,有点问题
#include<stdio.h>
#include<math.h>
int main(void)
{
int t=-1;
double a=1.0,sum=1.0;
while(fabs(a)>=0.01)
{
a=(1.0)/(a+2);
a=a*t;
sum=sum+a;
t=t*-1;
}
printf("%.9lf\n",sum);
return 0;
}
算法入门笔记------------Day1的更多相关文章
- 算法入门笔记------------Day4
1.WERTYU 输入一个错位后敲出的字符串,输出打字员本来想打出的字 #include<stdio.h> char *s="`1234567890-=QWERTYUIOP[]\ ...
- 算法入门笔记------------Day3
主要是复习前面的基本内容,以及函数的概念 组合数 #include<stdio.h> int f(int n) { int m=1; for(int i=1;i<=n;i++) m* ...
- 算法入门笔记------------Day2
1.开灯问题 有n盏灯,编号为1-n,第一个人把所有灯打开,第二个按下所有编号为2的倍数的开关(这些灯都被关掉),第三个人按下所有编号为3的倍数的开关,依次类推,一共有k个人,问最后有哪些灯开着?输入 ...
- Android NDK JNI 入门笔记-day04-NDK实现Hash算法
* Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- OpenCV图像处理学习笔记-Day1
OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- C++ 快速入门笔记:进阶编程
C++入门笔记:高级编程 文件和流 打开文件 void open (const char *filename, ios::openmode mode); ios::app 追加模式.所有写入都追加到文 ...
随机推荐
- Android菜鸟成长记10 -- ListVew
ListView在我们学习Android的过程中是非常重要得一个部分. listview主要有两个职责 1)将数据填充到布局. 2)处理用户的选择点击等操作. 一个ListView的创建需要3个元素 ...
- Android 无标题、全屏设置
一.在主题中设置无标题.全屏 (一):直接设置主题: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" // ...
- 关于python中带下划线的变量和函数 的意义
总结: 变量: 1. 前带_的变量: 标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量 2. 前带两个_ ,后带两个_ 的变量: 标明是内置变量, 3. 大写加下划线的变量: ...
- CC1310的RSSI值问题
前几日,做CC1310的通信距离测试,发现我的CC1310的板子在433MHz,50kbps下通信距离非常近,RSSI值下探至-80左右就无法正常通信,与TI宣称的-120dbm接收灵敏度差距较大.使 ...
- shell获取ip
ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
- HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”
网站发布到IIS上,访问时出现错误 原因:在安装Framework v4.0之后,再启用IIS,导致Framework没有完全安装 解决:开始->所有程序->附件->右键点击“命令提 ...
- Could not synchronize database state with session
今天做一个简单保存时,db2数据库报的错误,网上收集了下问题的解决办法~ 1.主键不是自动生成的,然后自己没手动设置. 2.插入的实体字段跟数据库的关键字冲突. 3.更新的时候,如果更新一个不存在的i ...
- [MEMO]: 机器学习教父级别的任务Jordan推荐的书籍
- Light OJ 1027 - A Dangerous Maze (数学-期望)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1027 题目大意: 一个迷宫, 有n个门,选择一个门花费为|ai|, 如果选择的 ...
- 给div设置background-color: rgba(0, 0, 0, 0.2)属性,并加了css3动画--opacity动画淡出动画,之后div子元素的字体会抖一下
问题:给div设置background-color: rgba(0, 0, 0, 0.2)属性,并加了css3动画--opacity动画淡出动画,之后div子元素的字体会抖一下: 解决:animati ...