扬州大学C语言上机作业1-9整理.docx
《扬州大学C语言上机作业1-9整理.docx》由会员分享,可在线阅读,更多相关《扬州大学C语言上机作业1-9整理.docx(25页珍藏版)》请在冰豆网上搜索。
![扬州大学C语言上机作业1-9整理.docx](https://file1.bdocx.com/fileroot1/2022-10/7/481b0cca-78d5-4f82-a523-5b56215d86c3/481b0cca-78d5-4f82-a523-5b56215d86c31.gif)
答案仅供参考
实验一
4.设计main函数实现从键盘上输入两个整型变量a、b的值,交换它们的值并输出。
#include
voidmain()
{
inta,b,c;
printf("enterfirstinteger:
");
scanf("%d",&a);
printf("entersecondinteger:
");
scanf("%d",&b);
c=a;
a=b;
b=c;
printf("%d,%d\n",a,b);
getch();
}
5.设计main函数实现从键盘上输入两个整型变量a、b的值,并将b的值加入到a中,输出a的值。
#include
voidmain()
{
inta,b,c;
printf("enterfirstinteger:
");
scanf("%d",&a);
printf("entersecondinteger:
");
scanf("%d",&b);
c=a+b;
a=c;
printf("a=%d,b=%d\n",a,b);
getch();
}
6.从键盘输入整数x的值,根据公式y=x3+3x2+x-10求y的值,输出x和y的值。
#include
voidmain()
{
intx,y;
printf("enterfirstinteger:
");
scanf("%d",&x);
y=x*x*x+3*x*x+x-10;
printf("x=%d,y=%d\n",x,y);
getch();
}
实验二
1.编写程序,从键盘上输入一个整数(例如560)表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕。
#include
voidmain()
{
inta,b,hour,min;
printf("enterfirstinteger:
");
scanf("%d",&a);
b=60;
hour=a/b;
min=a%b;
printf("hour=%d,min=%d\n",hour,min);
getch();
}
2.编写程序,输入两个整数(例如1500和350),求出它们的商和余数并进行输出。
#include
voidmain()
{
inta,b,c,d;
a=1500,b=350;
c=a/b;
d=a%b;
printf("%d,%d",c,d);
getch();
}
3.编写程序,读入3个整数给分别变量a,b,c,然后将a,b,c的值输出到屏幕,再交换它们中的数值,把a中原来的值给b,把b中原来的值赋给c,把c中原来的值赋给a,然后再次输出a,b,c的值到屏幕。
#include
voidmain()
{
inta,b,c,d;
printf("enterfirstinteger:
");
scanf("%d",&a);
printf("entersecondinteger:
");
scanf("%d",&b);
printf("enterthirdinteger:
");
scanf("%d",&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
d=c;
c=b;
b=a;
a=d;
printf("a=%d,b=%d,c=%d",a,b,c);
getch();
}
4.编写程序,读入3个双精度数,求它们的平均值输出到屏幕。
#include
voidmain()
{
doublesum=0;
doublea,b,c,d;
printf("enterfirstinteger:
");
scanf("%lf",&a);
printf("entersecondinteger:
");
scanf("%lf",&b);
printf("enterthirdinteger:
");
scanf("%lf",&c);
sum=a+b+c;
d=sum/3.0;
printf("d=%lf",d);
getch();
}
5.下列程序中,要求main函数实现如下功能:
从键盘上输入3个正整数,求出它们中的最大值。
请完善程序,并在程序最后用注释的方式给出你的测试数据及在这组测试数据下的运行结果。
#include
voidmain()
{
inta,b,c,d,max;
printf(“Enterthreeintegers:
”);
scanf(“%d%d%d”,&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
printf(“maxofthethreenumbersis%d”,max);
grtch();
}
6.请编程序:
对从键盘上输入的x值,根据以下函数关系计算出相应的y值(设x,y均为整型量)。
x值的范围
计算y的公式
x<0
0
0<=x<10
x
10<=x<20
10
20<=x<40
-5x+20
#include
voidmain()
{
intx,y;
printf("x=");
scanf("%d",&x);
if(x<0)
y=0;
elseif(x<10&&x>=0)
y=x;
elseif(x>=10&&x<20)
y=10;
elseif(x>=20&&x<40)
y=(-5)*x+20;
printf("%d",y);
getch();
}
实验三
1.下列程序想求出满足如下条件的三位数n:
(1)n除以11(整数相除)所得到的商等于n的各位数字的平方和;
(2)n中至少有二位数字相同。
如:
131除以11的商为11,131各位数字的平方和为11,131中有二位数字相同,故131是所要求出的三位数中的一个;又如550,也是满足条件的三位数。
源程序中有些错误,请你改正并最终使程序得到如下的运行结果:
131550900
#include
voidmain()
{intn,a,b,c;
for(n=1;n<1000;n++)
{a=n/100;b=n/10%10;c=n%10;
if(n/11==a*a+b*b+c*c&&(a==b||a==c||b==c))
printf("%d\n",n);}
getch();}
2.请编程序,实现从键盘上输入任意一个整数n,求出n的各位数字之和。
例如,当n为263时,各位数字之和为11。
下面是一个可以实现逐位数字累加功能的程序段,试理解后应用到自己的程序中。
k=0;n=263;
do{k+=n%10;
n/=10;
}while(n);
#include
voidmain()
{ intn,k;
scanf("%d",&n);
k=0;
do{k+=n%10;
n/=10;
}while(n);
printf("%d",k);
getch();
}
3.试找出符合下列条件的正整数:
(1)该数是一个三位数;
(2)该数是37的倍数;(3)该数循环左移后得到的另两个数也是37的倍数。
例如148是37的倍数,481和814也是37的倍数。
#include
voidmain()
{
intn,a,b;
for(n=100;n<1000;n++)
if(n%37==0)
{a=n/10+n%10*100;
b=n/100+n%100*10;
if(a%37==0&&b%37==0)
printf("%d\n",n);
}
getch();
}
4.请编程序利用下列公式求π的近似值。
公式为:
要求:
先求出前2n项的π值,再求出2n+2项的π值,直至二者之差小于10-5为止。
#include
voidmain()
{intn;
floata,b;
a=1,b=4.0/3;
n=1;
while(b-a>=1e-5)
{a=b;
n++;
b=b*4*n*n/(2*n-1)/(2*n+1);
}
printf("%f,%f",2*a,2*b);
getch();
}
5.请编程序求出满足如下条件的四位数n:
(1)n的范围为[5000,8000];
(2)n千位上的数减百位上的数减十位上的数减个位上的数大于零。
编程要求:
以每行5个输出满足条件的数及该类数的个数。
#include
voidmain()
{intn,a,b,c,d,k=0;
for(n=5000;n<=8000;n++)
{a=n/1000;
b=n/100%10;
c=n/10%10;
d=n%10;
if((a-b-c-d)>0)
{printf("%5d",n);
k++;
if(k%5==0)printf("\n");
}
}
printf("k=%d",k);
getch();
}
6.请编程序求出满足如下条件的一个四位整数,它的9倍恰好是其反序数(例如,1234与4321互为反序数)。
#include
voidmain()
{intn,e,a,b,c,d;
for(n=1000;n<=9999;n++)
{a=n/1000;
b=n/100%10;
c=n/10%10;
d=n%10;
e=d*1000+c*100+b*10+a;
if(9*n==e)
printf("%d",n);}
getch();
}
7.请编程序求出从键盘上输入的两个正整数a和b的最大公约数和最小公倍数。
#include
voidmain()
{
intm,n,r,x;
scanf("%d,%d",&m,&n);
x=m*n;
while(n!
=0)
{
r=m%n;
m=n;
n=r;
}
printf("%d%d",m,x/m);
getch();
}
8.请编程序计算1!
+2!
+3!
+…+n!
的前10项之和。
#include
voidmain()
{
longsum,k;
inti,j;
sum=0;
for(i=1;i<=10;i++)
{
for(j=1,k=1;j<=i;j++)
{ k*=j; }
sum+=k;
}
printf("%ld\n",sum);
getch();
}