顺序结构和分支结构程序设计.docx

上传人:b****3 文档编号:5417115 上传时间:2022-12-16 格式:DOCX 页数:16 大小:20.16KB
下载 相关 举报
顺序结构和分支结构程序设计.docx_第1页
第1页 / 共16页
顺序结构和分支结构程序设计.docx_第2页
第2页 / 共16页
顺序结构和分支结构程序设计.docx_第3页
第3页 / 共16页
顺序结构和分支结构程序设计.docx_第4页
第4页 / 共16页
顺序结构和分支结构程序设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

顺序结构和分支结构程序设计.docx

《顺序结构和分支结构程序设计.docx》由会员分享,可在线阅读,更多相关《顺序结构和分支结构程序设计.docx(16页珍藏版)》请在冰豆网上搜索。

顺序结构和分支结构程序设计.docx

顺序结构和分支结构程序设计

实验一顺序结构和分支结构程序设计

实验要求:

习题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;j

if(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;i

printf("%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;i

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

for(k=0;k

{

index=k;

for(i=k+1;i

if(a[index]

index=i;

temp=a[k];

a[k]=a[index];

a[index]=temp;

}

printf("这%d个整数从大到小排序如下:

\n",n);

for(i=0;i

printf("%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(list

returnlist-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;j

if(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;i

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

sort(a,n);

printf("aftersorting:

\n");

for(i=0;i

printf("%d\t",a[i]);

printf("\n");

}

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

当前位置:首页 > 职业教育 > 职业技术培训

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

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