题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1个1,2个6,2个4。
#include
#include
#include
int main()
{
int i=0,x,xx,xxx,xxxx,xxxxx,x0=0,x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,x7=0,x8=0,x9=0,bit=0;
printf("Please enter the number:\n");
scanf(" %d",&x);
xxxxx=x;
x=(int)fabs(x);
xx=x;
xxxx=x;
do
{
x=x/10;
bit++;
}while(x>0);
do
{
xxx=xx%10;
switch(xxx)
{
case 1:x1++;
break;
case 2:x2++;
break;
case 3:x3++;
break;
case 4:x4++;
break;
case 5:x5++;
break;
case 6:x6++;
break;
case 7:x7++;
break;
case 8:x8++;
break;
case 9:x9++;
break;
case 0:x0++;
break;
}
xx=(xx-xxx)/10;
i++;
}while(i0)
printf("0: %d\n",x0);
if(x1>0)
printf("1: %d\n",x1);
if(x2>0)
printf("2: %d\n",x2);
if(x3>0)
printf("3: %d\n",x3);
if(x4>0)
printf("4: %d\n",x4);
if(x5>0)
printf("5: %d\n",x5);
if(x6>0)
printf("6: %d\n",x6);
if(x7>0)
printf("7: %d\n",x7);
if(x8>0)
printf("8: %d\n",x8);
if(x9>0)
printf("9: %d\n",x9);
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,求应发放奖金总数?
设利润profit,利用if和多个else if将profi划分成六档计算奖金数,profit用long int类型。
题目内容:
修改下面这个程序使其快速计算1+2+3……+n的值,n从键盘输入。并按照下面给出的运行示例检查程序。
#include
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;
}
原程序多加了次中位数
#include
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(i==j)
sum=sum-i;
}
printf("sum = %d", sum);
return 0;
}
题目内容:
修改下面这个用do-while语句实现的程序,改用while语句实现,并对比其优缺点。
#include
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;
}
#include
int main()
{
int sum = 0, m=1;
while(m!=0){
printf("Input m:\n");
scanf("%d", &m);
sum = sum + m;
printf("sum = %d\n", sum);
}
return 0;
}
题目内容:
我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?目前程序运行结果有误,请问为什么会比正确答案多出三个解?不仅要找出错误和修正错误,还要求利用以前学过的知识分析错误的原因。
#include
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;
}
思路
错误原因在于z/3中z是整型,这样z/3得到的可能是舍弃小数部分的结果,不符合题意,使用强制类型转换成float即可
修改后
#include
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 + (float)z/3 == 100)
{
printf("x=%d, y=%d, z=%d\n", x, y, z);
}
}
}
return 0;
}
题目内容:
从键盘任意输入一个正整数,编程判断它是否是素数,若是素数,输出“Yes!”,否则输出“No!”。已知负数、0和1都不是素数。请找出下面程序的错误并改正之,同时按照给出的运行示例检查修改后的程序。
#include
#include
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;
}
修改后
#include
#include
int main()
{
int n,nn,i,fea=0;
printf("Input n:\n");
scanf("%d",&n);
if(n<=1)
{
printf("No!\n");
}
else
{
for (i=2; i<=sqrt(n); i++)
{
if (n % i == 0)
{
fea=0;
}
else fea=1;
}
if(fea==1)
printf("Yes!\n");
else
printf("No!\n");
}
return 0;
}
题目内容:
从键盘任意输入两个符号各异的整数,直到输入的两个整数满足要求为止,然后打印这两个数。请通过测试找出下面这个程序存在的问题(不止一个问题哦),并改正。同时用下面给出的运行结果示例检查修改后的程序。
#include
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;
}
修改后
#include
#include
#include
int main()
{
int x1, x2, n, flag;
do
{
flag = 0;
printf("Input x1, x2:\n");
n = scanf("%d,%d", &x1, &x2);
switch (n)
{
case 0:
while (getchar() != '\n');
flag = 1;
break;
case 1:
while (getchar() != '\n');
flag = 1;
break;
default:
if (x1 * x2 >= 0)
flag = 1;
else
flag = 0;
break;
}
}
while (flag == 1);
printf("x1=%d,x2=%d\n", x1, x2);
return 0;
}
题目内容:
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。
#include
int main()
{
int day,peach=1;
printf("Input days:\n");
scanf("%d",&day);
for(int i=1;i
题目内容:
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数)
#include
int main()
{
int a,day,peach=1;
do
{
printf("Input days:\n");
a=scanf("%d",&day);
getchar();
}while(a==0 || day<=0);
for(int i=1;i
题目内容:
从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。
#include
int main()
{
int a,day,i=0;
do
{
printf("Input your password:\n");
a=scanf("%d",&day);
getchar();
if(a==1)
{
i++;
printf("%d, you have enter %d-bits number\n",day,i);
}
}while(a==0 || i<6);
}
题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从键盘输入整数16644,该整数共有5位。
#include
#include
int main()
{
int x,xx,x1,i=1,flag=0;
printf("Please enter the number:\n");
scanf("%d",&x);
xx=x;
x=fabs(x);
while(flag==0)
{
x1=x%10;
x=(x-x1)/10;
if(x>0)
{
i++;
}
else flag=1;
}
printf("%d: %d bits\n",xx,i);
}
题目内容:
从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出"over!"。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。
#include
int main()
{
int x,i=0,j=0,flag=0;
printf("Please enter the number:\n");
for(;;)
{
scanf("%d",&x);
if(x==-1 && flag==0)
{
printf("over!\n");
printf("The total number of odd is %d\n",i);
printf("The total number of even is %d\n",j);
break;
}
else if(x==-1 && flag==1)
{
printf("The total number of odd is %d\n",i);
printf("The total number of even is %d\n",j);
break;
}
else if(x%2==0)
{
j++;
printf("%d:even\n",x);
flag=1;
}
else
{
i++;
printf("%d:odd\n",x);
flag=1;
}
}
return 0;
}
题目内容:
一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。程序中所有浮点数的数据类型均为float。
#include
int main()
{
float high=100,sum=0;
int time,i=0;
printf("Input:\n");
scanf("%d",&time);
for(;;)
{
sum=sum+high;
high=high/2;
i++;
if(i==time)
{
printf("%d times:\n",time);
printf("%.3f\n",sum*2);
printf("%.3f\n",high);
break;
}
}
return 0;
}