c语言机试经典编程题(重点资料)!!!!!!
更新时间:2023-12-20 23:08:01 阅读量: 教育文库 文档下载
- 大一c语言经典编程题推荐度:
- 相关推荐
本学期《程序设计基础》课程实行上机考核,现将考核有关事项通知如下: (1) 考核时间:本学期最后一次上机时间为机试。
(2) 考核内容:主要是算法设计与实现。考题来自本学期布置的作业、例题
及一些补充的题目。
(3) 考试形式:机试前进入机房时,每人随机抽取一道题(同一个组的同学
保证不抽到同一题),然后上机编程,调试通过后报告监考人员审核,审核通过后将源程序拷贝到监考人员U盘上,然后可以离开机房。源程序文件明必须是“学号姓名.cpp”,如“2012216827王梓丞.cpp”。 (4) 考试要求:机试时考试规则同课堂考试一致,不允许带书、纸张等。不
能携带任何可用计算机处理的软件或数据(不允许任何私人携带的U盘、磁盘或计算器) ,不能携带任何类型的通讯工具,包括无线电接收器、移动电话。
(5) 考试成绩:本次机试成绩将在《程序设计基础》课程成绩中占25%的比
重。
(6) 其它有关事项由主考教师和监考人员负责处理。 附:考试题集
1. 学校曾经组织一次“程序设计大奖赛”,规定本学期“程序设计”课程的成绩可以因为在大奖赛上获奖而加5分,总分不超过100分。编程序,输入某同学的考试成绩,回答是否在竞赛中获奖,计算并输出该某同学的程序设计课成绩 。 #include
printf(\请输入考试成绩:\\n\scanf(\
printf(\请选择获奖情况:1 获奖;2 未获奖\\n\scanf(\switch (n){
case 1: m=m+5;break; case 2: m; } if(m>100) m=100;
printf(\你的最终成绩为:%d\\n\}
2. 编写一个程序,用户输入年份及月份两个数据,程序输出该月份的天数。(提示:对2月要考虑是否闰年,闰年年份要么能被4整除且不能被100整除,要么能被400整除,除此之外都不是闰年)。
#include
}
printf(\请输入年份 月份:\scanf(\
if(a==1||a==3||a==5||a==7||a==8||a==10||a==12)
printf(\这个月有31天\\n\
else{ }
if(a==2){ } else
printf(\这个月有30天\\n\
if((year%4==0)&&(year0!=0)||(year@0==0))
printf(\这个月有29天\\n\
else
printf(\这个月有28天\\n\
3. 求一元二次方程ax2+bx+c=0的根。(要考虑a、b、c三个系数不同的取值) #include
printf(\请输入一元二次方程的三个系数a,b,c:\\n\scanf(\if(a!=0){ d=b*b-4*a*c; if(d>0)
printf(\else if(d==0)
printf(\else
printf(\} else if(b!=0)
printf(\else if(c==0) printf(\else
printf(\矛盾\\n\}
4. 学校曾经组织一次“程序设计大奖赛”,规定本学期“程序设计”课程的成绩可以根据大奖赛的成绩适度加分。加分规则是:参赛者加5分,三等奖加15分,二等奖加20分,一等奖加30分,总分不超过100分。编程序,输入某同学的考试成绩,回答在竞赛中获奖等级,计算并输出该某同学的程序设计课成绩 。
#include
int a,b;
printf(\请输入你的考试成绩:\\n\scanf(\
printf(\请选择你程序设计情况:0 未参加 1 参赛 2 三等奖 3 二等奖 4 一等奖\\n\scanf(\switch(b){ case 0:break; case 1:a=a+5;break; case 2:a=a+15;break; case 3:a=a+20;break; case 4:a=a+30;} }
5. 高速公路每公里的收费标准按不同种类汽车如下: 小汽车( car ) 0.50 元 卡车( truck ) 1.00 元 大客车( bus ) 1.50 元
#include
printf(\请选择车辆类型:1 小汽车;2 卡车; 3 大客车\\n\scanf(\
printf(\请输入车辆行驶的公里数:\\n\scanf(\switch(b){
case 1:c=0.5*a;break; case 2:c=1.0*a;break; case 3:c=1.5*a; }
编程序,为某高速公路收费站计算各种车辆的收费额。 if(a>100)
a=100;
printf(\你的最终成绩为:%d\
printf(\收费额为:?元\ }
6. 设计一个模拟单步计算器的程序,设该计算器只能作加、减、乘、除运算。用户输入形如 m#n
的算式,其中m、n为运算数,#为运算符。(需考虑运算符不合法,及除数为0的情况)
#include
printf(\请输入运算式:m#n\\n\scanf(\
if((ch!='+')&&(ch!='-')&&(ch!='*')&&(ch!='/')) printf(\您输入的运算符不合法!\\n\else {switch(ch){
case '+':printf(\case '-':printf(\case '*':printf(\case '/':{if(n!=0) }
printf(\
else
printf(\分母为0无意义!\\n\
}
7. 编写程序,输入一个4位自然数n,判断n是否是降序数。降序数是指对于n=d1d2…dk
有:
d1≥d2≥…≥dk #include
int n,a,b,c,d;
printf(\请输入一个四位自然数:\\n\scanf(\a=n/1000; b=n00/100; c=n0/10; d=n;
if(a>b&&b>c&&c>d)
printf(\该四位数为降序数!\\n\else
printf(\该四位数不是降序数!\\n\}
8. 编写程序,输入一个5位自然数n,判断n是否对称数。对称数是指正序和反序读都相等的整数,如96769为对称数。 #include
printf(\请输入一个五位数:\\n\
scanf(\a=n/10000; b=n000/1000; c=n00/100; d=n0/10; e=n;
if((a==e)&&(b==d)) printf(\该五位数为对称数\else
printf(\该五位数不是对称数\ }
9. 编写程序,判断给定的3位数是否为Armstrong数。Armstrong数是指其值等于它每位数字立方和的数,如153就是一个Armstrong数。
#include
printf(\请输入一个三位数:\\n\scanf(\a=n/100; b=n0/10; c=n;
if(n==a*a*a+b*b*b+c*c*c) printf(\该三位数为armstrong数\else
printf(\该三位数不是armstrong数\ }
10. 编写程序,输入一个整数,判断它能否被3、5、7整数,并输出如下信息。 (1) 能同时被3、5、7整数。
(2) 能同时被两个数整数,并指明是被哪两个数整除。 (3) 能被一个数整数,并指明这是哪个数。 (4) 不能被所有3个数整除。
#include
11. 邮局寄包裹的费用是根据包裹的重量来收取的。一个重量为2kg或低于2kg的包裹收取3.25元。高于2kg的包裹,超出部分每千克收取1.05元,超出部分不足1kg按1kg计算。因此如果发件人发送重达5.63kg的包裹,就需要缴纳7.45元。编写程序,输入int x;
printf(\请输入一个整数x:\scanf(\
if((x%3==0)&&(x%5==0)&&(x%7==0))
printf(\能同时被3、5、7整数\\n\printf(\能同时被5、7整数\\n\printf(\能同时被3、7整数\\n\printf(\能同时被3、5整数\\n\printf(\能被7整数\\n\printf(\能被3整数\\n\printf(\能被5整数\\n\
printf(\不能被3、5、7整除\\n\if((x%3!=0)&&(x%5==0)&&(x%7==0)) if((x%3==0)&&(x%5!=0)&&(x%7==0)) if((x%3==0)&&(x%5==0)&&(x%7!=0)) if((x%3!=0)&&(x%5!=0)&&(x%7==0)) if((x%3==0)&&(x%5!=0)&&(x%7!=0)) if((x%3!=0)&&(x%5==0)&&(x%7!=0)) if((x%3!=0)&&(x%5!=0)&&(x%7!=0))
包裹的重量,计算并输出发件人须缴纳的费用。(笔记本调试不成功)
#include
printf(\请输入包裹的重量:\\n\scanf(\if(m<=2) n=3.25; else{ a=m/1; if(m-a==0) n=3.25+(a-2)*1.05; else
n=3.25+(a-1)*1.05; }
printf(\您需缴纳的费用为:%f元\}
12. 一个临时照顾孩子的人的收费标准是:18:00到21:30间每小时2元,21:30到午夜间每小时4元,18:00以前和午夜以后不照顾孩子。
编写程序,输入开始时间和结束时间,计算并输出某一个雇工的薪酬。程序应检查无效的开始和结束时间。
#include
printf(\请输入工作的起止时间:\\n\scanf(\if(n<=18||n>24||m<18||m>24) printf(\输入的时间无效!\\n\else{
if(m>=18&&n<=21.5) j=(n-m)*2; else
if(m<21.5&&n>21.5) j=(21.5-m)*2+(n-21.5)*4; else j=(n-m)*4;
printf(\您获得的钱数为%f元\\n\} }
13. 编写程序,按下述公式求自然对数底e的近似值。
1e?1??
i?1i!?
#include
r=1.0; while(r>eps){ e=e+r; n=n+1; r=r/n; }
printf(\}
14. 编写程序,统计以100位结束符的整数输入流中-1、0、1的出现次数并将其输出。
#include
printf(\请输入一个整数:\\n\scanf(\while (n!=100){ if(n==1) i++; if(n==0) j++; if(n==-1) k++;
printf(\请输入一个整数:\\n\scanf(\}
printf(\整数流中出现1 %d次\\n\printf(\整数流中出现0 %d次\\n\printf(\整数流中出现-1 %d次\\n\}
15. 编写程序,打印“99乘法表” 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 * 1 2 3 4 5 6 7 8
#include
for(i=1;i<10;i++){ printf(\for(j=1;j<=i;j++) printf(\printf(\}
printf(\for(i=1;i<=9;i++)
81 9 printf(\}
16. 编写程序,打印200以内的素数,要求每行输出10个数。
#include
for(i=2;i<200;i++){
flag=true;
for(j=i/2;j>=2;j--) if(i%j==0) flag=false; if(flag) {printf(\k++; }
if(k==0) printf(\} }
17. 编写程序,输出如下序列的前50项,此序列的第一项为0;第二项为1;以后的奇数项为其前两项之和;偶数项为其前两项之差。要求每行输出10个数。 #include
u=0; v=1;
printf(\for(k=3;k<=50;k++){ if(k%2==0) w=v-u; else w=u+v; printf(\if(k==0) printf(%u=v; v=w; } }
18. 编写程序,输入正整数N,计算r1!+r2!+…+rn!并输出。其中N=r1r2…rn。 #include
printf(\请输入正整数:\\n\scanf(\s=0; while(n!=0){ r=n; n=n/10;
p=1; u=1; while(u<=r){ p=p*u; u=u+1; } s=s+p; }
printf(\}
19. 完数问题:若有一数,其值等于它的因子之和,则该数称为完数。例如,6的因子为1、2、3,而6=1+2+3,故6是完数。编程输出1000之内的所有完数及其因子。
#include
for(i=2;i<1000;i++){ k=0;
for(j=i/2;j>=1;j--) if(i%j==0) k=k+j; if(k==i) {printf(\ printf(\因子为:\for(l=1;l<=k/2;l++) if(k%l==0)
printf(\printf(\} } }
20. 把一张1元钞票换成1分、2分和5分的硬币,每种至少有1枚,问有多少种换法?
#include
printf(\}
21. 斐波那契(Fibonacci)数列问题:Fibonacci数列递归定义为:
x0=0, x1=1,
xi+1=xi+xi-1, i=2,3,?
即从第二项开始,数列中的每一个元素等于前面两个元素之和。编程输出前20项Fibonacci数。(提示可以用递归或迭代两种方式编程) 答案:
#include
for(i=2;i<=20;i++) { a[0]=0; a[1]=1; a[i]=a[i-2]+a[i-1]; printf(\
} 另解:
#include \#include \void main() { int f1,f2,f3,i; f1=0,f2=1;
printf(\
printf(\ for(i=1;i<=18;i++) { f3=f1+f2; f1=f2; f2=f3;
printf(\}
printf(\}
22. 公鸡5元1只,母鸡3元1只,小鸡1元3只,花了100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只? #include
for(x=1;x<=20;x++) for(y=1;y<=33;y++) for(z=3;z<=99;z=z+3)
if(x+y+z==100&&5*x+3*y+z/3==100) printf(\公鸡 %d ;母鸡 %d ;小鸡 %d\\n\}
23. 编写程序,用循环语句控制打印如图所示的字符图形。 A B C D E F G H I
B C D E F G H I A C D E F G H I A B D E F G H I A B C E F G H I A B C D D E F G H I A B C C D E F G H I A B B C D E F G H I A A B C D E F G H I
#include
for(x='A';x<='E';x++) {for(y=x;y<='I';y++) printf(\for(y='A';y<=x-1;y++) printf(\printf(\}
for(x='D';x>='A';x--){ for(y=x;y<='I';y++) printf(\for(y='A';y<=x-1;y++) printf(\printf(\} }
24. 编写程序,打印如下图所示的图形
1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1
#include
for(m=1;m<=9;m++) printf(\printf(\for(n=9;n>=1;n--) printf(\}
25. 验证哥德巴赫猜想:任意一个大偶数都可以分解为两个素数之和。用户输入一个大于6的偶数,程序计算并输出分解结果。
26. 编写一个程序解决爱因斯坦台阶问题:有人走以台阶,若以每步走2级则最后剩1级;若每步走3级则最后剩2级;若以每步走4级则最后剩3级;若以每步走5级则最后剩4级;若以每步走6级则最后剩5级;若以每步走7级则最后刚好不剩。问台阶共
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 重点
- 语言
- 编程
- 经典
- 资料