• C语言程序设计_zju——第5周编程练习_素数和_念整数


    1 素数和(5分)

    题目内容:

    我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

    现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

    输入格式:

    两个整数,第一个表示n,第二个表示m。

    输出格式:

    一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

    输入样例:

    2 4

    输出样例:

    15

    时间限制:500ms内存限制:32000kb
     1 #include <stdio.h>
     2 #include <stdbool.h>
     3 int main()
     4 {
     5     int x=2;
     6     int n=1,m=1;
     7     int cnt=0,sum=0;
     8     bool isPrime=1;    //1代表是素数
     9     scanf("%d %d",&n,&m);    
    10     while(cnt<=m) {
    11         //int i;
    12         isPrime = 1;        
    13         for ( int i=2; i<x; i++ ) {
    14             if ( x % i == 0 ) {
    15                 isPrime = 0;
    16                 break;
    17             }                    
    18         }
    19         if ( isPrime==1 ) {
    20             cnt++;
    21             if(cnt>=n&&cnt<=m) {//不知为什么 只写cnt>=n,会多算一轮。花了我很多时间 
    22                 sum=sum+x;
    23                 //printf("cnt=%d  x=%d sum=%d
    ",cnt,x,sum);
    24             }            
    25         } 
    26         x++;
    27     }
    28     printf("%d",sum);
    29     return 0;
    30 }

    about 1h

    2 念整数(5分)

    题目内容:

    你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

    如输入1234,则输出:

    yi er san si

    注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

    fu er san si yi

    输入格式:

    一个整数,范围是[-100000,100000]。

    输出格式:

    表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

    输入样例:

    -30

    输出样例:

    fu san ling

    时间限制:500ms内存限制:32000kb
     1 #include <stdio.h>
     2 #include <math.h>
     3 int main(){
     4 
     5     int num,tenTimes=1,digit;
     6     scanf("%d",&num);
     7     if(num<0){
     8         printf("fu ");
     9         num=-num;
    10     }
    11 
    12     while(num>((int)pow(10,tenTimes))){
    13         tenTimes++;
    14     }
    15     for(;tenTimes!=0;tenTimes--){
    16         if(tenTimes==1){
    17             digit=num;
    18         }else{
    19             digit=num/((int)pow(10,(tenTimes-1)));
    20         }
    21         switch(digit){
    22             case 0:
    23                 printf("ling");
    24                 break;
    25             case 1:
    26                 printf("yi");
    27                 break;
    28             case 2:
    29                 printf("er");
    30                 break;
    31             case 3:
    32                 printf("san");
    33                 break;
    34             case 4:
    35                 printf("si");
    36                 break;
    37             case 5:
    38                 printf("wu");
    39                 break;
    40             case 6:
    41                 printf("liu");
    42                 break;
    43             case 7:
    44                 printf("qi");
    45                 break;
    46             case 8:
    47                 printf("ba");
    48                 break;
    49             case 9:
    50                 printf("jiu");
    51                 break;    
    52         }
    53         num=(num-digit*(int)pow(10,(tenTimes-1)));
    54         if(tenTimes>1){
    55             printf(" ");
    56         }        
    57     }    
    58     return 0;
    59 }

     

     

    about 1h 10min

    不知道哪里错了

    因为上课内容如下,所以没有用到未教的知识。接下来,基本复习完C语言,再做题。

    第1周:程序设计与C语言

    第2周:计算

    第3周:判断与循环

    第4周:进一步的判断与循环

    第5周:循环控制
     
    换了一种方法做,以下代码用到未教的知识。
     1 #include <stdio.h>
     2 int main(){
     3     char numStr[7];
     4     scanf("%s",numStr);
     5     int i=0;
     6     while (numStr[i]!=''){
     7         if(i>0){
     8             printf(" ");
     9         }
    10 
    11         char digit=numStr[i];
    12         switch(digit){
    13             case '-':
    14                 printf("fu");
    15                 break;            
    16             case '0':
    17                 printf("ling");
    18                 break;
    19             case '1':
    20                 printf("yi");
    21                 break;
    22             case '2':
    23                 printf("er");
    24                 break;
    25             case '3':
    26                 printf("san");
    27                 break;
    28             case '4':
    29                 printf("si");
    30                 break;
    31             case '5':
    32                 printf("wu");
    33                 break;
    34             case '6':
    35                 printf("liu");
    36                 break;
    37             case '7':
    38                 printf("qi");
    39                 break;
    40             case '8':
    41                 printf("ba");
    42                 break;
    43             case '9':
    44                 printf("jiu");
    45                 break;    
    46         }        
    47         i++;
    48     }
    49         
    50     return 0;
    51 }

     

     

    20min


    题目来源

    程序设计入门——C语言_浙江大学_中国大学MOOC(慕课) http://www.icourse163.org/course/ZJU-199001

  • 相关阅读:
    [PKUSC2018]星际穿越——可持久化线段树+DP
    BZOJ2863[SHOI2012]魔法树——树链剖分+线段树
    BZOJ1758[Wc2010]重建计划——分数规划+长链剖分+线段树+二分答案+树形DP
    BZOJ4543[POI2014]Hotel加强版——长链剖分+树形DP
    树链剖分讲解及总结(重链剖分+长链剖分)
    Dubbo(3)--dubbo的源码分析
    Dubbo(1)--初识Dubbo
    zookeeper(5)--基于watcher原理实现带注册中心的RPC框架
    模板方法模式
    单例模式
  • 原文地址:https://www.cnblogs.com/gleamer/p/cweek5exercise.html
Copyright © 2020-2023  润新知