顺序结构和分支结构程序设计.docx
《顺序结构和分支结构程序设计.docx》由会员分享,可在线阅读,更多相关《顺序结构和分支结构程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
顺序结构和分支结构程序设计
实验一顺序结构和分支结构程序设计
实验要求:
习题2:
第8、9题;习题4第11、12、13题
1、输入华氏温度,输出相应的摄氏温度(保留2位小数)。
公式:
c=(f-32)/1.8,其中c表示摄氏度,f表示华氏度。
#include
voidmain()
{
doublef,c;
printf("Pleaseinputf:
\n");
scanf("%lf",&f);
c=(f-32)/1.8;
printf("c=%.2f%\n",c);
}
2、输入一个大写英文字母,输出相应的小写字母。
例如:
输入G,输出g。
#include
voidmain()
{
charc;
printf("Pleaseinputacapitalletter:
\n");
c=getchar();
if(c>='A'&&c<='Z')
{
c=c-'A'+'a';
printf("Itssmallletteris:
%c\n",c);
}
}
3、编写程序,输入3个整数,输出其中的最小值。
#include
voidmain()
{
inta,b,c,min;
printf("inputthreenumber:
\n");
scanf("%d%d%d",&a,&b,&c);
min=a;
if(min>b)min=b;
if(min>c)min=c;
printf("min=%d\n",min);
}
4、编写程序,输入一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的小写字母;否则,原样输出。
例如:
输入F,输出f,输入b,输出B,输入7,输出7。
#include
voidmain()
{
charc;
printf("inputacharacter:
\n");
c=getchar();
if(c>='a'&&c<='z')
c=c-'a'+'A';
elseif(c>='A'&&c<='Z')
c=c-'A'+'a';
else;
printf("%c\n",c);
}
5、函数
1x>0
y=0x=0
-1x<0
用if语句编程,输入x,输出y,并给出你所使用的测试用例。
#include
voidmain()
{
inty;
doublex;
printf("inputx:
\n");
scanf("%lf",&x);
if(x==0)
y=0;
elseif(x>0)
y=1;
else
y=-1;
printf("%d\n",y);
}
测试用例:
x=0,y=0;x=2.6,y=1;x=-2.3,y=-1;x=9,y=1;x=-10,y=-1……等
实验二循环程序设计
实验要求:
习题5:
第4、5、7
(1)、7
(2)、9
1、算正整数1~n(n需键盘输入)之间所有奇数之和与偶数之和。
#include
voidmain()
{
inti,n,sum1,sum2;
printf("inputn:
\n");
scanf("%d",&n);
sum1=sum2=0;
for(i=1;i<=n;i++){
if(i%2==1)
sum1+=i;
else
sum2+=i;
}
printf("sum1=%d,sum2=%d\n",sum1,sum2);
}
2、输入10个数,打印出最大的和最小的数。
#include
voidmain()
{
inti;
floatx,max,min;
printf("input10numbers:
\n");
scanf("%f",&x);
max=min=x;
for(i=1;i<10;i++){
scanf("%f",&x);
if(x>max)max=x;
elseif(x}
printf("max=%f,min=%f\n",max,min);
}
3、求e≈1/1!
+1/2!
+1/3!
+...1/n!
(1)直到第10项。
#include
voidmain()
{
intn;
floatt=1,sum=1;
for(n=1;n<10;n++){
t=t*n;
sum=sum+1/t;
}
printf("e≈%f\n",sum);
}
结果:
e≈2.718282
(2)直到最后一项小于10-7
#include
voidmain()
{
intn=1;
floatt=1,sum=1;
do{
t=t*n;
sum=sum+1/t;
n++;
}while(1/t>=1E-7);
printf("e≈%f\n",sum);
}
结果:
e≈2.718282
4、用一张一元票换1分、2分和5分的硬币(至少各一枚),问有哪几种换法?
各几枚?
#include
voidmain()
{
intn1,n2,n5,i=0;
for(n2=1;n2<=47;n2++)
for(n5=1;n5<=19;n5++){
n1=100-n2*2-n5*5;
if(n1>=1){
printf("n1=%2d,n2=%2d,n5=%2d\n",n1,n2,n5);
i++;
}
}printf("Allsorts:
%d\n",i);
}
运行结果有461种方法(各几枚略)
实验三函数程序设计
实验要求:
习题6:
第3(4)、3(5)、6题
1、验证哥德巴赫猜想:
任何一个大于6的偶数均可表示为两个素数之和。
要求将6~100之间的偶数都表示成两个素数之和。
素数指只能被1和自身整除的正整数,1不是素数,2是素数。
打印6-100之间的偶数都表示为两个素数之和,一行5组。
#include
intprime(intn)/*判断n是否为素数*/
{intk;
for(k=2;k<=n/2;k++)
if(n%k==0)return0;
return1;
}
voidprt(inti,intk,intt)
{
printf("%3d=%2d+%2d",i,k,i-k);
if(t%5==0)
printf("\n");
}
voidmain()
{
inti,k,t=0,n=0;
for(i=6;i<=100;i+=2)
{
for(k=2;k<=i/2;k++)
if(prime(k)&&prime(i-k))
{
t++;
prt(i,k,t);
break;
}
if(k>i/2)
{
printf("\n%d不是任何两个素数之和\n",i);
n++;
}
}
if(!
n)
printf("\n6-100所有偶数均为两个素数之和\n");
else
printf("\n不是6-100所有偶数均为两个素数之和\n");
}
2、下面程序用于计算f(k,n)=1k+2k+……+nk,其中power(m,n)求mn,sum求f(k,n)。
#include
longpower(intm,intn)
{inti;
__________;
for(i=1;i<=n;i++)
___________;
returnp;
}
longsum(intk,intn)
{inti;
__________;
for(i=1;i<=n;i++)
___________;
returns;
}
main()
{intk,n;
scanf(“%d%d”,&k,&n);
printf(“f(%d,%d)=%ld”,k,n,f(k,n));
}
答:
#include
longpower(intm,intn)
{inti;
longp=1;
for(i=1;i<=n;i++)
p*=m;
returnp;
}
longsum(intk,intn)
{inti;
longs=0;
for(i=1;i<=n;i++)
s+=power(i,k);
returns;
}
voidmain()
{intk,n;
printf("inputk,n:
\n");
scanf("%d%d",&k,&n);
printf("f(%d,%d)=%ld\n",k,n,sum(k,n));
}
3、求1到10000之间所有的完数。
所谓完数就是因子和与它本身相等的数。
例如6=1+2+3,6就是一个完数,要求定义并调用函数factor(m)判断m是否为完数,并由主函数调用它,来对所有数进行判断。
答:
程序如下:
#include
intfactor(intm)
{
ints,j,x;
s=1;
x=m;
for(j=2;jif(x%j==0)
{
s+=j;
x/=j;
j=2;
}
s+=x;
returns==m;
}
voidmain()
{
intq;
for(q=1;q<=10000;q++)
{
if(factor(q))
printf("%d",q);
}
printf("\n");
}
运行结果只有一个完数:
6
实验四数组程序设计
实验要求:
习题7第5、6、7、11题;习题8第4、5题
1.输入一个正整数n(1⑴求这n个数的平均值和最大值。
⑵按逆序输出这n个数。
⑶将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
#include
voidmain()
{
inti,n,a[10],max=0,min=0,temp;
floataverage,sum=0;
printf("inputn:
\n");
scanf("%d",&n);
printf("请输入%d个整数:
\n",n);
for(i=0;i{
scanf("%d",&a[i]);
sum+=a[i];
if(a[max]max=i;
if(a[min]>a[i])
min=i;
}
average=sum/n;
printf("这%d个数的平均值是%f,最大值是%d。
\n",n,average,a[max]);
for(i=n-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
temp=a[0];
a[0]=a[min];
a[min]=temp;
temp=a[n-1];
a[n-1]=a[max];
a[max]=temp;
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
2.输入一个正整数n(1#include
voidmain()
{
intn,i,k,index,temp,a[10];
printf("inputn:
\n");
scanf("%d",&n);
printf("请输入%d个整数:
\n",n);
for(i=0;iscanf("%d",&a[i]);
for(k=0;k{
index=k;
for(i=k+1;iif(a[index]index=i;
temp=a[k];
a[k]=a[index];
a[index]=temp;
}
printf("这%d个整数从大到小排序如下:
\n",n);
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
3.输入一个3×3的整型矩阵,要求:
⑴求该矩阵主对角线元素之和。
⑵输出该矩阵。
#include
voidmain()
{
inta[3][3],i,j,sum=0;
printf("输入一个3×3的整形矩阵:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
if(i==j)
sum+=a[i][j];
}
printf("主对角线元素之和:
%d\n",sum);
printf("输出该矩阵如下:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
4.输入一个以回车结束的字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数,然后再输出该字符串。
#include
voidmain()
{
intn=0;
chari=0,str[80],c;
printf("输入字符串(以回车结束):
\n");
while((str[i]=getchar())!
='\n')
i++;
str[i]=0;
printf("输入一个字符:
\n");
c=getchar();
for(i=0;str[i]!
=0;i++)
if(str[i]==c)
n++;
printf("%c在字符串中出现的次数=%d\n字符串如下:
\n%s\n",c,n,str);
}
5.定义一个函数search(intlist[],intn,intx),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。
在main函数中调用search,main函数如下:
voidmain()
{
inti,x,a[10],res;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
res=search(a,10,x);
printf("%d",res);
}
答:
#include
intsearch(intlist[],intn,intx)
{
intj;
for(j=0;j{
if(list[j]==x)
break;
}
if(j>=n)
j=-1;
returnj;
}
voidmain()
{
inti,x,a[10],res;
printf("inputa[10]:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("inputx:
\n");
scanf("%d",&x);
res=search(a,10,x);
printf("%d\n",res);
}
#include/*方法二:
用指针*/
intsearch(intlist[],intn,intx)
{
int*k=list;
while(*list!
=x)
list++;
if(listreturnlist-k;
else
return(-1);
}
voidmain()
{
inti,x,a[10],res;
printf("inputa[10]:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("inputx:
\n");
scanf("%d",&x);
res=search(a,10,x);
printf("%d\n",res);
}
6.定义函数voidsort(inta[],intn),用选择法对数组a中的元素排序。
自己定义main函数,并在其中调用sort函数。
#include
voidsort(inta[],intn)
{
intj,k,index,temp;
for(k=0;k{
index=k;
for(j=k+1;jif(a[j]index=j;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
}
voidmain()
{
inti,n,a[20];
printf("inputn:
\n");
scanf("%d",&n);
printf("输入%d个整数:
\n",n);
for(i=0;iscanf("%d",&a[i]);
sort(a,n);
printf("aftersorting:
\n");
for(i=0;iprintf("%d\t",a[i]);
printf("\n");
}