C语言实验指导书.docx

上传人:b****5 文档编号:4164218 上传时间:2022-11-28 格式:DOCX 页数:17 大小:20.06KB
下载 相关 举报
C语言实验指导书.docx_第1页
第1页 / 共17页
C语言实验指导书.docx_第2页
第2页 / 共17页
C语言实验指导书.docx_第3页
第3页 / 共17页
C语言实验指导书.docx_第4页
第4页 / 共17页
C语言实验指导书.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言实验指导书.docx

《C语言实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言实验指导书.docx(17页珍藏版)》请在冰豆网上搜索。

C语言实验指导书.docx

C语言实验指导书

1.假设公民的个人所得税为工资总额的5%,编程输入一个公民的工资总额,计算其应缴纳的个人所得税和其扣除所得税后的实际工资,并输出。

#include

voidmain()

{

floata,b,c;

scanf("%f",&a);

b=a*0.05;

c=a-b;

printf("b=%5.2f\nc=%5.2f",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*3.14*r;

s=4*3.14*r*r;

v1=4/3*3.14*r*r*r;

v2=s*h;

printf("圆的周长:

%5.2f\n圆球的表面积:

%5.2f\n圆球的体积:

%5.2f\n圆柱体积:

%5.2f\n",c,s,v1,v2);

}

4.编制程序,根据输入的x的值,计算y的值并输出。

#include

voidmain()

{

floatx,y;

scanf("%f",&x);

if(x<=2.5)

y=x*x+1;

elseif(x>2.5)

y=x*x-1;

printf("y=%5.2f\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%提成;2000001000000时,超过100万元的部分按1%提成。

从键盘上输入当月利润I,求应发奖金总数。

要求:

(1)用if语句编程

(2)用switch语句编程。

#include

voidmain()

{

doublei,s;

scanf("%lf",&i);

if(i<=100000)

s=0.1*i;

elseif(100000

s=100000*0.1+(i-100000)*0.07;

elseif(200000

s=100000*0.1+100000*0.07+(i-200000)*0.05;

elseif(400000

s=100000*0.1+100000*0.07+200000*0.05+(i-400000)*0.03;

elseif(600000

s=100000*0.1+100000*0.07+200000*0.05+200000*0.03+(i-600000)*0.015;

elseif(i>1000000)

s=100000*0.1+100000*0.07+200000*0.05+200000*0.03+400000*0.015+(i

-1000000)*0.01;

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

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

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

{

if(a%i==0)

sum1=sum1+i;

}

for(i=1;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

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]);}}

}

17.Definineafunction:

digit(n,k),itwillreturnthekthdigitofnfromright.

forexample:

digit(15327,4)=5

digit(289,5)=0

#include

voidmain()

{

longn,intk,m,t;

intdigit(longn,intk);

scanf("%ld%d",&n,&k);

for(m=1;m

n=n/10;

t=n%10;

printf("%d\n",t);

}

18.用递归方法求n阶勒让德多项式的值,递归公式为:

1n=0

pn(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

{

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

{

printf("工号:

%d",num[i]);

printf(":

%s\n",name[i]);

}

}

voidsort(intnum[],charname[][12],intn)

{

inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;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

if(k==num[i])break;

if(i

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

{

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

{

printf("工号:

%d",num[i]);

printf(":

%s\n",name[i]);

}

}

voidsort(intnum[],charname[][12],intn)

{

inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;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

if(k==num[i])break;

if(i

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);

}

22.写一个函数,将一个3X3的整形矩阵转置。

#include

voidmain()

{inta[3][3],b[3][3]={0};

voidswap(inta[3][3],intb[3][3]);

inti,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

b[i][j]=a[j][i];

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

printf("%d",b[i][j]);

printf("\n");}

}

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

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1