从坐牢到入门的程序设计(14)
开始时间2023-07-12 11:53:19
结束时间2023-07-12 14:23:43
前言:我把那条路又走了一遍。
L1-071 前世档案
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的一组二进制字符串,将其转换为十进制数并输出。
三、程序设计思路及结构说明
程序首先读取两个整数n和m,然后使用for循环m次。在每次循环中,程序读取一个长度为n的二进制字符串s。
接下来,程序使用一个内层for循环,从字符串的最后一个字符开始遍历。如果当前字符为'n',则将sum增加2的nb次方,然后将nb乘以2。
最后,程序使用printf函数输出每个转换后的十进制数sum。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; int i=0,j=0; for(i=0;i<m;i++) { string s; cin>>s; int sum=1,nb=1; for(j=n-1;j>=0;j--) { if(s[j]=='n') { sum+=nb; } nb*=2; } printf("%d\n",sum); } return 0; }
五、题目评分
L1-072 刮刮彩票
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的二维数组和选择,计算并输出对应的金额。
三、程序设计思路及结构说明
程序首先定义了一些变量,包括sum、ssum和choice。然后使用两个嵌套的for循环读取一个3x3的二维数组a,并累加求得sum。 接下来,程序计算ssum(45减去sum),并再次使用两个嵌套的for循环,将数组a中的0替换为ssum。 然后,程序使用一个for循环,读取三组整数n和m,并输出数组a中索引为(n, m)的值。 继续读取choice,然后使用switch语句根据choice的值计算sum。根据sum的值,程序从money数组中找到对应的金额并输出。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main(){ int sum=0,ssum=45,choice; int a[4][4]; for(int i=1;i<4;i++){ for(int j=1;j<4;j++){ cin>>a[i][j]; sum+=a[i][j]; } } ssum=ssum-sum; for(int i=1;i<4;i++){ for(int j=1;j<4;j++){ if(a[i][j]==0) a[i][j]=ssum; } } for(int i=1;i<=3;i++){ int n,m; cin>>n>>m; cout<<a[n][m]<<endl; } cin>>choice; sum=0; switch(choice){ case 1:sum=a[1][1]+a[1][2]+a[1][3];break; case 2:sum=a[2][1]+a[2][2]+a[2][3];break; case 3:sum=a[3][1]+a[3][2]+a[3][3];break; case 4:sum=a[1][1]+a[2][1]+a[3][1];break; case 5:sum=a[1][2]+a[2][2]+a[3][2];break; case 6:sum=a[1][3]+a[2][3]+a[3][3];break; case 7:sum=a[1][1]+a[2][2]+a[3][3];break; case 8:sum=a[1][3]+a[2][2]+a[3][1];break; } int money[25]={0,0,0,0,0,0,10000,36,720,360,80,252,108,72,54,180,72,180,119,36,306,1080,144,1800,3600}; cout<<money[sum]<<endl; }
五、题目评分
L1-073 人与神
一、题目编号及题目说明
二、程序功能测试及说明
它会输出一句名言:"To iterate is human, to recurse divine."(迭代是人类的本能,递归是神圣的)。
三、程序设计思路及结构说明
程序使用了printf
函数将字符串打印到标准输出,并在结尾处使用return 0
表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { printf("To iterate is human, to recurse divine.\n"); return 0; }
五、题目评分
L1-074 两小时学完C语言
一、题目编号及题目说明
二、程序功能测试及说明
它会从标准输入读取三个整数a、b和c。然后,它计算并输出sum=a-b*c
的值。
三、程序设计思路及结构说明
程序首先使用cin
语句将输入的三个整数存储在变量a、b和c中。然后,它计算sum=a-b*c
的结果,并使用printf
函数将结果输出到标准输出。最后,程序使用return 0
表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int a,b,c; cin>>a>>b>>c; int sum=a-b*c; printf("%d\n",sum); return 0; }
五、题目评分
L1-075 强迫症
一、题目编号及题目说明
二、程序功能测试及说明
用于根据输入的字符串s判断日期格式并输出标准的年月表示。
三、程序设计思路及结构说明
程序首先使用cin
语句读取字符串s,并使用s.length()
函数获取字符串的长度l。
接下来,程序定义了一些变量,包括y1、y2、year、m1、m2和mon。然后,根据字符串的长度进行条件判断。
如果字符串长度为4(假设为yyMM格式),则根据字符串中的每个字符计算年份和月份。将字符转换为数字,通过简单的数学运算得到年份的值。若年份小于22,则将其视为2000年之后的年份,否则视为1900年之后的年份。然后,将字符串中的第3和第4个字符作为月份,并使用printf
函数输出标准格式的年月。
如果字符串长度不是4(假设为MMdd格式),则直接使用printf
函数输出原始格式的年月。
最后,由于前面的注释指示以及测试代码已被注释掉,所以它们不会影响程序的运行。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; int l=s.length(); int y1,y2,year,m1,m2,mon; //printf("%d\n",l);测试l if(l==4) { y1=s[0]-'0'; y2=s[1]-'0'; year=y1*10+y2; if(year<22) { year=2000+year; } else{ year+=1900; } m1=s[2]-'0'; m2=s[3]-'0'; mon=m1*10+m2; printf("%d-%c%c",year,s[2],s[3]); } else{ printf("%c%c%c%c-%c%c",s[0],s[1],s[2],s[3],s[4],s[5]); } //printf("%d\n",year);测试年 }
五、题目评分
L1-076 降价提醒机器人
一、题目编号及题目说明
二、程序功能测试及说明
用于判断一组数字中是否有小于给定值b的数字,并输出小于b的数字以及标志信息。
三、程序设计思路及结构说明
程序首先使用cin
语句读取两个浮点数a和b。然后,定义了一些变量,包括i、c和一个循环变量i的初始值为0。
接下来,程序使用for
循环迭代a次,每次迭代都会使用cin
语句读取一个浮点数c。然后,使用条件判断语句if
判断c是否小于给定值b。如果满足条件,则使用printf
函数输出"On Sale! "以及c的值,并保留一位小数。
最后,程序使用return 0
表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { float a,b; cin>>a>>b; float i=0,c; for(i=0;i<a;i++) { cin>>c; if(c<b) { printf("On Sale! %.1f\n",c); } } return 0; }
五、题目评分
L1-077 大笨钟的心情
一、题目编号及题目说明
二、程序功能测试及说明
用于判断给定的一组数据中,是否满足一定条件,并输出相应的结果。
三、程序设计思路及结构说明
程序首先定义了一些变量,包括i、a(一个包含24个元素的整型数组)以及一个循环变量i的初始值为0。
接下来,程序使用for
循环迭代24次,每次迭代都使用cin
语句读取一个整数,并将其存储在数组a中。
然后,程序使用另一个for
循环迭代1000000次,每次迭代都使用cin
语句读取一个整数m,并进行一系列条件判断操作。
如果m小于0或大于23,则使用break
语句退出循环。
否则,程序根据数组a中对应索引位置m的值进行条件判断。如果a[m]大于50,则使用printf
函数输出"a[m] Yes",其中a[m]代表数组a中索引位置m的值。
如果a[m]不大于50,则使用printf
函数输出"a[m] No"。
最后,程序使用return 0
表示程序正常结束。
注意:m>23为非合法,若写>24第二测试点会运行超时。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int i=0; int a[24]={0}; for(i=0;i<24;i++) { cin>>a[i]; } for(i=0;i<1000000;i++) { int m; cin>>m; if(m<0||m>23) { break; } if(a[m]>50) { printf("%d Yes\n",a[m]); } else{ printf("%d No\n",a[m]); } } return 0; }
五、题目评分
L1-078 吉老师的回归
一、题目编号及题目说明
二、程序功能测试及说明
用于判断一个字符串中是否包含特定的子串,并且统计满足条件的字符串个数。
三、程序设计思路及结构说明
程序首先定义了一些变量,包括n、m、cnt(分别代表整型变量、整型变量、整型变量),并进行初始化。
接下来,程序使用cin
语句分别读取两个整数n和m,然后使用getchar()
函数读取换行符。
然后,程序使用for
循环迭代n次,每次迭代都会使用getline(cin, s)
语句读取一行字符串,并将其存储在变量s中。
在循环内部,程序使用if
语句判断字符串s中是否同时不包含"qiandao"和"easy"两个子串。如果满足条件,则对变量cnt进行累加,并使用if
语句判断cnt是否等于m+1。如果满足条件,则输出字符串s。
最后,程序使用if
语句判断cnt是否小于等于m。如果满足条件,则输出"Wo AK le"。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int n,m; int cnt;//统计做过的不简单的题个数 int main() { cin>>n>>m; getchar(); for(int i=0; i<n; i++) { string s; getline(cin,s); if(s.find("qiandao")==s.npos&&s.find("easy")==s.npos) //判断是否含有“easy"与"qiandao" { cnt++; if(cnt==m+1)//如果吉老师做到了已做过的题的下一个 { cout<<s<<endl;//这是吉老师正在做的题 } } } if(cnt<=m)//在这个范围内就AK; cout<<"Wo AK le\n"; return 0; }