程序设计与问题求解例题集综述.docx

上传人:b****7 文档编号:9221834 上传时间:2023-02-03 格式:DOCX 页数:84 大小:94.54KB
下载 相关 举报
程序设计与问题求解例题集综述.docx_第1页
第1页 / 共84页
程序设计与问题求解例题集综述.docx_第2页
第2页 / 共84页
程序设计与问题求解例题集综述.docx_第3页
第3页 / 共84页
程序设计与问题求解例题集综述.docx_第4页
第4页 / 共84页
程序设计与问题求解例题集综述.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

程序设计与问题求解例题集综述.docx

《程序设计与问题求解例题集综述.docx》由会员分享,可在线阅读,更多相关《程序设计与问题求解例题集综述.docx(84页珍藏版)》请在冰豆网上搜索。

程序设计与问题求解例题集综述.docx

程序设计与问题求解例题集综述

程序设计与问题求解例题集

(根据2015新大纲编写)

 

一、程序设计概述(2学时)

主要内容:

程序与程序设计、问题求解的一般步骤、算法与描述、C语言简介、C程序运行环境与运行步骤。

例1-1:

基本结构

#include

intmain()

{

//加入你编写的代码

printf("HelloGUET!

\n");

}

例1-2:

求两个数的和

#include

/*Thisisthemainprogram*/

voidmain()

{inta,b,sum;/*定义变量*/

a=10;

b=24;

sum=add(a,b);

printf(”sum=%d\n",sum);

}

/*Thisfunctioncalculatesthesumofxandy*/

intadd(intx,inty)

{intz;

z=x+y;

return(z);

}

例1-3:

从键盘输入两个整数,输出其中较大的数

#include

voidmain()

{intmax(intx,inty)

inta,b,c;

scanf(“%d,%d”,&a,&b);

c=max(a,b);

printf("max=%d",c);

}

intmax(intx,inty)

{intz;

if(x>y)z=x;

elsez=y;

return(z);

}

例1-4:

程序编写风格

优秀程序员的基本素质:

●使用TAB缩进

●{}对齐

●有足够的注释

●有合适的空行

voidmain()

{

inti,j,sum;

sum=0;

for(i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

sum+=i*j;

}

}

printf(“%d\n”,sum);

}

二、数据类型、运算与表达式(2学时)

主要内容:

4种基本数据类型的存储:

整型、实型、字符型、布尔型。

算术运算与表达式、赋值运算与表达式。

例2-1:

浮点型数据的舍入误差

#include

voidmain()

{

floata,b;

a=123456.789e5;

b=a+20;

printf("%f\n",b);

}

注1:

浮点型数据的舍入误差:

●数据超过有效位数,则产生误差

●要避免一个很大的数与一个很小的数加减

注2:

舍入误差使1.0/3*3的结果并不等于1!

例2-2:

向字符变量赋整数

#include

voidmain()

{charc1,c2;

c1=97;

c2=98;

printf(“%c%c\n",c1,c2);

printf(“%d%d\n",c1,c2);

}

例2-3:

大小写字母的转换

#include

voidmain()

{

charc1,c2;

c1=‘a’;

c2=‘b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c",c1,c2);

}

例2-4:

求华氏温度100°F对应的摄氏温度。

//摄氏温度C=(5/9)(F-32)

#include

intmain(void)

{

intcelsius,fahr;变量定义

fahr=100;变量使用

celsius=5*(fahr-32)/9;

printf("fahr=%d,celsius=%d\n",fahr,celsius);输出结果

return0;

}

三、顺序结构程序设计(4学时)

主要内容:

常量与变量声明、赋值语句、基本输入输出方法、数据类型的转换、顺序结构编程实例。

例3-1:

赋值语句

 

例3-2:

putchar输出(单字符变量)

#include

voidmain()

{chara,b,c;

a='B';b=‘O';c=‘Y';

putchar(a);putchar(b);putchar(c);

}

例3-3:

输出控制字符

#include

voidmain()

{chara,b;

a=‘O';b=‘k';

putchar(a);putchar(‘\n’);putchar(b);

}

例3-4:

输出转义字符

#include

voidmain()

{chara;

a='B';

putchar('\101');putchar(a);

}

运行结果:

AB

例3-5:

getchar函数实现单字符输入

#include

voidmain()

{charc;

c=getchar();

putchar(c);

}

例3-6:

scanf和printf的格式化输入输出

/*输入三角形边长,求面积*/

#include

#include

voidmain()

{floata,b,c,s,area;

scanf("%f,%f,%f",&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);

printf("area=%7.2f\n",area);

}

例3-7:

从键盘输入大写字母,用小写字母输出

#include"stdio.h"

voidmain()

{charc1,c2;

c1=getchar();

printf("%c,%d\n",c1,c1);

c2=c1+32;

printf("%c,%d\n",c2,c2);

}

例3-8:

一元二次方程求根

#include

#include

voidmain()

{floata,b,c,disc,x1,x2,p,q;

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

disc=b*b-4*a*c;

p=-b/(2*a);q=sqrt(disc)/(2*a);

x1=p+q;x2=p-q;

printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);

}

四、分支结构程序设计(6学时)

主要内容:

关系运算、逻辑运算、if-else语句、switch-case语句、选择结构编程实例。

例4-1:

输入两个数并判断两数是否相等

#include

voidmain()

{inta,b;

printf("Enterintegera:

");

scanf("%d",&a);

printf("Enterintegerb:

");

scanf("%d",&b);

if(a==b)

printf("a==b\n");

else

printf("a!

=b\n");

}

例4-2:

判断输入字符种类

#include

voidmain()

{charc;

printf("Enteracharacter:

");

c=getchar();

if(c<32)printf("Thecharacterisacontrolcharacter\n");

elseif(c>='0'&&c<='9')printf("Thecharacterisadigit\n");

elseif(c>='A'&&c<='Z')printf("Thecharacterisacapitalletter\n");

elseif(c>='a'&&c<='z')printf("Thecharacterisalowerletter\n");

elseprintf("Thecharacterisothercharacter\n");

}

例4-3:

任意三个整数的排序

#include

main()

{

intx,y,z,t;

printf("请任意输入三个整数程序将按从小到大的顺序输出:

");

scanf("%d%d%d",&x,&y,&z);

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("从小到大:

%d%d%d\n",x,y,z);

}

例4-4:

(if的嵌套)输入两个数并判断其大小关系

#include

voidmain()

{

intx,y;

printf("Enterintegerx,y:

");

scanf("%d,%d",&x,&y);

if(x!

=y)

if(x>y)

printf("X>Y\n");

else

printf("X

else

printf("X==Y\n");

}

例4-5:

switch及其嵌套

#include

voidmain()

{intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

case3:

a++;b++;

}

printf(“\na=%d,b=%d”,a,b);

}

例4-6:

闰年的判断

#include

voidmain()

{intyear,leap;

scanf(“Enteryear:

%d”,&year);

if((year%4==0&&year%100!

=0)||(year%400==0))

leap=1;

elseleap=0;

if(leap)printf(“%dis”,year);

elseprintf(“%disnot”,year);

printf(“aleapyear.\n”);

}

例4-7:

查询自动售货机中商品的价格

假设自动售货机出售4种商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。

在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。

当用户输入编号1~4,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。

[1]Selectcrisps

[2]Selectpopcorn

[3]Selectchocolate

[4]Selectcola

[0]Exit

#include

Intmain(void)

{intchoice,i;doubleprice;

for(i=1;i<=5;i++){

printf("[1]Selectcrisps\n");

printf("[2]Selectpopcorn\n");

printf("[3]Selectchocolate\n");

printf("[4]Selectcola\n");

printf("[0]exit\n");

printf("Enterchoice:

");

scanf("%d",&choice);

if(choice==0)break;

switch(choice){

case1:

price=3.0;break;

case2:

price=2.5;break;

case3:

price=4.0;break;

case4:

price=3.5;break;

default:

price=0.0;break;

}

printf("price=%0.1f\n",price);

}

printf("Thanks\n");

}

例4-8:

输入一个形式如“操作数运算符操作数”的四则运算表达式,输出运算结果。

例如:

输入:

3.1+4.8

输出:

7.9

#include

intmain(void)

{charoperator;doublevalue1,value2;

printf("Typeinanexpression:

");

scanf("%lf%c%lf",&value1,&operator,&value2);

switch(operator){

case'+':

printf("=%.2f\n",value1+value2);

break;

case'-':

printf("=%.2f\n",value1-value2);

break;

case'*':

printf("=%.2f\n",value1*value2);

break;

case'/':

printf("=%.2f\n",value1/value2);

break;

default:

printf("Unknownoperator\n");

break;

}

return0;

}

例4-9:

输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。

intmain(void)

{

intblank,digit,i,other;charch;

blank=digit=other=0;

printf("Enter10characters:

");

for(i=1;i<=10;i++){

ch=getchar();

switch(ch){

case'':

case'\n':

blank++;

break;

case'0':

case'1':

case'2':

case'3':

case'4':

case'5':

case'6':

case'7':

case'8':

case'9':

digit++;

break;

default:

other++;

break;

}

}

printf("blank=%d,digit=%d,other=%d\n",blank,digit,other);

return0;

}

五、循环结构程序设计(8学时)

主要内容:

while、do-while、for语句、其他控制语句、递推法、穷举法编程实例。

例5-1:

用while语句构成循环,求1+2+...+100

#include

voidmain()

{

inti,sum=0;

i=1;

while(i<=100)

{sum=sum+i;

i++;

}

printf("%d",sum);

}

例5-2:

用for语句构成循环,求1+2+...+100

#include

voidmain()

{

inti,sum=0;

for(i=1;i<=100;i++)

sum+=i;

printf("%d",sum);

}

例5-3:

(循环的嵌套)打印九九乘法表

#include"stdio.h"

voidmain()

{

inti,j,result;

printf("\n");

for(i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

result=i*j;

printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("\n");/*每一行后换行*/

}

}

例5-4:

(break举例)小写字母转换成大写字母,直至输入非字母字符

#include

voidmain()

{charc;

while

(1)

{

c=getchar();

if(c>='a'&&c<='z')

putchar(c-32);

else

if(c>=‘A'&&c<=‘Z')

putchar(c);

else

break;

}

}

例5-5:

(continue举例)输出100~200之间不能被3整除的数

#include

voidmain()

{inti;

for(i=100;i<=200;i++)

{

if(i%3==0)

continue;

printf(“%d”,n);

}

}

例5-5:

用公式pi/4=1-1/3+1/5-1/7...计算pi的值,当某一项的绝对值小于10-6为止。

#include

#include

voidmain()

{ints;

floatn,t,pi;

t=1;pi=0;n=1.0;s=1;

while((fabs(t))>=1e-6)

{pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

例5-6:

求PI精确值的怪异程序

#include

longa=10000,b,c=2800,d,e,f[2801],g;

main()

{

for(;b-c;)f[b++]=a/5;

for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)

for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);

}

/*(原程式第一行是inta=10000,b,c....因為在IBMPC

上int只有2-byte,所以我改成long以便各platform都

能run)

(本程式連可算出pi值連小數點前共800位)

(本程式節錄自sci.mathFAQ,原作者未詳,我猜是外星人:

)*/

注:

所用公式pi/2=1+1!

/3!

!

+2!

/5!

!

+3!

/7!

!

+...+k!

/(2*k+1)!

!

+...

例5-7:

求Fibonacci数列:

1、1、2、3、5、8……前40个数。

#include

#include

voidmain()

{

longintf1,f2;

inti;

f1=1;

f2=1;

for(i=1;i<=20;i++)

{

printf("%12ld%12ld",f1,f2);

if(i%2==0)

printf("\n");

f1=f1+f2;

f2=f2+f1;

}

}

例5-8:

求被8除不尽的自然数

#include

intmain()

{

inti;

for(i=0;;i++)/*试探商的值*/

if(((i*8+7)*8+1)*8+1==(34*i+15)*17+4)

{/*逆推判断所取得的当前i值是否满足关系式*/

/*若满足则输出结果*/

printf("Therequirednumberis:

%d\n",(34*i+15)*17+4);

break;/*退出循环*/

}

}

例5-9:

百钱百鸡问题

#include

intmain()

{

intx,y,z,j=0;

printf("Folleingarepossibleplanstobuy100fowlswith100Yuan.\n");

for(x=0;x<=20;x++)/*外层循环控制鸡翁数*/

for(y=0;y<=33;y++)/*内层循环控制鸡母数y在0~33变化*/

{

z=100-x-y;/*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/

if(z%3==0&&5*x+3*y+z/3==100)

/*验证取z值的合理性及得到一组解的合理性*/

printf("%2d:

公鸡=%2d母鸡=%2d小鸡=%2d\n",++j,x,y,z);

}

}

 

例5-10:

打印楼梯并楼梯上有一个笑脸

#include"stdio.h"

main()

{

inti,j;

printf("\1\1\n");/*输出两个笑脸*/

for(i=1;i<11;i++)

{

for(j=1;j<=i;j++)

printf("##",219,219);

printf("\n");

}

}

例5-11:

歌星大奖赛

#include

intmain()

{

intinteger,i,max,min,sum;

max=-32768;/*先假设当前的最大值max为C++语言整型数的最小值*/

min=32767;/*先假设当前的最小值min为C++语言整型数的最大值*/

sum=0;/*将求累加和变量的初值置为0*/

for(i=1;i<=10;i++)

{

printf("请输入分数%d=",i);

scanf("%d",&integer);/*输入评委的评分*/

sum+=integer;/*计算总分*/

if(integer>max)max=integer;/*通过比较筛选出其中的最高分*/

if(integer

}

printf("---------------------------------\n");

printf("最高分:

%d\n最低分:

%d\n",max,min);

printf("去掉最高分和最低分的平均分:

%d\

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

当前位置:首页 > 高中教育 > 高考

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

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