微机上机训练题及答案.doc_第1页
微机上机训练题及答案.doc_第2页
微机上机训练题及答案.doc_第3页
微机上机训练题及答案.doc_第4页
微机上机训练题及答案.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

微机上机实验上机试题1、 求s=a+aa+aaa+aaaa+aa,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。#includevoid main() int i,a,b=0,n;long sum=0;printf( 请输入a及a的位数n:);scanf(%5d%5d,&a,&n);printf(a=%3d,n=%5dn,a,n); for(i=0;in;i+)b=b*10+a; sum=sum+b;printf(sum=%dn,sum);2、 请编写函数void fun(int x,int pp,int *n)。它的功能是:求出能整除x且不是偶数的各整数,并按从大到小的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 #includevoid main()void fun(); /*申明一个空函数fun*/fun();void fun() /*定义fun函数*/int x,pp100,n=0,i;printf(please input X:);scanf(%d,&x);for(i=x/2;i0;i-) if(x%i=0 & i%2!=0)ppn=i;n+;printf(array pp:); for(i=0;in;i+) printf(%3d,ppi);printf(nn=%dn,n);3、 将一个数组逆序输出#includevoid main()int a6=5,8,12,7,15,9,i,b6;printf(array a is:);for(i=0;i6;i+)printf(%3d,ai);b5-i=ai; /*输出数组a并将数组a逆序赋给数组b*/printf(nthe changed array is:);for(i=0;i6;i+)printf(%3d,bi); /*输出数组b*/printf(n);4、 编写程序。10个学生,每个学生3门课程成绩,求平均分与前五名。(请使用结构体)#define N 10#includestruct student char num6; char name8; int score4; float avr; stuN;/*定义结构体*/main() int i,j,sum,dN;float c5=0; for(i=0;iN;i+) printf(Input information of student %d:n,i+1); printf(NO.:); scanf(%s,&stui.num); printf(name); scanf(%s,&); for(j=0;j3;j+) printf(score %d:,j+1); scanf(%d, &stui.scorej); for(i=0;iN;i+)sum=0; for(j=0;j3;j+) sum+=stui.scorej; stui.avr=sum/3.0;/*求出三科平均分数*/ printf(NO. name score1 score2 score3 averagen);for(i=0;iN;i+) printf(%5s%10s,stui.num, ); for(j=0;j3;j+) printf(%9d,stui.scorej); printf(%8.2fn,stui.avr);printf(前五名分别是n);for(j=0;j5;j+)for(i=0;iN;i+)if(cj=stui.avr)cj=stui.avr;/*求出最大项并赋值给数组c*/for(i=0;iN;i+)if(cj=stui.avr)dj=i; stui.avr=-1;/*求出最大项对应位置并排除已经找出的数据*/printf(%sn,studj.num);/*输出前五名的学号*/*找出前五名*/5、 从键盘输入字符,逐个存到磁盘文件中,直到输入”#”为止#include#includevoid main()FILE *fp;char ch,filename10;scanf(%s,filename10);if(fp=fopen(filename,w)=NULL)printf(cannot open filen);exit(0);ch=getchar();ch=getchar( );while(ch!=#)fputc(ch,fp);putchar(ch);ch=getchar();putchar(10);fclose(fp);6、 定义一个带参数的宏,使两个参数值互换,并写出程序,输入两个数作为使用宏时的实参,输出已经交换的两个值。#include#de#include#define F(A,B) t=B;B=A;A=t /*带参数的宏定义*/void main()int x,y,t;printf(please input a and b:n);scanf(%d%d,&x,&y); printf(x=%3d,y=%3dn,x,y);F(x,y);printf(x=%3d,y=%3dn,x,y);7、 编写一个函数fun。它的功能是:根据以下公式求P值,结果由函数值返回。m与n为两个正整数,且要求mn。P=m!/n!(m-n)!#includevoid main()float fun(int x,int y); /*申明一个fun函数*/unsigned int m,n;float p;printf(请输入m和n:);scanf(%d%d,&m,&n);if(m=n) printf(error!n);else printf(m=%3d,n=%3dn,m,n);p=fun(m,n);printf(P=m!/n!(m-n)!=%fn,p);float fun(int x,int y) /定义fun函数*/int i,a=1,b=1,c=1;for(i=1;i=x;i+)a=i*a;for(i=1;i=y;i+)b=b*i;for(i=1;i=(x-y);i+)c=c*i; return(a/(b*c);8、 某企业发放奖金是根据营业额提成计算的。营业额低于或等于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%。编写程序,输入某月营业额,计算应发奖金金额。#includevoid main()int a,b;float c;scanf(%d,&a);printf(该月营业额为(万):%5d万n,a); if(a/10=10) b=1;else b=a/10;switch(b)case 0: c=a*0.1;break;case 1: c=1+(a-10)*0.075;break;case 2: case 3: c=1.75+(a-20)*0.05;break;case 4:case 5: c=2.75+(a-40)*0.03;break;case 6:case 7:case 8:case 9: c=3.35+(a-60)*0.15;break;case 10:c=3.95+(a-100)*0.01;break;printf(该月奖金为:%f万n,c);9、 编写程序,输入圆的半径,分别计算圆的周长、面积和球的体积#include#define PI 3.1415926#define CIRCLE(R,L,S,V) L=2*PI*R; S=PI*R*R; V=3.0/4*PI*R*R*Rvoid main()float r,l,s,v;printf(请输入r:);scanf(%f,&r);CIRCLE(r,l,s,v);printf(r=%8f,l=%8f,s=%8f,v=%8fn,r,l,s,v);。10、编写函数,根据下面公式求X值,要求最小项小于0.0005时停止。X/2=1+1/3+2/3*5+1*2*3/3*5*7+1*2*3*4/3*5*7*9+.+(1*2*3*.*n)/3*5*7*.*(2n+1)#includevoid main()float x=1.0,a,b=1.0,i; for(i=1.0;b=0.0005;i+)a=i/(2*i+1);b=b*a;x=x+b;printf(X=%fn”,x);11、存10个数到一个数组,输出最大值和最小值#includevoid main()int a10,i;printf(please input array a:n);for(i=0;i10;i+)scanf(%d,&ai); /*输入数组a*/int max=a0,min=a0;for(i=0;imax) max=ai;if(aimin) min=ai; /*寻找最大值和最小值*/printf(max=%5d,min=%5dn,max,min);12、输入四个学生数据,并存储到磁盘文件中。学生数据包括:姓名、性别、年龄和学号#include#define SIZE 4struct student_typechar name10;char sex10;int age;char number10;studSIZE;void save()FILE *fp;int i;if(fp=fopen(stud_list,wb)=NULL)printf(cannot open filen); return;for(i=0;iSIZE;i+)if(fwrite(&studi,sizeof(struct student_type),1,fp)!=1)printf(file write errorn);fclose(fp);void main()int i;for(i=0;iSIZE;i+)scanf(%s%s%d%s,,studi.sex,&studi.number);save();13、用函数指针变量作为参数,求最大值、最小值以及最大值与最小值的和#includevoid main()int max(int,int);int min(int,int);int add(int,int);void f(int,int,int(*fun)(int,int);/*申明4个函数,其中*fun为指向函数的指针*/int a,b;printf(enter a and b:);scanf(%d,%d,&a,&b); printf(max=);f(a,b,max);printf(min=);f(a,b,min);printf(add=);f(a,b,add); /*以下分别定义4个函数*/int max(int x,int y)int z;if(xy) z=x;else z=y;return(z);int min(int x,int y)int z;if(xy) z=x;else z=y;return(z);int add(int x,int y)int z;z=x+y;return(z);void f(int x,int y,int(*fun)(int,int)int z;z=(*fun)(x,y); printf(%dn,z);14、两乒乓球球队进行单打比赛,各出3人。甲队队员a、b、c,乙队队员x、y、z。已经抽签完成,某人向队员打听比赛对阵名单。a说他不和x比,c说不和x、z比,编程找出对阵名单。#includevoid main()char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/for(i=x;i=z;i+)for(j=x;j=z;j+)if(i!=j)for(k=x;k=z;k+)if(i!=k&j!=k)if(i!=x&k!=x&k!=z)printf(对阵名单na-%cnb-%cnc-%cn,i,j,k); 15、出租车租赁公司最近新出一份收费标准:两公里以内为起步价12元,不需交付燃油费;超过2公里,但是少于5公里时,燃油费1元,超出部分每公里收费2.5元;超过5公里,少于10公里时,燃油费2元,超出5公里部分每公里收费3元;10公里到20公里内,燃油费4元,超出10公里部分每公里收费3.5元;20公里后,每公里收费4元,燃油费为超出20公里部分再乘以0.1元。编程计算某人坐该公司出租车的价格。#includevoid main()int a;float b;printf(请输入路程(公里):);scanf(%d,&a); if(a2 & a5 & a10 & a20) b=12+1+2.5*3+2+3*5+4+3.5*10+(a-20)*4+(a-20)*0.1;printf(车费:%f元n,b);16、编写函数,参数为数组a以及函数个数n,求出1到1000间既能够被7整除,又能够被5整除,但是不能被3整除的所有数,将这些数放入数组a中,n返回这些数的个数。#includevoid main()int f();int num;num=f();printf(符合要求的整数个数num=%dn,num);int f()int i,j=0,n=0,a100;for(i=1;i=1000;i+)if(i%7=0 & i%5=0 &i%3!=0)aj=i;n+;return(n);17、新华书店最近新买进了一批图书,为了便于管理,需要编写程序录入书名、出版社、价格信息,并且能够根据用户需要查询的书名,显示相应的出版社和价格信息,若没有该书,则返回相应信息,请编写该程序。#include#include#define SIZE 2void main()struct bookchar name20;char publish20;int price;bookSIZE;/*定义一个结构体*/int i,j=0;char str20;printf(请录入图书信息:n);for(i=0;iSIZE;i+)scanf(%s%s%d,,booki.publish,&booki.price); /*以上for循环录入图书信息*/printf(please input the book name:);scanf(%s,str);/*输入要找的图书名*/for(i=0;iSIZE;i+)if(strcmp(,str)=0) printf(name:%s,publish:%s,price:%dn,,booki.publish,booki.price); j+;if(j=0) printf(there doesnot have this book!n);/*输出查询结果*/18、将一个数组的行元素与列元素互换,存入另一个数组中,如#includevoid main()int a23=1,2,3,4,5,6,b32,i,j;for(i

温馨提示

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

评论

0/150

提交评论