9-7 C作业

一.输入终值,输出所有能被7整除的数值及其和。

  1. 根据接收值准确定义变量类型(2分)
  2. 提示并输入终值(2分)
  3. 阅读题目确定循环要素:起始值、终值、步长(3分)
  4.  循环判断指定范围内能被7整除的数值并输出(5分) 核心
  5.  每5个换行输出(2分)
  6.  累计全部符合条件的数值和并输出(3分)
  7.  代码中添加不少于5行的关键注释描述实现思路(3分)

代码展示:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int x;
	printf("请输入终值:");
	scanf("%d",&x);
	int i=1,sum=0;//定义sum承接是三的倍数的数值的和。
	int count=0;
	printf("%d以内能被7整除的数字分别为:\n",x);
	for(i;i<=x;i++){//从1~x中寻找需要的数值。
		if(i%7==0){//如果i%7取余等于0;那这个数就是我们需要的。
	        sum += i;
		    count++;//定义count计数
		    printf("%3d ",i);//使用%3d是优化输出格式
		    if(count%5==0){//count是5的倍数就输出换行
		    printf("\n");
		    }
		}
	}
	printf("\n");
	printf("%d以内能被7整除的的数值的和为:%d\n",x,sum);
	return 0;
}

执行结果展示:

3e587e0695224521832bfe7042c64ab1.png

二.注册账号时需输入6位密码,根据密码组成验证其安全等级。

  1. 根据接收用户值定义变量类型,命名遵守规范(2分)
  2. 利用循环结构、getchar()函数 输入验证密码(3分)
  3. 判断并统计输入的密码各组成部分个数(4分) 核心
  4. 如长度不符合要求给出提示信息(1分)
  5. 根据字母、数字、特殊字符、空格个数验证密码等级(3分) 核心
  6. 代码中需要添加至少5行关键注释描述实现思路(3分)

代码展示:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[100];
	printf("请输入6位密码:");
	gets(a);//gets可以吸收空格字符。scanf不可以。所以选择使用gets。
	int i=0;
	if(strlen(a)!=6){//输入非法提示。
		printf("密码长度不符合要求\n");
		return 0;
	}//前段正常定义与输入。
	int count1=0,count2=0,count3=0;
	for(i;i<strlen(a);i++){
		if(a[i]<='9'&&a[i]>='0'){//count1>0表示输入有数字
			count1++;
		}else if((a[i]<='z'&&a[i]>='a')||(a[i]>='A'&&a[i]<='Z')){//count2>0表示输入有字母
			count2++;	
		}else{
			count3++;//count3>0表示输入有特殊符号

		}
	}
	if(count1>0&&count2>0&&count3>0){//所有的count都大于0,表示设置的密码数字字母和特殊符号都包含,强度高。
		printf("您设置的密码有字母数字和特殊符号,验证等级为:高\n");
	}else if(count1>0&&count2>0&&count3==0){//count1,count2,大于0,count3=0表示设置的密码只有数字字母,强度中。
		printf("您设置的密码有数字和字母,验证等级为:中\n");
	}else if(count1>0&&count2==0&&count3==0){//设置的密码只有数字,只有count1>。
		printf("您设置的密码是纯数字,验证等级:低\n");
	}
	return 0;
}

执行结果展示:

5e32712f64c9443d9082a4ac6658d993.png

拓展:此代码输出存在漏情况,如全是字母,全是特殊字符,或者字母加特殊字符的密码类。

实现两两组和为中级密码,字符数字特殊字符都有为高级密码,纯字符为低级密码。

代码展示:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[100];
	printf("请输入6位密码:");
	gets(a);//gets可以吸收空格字符。scanf不可以。所以选择使用gets。
	int i=0;
	if(strlen(a)!=6){//输入非法提示。
		printf("密码长度不符合要求\n");
		return 0;
	}//前段正常定义与输入。
	int count1=0,count2=0,count3=0;
	for(i;i<strlen(a);i++){
		if(a[i]<='9'&&a[i]>='0'){//count1>0表示输入有数字
			count1++;
		}else if((a[i]<='z'&&a[i]>='a')||(a[i]>='A'&&a[i]<='Z')){//count2>0表示输入有字母
			count2++;	
		}else{
			count3++;//count3>0表示输入有特殊符号

		}
	}
	if(count1>0&&count2>0&&count3>0){//所有的count都大于0,表示设置的密码数字字母和特殊符号都包含,强度高。
		printf("您设置的密码,验证等级为:高\n");
	}else if((count1>0&&count2==0&&count3==0)||(count1==0&&count2>0&&count3==0)||(count1==0&&count2==0&&count3>0)){
	//count中只有1个0,单种密码。
		printf("您设置的密码,验证等级:低\n");
		}else{//count中有两个0表示设置的密码两两组合类密码强度中。
		printf("您设置的密码,验证等级为:中\n");
	}
	return 0;
}

执行结果展示:

23100ce8313d419e875ae934ff13ad3f.png

三.神州租车公司为提升服务质量近期展开满意度调查活动,请输入近期租车6位顾客满意度进行相关运算。

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

代码展示:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a[6],i,j,count=0,sum=0;
	for(i=0;i<6;i++){
		printf("请输入%d位客户满意度评分:",i+1);	
		scanf("%d",&a[i]);
		sum += a[i];
		if(a[i]>=90){
			count++;
		}
	}
	printf("客户满意度从小到大排序为:");
	int temp;
	for(i=0;i<6;i++){
		for(j=i+1;j<6;j++){
			if(a[i]>a[j]){
				temp=a[i];a[i]=a[j];a[j]=temp;
			}
		}
	}
	for(i=0;i<6;i++){
		printf("%d ",a[i]);
	}
	printf("\n");
	float myd=(float)count/6*100;
	printf("客户满意度为:%.2f%%\n",myd);
	if(myd>=90){
		printf("服务不错哟,请继续保持!\n");
	}else{
		printf("服务有待提升!\n");
	}
	return 0;
}

执行结果展示:

四.题目描述:输入一批数,输出是3倍数的数值,计算3倍数中的最大值、最小值。

  1. 正确定义一维数组(2分)
  2. 提示并输入数组长度(2分)
  3. 循环输入数组元素的值(5分) 核心
  4. 循环判断并输出数组元素中是3倍数的元素(4分) 核心
  5. 循环查找数组元素中是3倍数的最小值,最大值并输出结果(4分) 核心
  6. 代码中添加不少于5行的关键注释描述程序实现思路(4分)

代码展示:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>//引入头文件,添加INT_MAX和INT_MIN常量确保赋值正确
int main(int argc, const char *argv[])
{
	int x,i;
	printf("请输入数组长度:");//输入需要的数组长度x。
	scanf("%d",&x);
	int a[x];
	printf("请输入一组长度为%d的数组:",x);//长度为x的数组输入。
	for(i=0;i<x;i++){
		scanf("%d",&a[i]);
	}
	printf("其中是三的倍数的数是:");//循环外输出本段文字,循环内输出符合条件的数值。
	int count=0,MAX = INT_MIN,MIN = INT_MAX;//确保赋值正确。
	for(i=0;i<x;i++){
    	if(a[i]%3==0){//能被三整除,输出该数。
			printf("%d ",a[i]);
			count++;
			if(count==1){//定义count用来表示第一个找到能被三整除的数。
				MAX=a[i];//找到第一个能被三整数的数将他假设为最大的MAX
				MIN=a[i];//找到第一个能被三整数的数将他假设为最小的MIN。
			}
			if(MAX<a[i]){//循环中后续有比MAX大的数值a[i],就替换MAX和a[i]。
				MAX = a[i];	
			}
			if(MIN>a[i]){//循环中后续有比MIN小的数值a[i],就替换MIN和a[i]。
				MIN = a[i];
			}
		}
	} 
	if(count==0){//count==0表示没有输入三的倍数的数值。同时结束程序。
	printf("数组中没有三的倍数的数。\n");
	return 0;
	}
	printf("\n三的倍数中最大的是:%d\n三的倍数中最小的是:%d\n",MAX,MIN);
	return 0;
}

执行结果展示:

04d61f88849a4bb09885c20f1748f49f.png

 五.输入操作数及运算符完成数值的加、减、乘、除运算。

  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分)

代码展示:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	float a,b;
	char c;
	printf("请输入第一个操作数:");
	scanf("%f",&a);
	printf("请输入操作符:加-P/p减-S/s乘-M/m除-D/d:");
	scanf(" %c",&c);//%前添加空格,吸收输入的垃圾字符。
	printf("请输入第二个操作数;");
	scanf("%f",&b);//前段为正常定义和输入。
	switch(c){//输入的操作符为字符变量c,对应以下8种case情况。
		case 'p':
		case 'P':
			printf("%.2f+%.2f=%.2f\n",a,b,a+b);//加法输出
			break;
		case 'S':
		case 's':
			printf("%.2f-%.2f=%.2f\n",a,b,a-b);//减法输出
			break;		
		case 'M':
		case 'm':
			printf("%.2f*%.2f=%.2f\n",a,b,a*b);//乘法输出
			break;
		case 'D':
		case 'd':
			if(b==0){//如果输入的第二个操作数为0,输出非法输入。
				printf("分母不能为0\n");
				break;
			}else{
				printf("%.2f/%.2f=%.2f\n",a,b,a/b);//除法输出
				break;
			}
        default:
            printf("操作符输入非法\n");
            break;
	}
	return 0;
}

执行结果展示:

23d538c3244e46138fc8c1746a76b615.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值