C语言课程设计学院:机电专业:机械设计制造班级:数控(2)班学号:2520110201 姓名:徐莹指导教师:宋亚岚2012年6月22日目录第一章选择和循环程序设计 (3)第二章数组 (7)第三章函数 (9)第四章指针 (11)第五章课程设计总结 (14)例1:输入任意的三位整数以反向形式输出。
如输入678则输出876。
【算法分析】(用文字或流程图进行描述)对于三位数n以反向输出要求将构成这三位数的元素进行拆分。
个位上的元素乘100加上十位上的元素乘10加上百位上的元素乘1得到一个新三位数。
将新的三位数输出即可。
如何将三位数进行拆分则需用到表达式中整除和求余运算具体方法如下:用x1,x2,x3分别存放拆分后的百位、十位个位数x1=n/100 则得到百位数x2=n/10%10 则得到十位数x3=n%10 则得到个位数y=x3*100+x2*10+x1*1【源程序代码】#include<stdio.h>void main(){int x1,x2,x3,n,y ;printf(“please input number n :”);scanf(“%d”,&n);x1=n/100 ;x2=n/10%10 ;x3=n%10 ;y=x3*100+x2*10+x1*1 ;printf(“y= %d”,y) ;}【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】第一章选择和循环程序设计1、企业发放的奖金根据利润提成。
利润I低于或等于100000元的,奖金可提10%,利润高于100000元,低于200000元(100000<I<=200000)时,低于100000元的部分按10%提成,高于100000的部分,可提成7.5% ; 200000<I<=400000时,低于200000元的部分仍按上述办法提成(下同)。
高于200000的部分,按5%提成;400000<I<=600000元时,高于400000的部分按3%提成;600000<I<=1000000元时,高于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。
从键盘输入当月利润I,求应发奖金总数。
要求:(1)用if 语句编程(2)用switch语句编程序【算法分析】(用文字或流程图进行描述)根据利润的范围,确定可提成的百分比,利润为i1.i<=100000,w=i*0.12.100000<i<=200000,w=(i-100000)*0.75+100000*0.13.200000<i<=400000,w=(i-200000)*0.05+100000*0.75+100000*0.14.400000<i<=600000,w=(i-400000)*0.03+100000*0.05+100000*0.075+100000*0.15.600000<i<=1000000,w= (i-600000)*0.015+100000*0.1+100000*0.075+100000*0.05+100000*0.036.i>1000000,7.w=(i-1000000)*0.01+100000*0.1+100000+0.075+100000*0.05+100000+0.03+100000*0.015【源程序代码】(1). #include<stdio.h>int main(){int i;float w;printf("请输入利润i:");scanf("%d",&i);if(i<=100000)w=i*0.1;else if(i<=200000)w=(i-100000)*0.075+100000*0.1;else if(i<=400000)w=(i-200000)*0.05+100000*0.1+100000*0.075;else if(i<=600000)w=(i-400000)*0.03+100000*0.1+100000*0.075+100000*0.05;else if(i<=1000000)w=(i-600000)*0.015+100000*0.1+100000*0.075+100000*0.05+100000*0.03;elsew=(i-1000000)*0.01+100000*0.1+100000+0.075+100000*0.05+100000+0.03+100000*0.015; printf("应发奖金总数w=%f\n",w);return 0;}(2). #include<stdio.h>int main(){int i,w,j;printf("请输入利润i: ");scanf("%d",&i);j=i/100000;switch(j){case 0: w=i*0.1;break;case 1: w=(i-100000)*0.075+100000*0.1;break;case 2:case 3: w=(i-200000)*0.05+100000*0.1+100000*0.075;break;case 4:case 5: w=(i-400000)*0.03+100000*0.1+100000*0.075+100000*0.05;break;case 6:case 7:case 9: w=(i-600000)*0.015+100000*0.1+100000*0.075+100000*0.05+100000*0.03;break;case 10: w=(i-1000000)*0.01+100000*0.1+100000+0.075+100000*0.05+100000+0.03+100000*0.015;break;}printf("应发奖金总数为:%d\n",w);return 0;}【编译示图】(示图中要有0 error,0 warning的提示)(1)(2)【运行结果示图】(1)(2)2、猴子吃桃问题。
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第2天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上又想再吃时,就只剩下一个桃子了。
求第1天共摘了多少个桃子。
【算法分析】(用文字或流程图进行描述)第一天的桃子是第二天桃子加1后的两倍,如此循环下去。
【源程序代码】#include<stdio.h>{int i,j,day;day=9;j=1;while(day>0){i=(j+1)*2;j=i;day--;}printf("%d\n",i);return 0;}【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】3、某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。
问45块砖,有多少种搬法?【算法分析】(用文字或流程图进行描述)有男人x,女人y,小孩z;3*x+2*y+z/2=45;(0<=x<=15,0<=y<=22,0<=z<=90)【源程序代码】#include<stdio.h>int main(){int x,y,z,j=0;for(x=0;x<=15;x++)for(y=0;y<=22;y++)for(z=0;z<=90;z++)if(3*x+2*y+z/2==45) j++;printf("有%d种搬法\n",j);【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】第二章数组1、某班有10名学生参加全国计算机等级考试,编写一个程序求该班学生考试成绩的平均分和高于平均分的人数。
【算法分析】(用文字或流程图进行描述)先用scanf函数输入这十个人的成绩,然后用累加法算出这十个人的总成绩,用总成绩除人数10就得到了平均成绩。
然后用if语句求出高于平均分的人数。
【源程序代码】#include<stdio.h>int main(){int i,s,a[10],j=0;float ave;for(i=0;i<10;i++)scanf("%d",&a[i]);s=0;for(i=0;i<10;i++)s+=a[i];ave=s/10.0;printf("这个班的平均成绩为:%f\n",ave);for(i=0;i<10;i++)if(a[i]>ave) j++;printf("高于平均分的人数为:%d\n",j);【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】2、定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每5个数求出一个平均值,放在另一数组中并输出。
【算法分析】(用文字或流程图进行描述)先用scanf函数输入这30个数,然后再定义一个数组,把每五个数的平均值按顺序依次放入新定义的数组中,最后输出新定义的数组即可。
【源程序代码】#include<stdio.h>int main(){int a[30],b[6],i,j;printf("enter 30 integer numbers:");for(i=0;i<30;i++)scanf("%d",&a[i]);b[0]=(a[0]+a[1]+a[2]+a[3]+a[4])/5.0;b[1]=(a[5]+a[6]+a[7]+a[8]+a[9])/5.0;b[2]=(a[10]+a[11]+a[12]+a[13]+a[14])/5.0;b[3]=(a[15]+a[16]+a[17]+a[18]+a[19])/5.0;b[4]=(a[20]+a[21]+a[22]+a[23]+a[24])/5.0;b[5]=(a[25]+a[26]+a[27]+a[28]+a[29])/5.0;for(j=0;j<6;j++)printf("%d ",b[j]);printf("\n");return 0;}【编译示图】(示图中要有0 error,0 warning的提示)第三章函数1、有一个一维数组score[],内存放10个学生的成绩,要求编写三个函数分别求学生的平均成绩,求10个学生的最高分,求10个学生的最低分。