C语言学习作业

题目一:(25分)

       题目描述:输入终值,输出所有能被7整除的数值及其和

        评分要求

  1. 根据接收值准确定义变量类型(2分)
  2. 提示并输入终值(2分)
  3. 阅读题目确定循环要素:起始值、终值、步长(3分)
  4. 循环判断指定范围内能被7整除的数值并输出(5分) 核心
  5. 每5个换行输出(2分)
  6. 累计全部符合条件的数值和并输出(3分)
  7. 代码中添加不少于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位密码,根据密码组成验证其安全等级

        评分要求

  1. 根据接收用户值定义变量类型,命名遵守规范(2分)
  2. 利用循环结构、getchar()函数 输入验证密码(3分)
  3. 判断并统计输入的密码各组成部分个数(4分) 核心
  4. 如长度不符合要求给出提示信息(1分)
  5. 根据字母、数字、特殊字符、空格个数验证密码等级(3分) 核心
  6. 代码中需要添加至少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位顾客满意度进行相关运算

        评分要求 :

  1. 正确定义一维数组 (3分)
  2. 循环输入6位顾客的满意度值(5分) 核心
  3. 将 6位用户的满意度按由小到大的顺序排序输出(5分) 核心
  4. 统计满意度个数,计算百分比并输出 (90分为合格) (4分) 核心
  5. 判断如果百分比值低于90%则显示信息“服务质量有待改进”,否则提示“保持现有服务质量水平” (3分)
  6. 代码关键处添加不少于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倍数中的最大值、最小值

评分要求

  1. 正确定义一维数组(2分)
  2. 提示并输入数组长度(2分)
  3. 循环输入数组元素的值(5分) 核心
  4. 循环判断并输出数组元素中是3倍数的元素(4分) 核心
  5. 循环查找数组元素中是3倍数的最小值,最大值并输出结果(4分) 核心
  6. 代码中添加不少于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分)

        题目描述:输入操作数及运算符完成数值的加、减、乘、除运算

评分要求

  1. 定义接收操作数及运算符的变量,名称要符合规范(2分)
  2. 提示并输入第一个操作数(2分)
  3. 提示并输入运算符[加减乘除用字母代表](2分)
  4. 提示并输入第二个操作数(2分)
  5. 采用多分支选择结构switch对输入的操作数进行判断,输入大小写字母都可以调用
  6. 对应的运算(3分)  核心
  7. 正常计算两数相加并输出结果(2分)核心
  8. 正常计算两数相减并输出结果(2分)核心
  9. 正常计算两数相乘并输出结果(2分)核心
  10. 正常计算两数相除并输出结果(2分)核心
  11. 如分母为0则输出提示信息“分母不能为零!”(2分)
  12. 核心语句需添加不少于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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值