n位数上每一位数之和

啊哈C语言!逻辑的挑战

P135.动手试一试 2

输入一个N位数,范围在1~99 999 999,求这个数每一位上的数之和。


#include<stdio.h>
#include<stdlib.h>
int main(){
    int x,sum,num;
    sum = 0;
    scanf("%d",&x); 
    while(x>0){
        num = x % 10 ;//求余,然后给num赋值;
        x = x / 10;//求除,去掉最后一位,然后进入下一轮循环;
        sum = sum + num ;//余数相加,也就是位数求和
    }   
    printf("%d",sum);   
    return 0;
}

奔跑的小人

啊哈C语言!逻辑的挑战

使用函数和switch()来改进《啊哈C·逻辑的挑战》中“奔跑的小人”一题的解法。

#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
//在‘小人’前打印空格
void jump(int begin, int step){
        step = 1;
        while (step <= begin){
            printf(" ");
            step++;         
        }
    }   
int main(){ 
    int a = 0;
    int b,i;    
    do{
        system("cls");
        for(i = 1;i<4;i++){
            jump(a,b);
            switch(i){
                case 1:printf(" O\n");
                break;
                case 2:printf("<H>\n");
                break;
                case 3:printf("I I\n");
                break;
            }
        }
    sleep(1);
    a++;
    }while(a);
    return 0;
}

同时,如果要实现相反的小人运动方向,只需稍加修改。

#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
void jump(int begin, int step){
        step = 10;
        while (step > begin){
            printf(" ");
            step--;         
        }
    }   
int main(){ 
    int a = 1;
    int b,i;    
    do{
        system("cls");
        for(i = 1;i<4;i++){
            jump(a,b);
            switch(i){
                case 1:printf(" O\n");
                break;
                case 2:printf("<H>\n");
                break;
                case 3:printf("I I\n");
                break;
            }
        }
        sleep(1);
        a++;
    }while(a<11);
    return 0;
}

信号报告

无线电台的RS制信号报告是由三两个部分组成的:
R(Readability) 信号可辨度即清晰度.
S(Strength) 信号强度即大小.
其中R位于报告第一位,共分5级,用1—5数字表示.
1---Unreadable
2---Barely readable, occasional words distinguishable
3---Readable with considerable difficulty
4---Readable with practically no difficulty
5---Perfectly readable
报告第二位是S,共分九个级别,用1—9中的一位数字表示
1---Faint signals, barely perceptible
2---Very weak signals
3---Weak signals
4---Fair signals
5---Fairly good signals
6---Good signals
7---Moderately strong signals
8---Strong signals
9---Extremely strong signals
现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:
Extremely strong signals, perfectly readable.
输入格式:
一个整数,信号报告。整数的十位部分表示可辨度,个位部分表示强度。输入的整数范围是[11,59],这个范围外的数字不可能出现在测试数据中。
输出格式:
一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句子的第一个字母是小写的。注意这里的标点符号都是英文的。
输入样例:33
输出样例: Weak signals, readable with considerable difficulty.
时间限制:500ms内存限制:32000kb

//switch()的练习
#include<stdio.h>
int main()
{
    int sign,r,s;
    scanf("%d",&sign);  
    if(11<=sign&&sign<=59){
        r = sign/10;
        s = sign - sign/10*10;

        switch ( s ){
            case 1:
                printf("Faint signals, barely perceptible, ");
                break;
            case 2:
                printf("Very weak signals, ");
                break;
            case 3:
                printf("Weak signals, ");
                break;
            case 4:
                printf("Fair signals, ");
                break;
            case 5:
                printf("Fairly good signals, ");
                break;
            case 6:
                printf("Good signals, ");
                break;
            case 7:
                printf("Moderately strong signals, ");
                break;
            case 8:
                printf("Strong signals, ");
                break;
            case 9:
                printf("Extremely strong signals, ");
                break;
            }

        switch ( r ){
            case 1:
                printf("unreadable.");
                break;
            case 2:
                printf("barely readable, occasional words distinguishable.");
                break;
            case 3:
                printf("readable with considerable difficulty.");
                break;
            case 4:
                printf("readable with practically no difficulty.");
                break;
            case 5:
                printf("perfectly readable.");
                break;
            }   
        }   
    return 0;
}