编程预考题
‘壹’ c语言程序设计试题
c语言程序设计试题
阐述编程语言的概念,学习进制转换以及程序的基本运行原理,让大家先有一个整体上的认识。下面是我整理的关于c语言程序设计基础知识,希望大家认真阅读!
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k;
printf(" ");
for(i=1;i<5;i++) /*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d ",i,j,k);
}
getch();
}
【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于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.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0. 1;
bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
getch();
}
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
代码如下:
#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{
x=sqrt(i+100); /*x为加上100后开方后的结果*/
y=sqrt(i+268); /*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268) /*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf(" %ld ",i);
}
getch();
}
【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的.第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
int day,month,year,sum,leap;
printf(" please input year,month,day ");
scanf("%d,%d,%d",&year,&month,&day);
switch(month) /*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);
getch();
}
【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d ",x,y,z);
getch();
}
【程序6】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
printf("Hello C-world! ");
printf(" **** ");
printf(" * ");
printf(" * ");
printf(" **** ");
getch();
}
【程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
1.程序分析:字符共有256个。不同字符,图形不一样。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
char a=176,b=219;
printf("%c%c%c%c%c ",b,a,a,a,b);
printf("%c%c%c%c%c ",a,b,a,b,a);
printf("%c%c%c%c%c ",a,a,b,a,a);
printf("%c%c%c%c%c ",a,b,a,b,a);
printf("%c%c%c%c%c ",b,a,a,a,b);
getch();
}
【程序8】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,result;
printf(" ");
for (i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/
}
printf(" "); /*每一行后换行*/
}
getch();
}
【程序9】
题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:
代码如下:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf("%c%c",219,219);
else
printf(" ");
printf(" ");
}
getch();
}
;‘贰’ 数控机床编程与操作考试题及答案
数控机床编程与操作考试题及答案
无论在学习或是工作中,只要有考核要求,就会有试题,试题是命题者按照一定的考核目的编写出来的。你所见过的试题是什么样的呢?下面是我收集整理的数控机床编程与操作考试题及答案,仅供参考,大家一起来看看吧。
一、填空题
1、在程序行中具有多个功能指令时可以按“ G 、 F 、 S 、 T 和 M ”顺序排列。
2、车削用量包括 背吃刀量 、 主轴转速 或 切削速度 和 进给速度 或 进给量 .
3、车削用刀具材料主要包括 高速钢 、 硬质合金 、 陶瓷 、立方氮化硼和人造金刚石等。
4、在完成该程序段其他指令后,M00指令使程序停在本段 状态,不执行下段。
5、按下控制面板上的循环启动键可取消M00 状态。
6、一般数控机床的控制面板上装有“任选停止” 按钮,按下此按钮,程序执行到M01指令时,程序即暂停。
7、 M02 指令表示加工程序全部结束。
8、M03指令使主轴 正转 ,M04指令使主轴 反转 ,M05指令使主轴 停转 。
9、M08指令使 切削液 开启, M09 指令使切削液停止供给。
10、 G00 指令使刀具从当前点快速移动到程序段中指定位置。
11、R方式编程时,圆弧的圆心角不大于180°时,R值为 正 ,大于180°时,R为 负 。
12、沿刀具的运动方向看,刀具在工件的左侧使用 G41 指令。在工件的右侧则使用 G42 指令。
二、判断题
1、G00指令的'动作速度是由机床厂家设定的,用户无法修改。(×)
2、使用单刀螺纹切削指令G33编制程序会导致程序段冗长。(√)
3、涂层硬质合金车刀比普通硬质合金车刀有更好的耐用性。(√)
4、适当地使用增量方式编程可以简化编程时的坐标值计算。(√)
5、在机夹刀片的型号中可以体现出刀片的形状。(√)
6、M03指令使主轴运动、进给运动、切削液供给等都停止,机床复位。(×)
7、M02指令必须编在最后一个程序段中。(√)
8、G90和G91指令属于非模态指令。(×)
9、使用硬质合金涂层刀片时,必须注意涂层并不能改善刀片基体的强度,应防止编程不当导致的碰撞,以免引起刀片损坏。(√)
10、进给速度的大小直接影响到表面粗糙度值和车削效率,因此应在保证表面粗糙度值的前提下,选择较低的进给速度。(×)
三、选择题
1、下列程序段中,(C)是正确的。
A G02 X50 Z100 F0.1
B G03 R5
C G01 X20 Z10 F100
2、数控车床是两轴联动控制的数控机床,它的编程坐标平面是(C)平面。
A XOY B YOZ C XOZ
3、 进给字F对( A )指令不起作用.
A G00 BG01 CG02
4、主要用于数控机床主轴的开、关,冷却液的开、关等辅助动作的代码是(B)。
A T代码 B M代码 C G代码
5、延时暂停使用(B)代码表示。
A M00 B G04 C G42
6、对程序段N0020 S500 M03 说法正确的是(A)。
A 指定主轴以500r/min的转速正转
B 指定主轴以 500r/min的转速反转
C 指定主轴以 500mm/r 的转速反转
7、(C)指令功能与M02指令类似。但此指令结束后,返回到程序顶部。
A M00 B M05 C M30
8、G01指令需指定进给量的值。若不指定,系统会按(C)速度动作。
A 默认 B 进给 C 缺省
9、用G33 指令完成一次螺纹切削动作必须具备(A)指令动作。
A 四个 B 两个 C 三个
10、化学气相沉积缩写字母为(C)
A VCD B DVD C CVD
四、名词解释
1、M00:
在完成该程序段其他指令后,M00指令使程序停留在本段状态,不执行下段。
2、转进给
主轴每转一转刀具移动多少毫米为单位的进给方式。
五、简答题
1、粗、精加工时车削用量的选择有什么区别?
答:对粗加工,应从零件的加工经济性来选择车削用量;对精加工,则应根据零件的加工精度,特别是表面粗糙度来选择车削用量。
2、使用恒线速度控制有何意义?
答:G96指令的功能就是指定切削变径表面时使用一样的切削线速度,从而使表面的粗糙度基本一致。
拓展:
数控机床发展前景
近年来,我国的数控机床无论从产品种类、技术水平、质量和产量上都取得高速发展,在一些关键技术方面也已取得重大突破。自从我国数控机床的技术发展到了成熟期以后,各个领域都开始了对于数控机床的广泛关注。然而,与快速发展的数控机床行业相比,我国从事数控机床行业的技能人才始终供不应求,据权威部门统计,当前我国制造业十大重点领域对人才需求量较大,预计到2020年,高档数控机床和机器人领域人才缺口为300万人。
如今,制造业对数控机床人才的需求大大增加,就业待遇优厚。很多企业反映,数控机床人才“一将难求”,因为抢手,数控机床人才的身价持续上涨,月收入都在1.5万元以上。据我了解,河北省邯郸市曲周县职教中心已经把数控机床专业作为重点发展专业,势必做强做大该专业,为中国制造输送一批批技能人才。
当下,数控机床作为工业4.0重要发展领域,已经成为主要工业国家重点竞争领域。中国数控机床产业在国家战略的支持下,近年来呈现出快速发展态势,技术追赶势头不可阻挡。在新一轮产业发展周期中,中国有望通过加大技术研发实现数控机床产业的弯道超车。因此,在产业发展大好的优势下,数控机床人才的就业前景将是一片光明。
高档数控机床发展前景
当前机床行业下游用户需求结构出现高端化发展态势,多个行业都将进行大范围、深层次的结构调整和升级改造,对于高质量、高技术水平机床产品需求迫切,总体上来说,中高档数控机床市场需求上升较快,用户需要更多高速、高精度、复合、柔性、多轴联动、智能、高刚度、大功率的数控机床,发展前景广阔。例如,汽车行业表现出生产大批量、多品种、车型更新快的发展趋势,新能源汽车发展加速,从而要求加工设备朝着精密、高效、智能化方向不断发展。在航空航天产业领域,随着民用飞机需求量的剧增以及军用飞机的跨代发展,新一代飞机朝着轻质化、高可靠性、长寿命、高隐身性、多构型、快速响应及低成本制造等方向发展,新一代技术急切需要更先进的加工装备来承载,航空制造装备朝着自动化、柔性化、数字化和智能化等方向发展。例如,在“两机专项”致力于突破的飞机发动机制造中,发动机叶片、整机机匣和叶盘等典型零件逐渐向尺寸大型化、型面复杂化、结构轻量化和制造精密化发展,尤其是高强度的高温耐热合金等新型轻质材料的大量应用,这些整体结构件的几何构型复杂且难加工,对大扭矩、高精度数控机床提出新的更高要求。燃气轮机的大型结构件和大型设备异地维修所需的便携性或可移动式多轴联动数控装备,这种用无固定基座、可重构拼组的小机床加工大型工件的加工方式对新型数控装备的结构设计、工艺规格和高能效加工技术提出更大挑战。
;‘叁’ C语言编程题
要输入的分数太多,我懒得手数,用2位随机数代替手输入,输入函数我单独写了,你需要调用就行了,详细看备注。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#definestuNum15//学生人数
#definescNum7//模块数
typedefstructstu//定义学生数据结构
{
intsid;//学生ID
intsc[scNum];//对应7个模块成绩
intsum;//总成绩
}STU;
voidinsertSTU(STU*stu);//输入15个学生的信息
voidinsertTest(STU*stu);//测试,用随机数代替输入,我懒得输入那么多成绩,你要手输,调用insertSTU替换该函数
voidprintfSTU(STU*stu);//按输入顺序打印15名学生7模块成绩及每个模块前三名的成绩
intmain()
{
STUstu[stuNum];//定义15个学生
//inti,j,sc;
srand(time(NULL));
insertTest(stu);//想手动输入这里改成insertSTU(stu)
printfSTU(stu);
return0;
}
voidprintfSTU(STU*stu)//按输入顺序打印15名学生7模块成绩及每个模块前三名信息及总分前三名信息
{
inti,j,k,sc;
STU*max[3],*sum[3],newstu;//max对应7个模块前3的学生结构指针sum对应总分前3学生结构指针
for(i=0;i<stuNum;i++)
{
printf("编号%02d的学生7模块成绩及总分分别为:",stu[i].sid);
for(j=0;j<scNum;j++)
{
sc=stu[i].sc[j];
printf("%02d",sc);
}
printf("%d
",stu[i].sum);
}
for(j=0;j<scNum;j++)
{
for(k=0;k<scNum;k++)
{
newstu.sc[k]=0;
newstu.sum=0;
}
max[0]=max[1]=max[2]=&newstu;
for(i=0;i<stuNum;i++)
{
if(stu[i].sc[j]>max[0]->sc[j])
max[0]=&(stu[i]);
elseif(stu[i].sc[j]>max[1]->sc[j])
max[1]=&(stu[i]);
elseif(stu[i].sc[j]>max[2]->sc[j])
max[2]=&(stu[i]);
}
printf("模块%02d前3名分别为:编号:%02d分数:%02d编号:%02d分数:%02d编号:%02d分数:%02d
",j+1,max[0]->sid,max[0]->sc[j],max[1]->sid,max[1]->sc[j],max[2]->sid,max[2]->sc[j]);
}
sum[0]=sum[1]=sum[2]=&newstu;
for(i=0;i<stuNum;i++)
{
if(stu[i].sum>sum[0]->sum)
sum[0]=&(stu[i]);
elseif(stu[i].sum>sum[1]->sum)
sum[1]=&(stu[i]);
elseif(stu[i].sum>sum[2]->sum)
sum[2]=&(stu[i]);
}
printf("总分前3名分别为:编号:%02d总分:%02d编号:%02d总分:%02d编号:%02d总分:%02d
",sum[0]->sid,sum[0]->sum,sum[1]->sid,sum[1]->sum,sum[2]->sid,sum[2]->sum);
}
voidinsertSTU(STU*stu)//输入15个学生的信息
{
inti,j,sc;
for(i=0;i<stuNum;i++)
{
stu[i].sid=i+1;
stu[i].sum=0;
printf("输入编号%d的学生的7个模块成绩:",i+1);
for(j=0;j<scNum;j++)
{
//scanf("%d",&sc);//我懒得输入那么多成绩,就用随机数代替,你要输入把这句恢复
sc=(int)(rand()%100);//用随即2位数代替输入,不需要就注释掉
stu[i].sc[j]=sc;
stu[i].sum=stu[i].sum+sc;
}
}
}
voidinsertTest(STU*stu)//测试用代替输入
{
inti,j,sc;
for(i=0;i<stuNum;i++)
{
stu[i].sid=i+1;
stu[i].sum=0;
for(j=0;j<scNum;j++)
{
sc=(int)(rand()%100);
stu[i].sc[j]=sc;
stu[i].sum=stu[i].sum+sc;
}
}
}