C语言作业.docx
《C语言作业.docx》由会员分享,可在线阅读,更多相关《C语言作业.docx(50页珍藏版)》请在冰豆网上搜索。
C语言作业
第一章
使用printf()函数按下面的形式显示某应用程序的功能
#include
voidmain()
{
printf("********************\n");
printf("欢迎使用卡卡名片夹\n");
printf("[1]显示全部名片\n");
printf("[2]新建名片\n");
printf("[3]修改名片\n");
printf("[4]删除名片\n");
printf("[5]退出\n");
printf("********************\n");
}
编写一个C程序,能够从键盘输入一个浮点数,然后输出它的倒数。
#include
voidmain()
{
floatm,n;
printf("请输入一个浮点数\n");
scanf("%f",&m);
n=1/m;
printf("该数的倒数是%f",n);
}
第二章
将华氏温度转换为摄氏温度。
使用公式:
C=5/9(F-32.
#include
voidmain()
{
floatm,n;
printf("请输入华氏温度\n");
scanf("%f",&m);
n=5.0/9.0*(m-32);
printf("其对应的摄氏温度为:
%f\n",n);
}
输入两个角度值分别赋给变量x和y,计算下面算式的结果,
#include
#include
#definePI3.14
voidmain()
{
intx,y,z,s1,s2;
printf("请输入两个角度值\n");
scanf("%f%f",&x,&y);
x=x*PI/180.0;
y=y*PI/180.0;
s1=sin(fabs(x)+fabs(y));
s2=sqrt(cos(fabs(x)+fabs(y)));
z=s1/s2;
printf("所的结果为%f/n",z);
}
贷款额的计算,即计算一次可向银行贷款多少元,其计算公式为
D=a(
-1)/[(I-1)
-]
式中:
D为一次可向银行的贷款额,a为每年可以还贷的金额,I=1+人(r为年利率),n为还清贷款的年数。
a、r、n由键盘输入。
#include
#include
voidmain()
{
floata,r,n,I,D,p,q;
printf("请输入每年可以还贷的金额a,年利率r,还清贷款的年数n\n");
scanf("%f%f%f",&a,&r,&n);
I=1+r;
p=a*(pow(I,n)-1);
q=(I-1)*pow(I,n);
D=p/q;
printf("一次可向银行贷款%f元",D);
}
第三章
将China译成Glmre。
方法是:
用原来字母后面的第4个字母代替原来的字母。
#include
voidmain()
{
charc1,c2,c3,c4,c5;
c1='C'+4;
c2='h'+4;
c3='i'+4;
c4='n'+4;
c5='a'+4;
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
把十进制数97转化为八进制、十六进制数。
#include
voidmain()
{
intn=97;
printf("oct=%o\n",n);
printf("xct=%x\n",n);
}
设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
#include
#definePI3.1415926
voidmain()
{
floatr,h,l,s,ss,sv,hs,hv;
printf("请输入圆半径,圆柱高\n");
scanf("%f%f",&r,&h);
l=2*PI*r;
s=PI*r*r;
ss=4*PI*r*r;
sv=4.0/3.0*PI*r*r*r;
hs=2*PI*r*r+2*PI*r*h;
hv=PI*r*r*h;
printf("圆周长为%f,圆面积为%f,圆球表面积为%f,圆球体积为%f,圆柱表面积为%f,圆柱体积为%f",l,s,ss,sv,hs,hv);
}
已知三角形的三边长,求三角形面积。
#include
#include
voidmain()
{
floata,b,c,p,s;
printf("请输入三角形的三边长为:
\n");
scanf("%f%f%f",&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("此三角形的面积是%f",s);
}
输入三个字母m,a,n,并以”man”\man(竖行排列)的形式输出
#include
voidmain()
{
chara,b,c;
printf("请输入三个字母\n");
scanf("%c,%c,%c",&a,&b,&c);
printf("\"%c%c%c\"\n",a,b,c);
printf("%c\n%c\n%c\n",a,b,c);
}
输入一个字符,找出他的前一个字符和后一个字符,并根据ASCII值,按从大到小的顺序输出这三个字符级ASCII码值。
#include
voidmain()
{
charc1,c2,c3;
scanf("%c",&c2);
c1=c2-1;
c3=c2+1;
printf("%c%c%c\n",c1,c2,c3);
printf("%d,%d,%d",c1,c2,c3);
}
已知鸡免总头数为h(30),总脚数为f(90),求鸡免各有几只
#include
voidmain()
{
inth,f,a,b;
printf("请输入总头数和总脚数\n");
scanf("%d,%d",&h,&f);
a=(4*h-f)/2;
b=h-a;
printf("鸡有%d只,兔有%d只",a,b);
}
输入一个三位正整数,反向输出对应的数
#include
voidmain()
{
inti,j,k,l,m;
printf("请输入一个三位整数:
\n");
scanf("%d",&i);
j=i/100;
k=(i-j*100)/10;
l=i-j*100-k*10;
m=l*100+k*10+j;
printf("此数的倒置数为:
%d\n",m);
}
计算方程ax2+bx+c=0的根
#include
#include
voidmain()
{
floata,b,c,x1,x2,p;
printf("请输入a,b,c的值:
\n");
scanf("%f%f%f",&a,&b,&c);
p=sqrt(b*b-4*a*c);
x1=(-b+p)/(2*a);
x2=(-b-p)/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
用putchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出
#include
voidmain()
{
charc1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
printf("\n");
putchar(c2);
printf("\n");
printf("%c\n%c\n",c1,c2);
}
第四章
输入三个整数x,y,z,请把这三个数由小到大输出,
#include
voidmain()
{
intx,y,z,m;
printf("请输入三个整数\n");
scanf("%d,%d,%d",&x,&y,&z);
if(x>y)
{m=x,x=y,y=m;}
if(x>z)
{m=x,x=z,z=m;}
if(y>z)
{m=y,y=z,z=m;}
printf("%d,%d,%d\n",x,y,z);
}
当月收入超过1600元时,超过部分交税款20%。
试编写一程序计算税款(其中月收入由键盘输入。
#include
voidmain()
{
floata,b=0;
printf("请输入月收入\n");
scanf("%f",&a);
if(a>1600)b=(a-1600)*0.2;
printf("应缴税款为%f元\n",b);
}
计算y=3x+6(x>=0)
-x*x+2x-8(x<0)
#include
voidmain()
{
floatx,y;
printf("请输入自变量x的值\n");
scanf("%f",&x);
if(x>=0)
y=3*x+6;
else
y=-x*x+2*x-8;
printf("对应因变量的值为%f\n",y);
}
为优待顾客,商店对购货在1000元和1000元以上的,八折优惠;500元以上(包括500元,下同),1000元以下的,九折优惠;200元以上,500元以下的,九五折优惠;100元以上,200元以下的,九七折优惠;100元一下不优惠。
请输入购货款后,打印出该交的货款。
#include
voidmain()
{
floatx,y;
printf("请输入购货款\n");
scanf("%f",&x);
if(x>=1000)
y=x*0.8;
elseif(x>=500)
y=x*0.9;
elseif(x>=200)
y=x*0.95;
elseif(x>=100)
y=x*0.97;
elsey=x;
printf("应交货款为%.1f元\n",y);
}
输入班号,输出该班学生人数(用switch语句编程)
#include
voidmain()
{
intm,n;
printf("请输入班号\n");
scanf("%d",&m);
switch(m)
{
case21:
n=45;break;
case22:
n=51;break;
case23:
n=48;break;
case24:
n=46;break;
case25:
n=48;break;
case26:
n=52;break;
default:
printf("输入错误\n");
}
printf("该班有%d个学生\n",n);
}
第五章
任意输入N个数,统计其中正数,负数和零的个数。
#include
voidmain()
{
intN,n,m,a=0,b=0,c=0;
printf("请输入数字个数\n");
scanf("%d",&N);
for(n=1;n<=N;n++)
{
printf("请输入数字\n");
scanf("%d",&m);
if(m>0)
a++;
elseif(m<0)
b++;
else
c++;
}
printf("正数有%d个,负数有%d个,零有%d个\n",a,b,c);
}
第五章
任意输入N个数,统计其中正数,负数和零的个数。
#include
voidmain()
{
inta=0,b=0,c=0,n,i,m;
printf("请输入数的个数:
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("请输入第%d个数:
\n",i);
scanf("%d",&m);
if(m>0)
a++;
elseif(m<0)
b++;
else
c++;
}
printf("正数有:
%d个,负数有:
%d个,零有:
%d个\n",a,b,c);
}
求值
#include
voidmain()
{
inti,j,k,a=0,b=0;
floatc=0,sum=0;
for(i=1;i<=100;i++)a+=i;
for(j=1;j<=50;j++)b+=j*j;
for(k=1;k<=10;k++)c+=1.0/k;
sum=a+b+c;
printf("sum=%.2lf\n",sum);
}
在1~500中,找出所有能同时满足用3除余2,用5除余3,用7除余4的整数。
#include
voidmain()
{
inti;
for(i=1;i<=500;i++)
{
if(i%3==2&&i%5==3&&i%7==4)
printf("%d\n",i);
}
}
任意输入一串字符,以“?
”结束,分别统计其中字母,数字和其他字符的个数。
#include
voidmain()
{
inta=0,b=0,c=0;
chard;
while((d=getchar())!
='?
')
{
if(d>='A'&&d<='Z'||d>='a'&&d<='z')
a++;
elseif(d>='0'&&d<='9')
b++;
else
c++;
}
printf("字母有%d个,数字有%d个,其他字符有%d个\n",a,b,c);
}
第六章
求任意20个数中的正数之和及个数。
#include
voidmain()
{
inti,k=0;
floata[30],sum=0;
for(i=0;i<30;i++)
{
printf("请输入第%d个数\n",i+1);
scanf("%f",&a[i]);
if(a[i]>0)
{
sum+=a[i];
k++;
}
}
printf("正数之和为%f\n",sum);
printf("正数的个数为%d\n",k);
}
统计全班某门功课的平均成绩,找出最高,最低分。
#include
voidmain()
{
inta[38],i,j,k,sum=0;
floatave;
printf("请输入第1个同学的成绩:
\n");
scanf("%d",&a[0]);
j=k=a[0];
for(i=1;i<38;i++)
{
printf("请输入第%d个同学的成绩:
\n",i+1);
scanf("%d",&a[i]);
while(a[i]>100||a[i]<0)
{
printf("输入的成绩无效!
请重新输入!
\n");
scanf("%d",&a[i]);
}
sum+=a[i];
if(a[i]>j)j=a[i];
if(a[i]}
ave=sum/38.0;
printf("全班同学该门课的平均成绩为%f:
\n",ave);
printf("最高分为:
%d\n",j);
printf("最低分为:
%d\n",k);
}
一个数如果恰好等于他的因子之和,这个数就称为完数。
找出1000以内的所有完数。
#include
voidmain()
{
intsum,i,n;
printf("从2到1000的完备数有:
\n");
for(n=2;n<1000;n++)
{
sum=0;
for(i=1;iif(n%i==0)sum=sum+i;
if(n==sum)printf("%d\n",n);
}
}
电话传递数据加密。
#include
voidmain()
{
intn,b,i,a[4];
printf("请输入一个三位数\n");
scanf("%d",&n);
a[0]=n/1000;
a[1]=(n/100)%10;
a[2]=(n%100)/10;
a[3]=n%10;
for(i=0;i<4;i++)a[i]=(a[i]+5)%10;
b=a[0];
a[0]=a[3];
a[3]=b;
b=a[1];
a[1]=a[2];
a[2]=b;
n=1000*a[0]+100*a[1]+10*a[2]+a[3];
printf("%d\n",n);
}
计算两个矩阵的乘积。
#include
voidmain()
{
inta[2][3],b[3][4],c[2][4]={0};
inti,j,k,s;
printf("请给数组a[2][3]赋值\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
printf("请给数组b[3][4]赋值\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&b[i][j]);
}
for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
{
for(k=0,s=0;k<3&&s<3;k++,s++)
c[i][j]+=a[i][k]*b[s][j];
}
}
for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
printf("%d",c[i][j]);
printf("\n");
}
}
第七章
#include
#include
voidchange(charstr[])
{
inti,j;
for(i=j=0;str[i]!
='\0';i++)
if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z'||str[i]>='0'&&str[i]<='9'||i==0||str[i]!
=str[i-1])
str[j++]=str[i];
str[j]='\0';
}
voidmain()
{
charstr[80];
gets(str);
change(str);
puts(str);
return;
}
#include
intsum(intn)
{
inti,j,k,l;
i=n%10;
n=n/10;
j=n%10;
k=n/10;
l=i*i*i+j*j*j+k*k*k;
returnl;
}
voidmain()
{
intx,y;
for(x=100;x<1000;x++)
{
y=sum(x);
if(y==x)
printf("%d\n",x);
}
}
#include
intmin(intm,intn)
{
inti,j,k;
i=m;
j=n;
if(i>j)
{
k=i;
i=j;
j=k;
}
while(k!
=0)
{
k=j%i;
j=i;
i=k;
}
k=m*n/j;
returnk;
}
voidmain()
{
inta,b,c,d,e;
intx,y,z,w;
printf("请输入5个正整数\n");
scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);
x=min(a,b);
y=min(c,d);
z=min(x,y);
w=min(z,e);
printf("%d\n",w);
}
#include
intwanbeishu(intn)
{
inti,j=0;
for(i=1;iif(n%i==0)j+=i;
returnj;
}
voidmain()
{
intx,y;
printf("30000以内的完备数有:
\n");
for(x=1;x<=30000;x++)
{
y=wanbeishu(x);
if(x==y)printf("%d\n",x);
}
}
#include
intyueshuhe(intn)
{
inti,j=0;
for(i=1;iif(n%i==0)j+=i;
returnj;
}
voidmain()
{
intx,y,z;
printf("互满数有:
\n");
for(x=1;x<=30000;x++)
{
y=yueshuhe(x);
z=yueshuhe(y);
if(x==z&&x}
}
习题八
#include
voidmain()
{
inta[200],b[200],m,n,len,*p,*q,*t;
printf("请输入升序数组a的元素个数:
");
scanf("%d",&m);
for(p=a;p{
printf("请输入升序a的第%d个元素值:
",p-a+1);
scanf("%d",p);
}
printf("请输入升序数组b的元素个数:
");
scanf("%d",&n);
for(q=b;q
{
printf("请输入升序b的第%d个元素值:
",q-b+1);
scanf("%d",q);
}
p=a;q=b;len=m;
while(p{
if(*q<*p)
{
for(t=a+len-1;t>=p;t--)*(t+1)=*t;
*p=*q;
len++;
q++;
if(q==b+n)break;