小题精炼-----初试C语言
毫无疑问, 这个又是给新入门学C语言的小鲜肉准备的!

题解:
1. 直接两个循环就ok啦! 当初讲课的时候几乎讲过原题啦。
2. 直接 100的三次方就是1000000啦, 所以直接对某数的三次方开方(取int型), 然后再平方, 判断一下是否相等。
3. 可以直接扫描一下, 把大写字母都转化成小写, 然后逐个判断!
4. 求组合数, 直接按照求组合数的公式, 然后循环求解, 就好啦!
5. 直接循环求出 真因子和, 判断一下是否和原数相等否, 即可!(这个好像也讲过原题!)
6.多重集的组合,这就是一个公式的事儿! 这个公式的推导过程也很机智!
附加题: 仔细回想一下自己小学算除法的过程, 然后用一个数组保存余数。 用另一个数组判断同一个余数是否出现两次,当有一个余数出现两次时, 立刻停止往下除。 然后找出这两个余数出现的位置(加括号), 然后把各 余数*10 /除数 输出即可! 。 详见代码!
Talk is cheap, show me your code!
各题代码:
1.
#include <iostream>
#include <cstdio>
using namespace std; int main()
{
int ok;
printf("%d\n", );
for(int i=; i<=; i++)
{
int ok = ;
for(int j=; j*j<=i; j++)
{
if(i%j==)
{
ok = ;
break;
}
}
if(ok) printf("%d\n", i);
}
return ;
}
#include<stdio.h>
#include<math.h>
const int maxn=;
int a[maxn];
int main()
{
for(int i=;i<maxn;i++)
a[i]=i;
for(int i=;i<sqrt(maxn);i++) if(a[i]) {
for(int j=i*i;j<maxn;j=j+i)
a[j]=;
}
for(int i=;i<maxn;i++)
if(a[i]!=) printf("%8d",i);
}
2.
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std; int main()
{
for(int i=; i<=; i++)
{
int q = sqrt(i*i*i*1.0);
if(q*q==i*i*i) printf("%d\n", i*i*i);
}
return ;
}
#include<cstdio>
#include<cmath>
int main()
{
for(int i=;i<=;i++){
if(sqrt(i*i*i)*sqrt(i*i*i)==i*i*i);
printf("%8d\n",i*i*i);
}
return ;
}
3.
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; char str[]; int main()
{
while(scanf("%s", str)!=EOF)
{
getchar();
for(int i=; str[i]!='\0'; i++)
if(str[i]>='A'&&str[i]<='Z') str[i] += ;
int len = ;
for(int i=; str[i]!='\0'; i++)
{
if(str[i]!='#') len++;
for(int j=i+; str[j]!='\0'; j++)
if(str[i]==str[j]) str[j] = '#';
}
printf("%d\n", len);
}
return ;
}
#include<cstdio>
#include<cstring>
const int maxn=;
char s[maxn];
int main()
{
int a[]={};
while(~scanf("%s",s))
{
int sum=,len=strlen(s);
for(int i=;i<len;i++){ if(a[s[i]-]==||a[s[i]-]==)
continue; if(s[i]>=&&s[i]<=)
a[s[i]-]=; if(s[i]>=&&s[i]<=)
a[s[i]-]=;
}
for(int i=;i<;i++)
if(a[i]) sum++;
printf("%d\n",sum);
}
return ;
}
4.
#include <iostream>
#include <cstdio>
using namespace std; int main()
{
int ans;
int n, m;
while(scanf("%d%d", &n, &m)!=EOF)
{
ans = ;
if(m<n-m) m = n-m;
for(int i=m+; i<=n; i++)
ans*=i;
for(int i=; i<=n-m; i++)
ans/=i;
printf("%d\n", ans);
}
return ;
}
#include<cstdio>
int comb(int n,int m)
{
if(m==||n==m)
return ;
return comb(n-,m)+comb(n-,m-);
}
int main()
{
int m,n;
while(scanf("%d%d",&n,&m)!=EOF){
printf("%d\n",comb(n,m));
}
return ;
}
5.
#include <iostream>
#include <cstdio>
using namespace std; int main()
{
for(int i=; i<=; i++)
{
int sum = ;
for(int j=; j*j<=i; j++)
{
if(i%j==) sum += j + i/j;
if(j*j==i) sum-=j;
}
if(sum==i) printf("%d\n", i);
}
return ;
}
#include<cstdio>
const int maxn=;
int main()
{
int s;
for(int i=;i<=maxn;i++){
s=;
for(int j=;j<i;j++){
if(i%j==)
s+=j;
}
if(s==i) printf("%d\n",s);
}
return ;
}
6.
#include <iostream>
#include <cstdio>
using namespace std; int main()
{
int ans=;
for(int i=+; i<=; i++)
ans*=i;
for(int i=; i<=-; i++)
ans/=i;
printf("%d\n", ans);
return ;
}
附加题:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; bool vis[];
int ans[]; int main()
{
int a, b;
while(scanf("%d%d", &a, &b)!=EOF)
{
printf("%d", a/b);
if(a%b==) {printf("\n"); continue;}
printf(".");
int flag = -; int k=;
memset(vis, , sizeof(vis));
a = a%b; vis[a] = ; ans[k++] = a;
while(a%b)
{
a *= ;
int temp = a%b;
if(vis[temp])
{
for(int i=; i<k; i++)
{
if(temp==ans[i])
{
flag = i; break;
}
}
break;
}
else
{
ans[k++] = temp;
a = temp;
vis[temp] = ;
}
}
if(flag==-)
{
for(int i=; i<k-; i++)
printf("%d", ans[i]*/b);
}
else
{
if(flag==) printf("(");
else
{
for(int i=; i<flag; i++)
printf("%d", ans[i]*/b);
printf("(");
}
for(int i=flag; i<k; i++)
printf("%d", ans[i]*/b);
printf(")");
}
printf("\n");
}
return ;
}
小题精炼-----初试C语言的更多相关文章
- 关于SQL的几道小题详解
关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...
- ...续上文(一个小萌新的C语言之旅)
我们继续上次没介绍完的继续讲: 下面我们说一下二进制,二进制是计算技术中广泛采用的一种 数制. 二进制数据是用0和1两个 数码来表示的数.它的基数为2,进位规则是“逢二进一”.那么二进制怎么转化为十进 ...
- 常让人误解的一道js小题
一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...
- 一些js小题(一)
一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...
- 关于理解python类的小题
今天看了python部落翻译的一篇<一道python类的小题>文章,感觉挺有启发性,记录下来: print('A') class Person(object): print('B') de ...
- 20181014xlVBA获取小题零分名单
Sub GetZeroName() Dim Dic As Object Const SUBJECT = "科目名称" Dim Key As String Dim OneKey Di ...
- CF上的3道小题(2)
CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- python 小题
python 小题:给定一个字符串,找出不含有重复字符的最长子串的长度.示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc&quo ...
随机推荐
- Perl的基本语法<总结> (转载)
前言:这篇文章是花了我很多时间.费了我很多心血才完成的,虽然连我自己都觉得无法达到尽善尽美的境界,但希望能帮助大家入门,稍微了解到Perl 到底是个什么样的东西,Perl到底有那些强大的功能,那么这篇 ...
- 工具项与菜单项实现相同的功能(DevExpress)
1.在工具栏中添加菜单项.如下:在bar1工具栏中添加菜单项this.barButtonMenuItem(包含图标) this.bar1.LinksPersistInfo.AddRange(new D ...
- asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结
通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 ...
- java面试每日一题5
题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提 成,高于10万元的部分,可可提成7.5%:20万到40 ...
- 数据库连接池(DBCP:为数据统一建立一个缓冲池,现在企业开发使用)
数据库连接池:(里面放了许多连接数据的链接,负责分配,管理,释放数据库连接,可重复使用连接,而不新建 )为数据统一连接建立一个缓冲池,放好了一定数据库连接,使用时在缓冲池里面拿,用完之后再还给缓冲池 ...
- 20151221001 GridView 模板
<asp:GridView ID="GridView1" runat="server" AllowPaging=" ...
- 2015-11-04 报表(c#部分)(Datatable 查询,弹出日期控件,输入是否整数)
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq ...
- 单链表操作B 分类: 链表 2015-06-07 12:42 15人阅读 评论(0) 收藏
数据结构上机测试2-2:单链表操作B TimeLimit: 1000ms Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除 ...
- CSS选择器及其优先级
一:一些普通的选择器 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&quo ...
- C#相对路径转绝对路径,绝对路径转相对路径
1.绝对路径转相对路径 绝对转相对似乎C#没有提供实现,需要自己写,这里摘选了一位博友的实现方法: string RelativePath(string absolutePath, string re ...