今天学习了最简单的程序设计――顺序设计,还有选择结构设计。主要了解标准输入输出函数putchar(),getchar(),scanf(),printf(),还有他们的格式和使用方法,前两个顾名思义是输出和输入一个字符,后面是两个输入输出没有格式的限制;主要的格式控制符有%d整形,%f浮点型,%c字符型还有%l、%o、%m等控制符。
选择结构程序设计主要有:
if()
语句;
------------------------------
还有其中的相互嵌套
if(表达式)
语句;
eles 语句;
-----------------------
switch(表达式)
{
case 常量表达式:语句1;break;//在第一条语句符合条件并执行语句1后,执行break,跳出switch
case 常量表达式:语句2;break;
......
default:语句n//这边不用使用break
}
---------------------------------------
联系程序:
1.给一个不多于5位数的正整数,求出他有几位数,分别输出每一位数字,并反向输出
源代码:
#include <stdio.h>
int main()
{
int places,a,b,c,d,e;
long int number;
int placescouter(long int number);//声明函数placecouter
printf("输入一个不多于5位的正整数:\n");
scanf("%d",&number);
if(number>99999||number<0)//判断输入的数是否符合要求――不大于五位数的正整数
{
printf("输入的数不符合要求,请重新输入一个不多于5位的正整数:\n");
scanf("%d",&number);
}
places=placescouter(number);
switch (places)//分别输出各个位的数字
{
case 5:a=int(number/10000);number=number-a*10000;printf("%d",a);
case 4:b=int(number/1000);number=number-b*1000;printf("%d",b);
case 3:c=int(number/100);number=number-c*100;printf("%d",c);
case 2:d=int(number/10);number=number-d*10;printf("%d",d);
case 1:e=int(number);printf("%d\n",e);
}
//反向输出number
switch (places)
{
case 5:printf("反向输出:%d%d%d%d%d\n",e,d,c,b,a);break;
case 4:printf("反向输出:%d%d%d%d\n",e,d,c,b);break;
case 3:printf("反向输出:%d%d%d%\n",e,d,c);break;
case 2:printf("反向输出:%d%d\n",e,d);break;
case 1:printf("反向输出:%d\n",e);break;
}
return 0;
}
//判断number的位数
int placescouter(long int number)
{
int k;
if(number>9999)
k=5;
else if(number>999)
k=4;
else if(number>99)
k=3;
else if(number>9)
k=2;
else k=1;
return k;
}
在编写的时候一直想不到更好的方法来反向输出number,所以使用switch多分枝函数,有些复杂。在编译过程中没有报错但是一直不能按早自己的意思输出和反向输出,后来才知道原来是scanf函数多了一个\n的格式控制符,使得函数在接受用户输入的数字后一直没有执行后续的语句。这个问题解决后反向输出还是输出一些很大的数字或者是负数,刚开始以为是long int 赋值给int 出现溢出导致,原来是a,b......这几个数字的排列顺序有误,这几个很小的问题导致我拍错了一个晚上,最后还不好意思的奖励自己洗个澡看了部电影!!呵呵。
输出结果截图:
2.根据公司月利润,计算员工的奖金:
#include <stdio.h>
int main ()
{
int t;
double profit,bonus;
printf("当月利润:");
scanf("%lf",&profit);
t=int(profit/100000);
printf("输出t:%lf\n",t);
switch(t)
{
case 0:bonus=profit*0.1;break;
case 1:bonus=100000*0.1+(profit-100000)*0.075;break;
case 2:
case 3:bonus=100000*0.1+100000*0.075+(profit-200000)*0.05;break;
case 4:
case 5:bonus=100000*0.1+100000*0.075+200000*0.05+(profit-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9:bonus=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(profit-600000)*0.015;break;
default:bonus=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(profit-1000000)*0.01;break;
}
printf("奖金:%lf\n",bonus);
return 0;
}
输出结果: