当前位置:首页 >> 学科竞赛 >>

信息学奥林匹克竞赛C语言课程胶片4-定向改编V1.0


C语言
Part 4 for NOI

1. 数组 2. 函数

数组
? 问题:有如下几组数据,它们分别该如何存储呢?
– 一个班学生的学习成绩 – 一行文字 – 一个矩阵

? 这些数据的特点是:
– 具有相同的数据类型 – 使用过程中需要保留原始数据

>?

C语言为这些数据,提供了一种构造数据类型:数组。

数组是一组具有相同数据类型的数据的有序集合。

一维数组
? ? ? ? ? 类型说明符 例如: 数组名[常量表达式]; int a[10];

它表示定义了一个整形数组,数组名为a,此数组有10个元素。 数组名定名规则和变量名相同,遵循标识符定名规则。 在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表 示元素的个数,即数组长度。例如,指定a[10],表示a数组有10个元素, 注意下标是从0开始的,不存在数组元素a[10]。 C89规定常量表达式中可以包括常量和符号常量,但不能包含变量,即不允许 对数组的大小作动态定义,数组的大小不依赖于程序运行过程中变量的值。 例如,下面这样定义数组是不行的:

?

一位数组
? 变长数组(C89不允许,C99允许) ? float a[0]; /* 数组大小为0没有意义 */ ? int b(2)(3); /* 不能使用圆括号 */ ? 下标可以是整型常量,也可以是整型表达式
? A[2+1], a[2*3], a[7/3]

int n; scanf("%d", &n); int array[n]; if(n > 0) { array[0] = 100; printf("array[0]=%d\n", array[0]); } else printf("array length is zero.\n");

数组的存储
? 一维数组: float mark[100];一个元素占4个字 节 ? 每个数据元素占用的字节数,就是基本类型的字 节数

例7.1:10元素一维数组倒序输出
int i, a[10]; for (i = 0; i < 10; i++) { a[i] = i; } for (i = 10 - 1; i > 0; i--) { printf("%d ", a[i]); } printf("\n");

初始化
? 在定义数组时对数组元素赋以初值。例如:
– – int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值依次放在一对花括弧内。

?

可以只给一部分元素赋值。例如:
– – int a[10]={0,1,2,3,4}; 定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。
int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10]={0}; 不能写成:int a[10]={0*10};

?

如果想使一个数组中全部元素值为0,可以写成
– –



这是与FORTRAN语言不同的,不能给数组整体赋初值。
例如:int a[5]={1,2,3,4,5}; 也可以写成 int a[]={1,2,3,4,5};

?

在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。
– – 在第二种写法中,花括弧中有5个数,系统就会据此自动定义a数组的长度为5。但若数组长度与提供初值的个数不相同, 则数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成 int a[10]={1,2, 3,4,5}; 只初始化前5个元素,后5个元素为0

例7.2 用数组来处理,求解Fibonacci数列
? Fibonacci数列公式:
已知: a1=a2=1, an=an-1+an-2 即:1,1,2,3,5,8,13……
int i; int f[20]={1, 1}; for(i=2;i<20;i++) { f[i]=f[i-2]+f[i-1]; } for(i = 0; i < 20; i++) { if(i%5 == 0) { printf("\n"); } printf("%12d", f[i]); }

例7.3 假如有n个人,希望按年龄对他们进行排序
? 使用冒泡排序,按升序排序

例7.3
int a[10]; int i,j,t;
} printf("input 10 numbers:\n"); for(i=0; i<10; i++) { scanf("%d", &a[i]); } printf("\n"); input 10 numbers: 1 2 3 6 5 4 7 8 9 11 the sorted numbers: 1 2 3 4 5 6 7 8 9 11 for(j=0; j<9; j++) { for(i=0; i<9-j; i++) { if (a[i] > a[i+1]) { t = a[i]; }

a[i] = a[i+1]; a[i+1] = t;

}
printf("the sorted numbers:\n"); for(i=0; i<10; i++) printf("%d ", a[i]); printf("\n");

二维数组
? 二维数组定义的一般形式为 ? 类型说明符 数组名[常量表达式][常量表达 式];
? 例如:定义a为3×4(3行4列)的数组,b为5×10(5行10列) 的数组。如下: ? float a[3][4],b[5][10]; ? 不能写成 float a[3,4],b[5,10];

二维数组在内存中的存放
? 二维数组中的元素在内存中的排列顺序是:按行 存放,即先顺序存放第一行的元素,再存放第二 行的元素… ? a[3][4]数组存放

二维数组的引用
二维数组元素的表示形式为:数组名[下标][下标] 例如: a[2][3] 下标可以是整型表达式,如 a[2-1][2*2-1]

不要写成 a[2,3],a[2-1,2*2-1]形式

数组元素可以出现在表达式中,也可以被赋值,例如:
b[1][2]=a[2][3]/2

二维数组初始化
? ? ? ? 数据类型 数组名 [常量表达式1][常量表达式2]={初始化数据}; 分行赋初值,如: 写在一个大括号中,按排列顺序赋初值,如: 对部分元素赋初值,如:
? ? ? ? int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

?

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4]={{1},{5},{9}}; 也可以对各行中的某一元素赋初值,如 int a[3][4]={{1},{0,6},{0,0,11}}; 也可以只对某几行元素赋初值。如:int a[3][4]={{1},{5,6}};

?

如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能 省。如:
? ? ? int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 它等价于:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。如:int a[][4]={{0,0,3},{},{0, 10}};

例7.4 将一个二维数组行和列元素互换,存到另一 ? 个二维数组中 a ? ???13 2 ?1 3 5 ? 4? b ? ? ? ?
? ?5 6 ? ?

?2 4 6?

int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; int b[2][3], i, j;
printf("array a:\n"); for (i=0; i<=2; i++) { for (j=0; j<=1; j++) { printf("%5d", a[i][j]); b[j][i] = a[i][j]; }

printf("\n");
} printf("array b:\n"); for (i=0; i<=1; i++) { for(j=0; j<=2; j++) printf("%5d", b[i][j]); printf("\n"); }

例7.5: 有一个3×4的矩阵,要求编程序求出其中值 最大的那个元素的值,以及其所在的行号和列号
int i,j,row=0,colum=0,max; int a[3][4]={{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}}; //此处初始化应该改为输入函数 max=a[0][0]; for (i=0; i<=2; i++) { for (j=0; j<=3; j++) if (a[i][j]>max) { max=a[i][j]; row=i; colum=j; } } printf("max=%d,row=%d,colum=%d\n", max, row, colum);

字符数组
? 定义方法与前面介绍的类似。例如: ? char c[10]; ? 用来存放字符数据的数组是字符数组。字符数组 中的一个元素存放一个字符。

字符数组初始化
? 对字符数组初始化,最容易理解的方式是逐个字符赋 给数组中各元素。如: ? char c[10]={ ’I′, ’ ′,’a′,’m′,’’,′h′,′a′, ′p′,′p′,′y′}; ? 如果在定义字符数组时不进行初始化,则数组中各元 素的值是不可预料的。 ? 如果花括弧中提供的初值个数(即字符个数)大于数组 长度,则按语法错误处理。

字符数组的部分初始化
? 如果初值个数小于数组长度,则只将这些字符赋 给数组中前面那些元素,其余的元素自动定为空 字符(即′\0′)。例如: char c[10]={′c′,′ ′,′p′,′r′,′o′, ′g′,′r′,′a′,′m′};

数字数组初始化时自动确定长度
? 如果提供的初值个数与预定的数组长度相同,在定义时可 以省略数组长度,系统会自动根据初值个数确定数组长度。 例如:
char c[]={′I′,′ ′,′a′,′m′,′ ′,′h′, ′a′,′p′,′p′,′y′};数组c的长度自动定为10。

? 也可以定义和初始化一个二维字符数组。例如: ? char diamond[5][5]={{′ ′,′ ′,*′},{′ ′,′*′,′ ′,′*′},{′*′,′ ′,′ ′,′ ′,′*′},{′ ′,′*′,′ ′,′*′},{′ ′, ′ ′,′*′}}

例7.6 输出一个字符串
char c[]={'I', ' ', 'a', 'm', ' ', 'a', ' ', 'b', 'o', 'y', '.'}; int i, len = 0; len = strlen(c); printf("strlen(c)=%d\n", len); len = sizeof(c); printf("sizeof(c)=%d\n", len); for(i = 0; i < len; i++) printf("%c", c[i]); printf("\n");

例7.7 使用星号模拟一个钻石图形
char diamond[][5]={{' ', ' ', '*'}, {' ', '*', ' ', '*'}, {'*', ' ', ' ', ' ', '*'}, {' ', '*', ' ', '*'}, {' ', ' ', '*'}}; int i, j; for (i=0; i<5; i++) { for (j=0; j<5; j++) printf("%c", diamond[i][j]); printf("\n"); }

字符串结束符
? 为了测定字符串的实际长度,C语言规定了一个“字符串 结束标志”,以字符′\0′作为标志。如果有一个字符 串,前面9个字符都不是空字符(即′\0′) ,而第10个 字符是′\0′,则此字符串的有效字符为9个。系统对字 符串常量也自动加一个′\0′作为结束符。 ? ′\0′代表ASCII码为0的字符,从ASCII码表中可以查到, ASCII码为0的字符不是一个可以显示的字符,而是一个 “空操作符”,即它什么也不干。用它来作为字符串结束 标志不会产生附加的操作或增加有效字符,只起一个供辨 别的标志。

字符串初始化
//char c[]={'I', ' ', 'a', 'm', ' ', 'a', ' ', 'b', 'o', 'y', '.', '\0'}; //如果c不加\0, strlen(c)值和sizeof(c)有什么不同 //char c[11]={'I', ' ', 'a', 'm', ' ', 'a', ' ', 'b', 'o', 'y', '.'}; //char c[]={'I', ' ', 'a', 'm', ' ', 'a', ' ', 'b', 'o', 'y', '.'}; //char c*+=“I am a boy.”; //相当于加\0初始化 //char c*20+=“I am a boy.”; //11之后使用\0填充 char c[]={"I am a boy."}; int i, len = 0; len = strlen(c); printf("strlen(c)=%d\n", len); len = sizeof(c); printf("sizeof(c)=%d\n", len); for(i = 0; i < len; i++) printf("%c", c[i]); printf(“\n”); 字符数组并不要求它的最后一个字符为 '\0',甚至可以不包含'\0' 。 例如:char c[]={'C','h','i','n','a'};这样写完 全是合法的。但是由于系统对字符串常 量自动加一个'\0' 。因此,人们为了使 处理方法一致,在字符数组中也常人为 地加上一个'\0' 。如: char c[]={'C','h','i','n','a','\0'};这 样做,这样做是为了便于引用字符数组 中的字符串。

例7.8从键盘输入Hello覆盖Pascal Pragram
char c[]="Pascal Program"; char c[]="Pascal Program"; printf("Please input \"Hello\":\n"); printf("Please input \"Hello\":\n"); scanf("%s", c); for (int i=0; i<5; i++) printf("%s", c); { char ch = getchar(); c[i] = ch; } printf("%s", c); char ch;
scanf("%c", &ch);

字符串存储

函数printf和scanf
(1) 用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。 如:写成下面这样是不对的:printf(″%s″,c[0]); (2) 如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。 (3) 输出字符不包括结束符′\0′。
– – 如:char c[10]={″China″}; /* 字符串长度为5,连’\0’共占6个字节 */ printf(″%s″,c);只输出字符串的有效字符“China”,而不是输出10个字符。这就是用字符串结 束标志的好处。

(4) 如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。 (5) 可以用scanf函数输入一个字符串。
– – – 例如 scanf(″%s″,c); scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。例 如,定义 char c[6]; 从键盘输入: China↙?系统自动在China后面加一个′\0′结束符。

例7.9 从键盘输入三个单词到三个字符串中
printf("Please input 3 words:\n"); char str1[5], str2[5], str3[5]; scanf("%s%s%s", str1, str2, str3); printf("string 1:%s, string 2:%s, string 3:%s", str1, str2, str3);

例7.10 空格在scanf中的作用
printf("Please input a sentence:\n"); char str[20]; scanf("%s", str); str不能写为&str printf("string:%s", str);
输入How are you 输出How 编译器沿用英语句子的习惯,把空格作 为scanf函数的分隔符号

例7.11 使用八进制输出一个字符串的地址
printf("Please input a sentence:\n"); %o ?有符号八进制整数 char str[20]; %i ?有符号整数 %u ?无符号十进制整数 scanf("%s", str); %d ?有符号十进制整数 printf("address:%o", str); %s ?字符串

%x ?有符号十六进制整数 %a, %e, %f, %g ?浮点数 %c ?字符 %% ?转义% %[] ?所期望的字符集

字符串处理函数
函数形式 gets(字符数组) puts(字符数组) strcat(字符数组,字符数组) strcpy(字符数组,字符数组) strcmp(字符数组,字符数组) strlen(字符数组) strlwr(字符数组) strupr(字符数组) 功能 从终端输入一个字符串到字符数组 输出一个字符串(\0结尾)到终端 把两个字符串连接起来 复制字符串 比较两个字符串,相等返回0,大于返回正整数,否 则返回负整数 返回字符串长度 转换为小写字母 转换为大写字母

例7.12统计一段话的单词数量
char string[500]; int i, num=0, word=0; char c; gets(string); for (i=0; (c=string[i])!='\0'; i++) { if(c == ' ') word=0; else if(word == 0) { word = 1; num++; } } printf(“There are %d words in the line.\n”, num);

7.13 找出三个字符串中的最大者
char string[20]; char str[3][20]; printf("Please input 3 sentences:\n"); for (int i=0; i<3; i++) gets (str[i]); if (strcmp(str[0],str[1]) > 0) strcpy(string, str[0]); else strcpy(string,str[1]); if (strcmp(str[2],string) > 0) strcpy(string,str[2]); printf("\nthe largest string is:\n%s\n", string);

Please input 3 sentences: How are you. I am a bad boy. Happy new year.
the largest string is: I am a bad boy.

1. 数组 2. 函数

模块化程序设计
? ? ? ? 部件 组装 一个C程序由一个或者多个源程序文件组成 一个源程序文件由一个或者多个程序模块(部件) 组成

函数定义
? Function: 实现特定功能的程序模块 ? 库函数和用户自定义函数 ? 无参函数:
– 类型名 函数名() – { – 函数体 – }

C89中标准的头文件 <assert.h> 定义宏assert() <ctype.h> 字符处理 <errno.h> 错误报告 <float.h> 定义与实现相关的浮点值勤 <limits.h> 定义与实现相关的各种极限值 <locale.h> 支持函数setlocale() <math.h> 数学函数及其各种定义 <setjmp.h> 支持非局部跳转 <signal.h> 定义信号值 <stdarg.h> 支持可变长度的变元列表 <stddef.h> 定义常用常数 <stdio.h>输入输出函数及其各种定义 <stdlib.h> 动态存储分配函数及其他各种声明 <string.h> 字符串函数及其各种定义 <time.h> 支持系统时间函数 C99新增的头文件和库 <complex.h> 支持复数算法 <fenv.h> 给出对浮点状态标记和浮点环境的其他方面的访问 <inttypes.h> 处理最大宽度整数的函数,包含stdint.h <stdint.h> 定义标准的、可移植的整型类型集合。 <iso646.h> 用于定义对应各种运算符的宏 <stdbool.h> 支持布尔数据类型类型。定义宏bool,以便兼容于C++ <tgmath.h> 定义一般类型的浮点宏 <wchar.h> 支持多字节和宽字节函数 <wctype.h>支持多字节和宽字节分类函数

? 有参函数:

– 类型名 函数名(形式参数列表) – { – 函数体 – }

函数调用
? 无参函数的调用语句
– 函数名()

? 有参函数的调用语句
– 函数名(实参列表)

? 函数表达式
– 函数出现在表达式中,例如:c=max(x,y)*2-100;

? 函数参数
– 另外一个函数的参数,例如:printf(“%d”, max(a,b));

例8.1 使用无参函数输出
#include <stdio.h> void print_star(); void print_message(); int main() { print_star(); print_message(); print_star(); return 0; }

**************** How are you! ****************

void print_star() { printf("****************\n"); } void print_message() { printf(" How are you!\n"); }

例8.2 输入两个整数,输出最大者。要求在主函数 输入两个数,用用户自定义函数max求最大值, 并在主函数中输出最大值。
#include <stdio.h> return 0; int main() { int max(int x, int y);

int max(int, int); or int max(int a, int b); int max(int x, int y)
{

}

int a, b, c; printf("Please input two number:"); scanf("%d, %d", &a, &b);
c = max(a, b); printf("The max is %d\n", c); }

int z; if(x > y) z = x; else z = y; return (z);

函数调用过程
① ② ③ ④ ⑤ 针对被调用函数的形参分配内存单元 将实参对应的值传递给形参 执行被调用函数的函数体的语句 通过return语句将函数值带回调用函数 调用结束,释放形参单元

函数原型function prototype
? 在函数调用之前要求进行被调用函数声明delaration 函数原型的一般形式为 ? 函数原型便于编译器对函数调用进行合法性检查 (1) 函数类型 函数名(参数类型1,参数类型2……); (2) 函数类型 函数名(参数类型1,参数名1,参数类型2, ? 合法性检查内容包括函数名、函数值类型、参数个数、参 参数名2……); 数类型、参数顺序 ? 检查通过标准:一致或者兼容 ? 兼容检查能否进行类型转换 ? 被调用函数在调用位置之前,不用声明 ? 在源文件开头声明是全局性的,就不必在函数开头声明了

函数间传递数据的方法
? 参数:通过形式参数和实际参数 ? 返回值:用return语句返回计算结果 ? 全局变量:外部变量

形参和实参
? 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中 的存储单元。 ? 实参可以是常量、变量或表达式,如:
– 只有在发生函数调用时,函数max中的形参才被分配内存单元。 – 在调用结束后,形参所占的内存单元也被释放。 – max(3,a+b); – 但要求它们有确定的值。在调用时将实参的值赋给形参。

? 在被定义的函数中,必须指定形参的类型 ? 实参与形参的类型应相同或赋值兼容。 ? 在C语言中,实参向对形参的数据传递是“值传递”,单向传递,只 由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元 与形参单元是不同的单元。

函数返回值
? ? return语句将被调用函数中的一个确定值带回主调函数中去 如果需要从被调用函数带回一个函数值供主调函数使用,被调用函数中必须 包含return语句。如果不需要从被调用函数带回函数值可以不要return语句。 一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个 语句起作用。return语句后面的括弧也可以不要,如: “return z;” 等价于 “return (z);” return后面的值可以是一个表达式。例如:return(x>y?x∶y); 函数的返回值应当属于某一个确定的类型,在定义函数时指定函数返回值的 类型。 在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。 对于不带回值的函数,应当用“void”定义函数为“无类型”(或称“空类 型”)。这样,系统就保证不使函数带回任何值,即禁止在调用函数中使用 被调用函数的返回值。此时在函数体中不得出现return语句。

?
?

? ? ?

函数嵌套
? 嵌套定义就是在定义一个函数时,其函数体内又包含另一 个函数的完整定义 。 ? C语言不能嵌套定义函数,但可以嵌套调用函数,也就是 说,在调用一个函数的过程中,又调用另一个函数。

例8.3用弦截法求方程 f(x)=x3-5x2+16x-80=0 的根

例8.3

函数的递归调用
? 在调用一个函数的过程中又出现直接或间接地调 用该函数本身,称为函数的递归调用。C语言的 特点之一就在于允许函数的递归调用。
int f(int x) { int y, z; z = f(y); return (2*z); }

例8.4
? 有5个人坐在一起,问第5个人多少岁?他说比 第4个人大2岁。问第4个人岁数,他说比第3 个人大2岁。问第3个人,又说比第2个人大2 岁。问第2个人,说比第1个人大2岁。最后问 第1个人,他说是10岁。请问第5个人多大。

例8.4
#include <stdio.h> int age(int n) //求年龄的递归函数 { int c; //c用作存放函数的返回值的变量 if(n==1) c=10; else c=age(n-1)+2; return(c); } int main() { printf("%d", age(5)); }

例8.5 求n!(课后作业)
? 要求使用递归和递推两种方法 ? 递推方法 ? 递归方法

? 1??(n ? 0,1) f (n) ? ? ?n ? (n ? 1)!??(n ? 1)

例8.6 Hanoi(汉诺)塔问题(课后作业)
? 这是一个古典的数学问题,是一个用递归方法解 题的典型例子。问题是这样的:古代有一个梵塔, 塔内有3个座A、B、C,开始时A座上有64个盘 子,盘子大小不等,大的在下,小的在上。有一 个老和尚想把这64个盘子从A座移到C座,但 每次只允许移动一个盘,且在移动过程中在3个座 上都始终保持大盘在下,小盘在上。在移动过程 中可以利用B座,要求编程序打印出移动的步骤。

思考

知识就是力量


相关文章:
国际信息学奥林匹克竞赛
国际信息学奥林匹克竞赛(IOI) IOI 于 1989 年由联合国教科文组织创建,是一项面向全球中学生的在计算 机科学领域的赛事,每年在不同的国家举办。举办 IOI 的目的...
信息学奥林匹克竞赛培训教案
暂无评价|0人阅读|0次下载|举报文档信息学奥林匹克竞赛培训教案_IT/计算机_专业...第 1 课 认识 PASCAL 语言请参阅《全国信息学奥林匹克联赛培训教程(一) 》P...
信息学奥林匹克竞赛试题(2)
信息学奥林匹克竞赛试题(2)_初一数学_数学_初中教育...1- C) 计算机病毒实质上是一段计算机程序 D) ...1 10 1 12 18 1 5 0 1 4 6 18 0 19 15...
信息学奥林匹克试题(5)(参考答案)
1/2 专题推荐 信息学奥林匹克试题(1) 信息学奥林匹克竞赛试题... 信息学奥...起始框 B.判断框 C.输入输出框 4.称语言为低级程序语言是由于它___。 ...
信息学奥林匹克竞赛初中组(初赛)模拟试题
暂无评价|0人阅读|0次下载|举报文档 信息学奥林匹克竞赛初中组(初赛)模拟试题...A/D C、Modem D、Codec 12、一个栈的输入顺序为 1、2、3、4、5,下列...
信息学竞赛(C语言)程序填空
信息学竞赛(C语言)程序填空_学科竞赛_高中教育_教育专区。高中信息学竞赛(C语言...例如数列为4,-5,3,2,4 时,输出9和3;数列为1 2 3 -5 0 7 8时,输出...
07年北京市信息学奥林匹克竞赛小学组试题
07年北京市信息学奥林匹克竞赛小学组试题_电脑基础...(包括考号文件夹) 提交答案时,请将每个题目的程序...已知 1 英寸==25。4 毫米,请你写出一个方便的小...
2014年海淀区中小学生信息学奥林匹克竞赛(上机)
2014年海淀区中小学生信息学奥林匹克竞赛(上机)_营销/活动策划_计划/解决方案_...(1)请同学们运行 QBASIC 语言环境(BC7.0 版本)或 C/C++语言环境; (2)以...
2014年义乌市小学信息学奥林匹克竞赛试题(附答案)
小学信息学奥林匹克竞赛试题(小学组 pascal 语言 二...8KB C. 8bit D.8MB 4、下列计算机设备中,属于...1、 阅读程序(每题 8 分,共 32 分) program yw...
2013年长沙市小学生信息学奥林匹克竞赛决赛试题
2013年长沙市小学生信息学奥林匹克竞赛决赛试题 一、车辆总数 (100分,存盘程序名:TA) 四川雅安地震牵动了全国人民的心,小记者呈呈了解到全国n个地区各自运往灾区...
更多相关标签:
c语言重定向 | c语言重定向输出 | c语言输入重定向 | c语言输入输出重定向 | c语言重定向的使用 | 信息学奥林匹克竞赛 | 信息学奥林匹克 | 信息学奥林匹克教程 |