C语言实验指导书_第1页
C语言实验指导书_第2页
C语言实验指导书_第3页
C语言实验指导书_第4页
C语言实验指导书_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

C语言实验指导书C语言实验指导书C语言实验指导书C语言实验指导书编制仅供参考审核批准生效日期地址:电话:传真:邮编:假设公民的个人所得税为工资总额的5%,编程输入一个公民的工资总额,计算其应缴纳的个人所得税和其扣除所得税后的实际工资,并输出。#include<>voidmain(){floata,b,c;scanf("%f",&a);b=a*;c=a-b;printf("b=%\nc=%",b,c);}2.利用格式控制符输出以下图形。*************************#include<>voidmain(){printf("*\n***\n*****\n*******\n*********\n");}3.从键盘上输入圆的半径,圆柱的高,求圆的周长,圆球的表面积、圆球的体积、圆柱体积。用scanf输入,用printf输出。输出时有文字说明,取小数点后2位数字。请编程序。#include<>voidmain(){floatr,h,c,s,v1,v2;scanf("%f%f",&r,&h);c=2**r;s=4**r*r;v1=4/3**r*r*r;v2=s*h;printf("圆的周长:%\n圆球的表面积:%\n圆球的体积:%\n圆柱体积:%\n",c,s,v1,v2);}4.编制程序,根据输入的x的值,计算y的值并输出。EQ#include<>voidmain(){floatx,y;scanf("%f",&x);if(x<=y=x*x+1;elseif(x>y=x*x-1;printf("y=%\n",y);}5.从键盘上输入三个数a,b,c,按照从小到大的顺序排序后输出。(要求,最后数从小到大依次存放在a,b,c中)。如:从键盘上输入:231245,程序处理后应该是a=12b=23c=45。然后输出a,b,c即可。#include<>voidmain(){inta,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("a=%d\nb=%d\nc=%d\n",a,b,c);}6.企业发放的奖金根据利润提成。利润I低于或等于10万元的,奖金可提10%;利润高于10万元的,低于20万元时,低于10万元的部分仍按10%提成,高于10万元的部分按7%提成;200000<I<400000时,低于20万元的部分仍按上述办法提成,高于20万元的部分按5%提成;400000<I<600000时,高于40万元的部分按3%提成,600000<I<1000000时,高于60万元的部分按%提成;I>1000000时,超过100万元的部分按1%提成。从键盘上输入当月利润I,求应发奖金总数。要求:(1)用if语句编程(2)用switch语句编程。 #include<>voidmain(){doublei,s;scanf("%lf",&i);if(i<=100000)s=*i;elseif(100000<i&&i<=200000)s=100000*+(i-100000)*;elseif(200000<i&&i<=400000)s=100000*+100000*+(i-200000)*;elseif(400000<i&&i<=600000)s=100000*+100000*+200000*+(i-400000)*;elseif(600000<i&&i<=1000000)s=100000*+100000*+200000*+200000*+(i-600000)*;elseif(i>1000000)s=100000*+100000*+200000*+200000*+400000*+(i-1000000)*;printf("奖金数为:%lf\n",s);}7.输入10个数,计算它们的和,积、平方和以及和的平方。#include<>voidmain(){inti,j,a=0,b=1,c=0,d=1;for(i=0;i<10;i++){scanf("%d",&j);a=j+a;b=j*b;c=j*j+c;d=a*a;}printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);}8.在1-500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。(选子《孙子算经》)#include<>voidmain(){inti;for(i=1;i<=500;i++){if(i%3==2&&i%5==3&&i%7==2) printf("%d\n",i);}}9.求100以内的所有素数。#include<>voidmain(){inti,j;for(i=2;i<=100;i++){for(j=2;j<i;j++) if(i%j==0)break; if(i==j)printf("%d\t",i);}}10.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子分别是:1,2,3,而6=1+2+3,所以6是完数。编程输出1000之内的所有完数#include<>voidmain(){inti,j,sum;for(i=1;i<=1000;i++){sum=0;for(j=1;j<i;j++)if(i%j==0)sum=j+sum;if(i==sum)printf("%d\t",sum);}}11.找2-1000中的亲密数对(如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲密数对)。#include<>voidmain(){inta,i;for(a=2;a<=1000;a++){intsum1=0,sum2=0;for(i=1;i<a;i++){if(a%i==0)sum1=sum1+i;}for(i=1;i<sum1;i++){if(sum1%i==0)sum2=sum2+i;}if(sum2==a&&a!=sum1)printf("%dand%d\n",a,sum1);}}12.输入一串字符,以“”结束,分别统计其中每个数字字符0,1,2,….9出现的次数。#include<>voidmain(){charstr[20];intcount[10]={0};gets(str);inti;for(i=0;str[i]!='';i++){if(str[i]=='0') count[0]++; if(str[i]=='1') count[1]++; if(str[i]=='2') count[2]++; if(str[i]=='3') count[3]++; if(str[i]=='4') count[4]++; if(str[5]=='5') count[5]++; if(str[6]=='6') count[6]++; if(str[7]=='7') count[7]++; if(str[8]=='8') count[8]++; if(str[9]=='9') count[9]++;}for(i=0;i<10;i++) printf("%d\t",count[i]);}13.从键盘上输入10个数,求最大值、最小值和平均值。#include<>voidmain(){intstr[10];intmax,min,aver=0,sum=0,i,t;for(i=0;i<10;i++)scanf("%d",&str[i]);for(i=0;i<10;i++){max=str[0];min=str[0]; if(max<str[i])max=str[i];if(min>str[i])min=str[i];}for(i=0;i<10;i++)sum=str[i]+sum;aver=sum/10;printf("max=%d\nmin=%d\naver=%d\n",max,min,aver);}14.从键盘上输入10个数,按从小到大的顺序排序输出。#include<>voidmain(){inta[10];inti,j,t;printf("input10numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("thesortednumbers:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}15.编写程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,‘\0’也要拷贝进去,‘\0’后面的字符不拷贝。#include<>voidmain(){charstr1[20];charstr2[20];inti=-1;gets(str2);while(str2[i]!='\0'){i++;str1[i]=str2[i];}printf("%s\n",str1);}16.计算两个矩阵的和、积。#include<>voidmain(){ inta[2][2],b[2][2],c[2][2]={0},d[2][2]={0},i,j,k;for(i=0;i<2;i++){for(j=0;j<2;j++){scanf("%d",&a[i][j]);scanf("%d",&b[i][j]);c[i][j]=a[i][j]+b[i][j];printf("%d",c[i][j]);}}printf("\n");for(i=0;i<2;i++){for(j=0;j<2;j++){for(k=0;k<2;k++){d[i][j]=a[i][k]*b[k][j];}}}for(i=0;i<2;i++){for(j=0;j<2;j++){printf("\n%d",d[i][j]);}}}afunction:digit(n,k),itwillreturnthekthdigitofnfromright.forexample:digit(15327,4)=5digit(289,5)=0#include<>voidmain(){longn,intk,m,t;intdigit(longn,intk);scanf("%ld%d",&n,&k);for(m=1;m<k;m++)n=n/10;t=n%10;printf("%d\n",t);}18.用递归方法求n阶勒让德多项式的值,递归公式为:1n=0pn(x)=xn=1((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))/nn>=1#include<>voidmain(){intn,x,m;intp(intn,intx);scanf("%d%d",&n,&x);m=p(n,x);printf("p(n,x)=%d",m);}intp(intn,intx){if(n==0)return1;if(n==1)returnx;if(n>=1)return((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;19.写几个函数:(1)输入10个职工的姓名和职工号;(2)按职工号从小到大排序,姓名也相应改变顺序;(3)要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。#include<>#include<>voidinput(intnum[],charname[][12],intn){inti;for(i=0;i<n;i++){printf("请输入第%d个职工的工号:",i+1);scanf("%d",&num[i]);scanf("%c");printf("请输入第%d个职工的姓名:",i+1);gets(name[i]);}}voidoutput(intnum[],charname[][12],intn){inti;for(i=0;i<n;i++){printf("工号:%d",num[i]);printf("姓名:%s\n",name[i]);}}voidsort(intnum[],charname[][12],intn){inti,j,k;for(i=0;i<n;i++){ k=i;for(j=i+1;j<n;j++)if(num[k]>num[j])k=j;if(k!=i){intt;t=num[k];num[k]=num[i];num[i]=t;chartc[12];strcpy(tc,name[k]);strcpy(name[k],name[i]);strcpy(name[i],tc);}}}voidsearch(intnum[],charname[][12],intn){intk,i;scanf("%d",&k);for(i=0;i<n;i++)if(k==num[i])break;if(i<n)printf("该职工的姓名为:%s",name[i]);if(i>n)printf("找不到该员工");} voidmain(){intnu[4];intn=4;charna[4][12];input(nu,na,n);sort(nu,na,n);output(nu,na,n);search(nu,na,n);}20.输入三个整数,按照从小到大的顺序输出。(用函数和指针实现)#include<>intmain(){voidexchange(int*q1,int*q2,int*q3);inta,b,c,*p1,*p2,*p3;printf("pleaseenterthreenumbers:");scanf("%d%d%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf("Theorderis:%d,%d,%d\n",a,b,c);return0;}voidexchange(int*q1,int*q2,int*q3){voidswap(int*pt1,int*pt2);if(*q1>*q2)swap(q1,q2);if(*q1>*q2)swap(q1,q3);if(*q2>*q3)swap(q2,q3);}voidswap(int*pt1,int*pt2){inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;}21.写几个函数:(1)输入10个职工号;(2)按职工号从小到大排序;(3)要求输入一个职工号,用折半法找出来。(用函数和指针实现)#include<>#include<>voidinput(int*num,char(*name)[12],intn){inti;for(i=0;i<n;i++){printf("请输入第%d个职工的工号:",i+1);scanf("%d",&num[i]);scanf("%c");printf("请输入第%d个职工的姓名:",i+1);gets(name[i]);}}voidoutput(intnum[],charname[][12],intn){inti;for(i=0;i<n;i++){printf("工号:%d",num[i]);printf("姓名:%s\n",name[i]);}}voidsort(intnum[],charname[][

温馨提示

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

评论

0/150

提交评论