写在前边的话:写作不易,有帮助到你的话麻烦点赞加收藏呦。感激不尽!如有错误也请留言指正
目录
1.判断一个整型数据有几位v2.0(4分)
2.奖金计算(6分)
4.程序修改—2(4分)
5.程序改错-1(4分)
6.程序改错-2(5分)
7.程序改错-3(4分)
8.猴子吃桃程序_扩展1(4分)
9.猴子吃桃程序_扩展2(4分)
10.6位密码输入检测(4分)
11.判断一个整型数据有几位v1.0(4分)
12.检测输入数据中奇数和偶数的个数(4分)
13.计算球的反弹高度(4分)
1.判断一个整型数据有几位v2.0(4分)
题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1个1,2个6,2个4。
程序运行结果示例1:
Please enter the number:
12226↙
12226: 5 bits
1: 1
2: 3
6: 1
程序运行结果示例2:
Please enter the number:
-12243↙
-12243: 5 bits
1: 1
2: 2
3: 1
4: 1
输入格式: "%d"
输出格式:
输入提示信息:"Please enter the number:\n"
判断该整数共有几位:"%d: %d bits\n"
包含数字0的个数:"0: %d\n"
包含数字1的个数:"1: %d\n"
包含数字2的个数:"2: %d\n"
包含数字3的个数:"3: %d\n"
包含数字4的个数:"4: %d\n"
包含数字5的个数:"5: %d\n"
包含数字6的个数:"6: %d\n"
包含数字7的个数:"7: %d\n"
包含数字8的个数:"8: %d\n"
包含数字9的个数:"9: %d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
int main(){
int n,m,count = 0,i;
int a[10]={0};
printf("Please enter the number:\n");
scanf("%d",&n);
m = n>0?n:-n;
while(m!=0)
{
a[m%10]++;
m = m/10;
count++;
}
printf("%d: %d bits\n",n,count);
for(i = 0;i <10;i++)
{
if(a[i]!=0)printf("%d: %d\n",i,a[i]);
}
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 2 | |
用例2通过 | 2ms | 256kb | 2 |
本次得分/总分:4.00/4.00分
2.奖金计算(6分)
题目内容:
企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?
程序运行结果示例1:
789↙
bonus=78
程序运行结果示例2:
789516↙
bonus=36342
输入格式: "%ld"
输出格式:"bonus=%ld\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:31kb
C
// 这个题不难,太磨叽了,就这样吧
#include <stdio.h>
int main()
{
int a = 0; //定义利润
int k = 0; //定义奖金
scanf("%d", &a);
if (a > 0 && a <= 100000)
{
k = a * 0.1;
}
else if (a > 100000 && a <= 200000)
{
k = 100000 * 0.1 + (a - 100000) * 0.075;
}
else if (a > 200000 && a <= 400000)
{
k = 100000 * 0.1 + 100000 * 0.075 + (a - 200000) * 0.05;
}
else if (a > 400000 && a <= 600000)
{
k = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (a - 400000) * 0.03;
}
else if (a > 600000 && a <= 1000000)
{
k = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (a - 600000) * 0.015;
}
else if (a > 1000000)
{
k = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (a - 1000000) * 0.001;
}
printf("bonus=%ld\n", k);
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 1 | |
用例2通过 | 2ms | 256kb | 1 | |
用例3未通过 | 0ms | 0kb | 结果错误 | 0 |
用例4通过 | 2ms | 256kb | 1 | |
用例5通过 | 2ms | 256kb | 1 | |
用例6通过 | 1ms | 256kb | 1 |
本次得分/总分:5.00/6.00分
3,程序修改—1(4分)
题目内容:
修改下面这个程序使其快速计算1+2+3……+n的值,n从键盘输入。并按照下面给出的运行示例检查程序。
#include <stdio.h>
int main() {
int i, j, sum = 0, n = 100;
for (i = 1, j = n; i <= j; i++, j--) {
sum = sum + i + j;
}
printf("sum = %d", sum);
return 0;
}
程序运行结果示例1:
5↙
sum = 15
程序运行结果示例2:
6↙
sum = 21
输入格式: "%d"
输出格式: "sum = %d" (注意:等号两侧各有一个空格)
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
int i, j, sum = 0, n = 100;
scanf("%d", &n);
for (i = 1, j = n; i <= j; i++, j--) {
sum = sum + i + j;
}
// 当n为奇数的时候,中位数加了两次,因为此时i==j,所以需要减去一个中位数
if (n & 1) {
sum -= (n / 2 + 1);
}
printf("sum = %d", sum);
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 14ms | 256kb | 2 | |
用例2通过 | 1ms | 256kb | 2 |
本次得分/总分:4.00/4.00分
4.程序修改—2(4分)
题目内容:
修改下面这个用do-while语句实现的程序,改用while语句实现,并对比其优缺点。
#include <stdio.h>
int main() {
int sum = 0, m;
do {
printf("Input m:\n");
scanf("%d", &m);
sum = sum + m;
printf("sum = %d\n", sum);
} while (m != 0);
return 0;
}
程序运行结果示例:
Input m:
1↙
sum = 1
Input m:
2↙
sum = 3
Input m:
3↙
sum = 6
Input m:
4↙
sum = 10
Input m:
0↙
输入格式:"%d"
输出格式:
输入提示: "Input m:\n"
输出累加和: "sum = %d\n"(注意:等号两侧各有一个空格)
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
int sum = 0, m;
printf("Input m:\n");
scanf("%d", &m);
sum = sum + m;
while (m) {
printf("sum = %d\n", sum);
printf("Input m:\n");
scanf("%d", &m);
sum = sum + m;
}
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 2 | |
用例2通过 | 1ms | 256kb | 2 |
本次得分/总分:4.00/4.00分
5.程序改错-1(4分)
题目内容:
我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?目前程序运行结果有误,请问为什么会比正确答案多出三个解?不仅要找出错误和修正错误,还要求利用以前学过的知识分析错误的原因。
#include <stdio.h>
int main() {
int x, y, z;
for (x = 0; x <= 20; x++) {
for (y = 0; y <= 33; y++) {
z = 100 - x - y;
if (5 * x + 3 * y + z / 3 == 100) {
printf("x=%d, y=%d, z=%d\n", x, y, z);
}
}
}
return 0;
}
程序目前的运行结果:
x=0, y=25, z=75
x=3, y=20, z=77
x=4, y=18, z=78
x=7, y=13, z=80
x=8, y=11, z=81
x=11, y=6, z=83
x=12, y=4, z=84
程序正确的运行结果:
x=0, y=25, z=75
x=4, y=18, z=78
x=8, y=11, z=81
x=12, y=4, z=84
输入格式: 无
输出格式:
"x=%d, y=%d, z=%d\n
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
int x, y, z;
for (x = 0; x <= 20; x++) {
for (y = 0; y <= 33; y++) {
z = 100 - x - y;
if (5 * x + 3 * y + z / 3.0 == 100) {
printf("x=%d, y=%d, z=%d\n", x, y, z);
}
}
}
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 21ms | 256kb | 4 |
本次得分/总分:4.00/4.00分
6.程序改错-2(5分)
题目内容:
从键盘任意输入一个正整数,编程判断它是否是素数,若是素数,输出“Yes!”,否则输出“No!”。已知负数、0和1都不是素数。请找出下面程序的错误并改正之,同时按照给出的运行示例检查修改后的程序。
#include <stdio.h>
#include <math.h>
int main() {
int n, i;
printf("Input n:\n");
scanf("%d", &n);
for (i = 2; i <= sqrt(n); i++) {
if (n % i = 0) {
printf("No!\n");
}
}
printf("Yes!\n");
return 0;
}
程序的运行结果示例1:
Input n:
-3↙
No!
程序的运行结果示例2:
Input n:
0↙
No!
程序的运行结果示例3:
Input n:
1↙
No!
程序的运行结果示例4:
Input n:
6↙
No!
程序的运行结果示例5:
Input n:
7↙
Yes!
输入格式: "%d"
输出格式:
输入提示信息: "Input n:\n"
是素数: "Yes!\n"
不是素数: "No!\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
#include <math.h>
int main() {
int n, i;
printf("Input n:\n");
scanf("%d", &n);
if(n <=0 || n == 1) {
printf("No!\n");
return 0;
}
for (i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
printf("No!\n");
return 0;
}
}
printf("Yes!\n");
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 18ms | 128kb | 1 | |
用例2通过 | 2ms | 256kb | 1 | |
用例3通过 | 2ms | 256kb | 1 | |
用例4通过 | 2ms | 256kb | 1 | |
用例5通过 | 2ms | 256kb | 1 |
本次得分/总分:5.00/5.00分
7.程序改错-3(4分)
题目内容:
从键盘任意输入两个符号各异的整数,直到输入的两个整数满足要求为止,然后打印这两个数。请通过测试找出下面这个程序存在的问题(不止一个问题哦),并改正。同时用下面给出的运行结果示例检查修改后的程序。
#include <stdio.h>
int main() {
int x1, x2;
do {
printf("Input x1, x2:");
scanf("%d,%d", &x1, &x2);
} while (x1 * x2 > 0);
printf("x1=%d,x2=%d\n", x1, x2);
return 0;
}
程序正确的运行结果示例:
Input x1, x2:
a,s↙
Input x1, x2:
a,1↙
Input x1, x2:
2,s↙
Input x1, x2:
1,2↙
Input x1, x2:
-1,-2↙
Input x1, x2:
0,3↙
Input x1, x2:
1.2,3.4↙
Input x1, x2:
1.2,5↙
Input x1, x2:
-1,3↙
x1=-1,x2=3
输入格式: "%d,%d"
输出格式:
输入提示信息:"Input x1, x2:\n"
输出: "x1=%d,x2=%d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
int x1, x2, k;
int flag = 0;
do {
while (flag && getchar() != '\n');
flag = 1;
printf("Input x1, x2:\n");
k = scanf("%d,%d", &x1, &x2);
} while ((x1 * x2 >= 0) || k!=2);
printf("x1=%d,x2=%d\n", x1, x2);
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 2 | |
用例2通过 | 2ms | 256kb | 2 |
本次得分/总分:4.00/4.00分
8.猴子吃桃程序_扩展1(4分)
题目内容:
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。
程序的运行结果示例1:
Input days:
5↙
x=46
程序的运行结果示例2:
Input days:
10↙
x=1534
输入格式: "%d"
输出格式:
输入提示信息:"Input days:\n"
输出:"x=%d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
int n, x = 1;
printf("Input days:\n");
scanf("%d", &n);
for (int i = 1; i < n; i++) {
x = (x +1)*2;
}
printf("x=%d\n", x);
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 2 | |
用例2通过 | 2ms | 128kb | 2 |
本次得分/总分:4.00/4.00分
9.猴子吃桃程序_扩展2(4分)
题目内容:
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数)
程序运行结果示例:
Input days:
0↙
Input days:
-5↙
Input days:
a↙
Input days:
3↙
x=10
输入格式: "%d"
输出格式:
输入提示信息:"Input days:\n"
输出:"x=%d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
int n, x = 1, k;
int flag = 0;
do {
// 这行代码当做MOOC输入合法性判断的模板吧,这个是摸索出来的
while (flag && getchar()!='\n');
flag = 1;
printf("Input days:\n");
k = scanf("%d", &n);
}while(n<=0 || k != 1);
for (int i = 1; i < n; i++) {
x = (x +1)*2;
}
printf("x=%d\n", x);
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 2 | |
用例2通过 | 1ms | 256kb | 2 |
本次得分/总分:4.00/4.00分
10.6位密码输入检测(4分)
题目内容:
从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。
程序的运行结果示例:
Input your password:
1↙
1, you have enter 1-bits number
6↙
6, you have enter 2-bits number
a↙
error
d↙
error
4↙
4, you have enter 3-bits number
6↙
6, you have enter 4-bits number
8↙
8, you have enter 5-bits number
2↙
2, you have enter 6-bits number
输入提示信息:"Input your password:\n"
输入格式: "%c"
输出格式:
如果输入的是数字,输出格式为:"%c, you have enter %d-bits number\n"
如果输入的不是数字,输出提示信息:"error\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
printf("Input your password:\n");
for (int i = 1; i <= 6;) {
char ch;
scanf("%c", &ch);
getchar();
if (ch < '0' || ch > '9') {
printf("error\n");
} else {
printf("%c, you have enter %d-bits number\n", ch, i);
i++;
}
}
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 1ms | 256kb | 2 | |
用例2通过 | 1ms | 256kb | 1 | |
用例3通过 | 2ms | 256kb | 1 |
本次得分/总分:4.00/4.00分
11.判断一个整型数据有几位v1.0(4分)
题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从键盘输入整数16644,该整数共有5位。
程序运行结果示例1:
Please enter the number:
21125↙
21125: 5 bits
程序运行结果示例2:
Please enter the number:
-12234↙
-12234: 5 bits
输入提示信息:"Please enter the number:\n"
输入格式: "%d"
输出格式:"%d: %d bits\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
printf("Please enter the number:\n");
int n, m;
scanf("%d", &n);
int count = 0;
m = n;
while (n) {
n /= 10;
count++;
}
printf("%d: %d bits\n", m, count);
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 1ms | 256kb | 2 | |
用例2通过 | 2ms | 256kb | 1 | |
用例3通过 | 2ms | 256kb | 1 |
本次得分/总分:4.00/4.00分
12.检测输入数据中奇数和偶数的个数(4分)
题目内容:
从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出"over!"。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。
程序运行结果示例1:
Please enter the number:
1↙
1:odd
5↙
5:odd
8↙
8:even
9↙
9:odd
12↙
12:even
17↙
17:odd
-1↙
The total number of odd is 4
The total number of even is 2
程序运行结果示例2:
Please enter the number:
-1↙
over!
The total number of odd is 0
The total number of even is 0
输入提示信息:"Please enter the number:\n"
输入格式: "%d"
输出格式:
用户输入的第一个数据就是-1,输出格式:"over!\n"
奇数的输出格式:"%d:odd\n"
偶数的输出格式:"%d:even\n"
输入数据中奇数的个数统计:"The total number of odd is %d\n"
输入数据中偶数的个数统计:"The total number of even is %d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
int main() {
// 奇数,偶数的个数
int odd = 0, even = 0;
int n;
printf("Please enter the number:\n");
while (1) {
scanf("%d", &n);
if (n == -1) {
break;
}
if (n & 1) {
odd++;
printf("%d:odd\n", n);
} else {
even++;
printf("%d:even\n", n);
}
}
if (even + odd == 0) {
printf("over!\n");
}
printf("The total number of odd is %d\n", odd);
printf("The total number of even is %d\n", even);
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 2ms | 256kb | 2 | |
用例2通过 | 2ms | 256kb | 2 |
本次得分/总分:4.00/4.00分
13.计算球的反弹高度(4分)
题目内容:
一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。程序中所有浮点数的数据类型均为float。
程序运行结果示例1:
Input:
5↙
5 times:
287.500
3.125
程序运行结果示例2:
Input:
10↙
10 times:
299.609
0.098
输入提示信息:"Input:\n"
输入格式: "%d"
输出格式:
反弹次数:"%d times:\n"
第n次反弹共经过多少米:"%.3f\n"
第n次的反弹高度:"%.3f\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
C
#include <stdio.h>
#include "math.h"
int main() {
int n;
printf("Input:\n");
scanf("%d", &n);
printf("%d times:\n", n);
// 等比数列求和
printf("%.3f\n", 200 * (1- pow(0.5, n-1)) + 100);
printf("%.3f\n", 50 * pow(0.5, n-1));
return 0;
}
用例测试结果 | 运行时间 | 占用内存 | 提示 | 得分 |
---|---|---|---|---|
用例1通过 | 1ms | 256kb | 2 | |
用例2通过 | 2ms | 256kb | 2 |
本次得分/总分:4.00/4.00分