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

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

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

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

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

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

    1.C语言使用%d显示float值,不会把float值转换为近似的int值,而是显示垃圾值,使用%f显示int值,也不会把该int值转换为浮点值 2.三位数反转:输入一个三位数,分离它的百位,十位和个 ...

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

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

  5. React.js入门笔记

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

  6. redis入门笔记(1)

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

  7. 「Android 开发」入门笔记

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

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

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

  9. golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

    micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...

随机推荐

  1. android studio中如何设置注释模板

    在开发程序的时候,我们一般都会给文件自动添加上一些关于文件的注释信息,比如开发者的名字,开发的时间,开发者的联系方式等等.那么在android studio中该如何设置呢? 工具/原料   andro ...

  2. DOM元素querySelectorAll可能让你意外的特性表现

    一.时间紧急,废话少说 本文所在的页面藏匿了下面这些代码: <img id="outside"> <div id="my-id"> &l ...

  3. Libevent 的多线程操作

    起因是event_base 跨线程add/remove event 导致崩溃或者死循环. 据查:libvent 1.4.x是非线程安全的,要跨线程执行event_add,会有问题.因此传统做法是通过p ...

  4. android虚拟机

    参考:http://baike.baidu.com/link?url=06bC3y5DSQ7DQ_QbEr6hTfMNpmg2f-39w6FpU69xxkbNoJ5OR4N9xCKoMwMMGTZfF ...

  5. c++总结01

    今天编写了四个小程序分别是“石头剪刀布游戏”“数字之间加空格输出”“蛇形矩阵”“螺旋矩阵”. 通过编写石头剪刀布代码 熟悉了switch语句和if语句的使用,同时也运用了do..while语句,其中 ...

  6. button点击ajax异步无效的处理办法,以及实现“关注”“已关注”切换

    button并不是在只等于submit时草有提交功能,如果你用它触发ajax事件,你的ajax会失去他最大的优势:刷新局部数据! 但是你如果设置了他的return false;属性小伙伴你的ajax才 ...

  7. 错误的CPU时间片大小概念

    1.错误的CPU时间片大小概念:http://blog.csdn.net/blue_morning/article/details/7843581 2.时间片:http://baike.baidu.c ...

  8. JQuery源码解析--callbacks

    (function (global, factory) { factory(global); })(this, function (window, noGlobal) { var rootjQuery ...

  9. Chrome 自动填充的表单是淡黄色的背景,有方法自定义吗

    input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; }

  10. Hibernate 注解的用法以及说明

    1.类级别注解 @Entity     映射实体类 @Table    映射数句库表  @Entity(name="tableName") - 必须,注解将一个类声明为一个实体be ...