代码练习1

  • 题目一:(25分)
  1. 题目描述输入终值,输出所有能被7整除的数值及其和
  2. 评分要求
      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 n, i, j=0, sum=0;
        	char a[100];
        	printf("输入一个数");
        	scanf("%d", &n);             //输入的数为终值n
        	for(i=1; i<n+1; i++){ 		 //由1开始,否则0除以7余数也是0
        		if(i%7==0){ 			 //整除7
        			a[j]=i;
        			j++;                 //j为能整除7的数的计数器
        		}
        	}
        	for(i=1; i<j+1; i++){
        		printf("%4d", a[i-1]);   
        		if(i%5==0){              //输出数组,每5个数换行
        			printf("\n");
        		}
        	}
        	for(i=0; i<j; i++){ 		 //遍历符合要求的j个数,累加
        		sum+=a[i];
        	}
        	printf("\n%d以内能被7整除的数和为%d\n", n, sum);
        
        	return 0;
        }

  • 题目二: 20分)
  1. 题目描述:  注册账号时需输入6位密码,根据密码组成验证其安全等级
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int ch, n=0, g=0, i, zm=0, sz=0, kg=0, qt=0;
	printf("请输入六位密码:");	
	char a[100];
	do{
		ch=getchar();  				//用getchar逐个读取输入的六位密码,包括空格
		a[n]=ch;
		putchar(a[n]);              //putchar逐个输出查看
		n++;
	}while(ch!='\n'); 				//读取到回车结束
	
	if(n!=7){ 						//密码包括回车为7位
		printf("%d密码长度不符合要求\n", n); 	//密码长度不是六位报错
	}else{
		printf("输入的六位密码中含有");
		for(i=0; i<n; i++){
			if(zm==0){ 			//字母计数器,若已有字母判定则跳过,防止重复
				if((a[i]>=65 && a[i]<=90) || (a[i]>=97 && a[i]<=122)){
					printf("字母 "); //符合区间,输出字母
					g++; 		//密码强度+1
					zm++; 		//字母计数器+1,下次会跳过
				}
			}
			if(sz==0){ 			//数字计数器,防止重复
				if(a[i]>=48 && a[i]<=57){
					printf("数字 ");  //符合区间,输出数字
					g++; 		//密码强度+1
					sz++; 		//数字计数器+1
				}
			}
			if(kg==0){ 			//空格计数器
				if(a[i]==32){
					printf("空格 ");
					g++;
					kg++;
				}
			}
			if(qt==0){ 			//其他计数器
				if((a[i]<65 || a[i]>90)){
					if(a[i]<97 || a[i]>122){
						if(a[i]<48 || a[i]>57){
							if(a[i]!=32){
								printf("及其他字符 ");
								g++;
								qt++;
								}
							}
						}
					}
												
			}
		}
	}
		
	printf("等级验证为:"); 		//密码强度为1输出低, 2/3输出中,4输出高
	switch(g){
		case 1: printf("低\n"); break;
		case 2: printf("中\n"); break;
		case 3: printf("中\n"); break;
		case 4: printf("高\n"); break;
	}
	return 0;
}

  1.  评分要求
      1. 根据接收用户值定义变量类型,命名遵守规范(2分)
      2. 利用循环结构、getchar()函数 输入验证密码(3分)
      3. 判断并统计输入的密码各组成部分个数(4分) 核心
      4. 如长度不符合要求给出提示信息(1分)
      5. 根据字母、数字、特殊字符、空格个数验证密码等级(3分) 核心
      6. 代码中需要添加至少5行关键注释描述实现思路(3分)
  • 题目 :(30分)
  1. 题目描述  神州租车公司为提升服务质量近期展开满意度调查活动,请输入近期租车6位顾客满意度进行相关运算
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i, n=6, j, t, min=0, g=0;
	float k;
	int a[100], b[100];
	for(i=0; i<n; i++){  			//循环输入六位顾客的满意度,存入a[i]
		printf("请输入第%d位顾客的满意度:", i+1);
		scanf("%d", &a[i]);
	}
	                                //换位,将满意度由大到小排列	
	for(i=0; i<n-1; i++){
		min = i;
		for(j=i+1; j<n; j++){
			if (a[min]>a[j]){
				min = j;
			}
			if(i != min){
				t=a[i], a[i]=a[min], a[min]=t;
			}
		}
	}

	for(i=0; i<n; i++){ 	//判定满意度符合的个数
		printf("%d ", a[i]);
		if(a[i]>=90){
			g++;
		}
	}
	k=g*100.0/n; 		//计算符合的百分比
	printf("\n满意度为%.2f%%\n", k);
	if(k>=90){         //判定满意度是否符合要求,并输出对应反馈
		printf("保持现有服务质量\n");
	}else{
		printf("服务质量需要提高\n");
	}
	return 0;
}
  1. 评分要求 :
      1.  正确定义一维数组 (3分)
      2.  循环输入6位顾客的满意度值(5分) 核心
      3.  将 6位用户的满意度按由小到大的顺序排序输出(5分) 核心
      4.  统计满意度个数,计算百分比并输出 (90分为合格) (4分) 核心
      5.  判断如果百分比值低于90%则显示信息“服务质量有待改进”,否则提示“保持现

有服务质量水平” (3分)

      1. 代码关键处添加不少于5行的规范注释(5分)
  • 题目 :(25分)
  1. 题目描述:  输入一批数,输出是3倍数的数值,计算3倍数中的最大值、最小值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i, n, j, t, min=0, max=0, g=0;
	
	int a[100];
	printf("请输入数组长度:");
	scanf("%d", &n);
	printf("请依次输入数组元素值:");
	for(i=0; i<n; i++){
		scanf("%d", &t);
		if(t%3==0){ 		//判定是否为3的倍数
			a[g]=t;
			g++; 			//g为计数器,统计符合的数的个数
		}
	}
	min=a[0];              //假定第一个数为最大和最小数
	max=a[0];
	printf("数组中是三倍数的元素包含:");
	for(i=0; i<n; i++){     	//跟所有元素依次比较    
		printf("%d", a[i]);
			if(min>a[i]){
				min=a[i];        //当前最小数不是最小,就用最小覆盖
		}
			if(max<a[i]){        //当前最大数不是最大,就用最大覆盖
				max=a[i];
			}
	}
	printf("数组元素中3的最小倍数是%d最大倍数是%d", min, max);

	
	return 0;
}
  1. 评分要求
      1. 正确定义一维数组(2分)
      2. 提示并输入数组长度(2分)
      3. 循环输入数组元素的值(5分) 核心
      4. 循环判断并输出数组元素中是3倍数的元素(4分) 核心
      5. 循环查找数组元素中是3倍数的最小值,最大值并输出结果(4分) 核心
      6. 代码中添加不少于5行的关键注释描述程序实现思路(4分)
  • 题目五:(30分)
  1. 题目描述输入操作数及运算符完成数值的加、减、乘、除运算
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char f;
	float a, b, r;
	printf("请输入第一个操作数:"); //输入第一个数
	scanf("%f", &a);
	printf("请输入运算符[加一P/p 减一S/s 乘一M/m 除一D/d]:"); //输入运算符
	scanf("%s", &f);
	printf("请输入第二个操作数:"); //输入第二个数
	scanf("%f", &b);
	printf("运算结果\n");
	if(b==0){
		printf("分母不能为零!"); 		//进行分母是否为零的错误判定
	}else{
			switch(f){ 	//根据输入的运算符判定符合的case,应该有重复度更小的写法
			case 'p': case 'P': r=a+b, printf("%.2f+%.2f=%.2f", a, b, r); break;
			case 's': case 'S': r=a-b, printf("%.2f-%.2f=%.2f", a, b, r); break;
			case 'm': case 'M': r=a*b, printf("%.2f*%.2f=%.2f", a, b, r); break;
			case 'd': case 'D': r=a/b, printf("%.2f/%.2f=%.2f", a, b, r); break;
			}
		}
	
	return 0;
}

          

  1. 评分要求
  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分)

Private Function setdata(num As Integer) As String '数字转换 Select Case num Case 0 setdata = "零" Case 1 setdata = "壹" Case 2 setdata = "贰" Case 3 setdata = "叁" Case 4 setdata = "肆" Case 5 setdata = "伍" Case 6 setdata = "陆" Case 7 setdata = "柒" Case 8 setdata = "捌" Case 9 setdata = "玖" End Select End Function Private Function chang(aaa As Integer) As String '位数转换 Select Case aaa Case 1 chang = "" Case 2 chang = "十" Case 3 chang = "百" Case 4 chang = "千" Case 5 chang = "万" Case 6 chang = "十" Case 7 chang = "百" Case 8 chang = "千" Case 9 chang = "亿" Case 10 chang = "十" End Select End Function Private Sub Form_Activate() '设定文本长度 Text2.MaxLength = 10 Text2.SetFocus End Sub Private Sub Text2_Change() '小写转大写 Dim i As Integer Dim j As Integer Dim myint As Integer Dim myint1 As Integer Dim mydoub As Double Dim mystr As String Dim mystr1 As String Dim mystr2 As String Dim mystr3 As String Dim mystr4 As String Dim money As Long Dim money1 As Integer Dim money2 As Long mystr = Text2.Text myint = InStr(mystr, ".") If myint = 0 Then mystr = Text2.Text Else mystr3 = Right(Text2.Text, Len(Text2.Text) - myint) If mystr3 <> "" Then '转换小数位 mystr4 = Left(mystr3, 1) mystr3 = Right(mystr3, Len(mystr3) - 1) If mystr4 <> "0" Then mystr2 = mystr2 + setdata(Val(mystr4)) + "角" End If If mystr3 <> "" Then mystr4 = Left(mystr3, 1) mystr2 = mystr2 + setdata(Val(mystr4)) + "分" End If End If mystr = Left(Text2.Text, myint - 1) End If j = Len(mystr) For i = 1 To Len(mystr) '转换整数位 money2 = Left(mystr, i) money1 = Right(money2, 1) If money1 = 0 Then If j = 5 Then If Right(mystr1, 1) <> "万" Then mystr1 = mystr1 & "万" Else If Right(mystr1, 1) <> "零" And Right(money, j) > 0 Then mystr1 = mystr1 & "零" End If Else mystr1 = mystr1 & setdata(money1) + chang(j) End If j = j - 1 Next i Text1.Text = mystr1 & "元" & mystr2 '显示大写 End Sub Private Sub Command1_Click() End End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值