题目一:(25分)
题目描述:输入终值,输出所有能被7整除的数值及其和
评分要求
- 根据接收值准确定义变量类型(2分)
- 提示并输入终值(2分)
- 阅读题目确定循环要素:起始值、终值、步长(3分)
- 循环判断指定范围内能被7整除的数值并输出(5分) 核心
- 每5个换行输出(2分)
- 累计全部符合条件的数值和并输出(3分)
- 代码中添加不少于5行的关键注释描述实现思路(3分)
//创建目标容器,并通过键盘键入
int goal;
printf("Enter you goal:\n");
scanf("%d",&goal);
//创建求和容器
int sum = 0;
//创建换行计算容器
int count = 0;
//遍历1到目标函数之间的所有数
for (int i = 1; i < goal; ++i) {
//当遍历的数可以被七整除输出值,并计算和
if(i % 7 == 0){
printf("%-5d ",i);
sum += i;
//换行计数增加,当数字可以被5整除时换行
count++;
if(count % 5 ==0)
printf("\n");
}
}
//输出和
printf("\nSum is %d\n",sum);
题目二: (20分)
题目描述: 注册账号时需输入6位密码,根据密码组成验证其安全等级
评分要求
- 根据接收用户值定义变量类型,命名遵守规范(2分)
- 利用循环结构、getchar()函数 输入验证密码(3分)
- 判断并统计输入的密码各组成部分个数(4分) 核心
- 如长度不符合要求给出提示信息(1分)
- 根据字母、数字、特殊字符、空格个数验证密码等级(3分) 核心
- 代码中需要添加至少5行关键注释描述实现思路(3分)
//创建密码容器,通过键盘键入
char password[40];
printf("输入6位密码:");
gets(password);
//分别创建字母,数字,字符标记
int letter = 0,num = 0,character = 0;
//创建遍历标记
int count = 0;
//当标记处不为'\0'时持续遍历
while (password[count] != '\0'){
//设置特殊值断点,当长度为7时退出循环,给字母,数字,字符标记标记特殊值
if(count == 6){
letter = -1;num = -1;character = -1;
break;
}
//每次循环都判断一次当前数组标记处的值,有字母就标记1,有数字就标记3,有字符标记5
//这样可以让每个组合的的值都是特殊值
if(password[count] >= 'a' && password[count] <= 'z' || password[count] >= 'A' &&password
letter = 1;
else if(password[count] >= '0' && password[count] <= '9')
num = 3;
else
character = 5;
//向前遍历
count++;
}
//创建组合值
int sum = letter + num + character;
//当根据每种组合输出其答案
if(sum == -3){
printf("密码长度不符合要求\n");
} else if(sum == 1 || sum == 3 || sum == 5){
printf("密码中只有字母 等级验证为:低\n");
} else if(sum == 4){
printf("密码中有字母、数字 等级验证为:中\n");
} else if(sum == 6){
printf("密码中有字母、空格及其他字符 等级验证为:中\n");
} else if(sum == 8){
printf("密码中有数字、空格及其他字符 等级验证为:中\n");
} else if(sum == 9){
printf("密码中有字母、数字、空格及其他字符 等级验证为:高\n");
}
题目三 :(30分)
题目描述: 神州租车公司为提升服务质量近期展开满意度调查活动,请输入近期租车6位顾客满意度进行相关运算
评分要求 :
- 正确定义一维数组 (3分)
- 循环输入6位顾客的满意度值(5分) 核心
- 将 6位用户的满意度按由小到大的顺序排序输出(5分) 核心
- 统计满意度个数,计算百分比并输出 (90分为合格) (4分) 核心
- 判断如果百分比值低于90%则显示信息“服务质量有待改进”,否则提示“保持现有服务质量水平” (3分)
- 代码关键处添加不少于5行的规范注释(5分)
//创建满意度容器,并通过键盘键入
double a[6];
//创建90分以上个数计数器
double count = 0;
for (int i = 0; i < 6; ++i) {
printf("请输入第%d位客户的满意度:",i + 1);
scanf("%lf",&a[i]);
if(a[i] >= 90)
count++;
}
//创建交换容器
int temp;
//简单选择排序
for (int i = 0; i < 6; ++i) {
for (int j = i + 1; j < 6; ++j) {
if(a[i] > a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
//输出排序结果
printf("本次满意度调查由低到高的分数是:");
for (int i = 0; i < 6; ++i) {
printf("%-4.0lf",a[i]);
}
//输出满意度结果
printf("满意度为%.2lf%%",( count / 6) * 100);
//对满意度的结果输出建议
if(( count / 6) * 100 < 90)
printf("服务质量有待提升\n");
else
printf("保持现有服务质量\n");
题目四 :(25分)
题目描述: 输入一批数,输出是3倍数的数值,计算3倍数中的最大值、最小值
评分要求
- 正确定义一维数组(2分)
- 提示并输入数组长度(2分)
- 循环输入数组元素的值(5分) 核心
- 循环判断并输出数组元素中是3倍数的元素(4分) 核心
- 循环查找数组元素中是3倍数的最小值,最大值并输出结果(4分) 核心
- 代码中添加不少于5行的关键注释描述程序实现思路(4分)
//从键盘输入数组长度
int length;
printf("请输入数组长度:");
scanf("%d",&length);
//创建初始数组,通过键盘输入值
int arr[length];
printf("请依次输入数组元素:");
for (int i = 0; i < length; ++i) {
scanf("%d",&arr[i]);
}
//创建3的倍数数组,通过遍历数组将3的倍数注入
int arr_3[length];
//创建3的倍数的计数器
int count = 0;
printf("数组中是3的倍数的元素包括:");
for (int i = 0; i < length; ++i) {
if(arr[i] % 3 == 0){
printf("%-5d",arr[i]);
arr_3[count] = arr[i];
count++;
}
}
//创建最大值和最小值容器,并将初始值设定为3的倍数数组的第一个值
int max = arr_3[0],min = arr_3[0];
//通过循环遍历数组,找到最大值和最小值
for (int i = 0; i < count; ++i) {
if(arr[i] > max)
max = arr[i];
if(arr[i] < min)
min = arr[i];
}
//输出
printf("\n数组元素中3的最小倍数是: %-4d 最大倍数是: %-4d",min,max);
题目五:(30分)
题目描述:输入操作数及运算符完成数值的加、减、乘、除运算
评分要求
- 定义接收操作数及运算符的变量,名称要符合规范(2分)
- 提示并输入第一个操作数(2分)
- 提示并输入运算符[加减乘除用字母代表](2分)
- 提示并输入第二个操作数(2分)
- 采用多分支选择结构switch对输入的操作数进行判断,输入大小写字母都可以调用
- 对应的运算(3分) 核心
- 正常计算两数相加并输出结果(2分)核心
- 正常计算两数相减并输出结果(2分)核心
- 正常计算两数相乘并输出结果(2分)核心
- 正常计算两数相除并输出结果(2分)核心
- 如分母为0则输出提示信息“分母不能为零!”(2分)
- 核心语句需添加不少于5行的规范注释描述实现思路(4分)
//创建第一个操作数容器,并通过键盘输入
double a;
printf("请输入第一个操作数:");
scanf("%lf",&a);
//吸收回车字符
getchar();
//创建运算字符容器,通过键盘键入
char operator;
printf("请输入一个运算符(加-P/p 减-S/s 乘-N/n 除-D/d):");
operator = getchar();
//创建第二个操作数容器,并通过键盘键入
double b;
printf("请输入第二个操作数:");
scanf("%lf",&b);
//处理特殊值,当操作为除,且除数为0,输出结果,结束程序
if((operator == 'd' || operator == 'D') && b == 0){
printf("运算结果\n分母不能为零!\n");
return 0;
}
//创建结果容器
double result;
//利用switch的特性,让他处理多个值,然后进行相应的计算
switch (operator) {
case 'P':
case 'p':
result = a + b;
break;
case 'S' :
case 's' :
result = a - b;
break;
case 'N':
case 'n':
result = a * b;
break;
case 'D':
case 'd':
result = a / b;
}
//输出结果
printf("运算结果\n %.2lf + %.2lf = %.2lf",a,b,result);