如何学好算法与程序设计
由于我是学习计算机软件专业的,因此关于如何学好该门课程的问题,我的亲身体会是:在编写程序源代码上,首先必须至少做到:能够利用程序设计语言自如地编写出自己想让电脑完成的事情(即程序源代码)。这个是第一步的。
其次,在达到上面第一步之后,就必须要尽量多学习一些计算机软件专业的课程了(例如:数据结构及其计算机算法),但是这门课程就是重中之重了。你即使暂时不学习其他的计算机专业基础课程(例如:高等数学、高等代数、离散数学等),数据结构及其计算机算法也必须是要学习的。因为它是影响到你今后编写出来的源程序,其程序运行效率高低、内存优化等的理论基础。
至于说学好了各门数学课程,主要是为了将来在编写计算机软件时,建立适当的数学模型的过程中必须用到的。
最后我要说的一句话就是:如果要想达到这个境界,那么没有什么捷径可走,只能够是依靠平时多上机编写、调试大量的程序、以及在平时编程的过程中注意积累丰富的编程经验。
只有这样,才能够真正学习好算法与程序设计这门课程。
1.
public class TestRandomArray
{
public static void main(String[] args)
{
int maxline = (int) (Math.random()*100)
int[] array = new int[maxline]
for(int i=0i<maxlinei++)
{
int temp = (int) (Math.random()*100)
if(temp>=10&&temp<=99)
{
array[i] = temp
}
else
i--
}
for(int j=0j<maxlinej++)
{
int max = array[0]
if(array[j]>max)
{
max=array[j]
array[j] = array[0]
array[0] = max
}
}
for(int k=0k<maxlinek++)
{
System.out.print(array[k]+" ")
}
}
}
2.
public class TestNumber100
{
public static void main(String[] args)
{
for(int i=1i<100i++)
{
if(i%3==0&&(i%5!=0)&&(i%9!=0))
System.out.println(i+" ")
else
continue
}
}
}
3.貌似没结果
public class Test3
{
public static void main(String[] args)
{
for(int i=10023i<=19923i++)
if(i==0&&i==0)
System.out.println(i+" ")
}
}
4.
class Caculate {
int money
Caculate(){
money = 10
}
public int charge (int distance){
if (distance <3){
money = 10
}
if ((distance >= 3) &&distance <15)
{
money = money + 2*(distance-3)
}
if (distance >15 )
{
money = money + 2*12 + 3*(distance - 15)
}
return money
}
public static void main(String args[]) {
System.out.println("请输入公里数")
int distance_example=0
Scanner key = new Scanner(System.in)
int n = key.nextInt()
distance_example = n
Caculate pay = new Caculate()
pay.money = pay.charge(distance_example)
System.out.println("You need to pay money:"+pay.money+" distance is:"+distance_example)
}
}
5.
public class Test4
{
public static void main (String args[])
{
int n=100
while(n<=1000)
{
int i,j,k
i=n/100
j=(n-i*100)/10
k=n%10
if((Math.pow(i, 3)+Math.pow(j, 3)+Math.pow(k, 3))==n)
System.out.print(n+String.valueOf('\t'))
n++
}
}
}
6.
public class TestMoney
{
public static void main(String[] args)
{
int one=1,two=2,five=5
for(int i=1i<100i++)
for(int j=1j<50j++)
for(int k=1k<20k++)
{
if((i*one+j*two+k*five)==100)
System.out.println(i+"个一分,"+j+"个两分,"+k+"个五分")
}
}
}
7.
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
public class TestJieCheng
{
public static void main (String args[])
{
int a=0,b=1float sum=0
System.out.print("请输入要计算的阶乘:")
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in))
a=Integer.parseInt(in.readLine())
}catch(IOException e){}
for(int i=1i<=ai++)
{
b=b*i
}
System.out.print(a+"的阶乘是"+b)
}
}
7.
public class XXX{
public static void main()
{
for(int i=1 i<=10i++)
{
int j,sum
j=math(i)
sum+=j
}
int math(int i){
int k=i
int b=1
for(int w=1w<=kw++)
{
b=b*w
}
return b
}
}
}
8.
public class Test4
{
public static void main (String args[])
{
int n=100
while(n<=1000)
{
int i,j,k
i=n/100
j=(n-i*100)/10
k=n%10
if((Math.pow(i, 3)+Math.pow(j, 3)+Math.pow(k, 3))==n)
System.out.print(n+String.valueOf('\t'))
n++
}
}
}
9.
public class TestNumber2
{
public static void main(String[] args)
{
final int maxline = 20
double sum = 0
double [] denominator = new double [maxline]
double [] numerator = new double [maxline]
for(int i=2i<denominator.lengthi++)
{
denominator[0]=1
denominator[1]=2
denominator[i]=denominator[i-1]+denominator[i-2]
}
for(int j=2j<numerator.lengthj++)
{
numerator[0]=2
numerator[1]=3
numerator[j]=numerator[j-1]+numerator[j-2]
}
for(int k=0k<maxlinek++)
{
sum+=(numerator[k])/denominator[k]
}
System.out.println(sum)
}
}
10.
import java.io.*
public class 根据输入的三个数求一元二次方程
{
public static void main (String args[]) throws NumberFormatException, IOException
{
float a[]=new float [3]
for(int i=0i<a.lengthi++)
{
System.out.println("请输入第"+(i+1)+"个数")
BufferedReader in =new BufferedReader(new InputStreamReader(System.in))
a[i]=Float.parseFloat(in.readLine())
}
float x1=0,x2=0
x1=(float) ((((-1)*a[1])+(Math.sqrt(a[1]*a[1]-4*a[0]*a[2])))/(2*a[0]))
x2=(float) ((((-1)*a[1])-(Math.sqrt(a[1]*a[1]-4*a[0]*a[2])))/(2*a[0]))
System.out.print(a[0]+"X2"+a[1]+"X"+a[2]+"的两个根是:")
System.out.print(x1+"和"+x2)
}
}
2..如果你从事其他行业,涉及到编程解决问题的,如编程解决数学中的四色问题,编程实现机器控制,学习这些是必要的。
3..如果你想当一名真正的电脑高手或黑客,你必须掌握算法和程序设计方面的知识,能熟练编写程序。编个木马应该不成问题。
4..如果你想开发你的大脑,拓宽你的思维,学习算法吧!如果你想提高自己解决问题的能力,学习算法吧。如果你想把算法付诸实践,学习程序设计吧!
徐亚学习的知识有:
计算机组成原理、c语言程序设计、算法与数据结构、Java等面向对象的程序设计,还要了解离散数学,混沌学,拓扑学,概率学,掌握一定英语。
一、首先教师应根据学生的实际情况,处理教材,分散难点
新课标指出:“学习本模块旨在使学生进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。”算法是程序设计的灵魂,算法教学是程序设计语言教学的基础,程序设计语言教学是算法教学的必要的延续。
教科版的《算法与程序设计》,使用的编程语言是VisualBasic6.0。它和大多数程序设计语言书籍一样,先花大量的篇幅介绍与VB语言开发环境及语法相关的基础知识和基本概念,而后才开始程序三种基本结构的教学。教师根据学生的实际情况,对教材进行了处理、对内容进行调整,改变了教材中原有知识的逻辑结构顺序。这样学生可以边用边学,以用促学。
教师在每节课教学过程中都以简单有趣的小问题为切入点,通过分析问题、设计算法、编写程序、调试运行,让学生对算法和程序设计有一个感性的认识,以降低学生的学习难度,并激发学生的学习兴趣,观摩、模仿、尝试等阶段逐渐到学生能独立操作。开始选择的例子比较简单,如“在屏幕上输出‘studyVB’”、“已知三边之长求三角形面积”、“计算前100个自然数之和”等。在此过程中适当忽略VB的可视化开发环境,其中数据的输入只要求用inputbox()函数完成,数据的输出直接用print语句在窗体完成,整个事件只要求由命令按钮command1_click()来触发,这样的目的一方面是减少太多新知识对学生学习算法思想的干扰,将难点分散,另一方面控件少的程序也更容易上机调试通过,让学生体验成功的喜悦。
二、其次教师应联系学生的数学知识,进行算法与程序设计练习
算法是解决问题的方法和步骤,计算机解决问题,必须严格地按步骤进行,这和我们平时解决问题是有区别的。因此在算法设计中,应将解题的每一步都想清楚,对学生逻辑思维能力要求较高,许多同学刚开始不太适应。因此教师在教学过程中,精选教学案例,联系学生的数学知识,从学生熟悉的或感兴趣的数学问题出发,进行算法与程序设计的练习。学生刚刚学习过海伦公式,在顺序结构和选择结构的教学中可采用“已知三边长利用该公式来求三角形的面积”这个例子。因为学生有数学基础,只要将解题步骤稍加修改就写出如下算法:
1.输入三边长;
2.求面积;
3.利用海伦公式s=p(p-a)(p-b)(p-c),p=a+b+c2,求出面积s
4.输出面积s;
5.结束程序。
根据此算法编写好程序,在调试运行中发现如果三边长为10,10,30时就不会输出结果。那么是为什么呢?学生很快就想到这样的三条边是组不成三角形的,怎么改?自然是输入的a、b、c要先满足两边之和大于第三边才能组成三角形的,所以要在第二步之前添加一句,“如果不能同时满足,就输出‘输入数据错误’,转5;否则转2”。通过以上的例子,既体会到了算法的严谨性,学生也学会了顺序和选择两种结构的算法描述。
教师还用趣味数学题来激发学生的兴趣,如在学习过程中老师通过讲解“水仙花数”、“百鸡百钱”、“韩信点兵”、“棋盘上的麦粒”、“鸡兔同笼”等问题来激发学生的学习兴趣,以使大家的积极性得到提高。
三、一题多变,提高学生对知识的理解能力和编程能力
学生固有的认识框框和习惯的思维方式是学好算法与程序设计的一大障碍。只有多实践才能体会和认识到计算机解决问题的过程。然而由于课时限制,不可能有太多的时间来进行这方面的训练。教师如能恰当地运用“一题多变”和“一题多解”等方法,精心选择一道例题,让它由浅入深循序变化,引导学生分析和比较,总结解决问题的一般规律,对弄清基本概念,提高解题能力以及培养思维的灵活性都是有益的。例如,对于“求s=1+2+3+4+5+6的一个算法”就可以拓展以解决一类问题,如s=12+22+32+42+52+62,s=1+12+13+14+15+16,s=1-2+3-4+5-6,s=1×2×3×4×5×6等许多问题。这样引导学生对比for-next以及do-loop循环的语法及适用情况。通过“一题多变”和“一题多解”的教学手段,使课堂效率得到了大大地提高。
四、教师应授之以渔,教会学生自己调试程序
《算法与程序设计》模块是作为计算机应用的技术基础设置的,不能忽视技术,但我们强调的技术不再是以前那种“软件说明书”式的操作。实际上对学生来说,犯的错误具有共性,主要是标点符号错误,比如“:”和“;”,关键词与变量名之间没有空格,语句书写不完整,有if没有endif,有for没有next,变量名、对象名引用时出现拼写错误等,其实学生只要掌握一点调试、运行程序的方法就能大大提高上机效率。通过训练学生不但能自己调试程序,更能加深对程序的理解,尤其是到循环结构以后,这种作用就更明显了,而且这种能力完全可以迁移到今后的学习和生活中去。
新课程目前还处在实验阶段,存在着很大的探索空间。对学生来说,激发他们的学习兴趣、提高他们的积极性、不断进行创新的同时提高教师自身的信息素养水平。教师不再只是教学者,更应该成为研究者和学习者,教师应加强教学反思,才能提高教学水平。
6-10 D D C C B
11-13 C C B
判断 1-6 AAAAAB
综合的就不会了...
答案是自己写的,,,不是很确定...
希望有完全正确的能告诉我下...
C++提供了以下运算符:
1、算术运算符
+(加)
-(减)
*(乘)
/(除)
%(整除求余)
++(自加)
--(自减)
2、关系运算符
>(大于)
<(小于)
==(等于)
>=(大于或等于)
<=(小于或等于)
!=(不等于)
3、逻辑运算符
&&(逻辑与)
||(逻辑或)
!(逻辑非)
4、位运算符
<<(按位左移)
>>(按位右移)
&(按位与)
|(按位或)
^(按位异或)
~(按位取反)
5、赋值运算符
(=及其扩展赋值运算符)
6、条件运算符
(?:)
7、逗号运算符
(,)
8、指针运算符
(*)
9、引用运算符和地址运算符
(&)
10、求字节数运算符(sizeof)
11、强制类型转换运算符(
(类型)
或类型(
))
12、成员运算符
(.)
13、指向成员的运算符
(->)
14、下标运算符
([
])
15、其他
(如函数调用运算符())。
C语言是国际上广泛使用的一种计算机语言,它适合作为系统描述语言,既可以用来编写系统软件,又可以用来编写应用软件。C语言从发布之日起就得到了广泛传播,为大多数程序员所接受,C语言使用率也一直在编程语言排行榜中稳居前三位,因此学习C语言前景也是非常可观的。
一个程序通常包含算法、数据结构、程序设计方法及语言工具和环境4个方面,其中,算法是核心,算法就是解决“做什么”和“如何做”的问题。算法与程序设计以及数据结构密切相关,是解决一个问题的完整的步骤描述,是解决问题的策略、规则、方法,是求解特定问题的一组有限的操作序列。比如建造一栋楼之前,要先在图纸上绘出其构造图,算法就是在编写程序前先整理出基本思路。算法的描述形式有很多种,如传统流程图、结构化流程图及计算机程序语言等。
一个程序应该包括对数据的描述和对数据的操作。其中,对数据的描述是指在程序中要指定数据结构,即数据的类型和数据的组织形式;对数据的操作也就是对数据进行操作的步骤,即算法。 著名的计算机科学家沃思(Nikiklaus Wirth)曾经提出过一个公式: 算法+数据结构=程序 随着时代的发展以及计算机技术的进步,这个公式已经不够准确了。
实际上,一个程序还应该包括采用一种程序设计方法进行程序设计并用计算机语言描述,经常采用的是结构化的程序设计方法。
算法一般可以分为两大类,一类是解决科学与工程计算方面的算法,如求解数值积分、微分方程、线性方程组和代数方程等,这类算法称为数值运算算法;另一类是解决数据处理方面问题的算法,称为非数值运算算法,如各种各样的查找算法、排序算法以及遍历算法等。目前,计算机在非数值运算方面的应用远远超过了在数值运算方面的应用。
#include <iostream>
using namespace std
int main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a'
c1+=4
c2+=4
c3+=4
c4+=4
c5+=4
cout<<c1<<c2<<c3<<c4<<c5<<endl
return 0
}