文章目录
L1-010
L1-011. A-B
本题要求你计算A-B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A-B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A-B的结果字符串。
输入样例:
I love GPLT! It’s a fun game!
aeiou
输出样例:
I lv GPLT! It’s fn gm!
Note:
修改了很多次后得到的最终结果,老师一来我就看出了错在哪儿,然而老师题目还没理解呢我就又让他回克了实在是尴尬的很啊,为啥每次出大错自己都解决了小问题反而去问老师呢,嘤嘤嘤,继续加油吧!
#include<stdio.h>
int main()
{
char A[10001], B[10001];//长度不超过10^4,数组长度要+1
int i, j, k;
gets(A);//读取回车结束
gets(B);
for (i=0, k=0; A[i]; i++){//加不加!='\0'都没影响
int flag = 0;
for (j=0; B[j]; j++){
if (A[i]==B[j]){
flag = 1;
break;//即时跳到下一个循环减少运算时间,在大的字符串里面能减少不少
}
}
if (flag==0) A[k++] = A[i];
}
A[k] = '\0';//这一步必须添加,否则会输出错误
puts(A);
return 0;
}
L1-012
L1-013. 计算阶乘和
对于给定的正整数N,需要你计算 S = 1! + 2! + 3! + … + N!。
输入格式:
输入在一行中给出一个不超过10的正整数N。
输出格式:
在一行中输出S的值。
输入样例:
3
输出样例:
9
Note:
细节决定成败,在设计代码的时候一定要思路清晰,急急切切是一个程序猿最大的错误
#include<stdio.h>
int main()
{
int i, j, N, sum=1, t;
scanf("%d", &N);
for (i=2; i<=N; i++){
t = 1;//最容易这里犯错,第二次循环一定要将t初始化为1!!!
for (j=1; j<=i; j++){
t = t*j;
}
sum += t;
}
printf("%d", sum);
return 0;
}
L1-014
L1-015
L1-016
L1-017. 到底有多二
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字“-13142223336”是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/111.52*100%,约为81.82%。本题就请你计算一个给定整数到底有多二。
输入格式:
输入第一行给出一个不超过50位的整数N。
输出格式:
在一行中输出N犯二的程度,保留小数点后两位。
输入样例:
-13142223336
输出样例:
81.82%
Note:
思路很简单,先求出2的个数,然后分情况讨论最终输出结果
#include<stdio.h>
#include<string.h>
int main(void)
{
char N[50]; //定义不超过50位的整数
int len, i, count = 0;
double n; //n一定要是双精度
scanf("%s", N);
for (i = 0; N[i] != '\0'; i++) //统计2的个数
if (N[i] == '2') count++;
n = count*1.0/strlen(N)*1.0; //别忘记转换为浮点型
if (N[0] == '-') {
n = count*1.0/(strlen(N) - 1)*1.0; //负数位数要减一
n *= 1.5; //乘1.5倍
}
if (N[strlen(N) - 1]%2 == 0) n *= 2; //若是偶数,乘2倍
printf("%.2f%%", n*100);//百分号的转义字符%%
return 0;
}
L1-018
L1-019. 谁先倒
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。
下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。
输入格式:
输入第一行先后给出甲、乙两人的酒量(不超过100的非负整数),以空格分隔。下一行给出一个正整数N(<=100),随后N行,每行给出一轮划拳的记录,格式为:
甲喊 甲划 乙喊 乙划
其中“喊”是喊出的数字,“划”是划出的数字,均为不超过100的正整数(两只手一起划)。
输出格式:
在第一行中输出先倒下的那个人:A代表甲,B代表乙。第二行中输出没倒的那个人喝了多少杯。题目保证有一个人倒下。注意程序处理到有人倒下就终止,后面的数据不必处理。
输入样例:
1 1
6
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15
15 1 1 16
输出样例:
A
1
Note:
其实一开始就过了,但是一直卡在我数据还没输入完呢就给我输出了,然后抱着侥幸的心理直接把代码拿去测试了,然后就。。。好吧,这种题目有明显提示“后面的数据不用出来的”以及题目要求的是对应输入对应输出且不明确要求一定要输入完才能输出的题目都可以用while一边输入一边输出,是不会影响OJ系统的。
#include<stdio.h>
int main()
{
int jh, jc, yh, yc, N, num1, num2;//题目比较简单,没啥好注释的,不明白的小伙伴评论区留个言看到我第一秒就会回复的
int countA = 0, countB = 0;
scanf("%d%d", &num1, &num2);
scanf("%d", &N);
while (N--){
scanf("%d%d%d%d", &jh, &jc, &yh, &yc);
if (jc==jh+yh && yc!=jh+yh) countA ++;
if (yc==jh+yh && jc!=jh+yh) countB ++;
if (countA>num1){//甲倒
printf("A\n%d", countB);
break;//不循环了!
}
if (countB>num2){//乙倒
printf("B\n%d", countA);
break;//我也不他妈循环了!
}
}
return 0;
}
L1-020. 帅到没朋友
当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。
输入格式:
输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。
注意:
没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。
输出格式:
按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出No one is handsome。
注意:
同一个人可以被查询多次,但只输出一次。
输入样例1:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888
输出样例1:
10000 88888 23333
输入样例2:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 11111
输出样例2:
No one is handsome
Note:
问题关键点在于不需要一个数组来存储所有的朋友,只需要用一个 bool 数组来表示该 id 有没有朋友。
#include <stdio.h>
int bool[100001] = {0}; // 标志是否有朋友
int main()
{
int n, k, m, id;
scanf("%d\n", &n); // 输入朋友圈个数
while (n--) { // 循环输入 n 行
scanf("%d", &k); // 输入朋友圈里朋友人数
for (int i = 0; i < k; i++) {
scanf("%d", &id); // 输入 ID 号
if (k > 1)
bool[id] = 1; // 朋友圈人数大于1,说明有朋友,标记为1
}
}
int flag = 0; // 标志是否有没朋友的人
scanf("%d", &m); // 输入待查询人数
while (m--) {
scanf("%d", &id);
if (bool[id] == 0) { // 检查出是没有朋友的
if (flag != 0)
printf(" "); // 第一个 id 前不需要空格
printf("%05d", id);
bool[id] = 1; // 置1防止再次输出
flag = 1; // 表明后面都要空格,同时也表明存在没有朋友的人
}
}
if (flag == 0) printf("No one is handsome");
return 0;
}
一定要自己写一遍哦~~~