计算机程序设计员试题及答案_第1页
计算机程序设计员试题及答案_第2页
计算机程序设计员试题及答案_第3页
计算机程序设计员试题及答案_第4页
计算机程序设计员试题及答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

注意事项考生考生答题不准超过此线地区姓名单位名称准考证号试题1、我国古代难题--百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏一,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?用PAD图描述解决办法。=1\*GB2(1)本题分值:20分=2\*GB2(2)考核时间:36min=3\*GB2(3)考核形式:笔试=4\*GB2(4)具体考核要求:我国古代难题--百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏一,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?用PAD图描述解决办法。试题2、编写加油站计费程序。=1\*GB2(1)本题分值:50分。=2\*GB2(2)考核时间:90min。=3\*GB2(3)考核形式:实操。=4\*GB2(4)具体考核要求:编写加油站计费程序。a) 程序界面如下:b) 选择好汽油种类,即可在窗口上方显示出该种类汽油的单价(90号4.43元/升,93号4.8元/升,97号5.03元/升)。c) 输入汽油数量,点击“计算”按钮即可计算出总价钱是多少,如选择打折则会计算出打折后的价钱。d) 点击“退出”按钮退出程序。e) 将“加油站计费程序”源程序上传到考场给出的ftp服务器上面。试题3、使用基本路径测试方法,为下列程序段设计测试用例。=1\*GB2(1)本题分值:30分=2\*GB2(2)考核时间:54min=3\*GB2(3)考核形式:笔试=4\*GB2(4)具体考核要求:使用基本路径测试方法,为下列程序段设计测试用例。voiddo(intX,intA,intB){if((A>1)&&(B=0))X=X/A;if((A=2)||(X>1))X=X+1;}画出程序的控制流图。计算程序的环形复杂度(导出程序基本路径集中的独立路径条数这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界)。导出基本路径集,确定程序的独立路径。根据 C)中的独立路径,设计测试用例的输入数据和预期输出。f)

职业技能鉴定国家题库计算机程序设计员国家职业资格四级理论知识试卷答案一、单项选择题(第1题~第160题。选择一个正确的答案,将相应的字母填入题内的括号中。每题0.5分,满分80分。)1.D2.C3.D4.A5.A6.A7.A8.A9.C10.C11.A12.A13.C14.C15.A16.C17.D18.B19.B20.B21.A22.B23.B24.A25.B26.D27.B28.A29.B30.C31.C32.A33.A34.C35.A36.B37.B38.D39.C40.B41.B42.D43.B44.C45.C46.D47.C48.B49.C50.A51.D52.B53.A54.D55.B56.B57.D58.C59.D60.A61.A62.C63.D64.D65.A66.C67.A68.C69.D70.D71.D72.A73.D74.D75.D76.B77.C78.D79.D80.C81.D82.D83.B84.B85.C86.D87.D88.A89.C90.B91.A92.B93.B94.D95.D96.B97.B98.C99.C100.C101.C102.B103.D104.D105.A106.D107.D108.D109.C110.D111.D112.D113.B114.B115.A116.B117.A118.C119.D120.D121.B122.D123.C124.C125.A126.C127.C128.A129.D130.C131.A132.D133.D134.C135.C136.C137.D138.C139.D140.D141.C142.B143.D144.D145.D146.D147.D148.C149.B150.D151.D152.D153.B154.C155.D156.C157.C158.C159.D160.D二、判断题(第161题~第200题。将判断结果填入括号中。正确的填“√”,错误的填“×”。每题0.5分,满分20分。)161.×162.×163.×164.×165.×166.×167.√168.×169.×170.×171.√172.×173.√174.×175.×176.×177.×178.√179.√180.√181.×182.√183.√184.×185.√186.√187.×188.×189.√190.×191.×192.×193.√194.×195.×196.×197.×198.√199.√200.×计算机程序设计基础(C语言)编程练习题及参考答案1.输入2个整数,求两数的平方和并输出。#include<stdio.h>main(){intta,b,s;printf("pleaseinputa,b:\n");scanf("%d%d”,&a,&b); s=a*a+b*b;printf("theresultis%d\n",s); }2.输入一个圆半径(r)当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。#include<stdio.h>#definePI3.14<stdio.h>main(){floatr,s,l;printf("pleaseinputr:\n");scanf("%f”,&r); if(r>=0) {s=pi*r*r;l=2*i*r; printf("theareais%f\n",s); printf("thecircumferenceis%f\n",l);}elseprintf("inputerror!\n");}3、函数y=f(x)可表示为:2x+1(x<0)y=0(x=0)2x-1(x>0)编程实现输入一个x值,输出y值。main(){intx,y;scanf(“%d”,&x);If(x<0)y=2*x+1;If(x>0)y=2*x-1;If(x==0)y=0;printf(“%d”,y);}4、编写一个程序,从4个整数中找出最小的数,并显示此数。main(){inta,b,c,d,t;scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}printf(“min=%d\n”,a);}5.有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值。main(){intx,y;scanf("%d",&x);if(x<0)y=1;elseif(x==0)y=5;elsey=3;printf("x=%d,y=%d\n",x,y);}6.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)main(){floatmax(floatx,floaty);floata,b,m;scanf("%f,%f",&a,&b);m=max(a,b);printf("Maxis%f\n",m);}floatmax(floatx,floaty){floattemp;if(x<y){temp=x;x=y;y=temp;}return(x);}7、从键盘输入你和你朋友的年龄,编成判断谁的年龄最大,并打印最大者的年龄。#include<stdio.h>main(){ intyourAge,hisAge; printf("Pleaseenteryourage:"); scanf("%d",&yourAge);/*输入你的年龄yourAge*/ printf("Pleaseenteryourfriend'sage:"); scanf("%d",&hisAge);/*输入你朋友的年龄hisAge*/ if(yourAge>=hisAge) { printf("Youareolder!Yourageis=%d\n",yourAge); } if(hisAge>yourAge) { printf("Yourfriendisolder!HisAgeageis=%d\n",hisAge); }}8、键盘输入2个加数,再输入答案,如果正确,显示“right”,否则显示“error”#include“stdio.h”main(){inta,b,c;printf(“pleaseinputaandb\n”);scanf(%d,%d”,&a,&b);printf(“pleaseinputtheanswerfora+b\n”);scanf(%d”,&c);if(c==a+b)printf(“right\n”);elseprintf(“error\n”);}9.编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:要求当输入每月上网小时数,显示该月总的上网费用(6分)main(){inthour;floatfee;printf(“pleaseinputhour:\n”);scanf(“%d”,&hour);if(hour<=10)fee=30;elseif(hour>=10&&hour<=50)fee=3*hour;elsefee=hour*2.5;printf(“Thetotalfeeis%f”,fee);}10.神州行用户无月租费,话费每分钟元,全球通用户月租费50元,话费每分钟0.4元。输入一个月的通话时间,分别计算出两种方式的费用,判断哪一种合适。main(){floata,x,y;printf(“\n请输入您的话费:”);scanf(“%f,”,&a);x=0.6*a;y=50+0.4*a;printf(“神州行话费为:%f\n”,x);printf(“全球通话费为:%f\n”,y);if(x>=y)printf(“建议使用全球通”);elseprintf(“建议使用神州行);}11.个人所得税计算,应纳税款的计算公式如下:收入税率收入<=1000元部分0%2000元>=收入>1000元的部分5%3000元>=收入>2000元的部分10%6000元>=收入>3000元的部分15%收入>6000元的部分20%输入某人的收入,计算出应纳税额及实际得到的报酬。(7分)(如需连续计算多个人的纳税情况,直到输入负数为止,程序应如何改进?试写出程序)#include“stdio.h”main(){intgrade;floatincome,tax,money;printf(“pleaseinputyourincome\n”);scanf(“%f”,&income);if(income<0)printf(“theinputiserror”);else{grade=(int)income/1000;switch(grade){case0:tax=0;break;case1:tax=(income-1000)*0.05;break;case2:tax=50+(income-2000)*0.1;break;case3:case4:case5:tax=150+(income-3000)*0.15;break;default:tax=600+(income-6000)*0.2;}money=income-tax;printf(“\ntax=%f,money=%f”,tax,money);}}12.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。#include<stdio.h>main(){ intdata; chargrade; printf("Pleaseenterthescore:"); scanf("%d”,&data); switch(data/10) {case10:case9:grade=’A’;break; case8:grade=’B’; break; case7:grade=’C’; break;case6:grade=’D’; break; default:grade=’E’; }printf("thegradeis%c”,grade);}*13.编程设计一个简单的计算器程序。从键盘输入2个操作数,1个运算符,当运算符为加(+)、减(-)、乘(*)、除(/)时,输出计算结果#include<stdio.h>main(){intdata1,data2;/*定义两个操作符*/ charop;/*定义运算符*/ printf("Pleaseentertheexpression:"); scanf("%d%c%d",&data1,&op,&data2);/*输入运算表达式*/ switch(op)/*根据输入的运算符确定要执行的运算*/ {case'+':/*处理加法*/ printf("%d+%d=%d\n",data1,data2,data1+data2); break; case'-':/*处理减法*/ printf("%d-%d=%d\n",data1,data2,data1-data2); break; case'*':/*处理乘法*/ printf("%d*%d=%d\n",data1,data2,data1*data2); break; case'/':/*处理除法*/ if(0==data2)/*为避免出现溢出错误,检验除数是否为0*/ printf("Divisionbyzero!\n"); else printf("%d/%d=%d\n",data1,data2,data1/data2); break; default: printf("Unknownoperator!\n"); }}14.从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。main(){inta[10],i,p=0,n=0,z=0;printf(“pleaseinputnumber”);for(i=0;i<10;i++){scanf(“%d,”,&a[i]);if(a[i]>0)p++;elseif(a[i]<0)n++;elsez++}printf(“正数:%5d,负数:%5d,零:%5d\n”,p,n,z);}}15、编程序实现求1-200之间的所有数的乘积并输出。#include<stdio.h>main(){inti,sum=1for(i=1;i<200i=i+1)sum=sum*i;printf(“thesumofoddis:%d”,sum);}16.从键盘上输入10个数,求其平均值。main(){ inta[10],i,s=0; floatave;; for(i=0;i<10;i++)scanf(“%d”,&a[i]);for(i=0;i<10;i++)sum+=a[i];ave=(float)sum/10; printf("ave=%f\n",ave);}17、编程序实现求1-1000之间的所有奇数的和并输出。#include<stdio.h>main(){inti,sum=0;for(i=1;i<1000;i=i+2)sum=sum+i;printf(“thesumofoddis:%d”,sum);}18.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13……编程求这个序列的前20项之和。main(){inti,t,n=20;floata=2,b=1,s=0;for(i=1;i<=n;i++){s=s+a/b;t=a;a=a+b;b=t;}printf("sum=%",s);}19.用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。main(){floata[5],i;floats=0;for(i=0;i<5;i++)scanf(“%f”,&a[i]);for(i=0;i<5;I++)s=s+a[i];printf(“result=%f”,s/5);}*20、用循环的方法构造一个5行5列的二维数组,使主对角线上的变量为1,其它为0,并将数组中所有项按行按列显示出来。main(){inta[5][5],i,j,s=0;for(i=0;I<5;i++)for(j=0;j<5;j++)if(i==j)a[i][j]=1;elsea[i][j]=0;for(i=0;i<5;i++)for(j=0;j<5;j++){if(j==0)printf(“\n”);printf(“%d”,a[i][j]);}}21.求一个3×3矩阵对角线元素之和。从键盘输入矩阵元素的值并输出和的值.main(){inta[3][3],sum=0;inti,j;printf("Enterdata:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d",sum);}22.输入n的值,n代表行数,输出如图所示的图形。(6分)****************(此图为n=4时的输出结果)#include<stdio.h>main(){inti,j,k; for(i=1;i<=4;i++)/*控制行数*/ {for(k=1;k<=(2*i-1);k++)/*控制每行输出的*号个数*/ {printf("*"); } printf("\n"); }}/*输出一行后换行*/23、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。(提示:用数组存放成绩数据)#include<stdio.h>#defineM30main(){floatscore[M],max,min,aver;inti;printf(“pleaseinputscore:\n”);for(i=0;i<M;i++)scanf(“%f”,&score[i]);max=score[0];min=score[0];aver=score[0];for(i=1;i<M;i++){if(max<score[i])max=score[i];if(min>score[i])min=score[i];aver+=score[i];}printf(“max=%f,min=%f,aver=%f”,max,min,aver/M);}24.从键盘输入某班学生某门课的成绩及其学号(班级人数最多40人,具体人数由键盘输入),输出该班最高分和最低分及其学生学号;并输出该班该课程的总分和平均分。请编写程序。#include<stdio.h>#defineARR_SIZE40main(){floatscore[ARR_SIZE],maxScore,minScore,sum; intn,i; longmaxNum,minNum,num[ARR_SIZE]; printf("Pleaseentertotalnumber:"); scanf("%d",&n); printf("Pleaseenterthenumberandscore:\n"); for(i=0;i<n;i++) scanf("%ld%f",&num[i],&score[i]); maxScore=score[0];minScore=score[0]; maxNum=num[0];minNum=num[0];sum=score[0]; for(i=1;i<n;i++) { if(score[i]>maxScore) { maxScore=score[i]; maxNum=num[i]; }elseif(score[i]<minScore){minScore=score[i]; minNum=num[i];} sum=sum+score[i];} printf("maxScore=%.0f,maxNum=%ld\n",maxScore,maxNum);printf("minScore=%.0f,minNum=%ld\n",minScore,minNum);printf("sum=%.1f,average=%.1f\n",sum,sum/n);}*25.将一个有5个元素的数组中的值(整数)按逆序重新存放。例:原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8defineN5main(){inta[N],I,temp;printf(“enterarraya:\n”);for(I=0;I<N;I++)scanf(“%d”,$a[i]);for(I=0;I<N;I++){temp=a[i];a[i]=a[N-I-1];a[N-I-1]=temp;}printf(“\nNow,arraya:\n”);for(I=0;I<N;I++)printf(“%4d”,a[i]);printf(“\n”);}*26.从键盘上输入一个2*3的矩阵,将其转置后形成3*2的矩阵输出。main(){inta[2][3],b[3][2],i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);for(i=0;i<3;i++)for(j=0;j<2;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%5d",b[i][j]);printf("\n”);}}*27.编写两个函数分别求两个整数的最小公倍数和最大公约数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。#include"stdio.h"mingb(x,y)intx,y;{intz,i,t;z=1;i=1;if(x>y){t=x;x=y;y=t;}while(z<=x*y){z=i*y;if((z%x==0)&&(z%y==0))break;i++;}return(z);}maxgy(x,y)intx,y;{intz,t;if(x>y){t=x;x=y;y=t;}z=x;while(z>1){if((x%z==0)&&(y%z==0))break;z--;}return(z);}main(){inta,b,c;charch;printf("\nmingb(1)/maxgy(2)?");ch=getchar();printf("\ninput:");scanf("%d,%d",&a,&b);if(ch=='1')c=mingb(a,b);elseif(ch='2')c=maxgy(a,b);printf("theresultis%d",c);getch();}*28.输入一个3*3矩阵,求出其转置矩阵,并求出两个矩阵的和.main(){inta[3][3];intb[3][3];intc[3][3]inti,j;printf(“pleaseinput6numbers!”)for(i=1;i<3;i++)for(j=1;j<3;j++){scanf(“%d”,&a[i][j]);b[j][i]=a[i][j];}for(i=1;i<3;i++)for(j=1;j<3;j++){c[i][j]=a[i][j]+b[i][j];}for(i=1;i<3;i++)for(j=1;j<3;j++){printf(“%d”,a[i][j]);}}29、从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存放成绩数据)main(){inta[10];inti,j,temp;printf("inputscore:\n");for(i=0;i<10;i++) scanf("%d",&a[i]);printf("\n");for(i=1;i<10;i++) for(j=0;j<9;j++) if(a[j]<a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }for(i=0;i<10;i++)printf("%d,",a[i]);}30.定义一个5行3列的数组,从键盘输入各数组元素的值,计算各数组元素之和。#include<stdio.h>main(){ inti,j,a[5][3]; printf(“Enterdata:\n”);for(i=0;i<5;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);for(i=0;i<5;i++)for(j=0;j<3;j++)sum=sum+a[i][j];printf(“sum=%5d\n”,sum);}31、编写程序,交换两个数组中的对应元素。#include<stdio.h>#defineN20main(){inta[N],b[N],i,j,temp;printf(“pleaseinputa:\n”);for(i=0;i<N;i++)scanf(“%d”,&a[i]);printf(“pleaseinputb:\n”);for(j=0;j<N;j++)scanf(“%d”,&b[i]);for(i=0;i<N;i++){temp=a[i];a[i]=b[i];b[i]=temp;}for(j=0;j<N;j++)printf(“%d,”,a[j]);printf(“\n”);for(j=0;j<N;j++)printf(“%d,”,b[j]);}*32、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。#include<stdio.h>main(){inta[4][3],i,j,min,m,n;printf("Pleaseenterdata:");for(i=0;i<4;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);min=a[0][0];m=0;n=0;for(i=0;i<4;i++)for(j=0;j<3;j++)if(a[i][j]<min){min=a[i][j];m=i;n=j;}printf("theminis%d\n,min);printf("posionis%d%d\n,m,n);}33.编程实现如下功能:从键盘输入一行字符,统计其中大写英文字符,小写英文字符和其他字符的个数。#include<stdio.h>#include<string.h>#defineARR_SIZE80main(){ charstr[ARR_SIZE]; intlen,i,letter=0,digit=0,space=0,others=0;printf("Pleaseinputastring:");gets(str);len=strlen(str); for(i=0;i<len;i++){if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z') letter++;/*统计英文字符*/elseif(str[i]>='0'&&str[i]<='9')digit++;/*统计数字字符*/else others++;/*统计其它字符的个数*/} printf("Englishcharacter:%d\n",letter); printf("digitcharacter:%d\n",digit); printf("othercharacter:%d\n",others);}*34.编程实现如下功能:1)在主函数中,实现从键盘输入10名学生某门课的成绩,保存在一维数组中;调用排序函数;对排序后的数组中的元素按从高到低打印输出。2)编写排序函数,使用数组名做函数参数,实现对该成绩的排序。#include<stdio.h>#defineARR_SIZE40voidSort(floatscore[],longnum[],intn);main(){floatscore[ARR_SIZE]; intn,i; longnum[ARR_SIZE]; printf("Pleaseentertotalnumber:"); scanf("%d",&n); printf("Pleaseenterthenumberandscore:\n"); for(i=0;i<n;i++) { scanf("%ld%f",&num[i],&score[i]); } Sort(score,num,n); printf("Sortedresults:\n"); for(i=0;i<n;i++) { printf("%ld\t%\n",num[i],score[i]); }}voidSort(floatscore[],longnum[],intn){inti,j; floattemp1; longtemp2; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(score[j]>score[i]) { temp1=score[j]; score[j]=score[i]; score[i]=temp1; /*交换学号*/ temp2=num[j]; num[j]=num[i]; num[i]=temp2; } } }}*35.编程实现如下功能:实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。#include<stdio.h>#include<string.h>#defineARR_SIZE80voidMyStrcat(chardstStr[],charsrcStr[]);main(){chars[ARR_SIZE],t[ARR_SIZE]; printf("Pleaseentersourcestring:"); gets(s); printf("Pleaseenterdestinationstring:"); gets(t); MyStrcat(s,t); printf("Theconcatenatestringis:"); puts(s);}voidMyStrcat(chardstStr[],charsrcStr[]){inti=0,j;while(dstStr[i]!='\0') { i++;}for(j=0;srcStr[j]!='\0';j++,i++){ dstStr[i]=srcStr[j];} dstStr[i]='\0';}*36、猜数游戏。系统随机产生一个整数,通过键盘输入数据猜数,猜对为止,并要求统计猜的次数。注:rand()函数可以产生0~32767间的正整数,程序中需包含stdli。#include<stdio.h>#include<stdlib.h>main(){ intmagic; intguess; intcounter; magic=rand()%100+1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论