算法入门笔记------------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 追加模式.所有写入都追加到文 ...
随机推荐
- bat调用bat的一个巨坑
[一个巨坑] a.bat的内容:echo 1b.batecho 2执行结果:运行a.bat时,输出1,然后调用b.bat, 但是 echo 2 显示不出来. bat怎么调用bat文件并返回? 例如主文 ...
- 模板:正则替换之后生成标准的php文件 然后include该文件
http://www.360doc.com/content/12/0808/16/10388890_229034643.shtml
- [字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案
今天在eclipse中编写pom.xml文件时,注释中的中文被eclipse识别到错误:Invalid byte 1 of 1-byte UTF-8 sequence,曾多次遇到该问题,问题的根源是: ...
- C. Shaass and Lights 组合数学
http://codeforces.com/contest/294/problem/C 把那个数组n分段了,那么有两类. 1.开头和端点那些,就是只有一端在开始的,这个时候,要开完这些灯,只能循序渐进 ...
- Linux(Centos) 安装windows字体
有时候在Linux中需要用到windows字体,比如微软雅黑字体,这个时候,可能就需要我们手动去安装字体了(当然,如果服务器上没装过),简单几步如下: 1.在$WINDOWS/Fonts目录中找到对应 ...
- Finereport集群配置
增加配置文件cluster.xml 将配置包resource文件夹下的cluster.xml打开,如果没有cluster.xml,则新建一个,基本内容如下: <?xml version=&quo ...
- JSON 的应用
使用 JSON 需要的 jar 包:
- jQuery Mobile 图标
jQuery 图标 如需在 jQuery Mobile 中向按钮添加图标,请使用 data-icon 属性: <a href="#anylink" data-role=&qu ...
- Web服务器的工作原理
Web服务器的工作原理 Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了 ...
- 苗子sale record
2016年7月11日 橘白/阳光 发广州 220 中通 719373064939 成功2016年7月11日 横纹RA 发潮州 250 中通 719373064940 成功2016年7月18日 ...