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. sql一个表中两个字段合并求和

    sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total  from TABLE

  2. 简单C语言文法

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...

  3. ORACLE 生成一个随机数

    ORACLE 如何产生一个随机数:DBMS_RANDOM--1.小数( 0 ~ 1) select dbms_random.value from dual ; --2.指定范围内的小数 ( 0 ~ 1 ...

  4. 【C#】项目优化实战

    [C#]项目优化实战 一. 数据库设计 1. 常量的枚举值直接存中文不要存数字(注意是常量,如果显示值可变就不能) 例如:男女,在数据库中不要存1和0,直接存男和女. 这样的好处:读取数据的时候可以避 ...

  5. jquery实现动画

    animate() 方法 语法: $(selector).animate({params},speed,callback); 必需的 params 参数定义形成动画的 CSS 属性. 可选的 spee ...

  6. iOS之分别使用代码和storyboard、xib为控件设置圆角(以按钮为例)

    首先我们看一下代码是如何给按钮设置圆角的: 我们再来看看如何在storyboard或xib中给按钮设置圆角: 1.在storyboard或xib中添加按钮后,设置标题和背景色,做好约束: 2.点击 S ...

  7. cursor中的url整理

    浏览器中如何做才能使鼠标改变成自定义的图片,即用curosr:url属性,格式为{cursor:url('路径'),auto;}//IE,FF,chrome浏览器都可以,其中前面的url是自定义鼠标图 ...

  8. C++函数重载和函数模板

    1.函数重载 这是小菜鸟写的一个例子. 函数重载应该注意以下几点: 1.1重载函数有类似的功能: 1.2只能以参数的类型(形参个数和类型)来重载函数, int max(int a,int b);flo ...

  9. 【转】Oracle Database PSU/CPU

    转自: http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html 1. 什么是PSU/CPU?CPU: Critical Patc ...

  10. Phabricator部署手册

    参考:https://secure.phabricator.com/book/phabricator/article/installation_guide/ 概述 phabricator,由faceb ...