一.输入终值,输出所有能被7整除的数值及其和。
- 根据接收值准确定义变量类型(2分)
- 提示并输入终值(2分)
- 阅读题目确定循环要素:起始值、终值、步长(3分)
- 循环判断指定范围内能被7整除的数值并输出(5分) 核心
- 每5个换行输出(2分)
- 累计全部符合条件的数值和并输出(3分)
- 代码中添加不少于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; }
执行结果展示:
二.注册账号时需输入6位密码,根据密码组成验证其安全等级。
- 根据接收用户值定义变量类型,命名遵守规范(2分)
- 利用循环结构、getchar()函数 输入验证密码(3分)
- 判断并统计输入的密码各组成部分个数(4分) 核心
- 如长度不符合要求给出提示信息(1分)
- 根据字母、数字、特殊字符、空格个数验证密码等级(3分) 核心
- 代码中需要添加至少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; }
执行结果展示:
拓展:此代码输出存在漏情况,如全是字母,全是特殊字符,或者字母加特殊字符的密码类。
实现两两组和为中级密码,字符数字特殊字符都有为高级密码,纯字符为低级密码。
代码展示:
#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; }
执行结果展示:
三.神州租车公司为提升服务质量近期展开满意度调查活动,请输入近期租车6位顾客满意度进行相关运算。
- 正确定义一维数组 (3分)
- 循环输入6位顾客的满意度值(5分) 核心
- 将 6位用户的满意度按由小到大的顺序排序输出(5分) 核心
- 统计满意度个数,计算百分比并输出 (90分为合格) (4分) 核心
- 判断如果百分比值低于90%则显示信息“服务质量有待改进”,否则提示“保持现有服务质量水平” (3分)
- 代码关键处添加不少于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倍数中的最大值、最小值。
- 正确定义一维数组(2分)
- 提示并输入数组长度(2分)
- 循环输入数组元素的值(5分) 核心
- 循环判断并输出数组元素中是3倍数的元素(4分) 核心
- 循环查找数组元素中是3倍数的最小值,最大值并输出结果(4分) 核心
- 代码中添加不少于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; }
执行结果展示:
五.输入操作数及运算符完成数值的加、减、乘、除运算。
- 定义接收操作数及运算符的变量,名称要符合规范(2分)
- 提示并输入第一个操作数(2分)
- 提示并输入运算符[加减乘除用字母代表](2分)
- 提示并输入第二个操作数(2分)
- 采用多分支选择结构switch对输入的操作数进行判断,输入大小写字母都可以调用
- 对应的运算(3分) 核心
- 正常计算两数相加并输出结果(2分)核心
- 正常计算两数相减并输出结果(2分)核心
- 正常计算两数相乘并输出结果(2分)核心
- 正常计算两数相除并输出结果(2分)核心
- 如分母为0则输出提示信息“分母不能为零!”(2分)
- 核心语句需添加不少于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; }
执行结果展示: