算法入门笔记------------Day4
1.WERTYU
输入一个错位后敲出的字符串,输出打字员本来想打出的字
#include<stdio.h>
char *s="`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
int main(void)
{
int i,c;
while((c=getchar())!=EOF)
{
for(i=1;s[i]&&s[i]!=c;i++); //这里用分号,搜索到字符前一个位置
if(s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
2.判断一个双引号是左引号还是右引号
#include<stdio.h>
int main(void)
{
int c,q=1;
while((c=getchar())!=EOF)
{
if(c=='"')
{
printf("%s",q?"zz":"yy"); //z代表左引号,y代表右引号
q=!q;
}
else
putchar(c);
}
return 0;
}
3.输出一个字符串的最小周期
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[100];
scanf("%s",s);
int len=strlen(s);
for(int i=1;i<=len;i++) //枚举所有周期
if(len%i==0)
{
int ok=1;
for(int j=i;j<len;j++) //第二个周期的第一个字符开始比较
{
if(s[j]!=s[j%i]) //如果和之前的字符不匹配,则不是一个周期
{
ok=0;
break;
}
}
if(ok)
{
printf("%d\n",i);
break;//找最小的周期,就退出,如果去掉就是找所有周期
}
}
return 0;
}
4.小学生算式,两个数相加输出多少次进位
#include<stdio.h>
int main(void)
{
int a,b;
while(scanf("%d%d",&a,&b)==2)
{
if(!a&&!b) return 0;
int c=0,ans=0;
for(int i=9;i>=1;i--)
{
c=(a%10+b%10+c)>9?1:0;
ans+=c;
a=a/10;
b=b/10;
}
printf("%d\n",ans);
}
return 0; }
5.阶乘的精确值
#include<stdio.h>
#include<string.h>
//const int maxn=1000 全局变量数组长度要求在编译时确定,const并不是真正的常量,可能会被修改,所以要声明成define
#define maxn 3000
int f[maxn];
int main(void)
{
int i,j,n;
scanf("%d",&n);
memset(f,0,sizeof(f));
f[0]=1;
for(i=2;i<=n;i++)
{
int c=0;
for(j=0;j<maxn;j++)
{
int s=f[j]*i+c;
f[j]=s%10;
c=s/10;
}
}
for(j=maxn-1;j>=0;j--)
if(f[j]) break;
for(i=j;i>=0;i--)
printf("%d",f[i]);
printf("\n");
return 0;
}
6.6174问题
#include<stdio.h>
#include<string.h>
int num[2000],count;
int get_next(int x);
int main(void)
{
scanf("%d",&num[0]);
printf("%d",num[0]);
count=1;
for(;;)
{
num[count]=get_next(num[count-1]); //生成下一个输出数
printf("->%d",num[count]);
//在数组num中寻找新生成的数
int found=0;
for(int i=0;i<count;i++)
{
if(num[i]==num[count])
{
found=1;
break;
}
}
//如果找到,直接退出循环
if(found) break;
count++;
}
printf("\n");
return 0; }
int get_next(int x)
{
int a,b,n;
char s[100];
sprintf(s,"%d",x); //转化成字符串
n=strlen(s);
for(int i=0;i<n;i++) //冒泡排序
{
for(int j=i+1;j<n;j++)
if(s[i]>s[j])
{
char t=s[i];
s[i]=s[j];
s[j]=t;
}
}
sscanf(s,"%d",&b); //写入到数字b中
for(int i=0;i<n/2;i++) //字符串反转
{
char t=s[i];s[i]=s[n-1-i];s[n-1-i]=t;
}
sscanf(s,"%d",&a); //写入数字中a
return a-b;
}
7.字母重排
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n;
char word[2000][10],sorted[2000][10];
int cmp_char(const void * _a,const void *_b)
{
char *a=(char *)_a;
char *b=(char *)_b;
return *a-*b;
}
int cmp_string(const void * _a,const void * _b)
{
char *a=(char*)_a;
char *b=(char*)_b;
return strcmp(a,b);
}
int main(void)
{
n=0;
for(;;)
{
scanf("%s",word[n]);
if(word[n][0]=="*") break; //遇到结束终止循环
n++;
}
qsort(word,n,sizeof(word[0]),cmp_string); //给所有单词排序
for(int i=0;i<n;i++)
{
strcpy(sorted[i],word[i]);
qsort(sorted[i],strlen(sorted[i]),sizeof(char),cmp_char);
} //给每个单词排序
char s[10];
while(scanf("%s",s)==1) //持续读取到文件结尾
{
qsort(s,strlen(s),sizeof(char),cmp_char); //给输入单词排序
int found=0;
for(int i=0;i<n;i++)
{
if(strcmp(sorted[i],s)==0)
{
found=1;
printf("%s",word[i]); //输出原始单词,而不是排序后的
}
}
if(!found) printf(":(");
printf("\n");
}
return 0; }
8.cantor数集
#include<stdio.h>
int main(void)
{
int n;
while(scanf("%d",&n)==1)
{
int k=1,s=0;
for(;;)
{
s+=k;
if(s>n)
{
printf("%d/%d\n",s-n+1,k-s+n);
break;
}
k++;
}
}
return 0; }
9.因子和阶乘
#include<stdio.h>
#include<string.h>
int is_prime(int n)
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int prime[100],count=0;
int main(void)
{
int n,p[100]; //n和各个素数的指数
for(int i=2;i<=100;i++)
{
if(is_prime(i)) prime[count++]=1;
}
while(scanf("%d",&n)==1)
{
printf("%d!=n",n);
memset(p,0,sizeof(p));
int max=0;
for(int i=1;i<=n;i++) //必须把i复制到变量m中,二不要在做除法时候修改它
{
int m=i;
for(int j=0;j<count;j++)
while(m%prime[j]==0)
{
m/=prime[j];
p[j]++;
if(j>max) max=j;
}
}
for(int i=0;i<=max;i++)
printf(" %d",p[i]);
printf("\n");
}
return 0;
}
算法入门笔记------------Day4的更多相关文章
- 算法入门笔记------------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个人,问最后有哪些灯开着?输入 ...
- 算法入门笔记------------Day1
1.C语言使用%d显示float值,不会把float值转换为近似的int值,而是显示垃圾值,使用%f显示int值,也不会把该int值转换为浮点值 2.三位数反转:输入一个三位数,分离它的百位,十位和个 ...
- Android NDK JNI 入门笔记-day04-NDK实现Hash算法
* Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- C++ 快速入门笔记:进阶编程
C++入门笔记:高级编程 文件和流 打开文件 void open (const char *filename, ios::openmode mode); ios::app 追加模式.所有写入都追加到文 ...
- golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web
micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...
随机推荐
- oracle 字符串
oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算stri ...
- [python] python实现2048游戏,及代码解析。
我初学python,有不对之处望大家指教.转载请征得同意. 我在网络上也找了一些2048游戏代码的讲解,但都不是特别详细.所以我希望能够尽量详细的讲解.同时,有的地方我也不懂,希望大家能帮助补充.我会 ...
- linux命令(8):cp 命令
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...
- SimpleDateFormat的应用
import java.text.SimpleDateFormat;import java.util.Date;public class Main { public static void ma ...
- Coursera Machine Learning : Regression 简单回归
简单回归 这里以房价预测作为例子来说明:这里有一批关于房屋销售记录的历史数据,知道房价和房子的大小.接下来就根据房子的大小来预测下房价. 简单线性回归,如下图所示,找到一条线,大体描述了历史数据的走势 ...
- brew 任何命令 都 报 synatx error
brew 忽然不能用了,任何命令都报 syntax error near unexpected token `<<<' 解决方案 cd $(brew --prefix) git fe ...
- Windows下的maven安装及配置
有时候开发需要用到maven来进行项目管理,说下怎么配置maven吧 环境&工具: windows系统 jdk1.8 apache-maven-3.2.5.zip eclipse 首先需要去A ...
- 使用winpcap多线程抓包,以及简单的分析数据包
刚开始使用winpcap数据包的时候,我在抓包的时候使用了 pcap_loop(adhandle, 0, packet_handler, NULL); 这个回调函数进行抓包.同时在回调函数中分析IP地 ...
- jquery 给input赋值错误写法
<script type="text/javascript"> var ue = UE.getEditor('container'); function getCont ...
- windows下mongodb权限设置解决方法
mongodb简介: MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB工作在收集和文件的概念. MongoDB默认设置为无权限访问限制,所以可以直 ...