C语言实验指导书Word文档下载推荐.docx
《C语言实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言实验指导书Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
,c,s,v1,v2);
4.编制程序,根据输入的x的值,计算y的值并输出。
floatx,y;
x);
if(x<
=2.5)
y=x*x+1;
elseif(x>
2.5)
y=x*x-1;
y=%5.2f\n"
y);
5.从键盘上输入三个数a,b,c,按照从小到大的顺序排序后输出。
(要求,最后数从小到大依次存放在a,b,c中)。
如:
从键盘上输入:
231245,程序处理后应该是a=12b=23c=45。
然后输出a,b,c即可。
#include<
inta,b,c,t;
%d%d%d"
a,&
b,&
c);
if(a>
b)
{t=a;
a=b;
b=t;
c)
a=c;
c=t;
if(b>
{t=b;
b=c;
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<
600000时,高于40万元的部分按3%提成,600000<
1000000时,高于60万元的部分按1.5%提成;
I>
1000000时,超过100万元的部分按1%提成。
从键盘上输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程
(2)用switch语句编程。
doublei,s;
%lf"
i);
if(i<
=100000)
s=0.1*i;
elseif(100000<
i&
&
i<
=200000)
s=100000*0.1+(i-100000)*0.07;
elseif(200000<
=400000)
s=100000*0.1+100000*0.07+(i-200000)*0.05;
elseif(400000<
=600000)
s=100000*0.1+100000*0.07+200000*0.05+(i-400000)*0.03;
elseif(600000<
=1000000)
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;
奖金数为:
%lf\n"
s);
7.输入10个数,计算它们的和,积、平方和以及和的平方。
inti,j,a=0,b=1,c=0,d=1;
for(i=0;
10;
i++)
{scanf("
%d"
j);
a=j+a;
b=j*b;
c=j*j+c;
d=a*a;
a=%d\nb=%d\nc=%d\nd=%d\n"
a,b,c,d);
8.在1-500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。
(选子《子算经》)
inti;
for(i=1;
=500;
if(i%3==2&
i%5==3&
i%7==2)
printf("
%d\n"
i);
}}
9.求100以的所有素数。
inti,j;
for(i=2;
=100;
{
for(j=2;
j<
i;
j++)
if(i%j==0)break;
if(i==j)
%d\t"
}
10.一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如:
6的因子分别是:
1,2,3,而6=1+2+3,所以6是完数。
编程输出1000之的所有完数
inti,j,sum;
for(i=1;
=1000;
sum=0;
for(j=1;
if(i%j==0)
sum=j+sum;
if(i==sum)
sum);
11.找2-1000中的亲密数对(如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲密数对)。
voidmain()
inta,i;
for(a=2;
a<
a++)
intsum1=0,sum2=0;
a;
if(a%i==0)
sum1=sum1+i;
sum1;
if(sum1%i==0)
sum2=sum2+i;
if(sum2==a&
a!
=sum1)
%dand%d\n"
a,sum1);
12.输入一串字符,以“?
”结束,分别统计其中每个数字字符0,1,2,….9出现的次数。
charstr[20];
intcount[10]={0};
gets(str);
inti;
for(i=0;
str[i]!
='
?
'
;
if(str[i]=='
0'
)
count[0]++;
1'
count[1]++;
2'
count[2]++;
3'
count[3]++;
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]++;
count[i]);
13.从键盘上输入10个数,求最大值、最小值和平均值。
intstr[10];
intmax,min,aver=0,sum=0,i,t;
str[i]);
{max=str[0];
min=str[0];
if(max<
str[i])
max=str[i];
if(min>
min=str[i];
sum=str[i]+sum;
aver=sum/10;
max=%d\nmin=%d\naver=%d\n"
max,min,aver);
14.从键盘上输入10个数,按从小到大的顺序排序输出。
inta[10];
inti,j,t;
input10numbers:
\n"
scanf("
a[i]);
for(j=0;
9;
9-j;
if(a[i]>
a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
thesortednumbers:
%d"
a[i]);
15.编写程序,将字符数组s2中的全部字符拷贝到字符数组s1中。
不用strcpy函数。
拷贝时,‘\0’也要拷贝进去,‘\0’后面的字符不拷贝。
charstr1[20];
charstr2[20];
inti=-1;
gets(str2);
while(str2[i]!
\0'
{i++;
str1[i]=str2[i];
%s\n"
str1);
16.计算两个矩阵的和、积。
inta[2][2],b[2][2],c[2][2]={0},d[2][2]={0},i,j,k;
2;
{for(j=0;
a[i][j]);
b[i][j]);
c[i][j]=a[i][j]+b[i][j];
c[i][j]);
{for(k=0;
k<
k++)
{d[i][j]=a[i][k]*b[k][j];
}}}
\n%d"
d[i][j]);
17.Definineafunction:
digit(n,k),itwillreturnthekthdigitofnfromright.
forexample:
digit(15327,4)=5
digit(289,5)=0
longn,intk,m,t;
intdigit(longn,intk);
%ld%d"
n,&
k);
for(m=1;
m<
k;
m++)
n=n/10;
t=n%10;
t);
18.用递归方法求n阶勒让德多项式的值,递归公式为:
1n=0
pn(x)=xn=1
((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))/nn>
=1
intn,x,m;
intp(intn,intx);
%d%d"
m=p(n,x);
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)要求输入一个职工号,用折半法找出该职工的,从主函数输入要查找的职工的职工号,输出该职工的。
string.h>
voidinput(intnum[],charname[][12],intn)
n;
请输入第%d个职工的工号:
"
i+1);
num[i]);
%c"
请输入第%d个职工的:
gets(name[i]);
voidoutput(intnum[],charname[][12],intn)
工号:
num[i]);
:
name[i]);
voidsort(intnum[],charname[][12],intn)
inti,j,k;
k=i;
for(j=i+1;
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;
if(k==num[i])break;
if(i<
n)
该职工的为:
%s"
if(i>
找不到该员工"
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.输入三个整数,按照从小到大的顺序输出。
(用函数和指针实现)
intmain()
voidexchange(int*q1,int*q2,int*q3);
inta,b,c,*p1,*p2,*p3;
pleaseenterthreenumbers:
p1=&
p2=&
b;
p3=&
c;
exchange(p1,p2,p3);
Theorderis:
%d,%d,%d\n"
return0;
voidexchange(int*q1,int*q2,int*q3)
voidswap(int*pt1,int*pt2);
if(*q1>
*q2)swap(q1,q2);
*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)要求输入一个职工号,用折半法找出来。
voidinput(int*num,char(*name)[12],intn)
22.写一个函数,将一个3X3的整形矩阵转置。
{inta[3][3],b[3][3]={0};
voidswap(inta[3][3],intb[3][3]);
inti,j;
3;
b[i][j]=a[j][i];
b[i][j]);