给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。
输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
输入样例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
输出样例:
zhao 565.00
qian 430.00
zhou 630.00
#include
struct message {
char name[11];
double a;
double b;
double c;
};
int main() {
int n;
scanf("%d", &n);
int i;
struct message x[1000];
for (i = 0; i < n; i++) {
scanf("%s %lf %lf %lf", &x[i].name, &x[i].a, &x[i].b, &x[i].c);
printf("%s %.2f\n", x[i].name, x[i].a + x[i].b - x[i].c);
}
return 0;
}
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。
输出格式:
输出在一行中给出hh:mm:ss格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
#include
int main() {
int hh, mm, ss, n;
scanf("%d:%d:%d", &hh, &mm, &ss);
scanf("%d", &n);
if (ss + n >= 60) {
ss = ss + n - 60;
mm = mm + 1;
if (mm >= 60) {
mm = mm - 60;
hh = hh + 1;
if (hh >= 24) {
hh = hh - 24;
}
}
} else {
ss = ss + n;
}
printf("%0.2d:%0.2d:%0.2d", hh, mm, ss);
return 0;
}
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。
输入格式:
输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。
输出格式:
首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。
输入样例:
5
00001 zhang 70
00002 wang 80
00003 qian 90
10001 li 100
21987 chen 60
输出样例:
80.00
zhang 00001
chen 21987
#include
struct message {
int number;
char name[11];
int grade;
};
int main() {
struct message x[11];
int n, i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %s %d", &x[i].number, &x[i].name, &x[i].grade);
}
int sum = 0;
for (i = 0; i < n; i++) {
sum = sum + x[i].grade;
}
double average = sum / n;
printf("%.2f\n", (double) average);
for (i = 0; i < n; i++) {
if ((double) x[i].grade < average) printf("%s %0.5d\n", x[i].name, x[i].number);
}
return 0;
}
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0
输出样例:
25.00, Programming in Delphi
18.50, Programming in VB
#include
struct book {
char name[31];
double price;
};
int main() {
int n;
scanf("%d", &n);
int i;
struct book x[11];
for (int i = 0; i < n; i++) {
scanf("\n");
gets(x[i].name);
scanf("%lf", &x[i].price);
}
double max = -1, min = 1000000;
for (i = 0; i < n; i++) {
if (x[i].price >= max) {
max = x[i].price;
}
if (x[i].price <= min) {
min = x[i].price;
}
}
for (i = 0; i < n; i++) {
if (x[i].price == max) {
printf("%.2f, %s\n", max, x[i].name);
}
}
for (i = 0; i < n; i++) {
if (x[i].price == min) {
printf("%.2f, %s\n", min, x[i].name);
}
}
return 0;
}
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。
输入格式:
输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。
输出格式:
在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。
输入样例:
5
00001 huanglan 78 83 75
00002 wanghai 76 80 77
00003 shenqiang 87 83 76
10001 zhangfeng 92 88 78
21987 zhangmeng 80 82 75
输出样例:
zhangfeng 10001 258
#include
struct message {
int xuehao;
char name[11];
int a;
int b;
int c;
int sum;
};
int main() {
struct message x[10];
int i;
int n;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %s %d %d %d", &x[i].xuehao, &x[i].name, &x[i].a, &x[i].b, &x[i].c);
}
for (i = 0; i < n; i++) {
x[i].sum = x[i].a + x[i].b + x[i].c;
}
int max = 0;
for (i = 0; i < n; i++) {
if (x[i].sum >= max) max = x[i].sum;
}
for (i = 0; i < n; i++) {
if (x[i].sum == max) {
printf("%s %0.5d %d", x[i].name, x[i].xuehao, x[i].sum);
}
}
return 0;
}
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入格式:
输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。
输出格式:
按照年龄从大到小输出朋友的信息,格式同输出。
输入样例:
3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
输出样例:
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678
#include
#include
struct xingxi {
char name[11];
int shengri;
char telephone[18];
};
int main() {
int i, j, n, temp;
scanf("%d", &n);
char ex[11], tel[18];
struct xingxi x[10];
for (i = 0; i < n; i++) {
scanf("%s %d %s", &x[i].name, &x[i].shengri, &x[i].telephone);
}
for (i = 0; i < n; i++) {
for (j = 1; j < n - i; j++) {
if (x[j - 1].shengri >= x[j].shengri) {
temp = x[j - 1].shengri;
x[j - 1].shengri = x[j].shengri;
x[j].shengri = temp;
strcpy(ex, x[j - 1].name);
strcpy(x[j - 1].name, x[j].name);
strcpy(x[j].name, ex);
strcpy(tel, x[j - 1].telephone);
strcpy(x[j - 1].telephone, x[j].telephone);
strcpy(x[j].telephone, tel);
}
}
}
for (i = 0; i < n; i++) printf("%s %d %s\n", x[i].name, x[i].shengri, x[i].telephone);
return 0;
}
通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。
本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。
输入格式:
输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。
在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。
输出格式:
对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。
输入样例:
3
Chris 1984/03/10 F +86181779452 13707010007
LaoLao 1967/11/30 F 057187951100 +8618618623333
QiaoLin 1980/01/01 M 84172333 10086
2 1 7
输出样例:
LaoLao 057187951100 +8618618623333 F 1967/11/30
Not Found
#include
struct message {
char name[11];
char born[11];
char sex;
char guhua[17];
char shouji[17];
};
int main() {
int i, n;
scanf("%d", &n);
struct message x[11];
for (i = 0; i < n; i++) {
scanf("%s %s %c %s %s", &x[i].name, &x[i].born, &x[i].sex, &x[i].guhua, &x[i].shouji);
}
int y, a[10];
scanf("%d", &y);
for (i = 0; i < y; i++) scanf("%d", &a[i]);
for (i = 0; i < y; i++) {
if (a[i] >= 0 && a[i] < n) {
printf("%s %s %s %c %s\n", x[a[i]].name, x[a[i]].guhua, x[a[i]].shouji, x[a[i]].sex, x[a[i]].born);
} else {
printf("Not Found\n");
}
}
return 0;
}
本题要求编写程序,比较两个有理数的大小。
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”。
输入样例1:
1/2 3/4
输出样例1:
1/2 < 3/4
输入样例2:
6/8 3/4
输出样例2:
6/8 = 3/4
#include
struct shuzi {
int a;
int b;
};
int main() {
struct shuzi x[2];
int i;
for (i = 0; i < 2; i++) {
scanf("%d/%d", &x[i].a, &x[i].b);
}
if ((double) x[0].a / x[0].b == (double) x[1].a / x[1].b) printf("%d/%d = %d/%d", x[0].a, x[0].b, x[1].a, x[1].b);
else if ((double) x[0].a / x[0].b > (double) x[1].a / x[1].b)
printf("%d/%d > %d/%d", x[0].a, x[0].b, x[1].a, x[1].b);
else if ((double) x[0].a / x[0].b < (double) x[1].a / x[1].b)
printf("%d/%d < %d/%d", x[0].a, x[0].b, x[1].a, x[1].b);
return 0;
}
本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
#include
struct shuzi {
int a;
int b;
};
int main() {
struct shuzi x[2];
int i;
for (i = 0; i < 2; i++) {
scanf("%d/%d", &x[i].a, &x[i].b);
}
int m, n;
m = x[0].a * x[1].b + x[1].a * x[0].b;
n = x[0].b * x[1].b;
for (i = 2; i < 10; i++) {
while (m % i == 0 && n % i == 0) {
m /= i;
n /= i;
}
}
if (m % n != 0) printf("%d/%d", m, n);
else printf("%d", m / n);
return 0;
}
本题要求编写程序,计算N个有理数的平均值。
输入格式:
输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。
输出格式:
在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
4
1/2 1/6 3/6 -5/10
输出样例1:
1/6
输入样例2:
2
4/3 2/3
输出样例2:
1
#include
#define N 100
struct Rational {
int n; /* 分子 */
int d; /* 分母 */
};
int gcd(int num1, int num2) {
return num2 == 0 ? num1 : gcd(num2, num1 % num2);
}
int main(void) {
struct Rational ra[N], r;
int i, n, g;
scanf("%d", &n);
for (i = 0; i < n; ++i)
scanf("%d/%d", &ra[i].n, &ra[i].d);
r.n = 0;
r.d = 1;
for (i = 0; i < n; ++i) {
r.n = r.n * ra[i].d + r.d * ra[i].n;
r.d = r.d * ra[i].d;
}
r.d *= n; /*平均值 */
g = gcd(r.n, r.d);
if (g != 0) {
r.n /= g;
r.d /= g;
}
if (r.n == 0 || r.d == 1)
printf("%d", r.n);
else
printf("%d/%d\n", r.n, r.d);
return 0;
}
本题要求编写程序,计算两个二维平面向量的和向量。
输入格式:
输入在一行中按照“
x
1
x_1
x1
y
1
y_1
y1
x
2
x_2
x2
y
2
y_2
y2”的格式给出两个二维平面向量
v
1
=
(
x
1
,
y
1
)
v_1=(x_1,y_1)
v1=(x1,y1)和
v
2
=
(
x
2
,
y
2
)
v_2=(x_2,y_2)
v2=(x2,y2)的分量。
输出格式:
在一行中按照(x, y)
的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。
输入样例:
3.5 -2.7 -13.9 8.7
输出样例:
(-10.4, 6.0)
#include
struct shuzi {
double a;
double b;
};
int main() {
struct shuzi x[2];
int i;
for (i = 0; i < 2; i++) {
scanf("%lf %lf", &x[i].a, &x[i].b);
}
double m, n;
m = x[0].a + x[1].a;
n = x[0].b + x[1].b;
if (m > -0.05 && m <= 0 && n != 0) printf("(0.0, %.1f)", n);
else if (m != 0 && n > -0.05 && n <= 0) printf("(%.1f, 0.0)", m);
else if (m > -0.05 && m <= 0 && n > -0.05 && n <= 0) printf("(0.0, 0.0)");
else if (m != 0 && n != 0) printf("(%.1f, %.1f)", m, n);
return 0;
}