从坐牢到入门的程序设计(7)
开始时间2023-06-26 21:26:45
结束时间2023-06-26 22:49:23
前言:哈哈哈哈,呜呼!今天的分享看起来还不错,不知道大家觉得怎么样,嘿嘿。
L1-031 到底是不是太胖了
一、题目编号及题目说明
二、程序功能测试及说明
给出待检测人数,并判断对应身高体重下该人的身体情况。
三、程序设计思路及结构说明
首先以n吸收待检测人数,循环内部吸收身高与体重,计算标准体重值并进行比较,ifelse结构三次比较最后输出。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int n, h, w; double b; int main() { cin >> n; for(int i = 0; i < n; i++) { cin >> h >> w; b = (h - 100) * 0.9; if(fabs(w - b * 2) < b * 2 * 0.1) cout << "You are wan mei!" << endl; else if(w >= b * 2 * 1.05)// 扩大 cout << "You are tai pang le!" << endl; else cout << "You are tai shou le!" << endl; } return 0; }
五、题目评分
L1-032 Left-pad
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的整数n、字符p和字符串s,进行一系列操作来输出符合条件的字符串。
三、程序设计思路及结构说明
- 获取用户输入的整数n和字符p。
- 使用
cin.ignore()
函数来避免后续的getline
函数读取到空串中。 - 使用
getline(cin, s)
函数来读取一行输入,并将其保存在字符串s中。 - 获取字符串s的长度l。
- 如果字符串s的长度大于等于n,则进入第一个分支:
- 遍历字符串s,从索引(l-n)到(l-1),输出对应的字符。
- 如果字符串s的长度小于n,则进入第二个分支:
- 使用循环输出n-l个字符p。
- 输出字符串s。
- 程序结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; char p; cin>>n>>p; cin.ignore();//避免getline函数读取到空串中 string s; getline(cin,s); int l=s.length(); //printf("%d",l); int i=0; if(l>=n) { //printf("1");测试是否进入选择结构 for(i=l-n;i<l;i++) { //printf("1");测试是否进入循环 printf("%c",s[i]); } } else { for(i=0;i<(n-l);i++) { printf("%c",p); } cout<<s<<endl; } }
五、题目评分
L1-033 出生年
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的出生年份y和目标年份中不同数字的个数n,找到满足条件的年份,并输出该年份和对应的年龄。
三、程序设计思路及结构说明
- 获取用户输入的出生年份y和目标年份中不同数字的个数n。
- 定义一个变量x,将其赋值为出生年份y,用于记录年龄。
- 进入一个无限循环,每次循环都会增加年份y的值并进行以下操作:
- 将年份y拆分为四个位数,并存储在数组a中。
- 创建一个大小为10的数组num,并初始化为0,用于记录每个数字出现的次数。
- 遍历数组a,统计每个数字出现的次数。
- 遍历数组num,统计不同数字的个数。
- 如果不同数字的个数等于目标个数n,则满足条件,输出年龄(y - x)和年份y,并跳出循环。
- 否则,增加年份y的值,进入下一轮循环。
- 程序结束。
四、程序源代码
#include <bits/stdc++.h> using namespace std; const int N = 3e3 + 7; int a[N]; int num[N]; int main() { int y, n; cin >> y >> n; int x = y; while(1) { int m = y; a[0] = m/1000; a[1] = m/10/10%10; a[2] = m/10%10; a[3] = m%10; int i; int t = 4; for(i = 0; i < t; i ++) num[a[i]] ++; int sum = 0; for(i = 0; i < 10; i ++) { if(num[i] >= 1) sum ++; } if(sum == n) break; for(i = 0; i < 10; i ++) num[i] = 0; y ++; } printf("%d %04d\n", y - x, y); return 0; }