1011 A+B 和 C
注意数的范围即可
#include <stdio.h>
int main()
{
int t, num = 1;
long long a, b, c;
scanf("%d", &t);
while (t-->0) {
scanf("%lld%lld%lld", &a, &b, &c);
printf("Case #%d: %s\n", num++, a + b > c ? "true" : "false");
}
return 0;
}
1012 数字分类
思路捋清楚即可,想不来就把每种情况列下来
#include<stdio.h>
int main()
{
int n, curr;
int a1 = 0;
int a2 = 0, signA2 = 0, sign = 0; //a2 可能为0 所以不能作为是否存在的标准
int a3 = 0;
float a4 = 0;
int countA4 = 0;
int a5 = 0;
scanf("%d", &n);
while (n-->0) {
scanf("%d", &curr);
/*----A1---- */
if (curr % 10 == 0) a1 += curr;
/*----A2---- */
if (curr % 5 == 1) {
a2 = signA2 ? a2 - curr : a2 + curr;
signA2 = !signA2;
sign = 1;
}
/*----A3---- */
if (curr % 5 == 2) a3++;
/*----A4---- */
if (curr % 5 == 3) {
a4 += curr;
countA4++;
}
/*----A5---- */
if (curr % 5 == 4 && curr > a5) a5 = curr;
}
if (a1 == 0)
printf("N ");
else
printf("%d ", a1);
if (sign == 0)
printf("N ");
else
printf("%d ", a2);
if (a3 == 0)
printf("N ");
else
printf("%d ", a3);
if (countA4 == 0)
printf("N ");
else
printf("%.1lf ", a4 / countA4);
if (a5 == 0)
printf("N\n");
else
printf("%d\n", a5);
return 0;
}
1013 数素数
筛法求素数
#include<stdio.h>
#include<string.h>
#define MAX (int)1e6
int primeList[MAX];
int newPList[10005];
void init_primeList()
{
memset(primeList, 1, sizeof(primeList));
primeList[0] = primeList[1] = 0;
for (int i = 2; i < MAX; i++) {
if (primeList[i] == 0) continue;
for (int j = 2 * i; j < MAX; j += i)
primeList[j] = 0;
}
}
void tranIndex()
{
int index = 1;
for (int i = 2; i < MAX && index < 10005; i++)
if (primeList[i])
newPList[index++] = i;
}
int main()
{
int m, n;
scanf("%d%d", &m, &n);
init_primeList();
tranIndex();
int sign = 0;
for (int i = m; i <= n; i++) {
sign++;
if (sign % 10 == 1)
printf("%d", newPList[i]);
else if (sign % 10 == 0)
printf(" %d\n", newPList[i]);
else
printf(" %d", newPList[i]);
}
return 0;
}
1014 福尔摩斯的约会
要细心!要细心!要细心!
这个题错误的次数很多1
#include<stdio.h>
#include<string.h>
#define MAX 65
int main()
{
char s[][5] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
char s1[MAX], s2[MAX], s3[MAX], s4[MAX];
int day, hh, mm = 0, sign = 0;
scanf("%s%s%s%s", s1, s2, s3, s4);
for (int i = 0; s1[i] != 0 && s2[i] != 0; i++) {
if (sign == 0 && s1[i] == s2[i] && (s1[i] >= 'A' && s1[i] <= 'G')) {
day = s1[i] - 'A';
printf("%s ", s[day]);
sign = 1;
i++;
}
if (sign && s1[i] == s2[i]) {
if (s1[i] >= 'A' && s1[i] <= 'N') {
hh = 10 + s1[i] - 'A';
printf("%d", hh);
break;
}
if (s1[i] >= '0' && s1[i] <= '9') {
hh = s1[i] - '0';
printf("%02d", hh);
break;
}
}
}
for (int i = 0; s3[i] != 0 && s4[i] != 0; i++) {
if (s3[i] == s4[i] && ((s3[i] >= 'a' && s3[i] <= 'z') ||
(s3[i] >= 'A' && s3[i] <='Z')))
break;
mm++;
}
printf(":%02d\n", mm);
return 0;
}
1015 德才论
将每种情况列出来,利用qsort排序即可。
/*
* input: N L H
准考证号 德分 才分
* 分类: 得分 D 才分 C
* 组内总分排序 当某类考生中有多人总分相同时,按其德分降序排列;
* 若德分也并列,则按准考证号的升序输出。
* 第一类: D,C >= H
* 第二类: D >= H, H > C >= L
* 第三类: L <= D,C <= H 且 D >= C
* 第四类: L <= D,C <= H 且 D < C
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX (int)1e5+5
typedef struct {
char id[10];
int ds;
int cs;
}InfoScore;
InfoScore first[MAX], secode[MAX], third[MAX], forth[MAX];
int first_num, secode_num, third_num, forth_num;
void copy(InfoScore *a, InfoScore b)
{
strcpy(a->id, b.id);
a->ds = b.ds;
a->cs = b.cs;
}
int cmp(const void *a, const void *b)
{
InfoScore *ai = (InfoScore *)a;
InfoScore *bi = (InfoScore *)b;
if ((ai->ds + ai->cs) != (bi->ds + bi->cs))
return (bi->ds + bi->cs) - (ai->ds + ai->cs) ;
else if (ai->ds != bi->ds)
return bi->ds - ai->ds;
else
return atoi(ai->id) - atoi(bi->id);
}
void print(InfoScore *a, int len)
{
for (int i = 0; i < len; i++)
printf("%s %d %d\n", a[i].id, a[i].ds, a[i].cs);
}
int main()
{
int n, l, h, sum = 0;
InfoScore tmp;
scanf("%d%d%d", &n, &l, &h);
while (n-->0) {
scanf("%s%d%d", tmp.id, &tmp.ds, &tmp.cs);
sum++;
if (tmp.ds >= h && tmp.cs >= h) {
copy(&first[first_num], tmp);
first_num++;
} else if (tmp.ds >= h && tmp.cs >= l) {
copy(&secode[secode_num], tmp);
secode_num++;
} else if (tmp.ds >= l && tmp.cs >= l && tmp.ds >= tmp.cs) {
copy(&third[third_num], tmp);
third_num++;
} else if (tmp.ds >= l && tmp.cs >= l) {
copy(&forth[forth_num], tmp);
forth_num++;
} else
sum--;
}
qsort(first, first_num, sizeof(InfoScore), cmp);
qsort(secode, secode_num, sizeof(InfoScore), cmp);
qsort(third, third_num, sizeof(InfoScore), cmp);
qsort(forth, forth_num, sizeof(InfoScore), cmp);
printf("%d\n", sum);
print(first, first_num);
print(secode, secode_num);
print(third, third_num);
print(forth, forth_num);
return 0;
}