nbhkdz.com冰点文库

杨亮c++快速入门


欢迎参加信息学竞赛:以下将引导你快速进入编程的世界。 对于一个 OIer,选何种语言不是关键点,能快速入门并使用它建立自 己的工程并解决问题才是最终目的。 C++本身的代码简洁性以及传承于 C 的特性,便利的现成的代码复用 使得其有很多优势,就选它吧。

学习环境的搭建: 为了便于方便的学习环境的搭建, 我们在 windows 系统下写代码, 用 OJ 在 l

inux 下评测。 首先下载 devc++安装,可以选择 Chinese simple 语言,以及 debug 编 译模式,其他一切默认。

第一个程序:1.Hello World! Ctrl N 新建文档。 键入以下代码: //为注释语句,用于帮助阅读代码含义
#include <iostream> //包含库文件 #include <cstdio> //包含库文件,一些基本输入输出的语句定义在此 using namespace std; //声明命名空间 int main() //主函数 { printf("Hellow world!"); //我们要编写的代码区域
return 0; } //表示程序正常运行结束并返回

注意标点符号,c++每一个语句以分号结尾“; ”是英文状态下的标点 符号,否则会编译错误。 编译运行(F11) ,将在屏幕上输出 Hello World! 。

今后我们的主要工作就是编写红色部分内容的代码。

例子 2.
#include <iostream> //包含库文件 #include <cstdio> //包含库文件,一些基本输入输出的语句定义在此 using namespace std; //声明命名空间 int main() //主函数 {

Int a,b; //定义两个整数型变量 scanf("%d%d",&a,&b); //&取变量的地址,从键盘读入,以空格分隔,分别赋值 给两个变量 a 和 b printf("%d",a+b); //输出 a+b 的值
return 0; } //表示程序正常运行返回

变量: 变量: 可视为在计算机的内存中开辟的一段用于临时存储数据的 容器。 变量使用前要事先声明数据类型。 标识符就是程序员自己起的名字,除了变量名,后面还会讲到函 数名、标号等。不过,名字也不能随便起,C 语言规定,标识符只能 由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成,并且第一个字符必 须是字母或下划线。 以下标识符是合法的: a, x, x3, BOOK_1, sum5

以下标识符是非法的: 3s s*T -3x bowy-1 不能以数字开头 出现非法字符* 不能以减号(-)开头 出现非法字符减号(-)

另一份 a 加 b 的代码:例 2.1
#include <iostream> #include <cstdio> //包含库文件,一些基本输入输出的语句定义在此 using namespace std; //声明命名空间 int main() //主函数 { inta,b,sum; //定义两个整数型变量 scanf("%d%d",&a,&b); //&取变量的地址,从键盘读入,以空格分隔,分别赋值给两 个变量 a 和 b sum=a+b; //a+b 的和复制给变量 sum printf("%d",a+b); //输出 sum 的值 return 0; } //表示程序正常运行返回

注意这里的“=”是赋值语句操作符,不是数学上的等号。

以上为顺序执行的一系列语句。 程序设计一般分为顺序,分支,循环。 以下为分支语句代码例子,以 if 语句为例 基本语法为:
if

else 语句的结构为:

if(表达式) { 语句块 1 } else { 语句块 2 } 意思是: 如果表达式的值为真, 则执行语句块 1, 否则执行语句块 2 。 其执行过程可表示为下图:

可以只有 if 而没有 else,但要注意 if 和 else 的配对关系,最好利用缩 进对齐,养成好的书写代码习惯,提高代码可读性,便于以后自己阅 读调试,也利于在大型工程中便于协同合作。

可以嵌套:语句块 1 和语句块 2 中,可以包含 if 语句或者其他,称为 嵌套。 例如:期末考试成绩出来了,我们把它分下类:90~100 为"Great"; 70~89 为"Good";60~69 为"Average";0~59 位"Poor"。
#include<cstdio> using namespace std; int main() { int a; scanf("%d",&a); if (90<=a&&a<=100) { printf("Great"); } else { if (70<=a&&a<=89) { printf("Good"); } else { if (60<=a&&a<=69) { printf("Average"); } else { if (0<=a&&a<=59) { printf("Poor"); } } } } return 0; }

注意逻辑表达式常常会用到&&表示且,||表示或, !表示取反。担心 运算优先级引起混乱的,可以用小括弧。

练习:OJ 上的第 7 题,if 语言题目。 对于 switch 语句,请自行阅读了解。

另外一种多分支选择的语句——switch 语句, 它的基本语法格式如下: switch(表达式){ case 常量表达式 1: 语句块 1; break; case 常量表达式 2: 语句块 2; break; ...... case 常量表达式 n: 语句块 n; break; default: 语句块 n+1; }

它的执行过程是:首先计算“表达式”的值,然后从第一个 case 开 始,与“常量表达式 x”进行比较,如果与当前常量表达式的值不相 等,那么就不执行冒号后边的语句块,一旦发现和某个常量表达式的

值相等了,那么它会执行之后所有的语块。注意每个语句块后面要加 上 break,否则会不判断接下来是否相等一直执行下去。如果直到最 后一个 “常量表达式 n” 都没有找到相等的值, 那么就执行 default 后 的“语句 n+1” 。

更加简单的分支选择方法,叫做条件运算符,语法格式为: 表达式 1 ? 表达式 2 : 表达式 3 条件运算符是 C 语言中唯一的一个三目运算符,其求值规则为:如果 表达式 1 的值为真,则以表达式 2 的值作为整个条件表达式的值, 否则以表达式 3 的值作为整个条件表达式的值。 条件表达式通常用于 赋值语句之中。

if (a > b) max = a; else max = b; 上面的 if else 语句等价于: max = (a>b) ? a : b; 该语句的语义是: 如 a>b 为真, 则把 a 赋予 max, 否则把 b 赋予 max。 你可以认为条件运算符是一种简写的 if else,你完全可以用 if else 代替条件运算符。

循环结构: 例如,输出 1 到 100 的所有整数之和。

语法:while(逻辑表达式) { 循环体语句块 } 注意循环条件,要能够正常结束循环,一般在循环体中不断更新循环 条件,最终循环条件不满足,跳出循环,否则死循环将导致程序不能 正常结束。同时循环体内也可以有新的循环语句,构成循环的嵌套。 例 3.1
#include <cstdio> #include <iostream> using namespace std; int main() { int a=1,s=0; //变量要初始化,否则可能是个随机的值 while (a<=100) //循环条件 { s=s+a; //每循环一次,累加到变量 s a++; //a=a+1 的简写 printf("%d\n",s); //输出 s 变量的值并换行 } return 0; }

程序的调试,debug 可以为程序添加断点, 使程序运行到某一步停下来, 等待我们手动执 行下一步, 此时可以查看某些变量实时的值, 或者在程序中添加中间 变量输出,以判断程序执行中是否按我们的意愿执行。

作业:完成 syzoj.com 上的 8 号题目。 参考代码:

#include<cstdio>
int main() { intn,b,sum=0; scanf("%d",&b); int i=1; while(i<=b) { scanf("%d",&n); sum+=n; i++; } printf("%d",sum); return 0; }

例:假设一个三位数 x 的百位、十位、个位上的数字分别为 a、b、c,如果
a^3+b^3+c^3 恰好等于 x,则称 x 为水仙花数,如:153 就是一个水仙花数, 1^3+5^3+3^3 =1+125+27=153。请编写程序判断一个三位正整数是否是水仙 花数。

用到取余运算符% 参考代码:
#include <iostream> #include <cstdio> using namespace std; int main() { int number,gewei,shiwei,baiwei; scanf("%d",&number); gewei=number%10; shiwei=number/10%10; baiwei=number/100; if (gewei*gewei*gewei+shiwei*shiwei*shiwei+baiwei*baiwei*baiw ei==number) { printf("TRUE"); } else { printf("FALSE"); } return 0; }

百钱百鸡:

#include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; a=1; while(a<=100) { b=1; while(b<=100) { c=3; while(c<=99) { if((5*a+3*b+c/3==100)&&(a+b+c==100))
{

printf("公鸡=%d,母鸡=%d,小鸡=%d\n",a,b,c); } c=c+3; } b++; } a++; } return 0; }

综合练习:计算 1 到 100 能被 3 整除或者能被 5 整除的所有数之和。

#include <cstdio> #include <iostream> using namespace std; int main() { int a=1,s=0; while (a<=100) { if(a%3==0||a%5==0) s+=a; a++; } printf("%d\n",s); return 0; }

scanf()语句和 printf()语句是标准格式化输入输出语句 参考
scanf 和 printf 这两个函数分别称为格式输入函数和格式输出函数。其意义是按指定的格式输 入输出值。因此,这两个函数在括号中的参数都由以下两部分组成: 1) 格式控制串:格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数 据类型。 在 printf 函数中可以在格式控制串内出现非格式控制字符,这时在显示屏幕上会显示源字符 串。各种类型的格式表示方式请参考:C 语言格式输出函数 printf()详解。C 语言格式输出函 数 printf()详解

在 scanf 函数中也可以在格式控制串内出现非格式控制符,这时会将输入的数据以该字符为 分隔。各种类型的格式表示方式请参考:C 语言 scanf()函数。C 语言 scanf()函数。

2) 参数表:参数表中给出了输入或输出的变量。当有多个变量时,用英文逗号(,)分开。例如: printf("sine of %lf is %lf\n",x,s); // %lf 为格式字符,表示按双精度浮点数处理,它在格式串中两次现,对应了 x 和 s 两个变量 // 其余字符为非格式字符则照原样输出在屏幕上。 scanf("%d %fa%c", &intNum, &floatNum, &c); // %d, %f, %c 为格式字符 // 表示将输入的数据分别以整数、浮点数和字符形式赋值给变量 intNum, floatNum,c // 其中的空格和 a 为分隔符 // 变量 intNum, floatNum,c 都有一个'&'符号,表示取地址

例如 a+b,cin 和 cout 更简洁一些
#include <iostream> #include <cstdio> using namespace std; int main() { float a,b; scanf("%f%f",&a,&b); printf("%f\n",a+b); return 0; } #include <iostream> #include <cstdio> using namespace std; int main() { float a,b; cin>>a>>b; cout<<a+b<<endl; return 0; }

for 循环结构 格式:for(语句 1;逻辑表达式 2;语句 3) { 语句块:循环体 } 先执行语句 1,然后逻辑表达式 2,分两种情况:如为真(非 0) ,则 执行循环体, 然后执行语句 3; 如为假, 则不执行循环体, 结束循环。

注意:表达式 1 仅在第一次循环时求解,以后都不会再执行,可以认 为这是一个初始化语句。 1) for 循环中的 “表达式 1 (循环变量赋初值) ” 、 “表达式 2(循环条件)” 和“表达式 3(循环变量增量) ”都是选择项,即可以缺省,但分号(;) 不能缺省。 2) 省略了“表达式 1(循环变量赋初值) ” ,表示不对循环控制变量赋 初值。 3) 省略了 “表达式 2(循环条件)” , 如果不做其它处理就会成为死循环。

for 循环的执行过程可用下图表示:

高斯求和问题循环代码对比:

#include <cstdio> #include <iostream> using namespace std; int main() { int a=1,s=0; while (a<=100) { s+=a; a++; } printf("%d\n",s); return 0; }

//s=s+a

#include <cstdio> #include <iostream> using namespace std; int main() { int i,s=0; for(i=1;i<=100;i++) { s+=i; } cout<<s; return 0; }

练习使用 for 语句改写百钱百鸡问题求解。 样例代码:
#include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; for(a=1;a<=20;a++) { for(b=1;b<=33;b++) { for(c=3;c<=99;c=c+3) { if((5*a+3*b+c/3==100)&&(a+b+c==100)) { cout<<a<<" "<<b<<" "<<c<<endl; } } } } return 0; }

请自行学习和验证 break 和 continue 语句。 break 语句 break 可以用来跳出 switch 语句。当 break 语句用于 while、for 循环 语句中时,会终止循环而执行循环语句后面的代码。break 语句通常 和 if 语句一起使用,即满足条件时便跳出循环。 continue 语句 continue 语句的作用是跳过循环体中剩余的语句而强行执行下一次 循环。continue 语句只用在 while、for 循环中,常与 if 条件语句一

起使用,判断条件是否成立。 数组问题: 观察以下代码:并运行之。

#include <cstdio> #include <iostream> using namespace std; int a[110] ; int main() { int i,s=0; for(i=1;i<=100;i++) { a[i]=i; }

for(i=1;i<=100;i++) { s=s+a[i]; } cout<<s; return 0;
}

该代码表示开一个大小为 110 的数组(相当于 110 个变量) ,分别给 a[1]=1;a[2]=2;a[3]=3;……a[100]=100;然后将这 100 各变量的值累加。 定义数组就是定义一批变量,然后通过下标序号方便地引用变量。数 组可以是多维的,如 3 维数组 arr[1000][1000][1000],其包含的变量数 为 1e9. 注意定义数组要放在主函数之外,以免内存不足,特别注意的是,数 组内第一个元素是 arr[0],而不是 arr[1]。同理也要注意最后一个元素 的编号。

完成 OJ 上的习题 15,数组练习。
有 n 个整数,分别为 a(1),a(2),a(3)...a(n)。 现在询问你 m 次,第 i 次询问一个整数 q(i),问你 a(q(i))是什么?

参考代码:
#include <cstdio> #include<iostream> using namespace std; const int kN = 1e5+10; int arr[kN]; int main () { int n, m; cin>>n>>m; for (int i = 1; i <= n; i++) { cin>>arr[i]; } for (int i = 1; i <= m; i++) { int x; cin>>x; cout<<arr[x]<<endl; } return 0; }

文件输入输出:以 oj 第 8 题为例: 将 样例数据 写入 data.in ,运行程 序后 ,将会把 结果输 出到文 件 result.out 主要用于本地测试。在调试环境中运行程序,输入测试数据,当能得 到正确运行结果后,才将程序提交到 oj 中
#include<cstdio> int main() { freopen("data.in","r",stdin); freopen("result.out","w",stdout); int n,b,sum=0; scanf("%d",&b); int i=1; while(i<=b) { scanf("%d",&n); sum+=n; i++; } printf("%d",sum); fclose(stdin); fclose(stdout); return 0; }

在使用完一个文件后应该关闭它,这应该成为一个习惯。如果不关闭 文件,可能会丢失数据。因为在向文件写数据时,实现将数据输到缓 冲区,待缓冲区充满后才正式输出给文件,如果当数据未充满缓冲区 而程序结束运行,就会将缓冲区中的数据丢失。用 fclose 函数关闭文 件, 他先将缓冲区中的数据输出到磁盘文件然后才释放文件指针变量, 从而避免了数据丢失。

排序:一排 n 个正整数,要求由小到大排序。 1、冒泡算法
经典排序算法 - 冒泡排序 Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外循环) 第一次两两比较 6 > 2 交换(内循环) 交换前状态| 6 | 2 | 4 | 1 | 5 | 9 | 交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

第二次两两比较,6 > 4 交换 交换前状态| 2 | 6 | 4 | 1 | 5 | 9 | 交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

第三次两两比较,6 > 1 交换 交换前状态| 2 | 4 | 6 | 1 | 5 | 9 | 交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

第四次两两比较,6 > 5 交换 交换前状态| 2 | 4 | 1 | 6 | 5 | 9 | 交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第五次两两比较,6 < 9 不交换 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外循环)

第一次两两比较 2 < 4 不交换 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二次两两比较,4 > 1 交换 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5 不交换 交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第四次两两比较,5 < 6 不交换 交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三趟排序(外循环) 第一次两两比较 2 > 1 交换 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 | 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第二次两两比较,2 < 4 不交换 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5 不交换 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外循环)无交换 第五趟排序(外循环)无交换 排序完毕,输出最终结果 1 2 4 5 6 9

复杂度分析: n+n2+n
#include <cstdio> #include <iostream> using namespace std; int main() { int array[10] = {15, 225, 34, 42, 52, 6, 7856, 865, 954, 10}; int i, j; for (i = 0; i < 10; i++) { //每一次由底至上地上升 for (j = 0; j <9-i;j++) {

if (array[j+1]<array[j]) //大数往后移 { int temp; temp = array[j+1]; array[j+1] = array[j]; array[j] = temp;
} } } for (i = 0; i < 10; i++) { printf("%d\n", array[i]); } return 0; }

// 解法一:冒泡排序 // 空间复杂度:O(n),时间复杂度:O(n^2) // 预计得分:70 #include <cstdio> using namespace std; const int kN = 1e5+10; int arr[kN], N; int main () { scanf("%d", &N); for (int i = 1; i <= N; i++) { scanf("%d", &arr[i]); } for (int i = 1; i <= N; i++) { for (int j = N; j > i; j--) { if (arr[j] <arr[j-1]) //小数往前移 { int t = arr[j]; arr[j] = arr[j-1]; arr[j-1] = t; } } } for (int i = 1; i <= N; i++) { printf("%d ", arr[i]); } return 0; }

Debug 两份代码,查看数组元素中的值是如何交换的。

2、桶排序。 桶排序顾名思义是把数据按照大小 分块,每一块的放到一个桶里,第二 个桶的所有数大于第一个桶的所有 数,第三个桶的所有数大于第二个桶 所有的数??这一步的实现有多种方 法,如果要在 O(n)内一般要用类似于 建立哈希表的方法(但并不完全相 同,桶排序要求桶之间是有大小顺序 的) 。然后每个桶里的数据然后再进 行排序,排序方法任选,当然也可以 再用桶排序(例如先以最高位为键值 进行桶排序,再以次高位为键值进行 桶排序,直到个位) 。
}
for (int i = 0; i <kM; i++) { for (int j = 0; j <cnt[i]; j++) { printf("%d ", i); } } return 0; // 解法二:桶排序 // 空间复杂度:O(m),时间复杂 度:O(n+m) m 为需要排序的数字 的最大值 // 预计得分:100 #include <cstdio> using namespace std; const int kM = 5e5+10; int cnt[kM], N; int main () { scanf("%d", &N); for (int i = 1; i <= N; i++) { int x; scanf("%d", &x); cnt[x] += 1; }

字符串:另一种常见的数据类型为字符型 例如 char a scanf("%c",&a); //表示由控制台读入一个字符

字符在计算机中是以二进制存储的,
ASCII 码规定了 128 个英文字符与二进制的对应关系, 占用一个字节 (实际上只占用了一个 字节的后面 7 位, 最前面 1 位统一规定为 0) 。 例如, 字母 a 的的 ASCII 码为 01100001, 那 么 你 暂 时 可 以 理 解 为 字 母 a 存 储 到 内 存 之 前 会 被 转 换 为 01100001 , 读 取 时 遇 到 01100001 也会转换为 a。

请尝试编程输出表中的字符。 延伸知识:ASCII 码和 Unicode 码
#include <cstdio> #include <iostream> using namespace std; int main() { for (int i = 0; i < 128; i++) { printf("%c\n", char(i)); } return 0; }

函数 Max 函数的实现

#include <cstdio> #include <iostream> using namespace std; int max(int m,int n){ if(m>n) return m; else return n; } int main(){ int a,b, ans; printf("Input two number: "); scanf("%d%d",&a,&b); ans = max(a,b); printf("The biger is %d \n",ans); return 0; }

也可用三元运算符返回,比如 max=(m>n)?m:n;

示例:计算 1+2+3+...+(n-1)+n 的值。
#include <cstdio> #include <iostream> using namespace std; int sum(int n){ int i; for(i=n-1; i>=1; i--) { n+=i; } printf("The inner n = %d\n",n); return n; } int main(){ int n, total; scanf("%d",&n); total = sum(n); printf("1+2+3+...+(n-1)+n = %d\n", total); return 0; }

阶乘函数
一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。 执行递归函数将反复调用其自身,每调用一次就进入新的一层。 【示例】用递归计算 n!。阶乘 n! 的计算公式如下:

根据公式编程: #include <cstdio> #include <iostream> using namespace std; long long fac(int n) { long long f; if (n==1) f=1; else f=n*fac(n-1); return f; } int main() { int a; long long result; cin>>a; for(int i=1;i<a;i++) { result = fac(i); cout<<result<<endl; } return 0; }

一般来说,递归需要有边界条件、递归前进段和递归返回段。当 边界条件不满足时,递归前进;当边界条件满足时,递归返回。 注意: 递归就是调用自身,在使用递归策略时,必须有一个明确的递归 结束条件,称为递归出口。 递归算法一般用于解决三类问题: (1)数据的定义是按递归定义的。(Fibonacci 函数) (2)问题解法按递归算法实现。(回溯) (3)数据的结构形式是按递归定义的。(树的遍历,图的搜索) ? 递归的缺点: 递归算法解题的运行效率较低。在递归调用的过程当中系统为 每一层的返回点、局部量等开辟了栈来存储。递归次数过多容 易造成栈溢出等。

练习:syzoj.com 的第 20 题。
阶乘,一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有 0 的阶乘为 1。自然数 n 的阶乘写作 n!。1808 年,基斯顿·卡曼引进这个表示法。

任何大于 1 的自然数 n 阶乘表示方法:

参考代码:

#include <cstdio> #include <iostream> using namespace std; long long fact(int n){ long long f=1; for(int i=1;i<=n;i++) { f =f*i; } return f; } int main(){ int a; cin>>a; cout<<fact(a)<<endl; return 0; }

练习:syzoj.com 的第 21 题。
斐波那契数列的定义如下: f(0) = 1 f(1) = 1 f(n) = f(n-1) + f(n-2) (n >= 2) 现在给你两个整数 a 和 b,问你有多少个 f(n),使得 a <= f(n) <= b
#include <cstdio> #include <iostream> using namespace std; int f(int i) { if(i==0) return 0; if(i==1) return 1; else return f(i-1)+f(i-2); } int main() { int i=0,n,m,p=1,q=1,an=0; float bi=1.0; cin>>n>>m; for(i=0;i<=40;i++) { p=f(i); cout<<p<<endl; if (p>=n&&p<=m) an=an+1; }

cout<<an;
return 0; }

另外一份代码,比较并体会代码执行效率。
#include <cstdio> #include <iostream> using namespace std; #define N 100 int a[N]; int main() { int i=0,n,m,p=1,q=1,an=0; cin>>n>>m; a[0]=0; a[1]=1; cout<<a[0]<<endl<<a[1]<<en dl; for(i=2;i<=40;i++) { a[i]=a[i-1]+a[i-2]; p=a[i]; cout<<a[i]<<endl; if (p>=n&&p<=m) an=an+1; } cout<<an; return 0; }


杨亮c++快速入门_v0.2

杨亮c++快速入门_v0.2_学科竞赛_高中教育_教育专区。c++快速入门_v0.2 欢迎参加信息学竞赛:以下将引导你快速进入编程的世界。 对于一个 OIer,选何种语言不是...

C环境安装说明

杨亮飞 2009-12-25 双击 VC60CHS 双击 STEUP.EXE 点击下一步 邯郸市科实大学...如最后出现尚未安装成功, 不影响 C++的使用,如计算机上安装杀毒软件,点击解除...

毕业论文

江汉大学数计学院 毕业论文 杨亮 基于网络的信息系统...等简单易懂的脚本语言,结合 HTML 代码, 即可快速地...可以使用 Visual Basic 、 Java 、 Visual C++ 、...