您的位置:首页 > 编程语言

中国大学mooc编程题在线测试第五周

2016-11-26 22:01 447 查看

6位密码输入检测

题目内容:

从键盘输入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”

#include <stdio.h>
int main( )
{
int count=0;int ch;
printf("Input your password:\n");
while(count<6)
{

scanf("%c",&ch);

if(ch>='0'&&ch<='9')
{
count++;
printf("%c, you have enter %d-bits number\n",ch,count);
}
else
{
printf("error\n");
}
getchar();
}
return 0;
}


#include <stdio.h>
int main( )
{
int count=0;int ch;
printf("Input your password:\n");
while(count<6)
{

scanf("%c%*c",&ch);
if(ch>='0'&&ch<='9')
{
count++;
printf("%c, you have enter %d-bits number\n",ch,count);
}
else
{
printf("error\n");
}
}
return 0;
}


判断一个整型数据有几位v1.0

题目内容:

从键盘输入一个整型数据(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”

#include <stdio.h>
int main()
{
int n,count=1,tem,sign=1;
printf("Please enter the number:\n");
scanf("%d",&n);
tem=abs(n);
if(n<0)sign=-1;
while(tem>10)
{
count++;
tem=tem/10;
}
printf("%d: %d bits\n",n,count);
return 0;
}


检测输入数据中奇数和偶数的个数

题目内容:

从键盘输入一系列正整数,输入-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”

#include <stdio.h>
int main()
{
int num=0,odd_sum=0,even_sum=0;
printf("Please enter the number:\n");
scanf("%d",&num);
if(num==-1)
{
printf("over!\n");
}
while(num!=-1)
{
if(num==-1)
{
continue;
}
if(num%2==0)
{
even_sum++;
printf("%d:even\n",num);
}
else
{
odd_sum++;
printf("%d:odd\n",num);
}
scanf("%d",&num);
}
printf("The total number of odd is %d\n",odd_sum);
printf("The total number of even is %d\n",even_sum);
return 0;
}


计算球的反弹高度

题目内容:

一个球从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”

#include <stdio.h>
int main()
{
int num;
float high=100,total=100;
printf("Input:\n");
scanf("%d",&num);
printf("%d times:\n",num);
while(num-->1)
{
high=high/2;
total=total+high*2;
}
printf("%.3f\n",total);
printf("%.3f\n",high/2);
return 0;
}


判断一个整型数据有几位v2.0

题目内容:

从键盘输入一个整型数据(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”

//#include <stdio.h>
//int main()
//{
//    int num,a,count=0,k,count0=0,count1=0,count2=0,count3=0,count4=0,count5=0,count6=0,count7=0,count8=0,count9=0;
//    printf("Please enter the number:\n");
//    scanf( "%d",&num);
//    a=abs(num);
//    while(a>0)
//    {
//        count++;
//        k=a%10;
//        a/=10;
//        switch(k)
//        {
//            case 0:count0++;break;
//            case 1:count1++;break;
//            case 2:count2++;break;
//            case 3:count3++;break;
//            case 4:count4++;break;
//            case 5:count5++;break;
//            case 6:count6++;break;
//            case 7:count7++;break;
//            case 8:count8++;break;
//            case 9:count9++;break;
//        }
//    }
//    printf("0: %d\n",count0);
//    printf("1: %d\n",count1);
//    printf("2: %d\n",count2);
//    printf("3: %d\n",count3);
//    printf("4: %d\n",count4);
//    printf("5: %d\n",count5);
//    printf("6: %d\n",count6);
//    printf("7: %d\n",count7);
//    printf("8: %d\n",count8);
//    printf("9: %d\n",count9);
//    printf("%d: %d bits\n",num,count);
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int num,a,b,k,count=0;
//    printf("Please enter the number:\n");
//    scanf( "%d",&num);
//    b=a=abs(num);
//    while(a>0)
//    {
//        count++;
//        a/=10;
//    }
//    printf("%d: %d bits\n",num,count);
//    for(i=0;i<=9;i++)
//    {
//        while(b>0)
//        {
//            k=b%10;
//            b=b/10;
//        }
//        printf("0: %d\n",k);
//    }
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int b,count,i,k;
//    for(i=0;i<=9;i++)
//    {
//        count=0;
//        b=1222345;
//        while(b>0)
//        {
//            k=b%10;
//            if(k==i)
//            {
//                count++;
//            }
//            b=b/10;
//        }
//        if(count>0)
//        {
//            printf("%d: %d\n",i,count);
//        }
//    }
//    return 0;
//}

#include <stdio.h>
int main()
{
int num,a,b,k,count=0,count1,i;
printf("Please enter the number:\n");
scanf( "%d",&num);
a=abs(num);
while(a>0)
{
count++;
a/=10;
}
printf("%d: %d bits\n",num,count);
for(i=0;i<=9;i++)
{
b=abs(num);
count1=0;
while(b>0)
{
k=b%10;
if(k==i)
{
count1++;
}
b=b/10;
}
if(count1>0)
{
printf("%d: %d\n",i,count1);
}
}
return 0;
}


注释部分,为写这题的思路

奖金计算

题目内容:

企业发放的奖金根据利润提成。利润低于或等于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”

#include<stdio.h>
int main()
{
long int profits,bonus=0;
scanf("%ld",&profits);
//    printf("before if\n");
if(profits<=100000)
{
bonus=0.1*profits;
}
else if(profits<=200000)
{
bonus=0.1*100000+(profits-100000)*0.075;
}
else if(profits<=400000)
{
bonus=0.1*100000+0.075*100000+(profits-200000)*0.05;
}
else if(profits<=600000)
{
bonus=0.1*100000+0.075*100000+200000*0.05+(profits-400000)*0.03;
}
else if(profits<=1000000)
{
bonus=0.1*100000+0.075*100000+200000*0.05+200000*0.03+(profits-600000)*0.015;
}
else
{
bonus=0.1*100000+0.075*100000+200000*0.05+200000*0.03+400000*0.015+(profits-1000000)*0.01;
//        printf("in if\n");
}
//    printf("after if\n");
printf("bonus=%ld\n",bonus);
return 0;
}


程序修改—1

题目内容:

修改下面这个程序使其快速计算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” (注意:等号两侧各有一个空格)

#include  <stdio.h>
int main()
{
int i, j, sum = 0, n;
scanf("%d",&n);
for (i=1,j=n; i<=j; i++,j--)
{
sum = sum + i + j;
}
if(n%2==0)
printf("sum = %d", sum);
else printf("sum = %d", sum-i+1);
return 0;
}


程序修改—2

题目内容:

修改下面这个用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”

#include  <stdio.h>
int main()
{
int sum = 0, m;
printf("Input m:\n");
scanf("%d", &m);
while(m != 0){
sum = sum + m;
printf("sum = %d\n", sum);
printf("Input m:\n");
scanf("%d", &m);
}
return 0;
}


程序改错-1

题目内容:

我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只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

#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;
}


程序改错-2

题目内容:

从键盘任意输入一个正整数,编程判断它是否是素数,若是素数,输出“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”

#include <stdio.h>
#include <math.h>
int main()
{
int n, i, find=0;
printf("Input n:\n");
scanf("%d", &n);
for (i=2; i<=sqrt(n); i++)
{
if (n % i == 0)
{
find=1;
//         printf("No!\n");
}
}
if(!find&&n>1)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}


程序改错-3

题目内容:

从键盘任意输入两个符号各异的整数,直到输入的两个整数满足要求为止,然后打印这两个数。请通过测试找出下面这个程序存在的问题(不止一个问题哦),并改正。同时用下面给出的运行结果示例检查修改后的程序。

#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”

#include <stdio.h>
int main()
{
int x1, x2,ret;
do{
printf("Input x1, x2:\n");
ret=scanf("%d,%d", &x1, &x2);
while(ret!=2)
{
while(getchar()!='\n');
printf("Input x1, x2:\n");
ret=scanf("%d,%d", &x1, &x2);
}
}while (x1 * x2 >= 0);
printf("x1=%d,x2=%d\n", x1, x2);
return 0;
}


猴子吃桃程序_扩展1

题目内容:

猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了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”

#include <stdio.h>
int main()
{
int day,x=1;
printf("Input days:\n");
scanf("%d",&day);
while(day>1)
{
x=(x+1)*2;
day--;
}
printf("x=%d\n",x);
return 0;
}


猴子吃桃程序_扩展2

题目内容:

猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了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”

#include <stdio.h>
int main()
{
int day,x=1,ret=0;
printf("Input days:\n");
ret=scanf("%d",&day);
while(1)
{
while(ret!=1)
{
while(getchar()=='\n');
printf("Input days:\n");
ret=scanf("%d",&day);
}
if(day<=0)
{
printf("Input days:\n");
ret=scanf("%d",&day);
}
else
goto end;

}
end:
while(day>1)
{
x=(x+1)*2;
day--;
}
printf("x=%d\n",x);
return 0;
}


#include <stdio.h>
int main()
{
int day,x=1,ret=0;
printf("Input days:\n");
ret=scanf("%d",&day);
while(1)
{
while(ret!=1)
{
while(getchar()=='\n');
printf("Input days:\n");
ret=scanf("%d",&day);
}
if(day<=0)
{
printf("Input days:\n");
ret=scanf("%d",&day);
}
else
break;

}
while(day>1)
{
x=(x+1)*2;
day--;
}
printf("x=%d\n",x);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程