1 整数152的各位数字
本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。
输入格式:
本题无输入。
输出格式:
按照以下格式输出:
152 = 个位数字 + 十位数字*10 + 百位数字*100
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a, b, c;
a = 152 % 10;
b = 152 / 10 % 10;
c = 152 / 100;
printf("152 = %d + %d*10 + %d*100", a, b, c);
return 0;
}
2 计算分段函数[3]
本题目要求计算下列分段函数f(x)的值:
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
234
输出样例2:
f(234.0) = 234.0
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int main()
{
double x;
double result;
scanf("%lf\n", &x);
if (x == 10)
{
result = 1 / x;
}
else
{
result = x;
}
printf("f(%.1lf) = %.1lf\n", x, result);//注意小数位数
return 0;
}
注意
3 整数四则运算
本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。
输入格式:
输入在一行中给出2个正整数A和B。
输出格式:
在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。
输入样例:
3 2
输出样例:
3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a;
int b;
scanf("%d %d",&a,&b);
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d * %d = %d\n", a, b, a * b);
printf("%d / %d = %d\n", a, b, a / b);
return 0;
}
4 求组合数
本题要求编写程序,根据公式Cnm=m!(n−m)!n!
算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)
计算n!
,其中n
的类型是int
,函数类型是double
。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double
类型范围内。
输入样例:
2 7
输出样例:
result = 21
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//注意各种类型的限制
double fact(int n)
{
int i = 1;
double combin = 1;
for (i = 1; i <= n; i++)
{
combin = combin * i;
}
return combin;
}
int main()
{
int m, n;
double result;
scanf("%d %d",&m,&n);
result = fact(n)/(fact(m)*fact(n-m));
printf("result = %.0f", result);
return 0;
}
5 高速公路超速处罚
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。
输入样例1:
65 60
输出样例1:
OK
输入样例2:
110 100
输出样例2:
Exceed 10%. Ticket 200
输入样例3:
200 120
输出样例3:
Exceed 67%. License Revoked
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int speed, b, limit;
scanf("%d %d", &speed, &limit);
b = 1.1 * limit;//这里利用了b是整数
float percentage = (speed - limit) * 100.0 / limit;
if (speed < b)//直接speed和limit*1.1比较会有问题——类型不同
{
printf("OK\n");
}
else if (speed >= b && speed < 1.5 * limit)
{
printf("Exceed %d%%. Ticket 200", (int)(percentage + 0.5));
}
else
{
printf("Exceed %d%%. License Revoked", (int)(percentage + 0.5));
}
return 0;
}
6 求分数序列前N项和
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*
使用了double类型来存储分子、分母和部分和,以确保计算结果的精度
当分子和分母的值较大时,使用int类型可能会导致溢出或精度丢失
*/
int main()
{
int N, i;
double temp, num1 = 2, num2 = 1;
double sum = num1 / num2;
scanf("%d", &N);
for (i = 1; i < N; i++)
{
temp = num1;
num1 = num1 + num2;
num2 = temp;
sum = sum + num1 / num2;
}
printf("%0.2lf\n", sum);
return 0;
}
7 求最大值及其下标
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6
2 8 10 1 9 10
输出样例:
10 2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n, i, m_min = 0;//注意变量初始化,避免不必要的错误
scanf("%d", &n);
int number[n];
for (i = 0; i < n; i++)
{
scanf("%d", &number[i]);
}
int max = number[0];
for (i = 0; i < n; i++)
{
if (number[i] > max)
{
max = number[i];
m_min = i;
}
}
printf("%d %d\n", max, m_min );
return 0;
}
8 矩阵运算
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例:
35
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n,i,j;
scanf("%d", &n);
int a[n][n];//二维数组
int sum = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (i != n - 1 && j != n - 1 && i + j != n - 1)
{
sum = sum + a[i][j];
}
}
}
printf("%d", sum);
return 0;
}
9 查找书籍
给定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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct book//定义结构体
{
char a[31];
double b;
};
int main()
{
int i = 0, n, max = 0, min = 0;
struct book m[10];//结构体数组
scanf("%d", &n);
getchar();//清除输入缓冲区中的换行符
/*
gets()-按下回车键时,输入的字符串将被存储,并结束输入过程。
fgets() 函数会读取换行符在内的整行输入。使用 fgets() 函数读取字符串后,可能需要手动处理换行符。
gets()自 C11 标准起已被废弃。
*/
for (i = 0; i < n; i++)
{
gets(m[i].a);
scanf("%lf", &m[i].b);
getchar();//清除输入缓冲区中的换行符
}
double temp;
for (i = 0; i < n; i++)
{
if (m[i].b > temp)
{
temp = m[i].b;
max = i;
}
}
for (i = 0; i < n; i++)
{
if (m[i].b < temp)
{
temp = m[i].b;
min = i;
}
}
printf("%.2lf, %s\n", m[max].b, m[max].a);
printf("%.2lf, %s\n", m[min].b, m[min].a);
return 0;
}