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;
}