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的更多相关文章

  1. 算法入门笔记------------Day4

    1.WERTYU 输入一个错位后敲出的字符串,输出打字员本来想打出的字 #include<stdio.h> char *s="`1234567890-=QWERTYUIOP[]\ ...

  2. 算法入门笔记------------Day3

    主要是复习前面的基本内容,以及函数的概念 组合数 #include<stdio.h> int f(int n) { int m=1; for(int i=1;i<=n;i++) m* ...

  3. 算法入门笔记------------Day2

    1.开灯问题 有n盏灯,编号为1-n,第一个人把所有灯打开,第二个按下所有编号为2的倍数的开关(这些灯都被关掉),第三个人按下所有编号为3的倍数的开关,依次类推,一共有k个人,问最后有哪些灯开着?输入 ...

  4. Android NDK JNI 入门笔记-day04-NDK实现Hash算法

    * Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...

  5. 「Android 开发」入门笔记

    「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...

  6. OpenCV图像处理学习笔记-Day1

    OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...

  7. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  8. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

  9. C++ 快速入门笔记:进阶编程

    C++入门笔记:高级编程 文件和流 打开文件 void open (const char *filename, ios::openmode mode); ios::app 追加模式.所有写入都追加到文 ...

随机推荐

  1. Python3

    1.上节内容回顾 递归: 明确的结束条件 问题规模每递归一次都应该比上一次的问题规模有所减少 效率低 高阶函数 文件: rb.wb.ab 一般用在不同系统之间传数据,和传视频流的时候用到,一般以这种形 ...

  2. python之路——基础篇(2)模块

    模块:os.sys.time.logging.json/pickle.hashlib.random.re 模块分为三种: 自定义模块 第三方模块 内置模块 自定义模块 1.定义模块 将一系列功能函数或 ...

  3. sizeof(结构体) = ?

    关于结构体大小怎样计算的文章,我想网上一搜到处都有人总结,本人之所以在此基础上还要发表这样的文章是想用最简单的计算方法来总结前人给出的结论,以致我们在以后在对结构体相关编程中不会陷入字节对齐的陷阱中. ...

  4. SQL语句中=null和is null

    平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS ...

  5. 在已有 Ubuntu 的基础上硬盘安装 Win7 实现双系统

    . . . . . LZ 的笔记本电脑一直安装的是 Ubuntu 系统,最近由于工作需要,要安装一个 Win7 系统.大家都知道,Linux 和 Windows 装双系统的时候要先装 Win 再装 L ...

  6. setValuesForKeysWithDictionary 的用法

    字典的快速赋值 setValuesForKeysWithDictionary 字数918 阅读6604 评论6 喜欢32 前言 在学习解析数据的时候,我们经常是这么写的:PersonModel.h文件 ...

  7. 你不知道的函数节流,提高你的JS性能!

    浏览器的DOM计算处理非常耗费CPU时间,霸占内存,这对我们的开发来说是非常不友好的,,比如IE浏览器的onresize事件就可能在用户稍微拖动一下窗口时计算上千次,甚至更高频率直接让浏览器崩溃... ...

  8. 经典的找不到符号(symbol)错误 #iOS开发

    使用BmobSDK的过程中,编译时出现了以下错误信息,意思是 -[BmobSRWebSocket _innerPumpScanner] 这个方法引用了 "_utf8_nextCharSafe ...

  9. JavaScript 对象的创建和对6种继承模式的理解和遐想

      JS中总共有六种继承模式,包括原型链.借用构造函数.组合继承.原型式继承寄生式继承和寄生组合式继承.为了便于理解记忆,我遐想了一个过程,对6中模式进行了简单的阐述. 很长的一个故事,姑且起个名字叫 ...

  10. 深入浅出: Java回调机制(异步)

    一.什么是回调 回调,回调.要先有调用,才有调用者和被调用者之间的回调.所以在百度百科中是这样的: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用. 回调 ...