上机实践复习.docx

上传人:b****4 文档编号:11342408 上传时间:2023-05-31 格式:DOCX 页数:5 大小:19.08KB
下载 相关 举报
上机实践复习.docx_第1页
第1页 / 共5页
上机实践复习.docx_第2页
第2页 / 共5页
上机实践复习.docx_第3页
第3页 / 共5页
上机实践复习.docx_第4页
第4页 / 共5页
上机实践复习.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

上机实践复习.docx

《上机实践复习.docx》由会员分享,可在线阅读,更多相关《上机实践复习.docx(5页珍藏版)》请在冰点文库上搜索。

上机实践复习.docx

上机实践复习

上机实践复习

              一.数的距离差    给定一组正整数,其中的最大值和最小值分别为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;}  

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2