4. 22 C语言:程序结构-高级 (prepare)

本博客深入探讨了C语言中的循环结构、分支结构及其嵌套应用,通过实例解析了多层循环间的中断机制,并提供了针对特定图案输出、素数判断及文本统计的编程练习,旨在提升读者在复杂条件控制下的编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言:程序结构- -高级 

 

知识点预习: 

 

1、循环结构和分支结构之间的嵌套问题; 

 

2、多层循环间如何中断; 

 

3、复习前两讲内容



习题: 

1、输出如下图案: 

    * 

   ** 

  *** 

 **** 

 

#include <stdio.h> 

 

int main(int argc, const char * argv[]) { 

     

    int i,j,n=4; 

    for(i = 0 ;i <= n; i++ )  

    { 

        

        for(j=0; j<= n; j++) 

            if (j < n - i) 

printf(" "); 

  else 

printf("*"); 

    } 

    printf("\n"); 

     

    return 0; 

}


2、编程实现输入一个数,判定该数是否为素数; 

 

#include <stdio.h> 

#include <math.h> 

 

int main(int argc, const char * argv[]) { 

     

    int m, i, k; 

    printf("Input a number: "); 

    scanf("%d", &m); 

     

    k = sqrt(m); 

     

    for (i = 2; i <= k ; i++) 

        if (m % i == 0) 

            break; 

        if (i > k) 

            printf("%d is a prime number\n", m); 

        else 

            printf("%d is not a prime number\n", m); 

     

     

     

    return 0; 

} 

 

 

3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数; 

 

#include <stdio.h> 

 

 

int main(int argc, const char * argv[]) { 

     

    int letter = 0, space = 0, number = 0, other = 0; 

    char string[50] ; 

     

    printf("Input a string: "); 

     

//    gets(string);  Unsafe 

     

    fgets(string,50,stdin); 

     

    printf("%s", string); 

     

    int i; 

    char c; 

     

    for (i = 0; (c = string[i]) != '\n'; i++) { 

        if (((c >= 'A') && (c <= 'Z'))||((c >= 'a') && (c <= 'z'))) { 

            letter += 1; 

        } 

        else if (c == ' ') { 

            space += 1; 

        } 

        else if ((c >= '0') && (c <='9')) { 

            number += 1; 

        } 

        else { 

            other += 1; 

        } 

    } 

     

    printf("Letters = %d\n", letter); 

    printf("Space = %d\n", space); 

    printf("Numbers = %d\n", number); 

    printf("Other = %d\n", other); 

     

    return 0; 

} 

 

 

4、一个公司新入职员工需要为其进行薪资定级,以10分制来对应10个工资标准,三方面因素来决定得分。工作经验,学历以及职业技术资格。 

 

*其中工作经验分为5个等级: 

*应届生 0分,1年以下工作经验 1分,1~3年经验 2分,4~7年经验 3分,7年以上经验 4分。 

 

*学历分为三个等级: 

*专科 1分,本科 2分,研究生及以上 3 

 

职业技术资格分为三个等级: 

初级工程师1分,中级工程师2分,高级工程师3分。 

 

实现思路:   

1)、定义变量存储员工经验分数(experience_points)、学历分数(grade_points)、职称分数(professional_points)以及总分数(total_points)。 

2)、首先提示输入经验等级,然后接收输入值,然后判断后给经验分数赋值。 

3)、仿照上步处理学历分数,以及职业技术资格分数。 

4)、将各项分数相加得到总分,然后根据总分输出员工的薪资等级。 

#include <stdio.h> 

 

int main(int argc, const char * argv[]) { 

     

    int experience_point = 0; 

     

    int grade_point = 0; 

    int professional_point = 0; 

    int total_point = 0; 

     

    //    Calculate experience_point. 

 

    float experience; 

     

go0: 

    printf("\n"); 

    printf("Please input your woking experience(years): "); 

    scanf("%f", &experience); 

    getchar(); 

     

    if (experience == 0) { 

         

        experience_point = 0; 

    } 

    else if ((experience < 1) && (experience > 0))  { 

         

        experience_point = 1; 

    } 

    else if ((experience <= 3) && (experience >= 1)) { 

         

        experience_point = 2; 

    } 

    else if ((experience <= 7) && (experience > 3)) { 

        experience_point = 3; 

    } 

    else if  ((experience > 7) && (experience <= 60)){ 

        experience_point = 4; 

    } 

    else if (experience < 0 || experience >= 60 ) { 

        printf("Error. Input again:\n"); 

        goto go0; 

         

    } 

 

    //    Calculate grade_point. 

 

    char grade; 

     

go1: 

    printf("\n"); 

    printf("A = Bachelor degree\n"); 

    printf("B = College degree\n"); 

    printf("C = Graduate degree or above\n"); 

    printf("Please input your education degree: "); 

    scanf("%c", &grade); 

    getchar(); 

     

    switch (grade) { 

        case 'A': 

            grade_point = 1; 

            break; 

        case 'B': 

            grade_point = 2; 

            break; 

        case 'C': 

            grade_point = 3; 

            break; 

        default: 

            grade_point = 0; 

            printf("Error. Input again:\n"); 

            goto go1; 

             

             

    } 

 

     

    //    Calculate professional_point. 

 

    char professional; 

     

go2: 

    printf("\n"); 

    printf("A = Junior Engineer\n"); 

    printf("B = Intermediate Engineer\n"); 

    printf("C = Senior Engineer\n"); 

    printf("Please input your professional: "); 

    scanf("%c", &professional); 

     

    switch (professional) { 

        case 'A': 

            professional_point = 1; 

            break; 

        case 'B': 

            professional_point = 2; 

            break; 

        case 'C': 

            professional_point = 3; 

            break; 

        default: 

            printf("Error. Input again:\n"); 

            goto go2; 

    } 

     

         //    Calculate total_point.      

    total_point = experience_point + grade_point + professional_point; 

    printf("\n"); 

    printf("Your total points of assess is : %d\n", total_point); 

    printf("And your salary hierarchy is : %d level.\n", total_point); 

     

    return 0; 

} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值