上机实践复习.docx
- 文档编号:24679858
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:5
- 大小:19.08KB
上机实践复习.docx
《上机实践复习.docx》由会员分享,可在线阅读,更多相关《上机实践复习.docx(5页珍藏版)》请在冰豆网上搜索。
上机实践复习
上机实践复习
一.数的距离差 给定一组正整数,其中的最大值和最小值分别为max和min,其中的一个数x到max和min的距离差D定义为 abs(abs(x-max)-abs(x-min))。
其中,abs()表示求一个数的绝对值 输入 输入第一行为整数n,剩余n行每行一个正整数。
输出 输出仅一行,它的值为使得距离差D最小的x。
样例输入531759 样例输出 提示 函数abs()定义在中例:
#include#include#defineN400intmain(){ inta[N],D[N]; inti,n,max,m,min,D_min;scanf(\for(i=0;i max=a[0]; for(i=1;i if(max max=a[i]; min=a[0]; for(i=1;i { if(min>a[i]) min=a[i];} for(i=0;i { D[i]=abs(abs(a[i]-max)-abs(a[i]-min)); } D_min=D[0];for(i=1;i if(D_min>D[i]){D_min=D[i]; m=a[i];}} printf(\} #include#include#defineN500intmain(){inta[N],n,i,m,p,r,s,t; return0; scanf(\for(i=0;i scanf(\ } p=m=a[0];for(i=1;i if(m>a[i]) m=a[i];if(p p=a[i];} s=abs(abs(a[0]-p)-abs(a[0]-m)); t=a[0]; for(i=1;ir) } printf(\return0; { s=r; t=a[i];} } 二、按位转换整数到英文单词 题目描述 请把输入整数的每位数字转换成英文。
如当输入1024时,输出:
one,zero,two,four输入 输入为一个整数 输出 按整数每一位输出其英文单词,单词间用逗号加空格分隔,单词小写字母组成。
样例输入20345样例输出 two,zero,three,four,five提示 注意:
大家要考虑数据为“0”的情况,此时如果取对0取对数会出错例:
#include#defineN200intmain(){intn,k,j,s; inta[N];scanf(\ j=0; s=0; while(n!
=0){ k=n;n=n/10; a[j]=k; } j++;s=s+j; for(j=s-1;j>0;j--){ switch(a[j]){ case0:
printf(\case1:
printf(\case2:
printf(\case3:
printf(\ case4:
printf(\ case5:
printf(\case6:
printf(\case7:
printf(\ case8:
printf(\ case9:
printf(\ } } switch(a[0]) { case0:
printf(\ case1:
printf(\case2:
printf(\ case3:
printf(\case4:
printf(\ case5:
printf(\ case6:
printf(\case7:
printf(\ case8:
printf(\ case9:
printf(\ } return0;} #include#defineN500intmain(){intm,i,a[N],n; scanf(\ i=0; if(m==0) printf(\ else while(m!
=0){ a[i]=m;i++;m=m/10; }n=i-1; for(i=n;i>=0;i--){if(i!
=0){ } switch(a[i]){case0:
printf(\ } case1:
printf(\case2:
printf(\case3:
printf(\case4:
printf(\case5:
printf(\case6:
printf(\case7:
printf(\case8:
printf(\case9:
printf(\ else{ switch(a[i]){ case0:
printf(\case1:
printf(\case2:
printf(\case3:
printf(\case4:
printf(\case5:
printf(\case6:
printf(\case7:
printf(\case8:
printf(\case9:
printf(\
} } } }return0; 三、将字符串中的小写字母转换成大写字母题目描述 给定一个字符串,将其中所有的小写字母转换成大写字母输入一个字符串 输出 将输入的字符串中所有小写字母转换成大写字母后的字符串样例输入 helloworld123Ha 样例输出 HELLOWORLD123HA例:
#include#defineN200intmain(){inti; charc,str[N]; gets(str);i=0; while(str[i]!
=‘\\0’){ if(str[i]>=‘a’&&str[i] str[i]=str[i]-32; } i++; } puts(str); return0;} 例 #include#include#defineN500intmain(){ chara[N];inti,n; scanf(\n=strlen(a);for(i=0;i if(a[i]>=‘a’&&a[i] a[i]=a[i]-32;} a[n]=‘\\0’;printf(\return0; } 四、最长最短单词 输入1行单词,空格和逗号都是单词间的间隔,试输出第1个最长的单词和第1个最短单词。
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
输入 一行单词,空格和逗号都是单词间的间隔输出 两行输出 第1行,第一个最长的单词第2行,第一个最短的单词样例输入 IamstudyingProgramminglanguageCinNanjingUniversityofInformationandTechnology 样例输出 Programming #include#include charstr[4000];charout[200][200];intlength[200];intmain(void){gets(str); inti,j=0,k=0,n=strlen(str);for(i=0;i if(str[i]==‘‘||str[i]==‘,’){ out[j][k]=‘\\0’; length[j]=strlen(out[j]);j++;k=0;continue;} out[j][k++]=str[i];} intmax=0,min=0;for(i=1;i if(length[max] if(length[min]>length[i])min=i;} puts(out[max]);puts(out[min]);return0;} 五、计算绩点 题目描述 学校对本科生的成绩施行平均学分绩点制。
将学生的实际考分根据不同的学科的不同学分按一定 的公式进行计算。
曾经使用的规定如下:
实际成绩绩点90-10085-89 82-84 78-81 75-77 72-74 68-71 64-67 60-63 60以下0 1.一门课程的学分绩点=该课绩点*该课学分2.总评绩点=所有学科绩点之和/所有课程学分之和现要求你编写程序求出某人A的总评绩点。
输入 第一行总的课程数n; 第二行相应课程的学分;第三行对应课程的实际得分;此处输入的所有数字均为整数。
输出 输出有一行,总评绩点,精确到小数点后2位小数。
样例输入5 43423 9188726956 样例输出 #include#includeintmain(){ intn,i; floata[10],c[10],b[10],sum=0,GPA,d;scanf(\ for(i=0;i scanf(\if(b[i]>=90) c[i]=;elseif(b[i]>=85) c[i]=;elseif(b[i]>=82) c[i]=; elseif(b[i]>=78) c[i]=; elseif(b[i]>=72) c[i]=; elseif(b[i]>=68) c[i]=; elseif(b[i]>=64) c[i]=;elseif(b[i]>=60) c[i]=;elseb[i]=0;} for(i=0;i GPA=sum/d; printf(\return0; } 六、按要求排序 输入 第一行为一个整数N(1 第二行为N个绝对值不超过10000的整数,表示需要排序的序列输出 输出N行,为N个整数按升序排序后的序列样例输入 6 100201681099样例输出
681099100201 提示 这N个数需要随机产生例:
#include#defineN1000intmain(){ inta[N];intn,i,j,temp;scanf(\for(i=0;i scanf(\ for(j=0;j for(i=0;i for(i=0;i {if(a[i]>a[i+1]){ } } temp=a[i];a[i]=a[i+1];a[i+1]=temp; } 例 #includeintmain(){inti,j,m,n,a[1000]; scanf(\for(i=0;i for(j=0;j for(i=0;i if(a[i]>a[i+1]){ } m=a[i];a[i]=a[i+1];a[i+1]=m; } for(i=0;i printf(\ return0;} 七、计算多项式的值 题目描述 多项式f(x)=ax3+bx2+cx+d 输入 输入仅一行,分别是x,及参数a、b、c、d的值,每个数都是双精度浮点数。
输出 输出也仅一行,f(x)的值,保留小数点后7位。
样例输入 223 样例输出 提示 使用printf(\实现保留小数点后7位。
#includeintmain(){ doublex,a,b,c,d,y; scanf(\y=a*x*x*x+b*x*x+c*x+d;printf(\return0;} 例#include doublef(doublex,doublea,doubleb,doublec,doubled);intmain(){ } doublex,a,b,c,d,e; scanf(\if(x==)printf(\else{ e=f(x,a,b,c,d);printf(\ } return0; doublef(doublex,doublea,doubleb,doublec,doubled){ } 八、计算两个分数的和 doublee,p=,g;inti; for(i=0;i p=p*x;} g=x*x; e=a*p+b*g+c*x+d;returne; 题目描述 输入两个分数,形式如1/2,计算它们的和,以分数形式输出 输入 第一行为第一个分数第二行为第二个分数 输出 两个分数的和 样例输入1/23/4 样例输出5/4 #includeintmain(){ intx,y,a,b,m,n,temp,r,p,t,z; scanf(\scanf(\ m=x*b+y*a;z=m;n=y*b;t=n; if(n { temp=n; n=m; m=temp; } while(m!
=0) { r=n%m; n=m; m=r; p=n; } printf(\} 九、登山 五一到了,NUIST-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。
同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。
队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?
输入 Line1:
N(2 输出 最多能浏览的景点数 样例输入 8 186186150200160130197220 样例输出4例 #includeintf(inta[1000],intn);intmain(){ return0; intn,a[1000],i,m;scanf(\for(i=0;i } { scanf(\} m=f(a,n); printf(\return0; intf(inta[1000],intn){ } inti,j=1,s,m,b[1000];for(m=n;m>0;m--){ for(i=1;i if(a[i]>a[i-1]){ j++;} for(i=m-1;i if(a[i] j++; } b[n-m]=j; j=1;} s=b[0];for(i=1;i if(s s=b[i]; 十、计算平均年龄例:
#include intmain(){ intn,i,sum,age;doublenum;scanf(\for(i=0,sum=0;i scanf(\sum+=age;} num=(double)sum/n;printf(\return0;} 例 #includeintmain(){ } 十一、数圈 以1为中心,用2,3,。
。
。
,n的数字围绕着中心输出一个数圈,若n=4 78910 61211 54312 16151413 intn,m,i;floatb,a=;scanf(\for(i=0;i a=a+m; b=a/n; printf(\return0; 输入 一个整数n 输出 一个数圈 样例输入 5 样例输出 21222324252078910196121118543121716151413 #include#defineN10intmain() { intnum[N][N]; intcircle=2,row,column,n,i=1,j;//circle为每转半圈的数字个数scanf(\ /*确定开始的那个1的位置*/if(n%2) row=column=n/2;else row=column=n/2-1; num[column][row]=i++;num[column][++row]=i++;while(circle while(j { /**当circle为奇偶数时,行的增减不一样**/ if(circle%2) num[--column][row]=i++; else num[++column][row]=i++; j++;} circle++;j=1; while(j if(circle%2) num[column][--row]=i++; else num[column][++row]=i++; j++;}} for(i=0;i for(j=0;j printf(\printf(\ } return0; } 十二、判断是否为闰年 #includeintmain(){ intyear,leap; scanf(\ if((year%4==0&&year0!
=0)||(year@0==0))leap=1;elseleap=0; if(leap)printf(\elseprintf(\ return0; } 十三、计算约数的和 给你一个数字求它的所有约数的和。
比如12,约数有1,2,3,4,6,12加起来是28 现在给你一个数字I。
(1 输入一个数字I 输出约数之和样例输入12 样例输出28 #includeintmain(){ } 十四、冒泡排序#include#defineN5 inti,m,sum; scanf(\for(i=1,sum=0;i if(m%i==0)} printf(\return0; sum+=i;
intmain(){ temp=a[i];a[i]=a[i+1];a[i+1]=temp; 30 #includeintmain(){inta,b,n; while(scanf(\{printf(\ } return0; } 十六、最大最小值#include#defineN100intmain(){intn,i,max,min;inta[N]; scanf(\ for(i=0;i { scanf(\} max=a[0];min=a[0];for(i=1;i }else{ min=a[i];} } printf(\ return0; } 十七、最大公约数与最小公倍数 #includeintmain() { intp,r,m,n,temp; printf(\scanf(\if(n temp=n; n=m; m=temp; } p=n*m; while(m!
=0) { r=n%m; n=m; m=r; } printf(\printf(\return0;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 实践 复习