算法笔记刷题(100000572-100000574)
100000572
A
注意cin.getline
能输入换行
#include <stdio.h>
#include <iostream>
using namespace std;
struct person {
char name[20];
int count;
}leader[3] = { "Li", 0, "Zhang", 0, "Fun", 0 };
int main()
{
int n,i;
char name[10];
scanf("%d\n", &n);
for (i = 0; i < n; ++i) {
cin.getline(name, 10);
if (name[0] == 'L') {
leader[0].count += 1;
}
else if (name[0] == 'Z') {
leader[1].count += 1;
}
else if (name[0] == 'F') {
leader[2].count += 1;
}
}
for (i = 0; i < 3; ++i) {
printf("%s:%d\n", leader[i].name, leader[i].count);
}
return 0;
}
B
使用scanf_s
是scanf
的安全版本,当输入数组、字符和数组时需要第三个参数表示缓冲区的大小
字符串后加n,表示最多读取n-1个字符,因为最后要放\0
。
#include <stdio.h>
#include <iostream>
using namespace std;
struct student {
int num;
char name[20];
char sex;
int age;
}*stu;
int main()
{
int n;
scanf("%d", &n);
stu = (student*)malloc(20 * sizeof(student));
for (int i = 0; i < n; ++i) {
scanf("%d %s %c %d", &stu[i].num, stu[i].name, &stu[i].sex, &stu[i].age);
}
for (int i = 0; i < n; ++i) {
printf("%d %s %c %d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age);
}
return 0;
}
C
union共用一个内存首地址
#include <stdio.h>
#include <iostream>
using namespace std;
struct {
int num;
char name[10];
char sex;
char job;
union {
int class1;
char position[10];
}category;
}school[100];
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
scanf("%d %s %c %c", &school[i].num, school[i].name, &school[i].sex, &school[i].job);
if (school[i].job == 's') {
scanf("%d", &school[i].category.class1);
}
else if(school[i].job == 't') {
scanf("%s", &school[i].category.position);
}
}
for (int i = 0; i < n; ++i) {
printf("%d %s %c %c ", school[i].num, school[i].name, school[i].sex, school[i].job);
if (school[i].job == 's') {
printf("%d\n", school[i].category.class1);
}
else if(school[i].job == 't'){
printf("%s\n", school[i].category.position);
}
}
return 0;
}
D
#include <stdio.h>
#include <iostream>
using namespace std;
struct {
int num;
char name[20];
int a, b, c;
}stu[5];
void input()
{
for(int i=0;i<5;i++)
scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
}
void print()
{
for(int i=0;i<5;i++)
printf("%d %s %d %d %d\n",stu[i].num,stu[i].name,stu[i].a,stu[i].b,stu[i].c);
int main()
{
input();
print();
return 0;
}
E
#include <stdio.h>
#include <iostream>
using namespace std;
struct {
int num;
char name[20];
int a, b, c;
}stu[10];
int main()
{
double max=0.0,j,suma=0,sumb=0,sumc=0;
int i,k=0;
for (i = 0; i < 10; ++i) {
scanf("%d %s %d %d %d", &stu[i].num, stu[i].name, &stu[i].a, &stu[i].b, &stu[i].c);
}
for (i = 0; i < 10; ++i) {
if ((j=double(stu[i].a + stu[i].b + stu[i].c) / 3) > max) {
max = j;
k = i;
}
suma += stu[i].a;
sumb += stu[i].b;
sumc += stu[i].c;
}
printf("%.2f %.2f %.2f\n", suma / 10,sumb/10,sumc/10);
printf("%d %s %d %d %d\n", stu[k].num, stu[k].name, stu[k].a, stu[k].b, stu[k].c);
return 0;
}
100000574
A
#include <stdio.h>
int main()
{
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {
printf("%d\n", a + b);
}
return 0;
}
B
#include <stdio.h>
int main()
{
int a, b,n;
scanf("%d", &n);
while (n--) {
scanf("%d %d", &a,&b);
printf("%d\n", a + b);
}
return 0;
}
C
#include <stdio.h>
int main()
{
int a, b;
while (true) {
scanf("%d %d", &a,&b);
if (a == 0 && b == 0) {
break;
}
printf("%d\n", a + b);
}
return 0;
}
D
#include <stdio.h>
int main()
{
int sum=0,n,i,num;
while (true) {
sum = 0;
scanf("%d", &n);
if (n==0) {
break;
}
for (i = 0; i < n; ++i) {
scanf("%d", &num);
sum += num;
}
printf("%d\n",sum);
}
return 0;
}
E
#include <stdio.h>
int main()
{
int sum=0,n,i,num,sum_n;
scanf("%d", &sum_n);
while (sum_n--) {
sum = 0;
scanf("%d", &n);
for (i = 0; i < n; ++i) {
scanf("%d", &num);
sum += num;
}
printf("%d\n",sum);
}
return 0;
}
F
#include <stdio.h>
int main()
{
int sum=0,n,i,num;
while ((scanf("%d", &n))!=EOF) {
sum = 0;
for (i = 0; i < n; ++i) {
scanf("%d", &num);
sum += num;
}
printf("%d\n",sum);
}
return 0;
}
G
#include <stdio.h>
int main()
{
int a, b;
while ((scanf("%d %d", &a, &b))!=EOF) {
printf("%d\n\n", a + b);
}
return 0;
}
H
#include <stdio.h>
int main()
{
int sum = 0, n, i, num,sum_n;
scanf("%d", &sum_n);
while (sum_n--) {
sum = 0;
scanf("%d", &n);
for (i = 0; i < n; ++i) {
scanf("%d", &num);
sum += num;
}
printf("%d\n\n", sum);
}
return 0;
}