从坐牢到入门的程序设计(4)
开始时间2023-06-20 19:28:32
结束时间2023-06-22 23:15:18
前言:校青协不要办活动了!
L1-017 到底有多二
一、题目编号及题目说明
二、程序功能测试及说明
给一个数并输出它的犯二程度,保留小数点后两位。
三、程序设计思路及结构说明
用字符串形式吸收这个数,定义count计算2的个数,声明标志物flag和nb,当首元素为-flag置为1.5,当尾元素为2的倍数nb置为2,用循环统计2出现的次数,并按照规范输出,
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { string s; cin >> s; int i = 0, count = 0; double flag=1.0,nb=1.0; int l = s.length(); if(s[0] == '-') { flag =flag+ 0.5; } //printf("%f",flag); for(; i<l; i++) { if(s[i] == '2') count++; } if((s[l-1] - '0') % 2 == 0) { nb += 1; } //printf("%c",s[l]); double lv; if(flag==1) { lv = (double)count / (double)l * flag*nb ; } else lv = (double)count / (double)(l-1) *nb*flag; //printf("%d %d %f %f",count,l,flag,nb); printf("%.2f%%\n", lv * 100); return 0; }
五、题目评分
L1-018 大笨钟
一、题目编号及题目说明
二、程序功能测试及说明
根据所给时间进行敲钟,午夜到中午12点不敲,12点后没过一小时敲一次,不满一小时按一小时计算。
三、程序设计思路及结构说明
用ab吸收小时和分钟,若b不为零且a在敲钟范围内敲钟次数加一,当a在12到24之间,敲钟次数为原敲钟次数加上a-12,但我们知道以整型的形式吸收时,会出现09变为9的现象。所以我们依据条件在输出语句中加上0.敲钟次数存在进行循环敲钟。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int a,b; scanf("%d:%d",&a,&b); //printf("%d %d\n",a,b);//测试输入 int sum=0; if(b!=0&&(a>=12&&a<24))sum+=1; if(a>=12&&a<24)sum=sum+a-12; if(sum==0) { if(a<10) { if(b<10) { printf("Only 0%d:0%d. Too early to Dang.",a,b); } else printf("Only 0%d:%d. Too early to Dang.",a,b); } if(a>=10&&a<=12) { if(b<10) { printf("Only %d:0%d. Too early to Dang.",a,b); } else printf("Only %d:%d. Too early to Dang.",a,b); } } for(int i=0;i<sum;i++) printf("Dang"); printf("\n"); return 0; }
五、题目评分
L1-019 谁先倒
一、题目编号及题目说明
二、程序功能测试及说明
第一行给两个数字为两人酒量,第二行给划拳次数,依据划拳次数分别给出数据,最后输出谁先倒下和另一人喝酒数量。
三、程序设计思路及结构说明
用ab吸收两人酒量,接着a3和b3代表两人的酒量拷贝一下。用n吸收次数并以此做循环,分别用a1a2b1b2吸收甲喊出数字甲划拳数字乙喊出数字乙划拳数字,当a2与b2相等continue跳出当前循环,a2==a1+b1,甲输了得喝酒进行a--操作,b2==a1+b1,乙输了得喝酒进行b--操作。当a与b有一个为0,break跳出循环。用两个if语句检测ab谁是0并按照要求输出。
四、程序源代码
#include<stdio.h> int main() { int m,n,N,i,a=0,b=0,sum; scanf("%d %d %d",&m,&n,&N); int p[N][4]; for(i=0;i<N;i++) { scanf("%d %d %d %d",&p[i][0],&p[i][1],&p[i][2],&p[i][3]); } for(i=0;i<N;i++) { sum=p[i][0]+p[i][2]; if(sum==p[i][1]&&sum!=p[i][3]) a++; else if(sum==p[i][3]&&sum!=p[i][1]) b++; if(a>m) { printf("A\n%d\n",b); break; } if(b>n) { printf("B\n%d\n",a); break; } } return 0; }