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

 

小题精炼-----初试C语言

题解:

1. 直接两个循环就ok啦! 当初讲课的时候几乎讲过原题啦。

2. 直接 100的三次方就是1000000啦, 所以直接对某数的三次方开方(取int型), 然后再平方, 判断一下是否相等。

3. 可以直接扫描一下, 把大写字母都转化成小写, 然后逐个判断!

4. 求组合数, 直接按照求组合数的公式, 然后循环求解, 就好啦!

5. 直接循环求出 真因子和, 判断一下是否和原数相等否, 即可!(这个好像也讲过原题!)

6.多重集的组合,这就是一个公式的事儿!  这个公式的推导过程也很机智!

附加题: 仔细回想一下自己小学算除法的过程, 然后用一个数组保存余数。 用另一个数组判断同一个余数是否出现两次,当有一个余数出现两次时, 立刻停止往下除。 然后找出这两个余数出现的位置(加括号), 然后把各   余数*10 /除数  输出即可! 。 详见代码!   

 

Talk is cheap, show me your code!

各题代码:

1.

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int ok;
 8     printf("%d\n", 2);
 9     for(int i=3; i<=1000000; i++)
10     {
11         int ok = 1;
12         for(int j=2; j*j<=i; j++)
13         {
14             if(i%j==0)
15             {
16                 ok = 0;
17                 break;
18             }
19         }
20         if(ok) printf("%d\n", i);
21     }
22     return 0;
23 }
View Code

 

#include<stdio.h>
#include<math.h>
const int maxn=10000000;
int a[maxn];
int main()
{
    for(int i=2;i<maxn;i++)
    a[i]=i;
    for(int i=2;i<sqrt(maxn);i++) if(a[i]) {
        for(int j=i*i;j<maxn;j=j+i)
        a[j]=0;
    }
    for(int i=2;i<maxn;i++)
    if(a[i]!=0) printf("%8d",i);    
} 
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-18
  • 2021-12-20
  • 2022-03-09
  • 2022-12-23
猜你喜欢
  • 2021-11-16
  • 2021-08-15
  • 2021-07-06
  • 2021-07-11
相关资源
相似解决方案