当前位置:文档之家› C语言-2014

C语言-2014

C语言-2014
C语言-2014

一、基本概念

1、什么是计算机程序

就是由程序员编写的用于控制计算机完成特定任务的指令。

(你试着对计算机大叫,看看它能明白你的意思吗?,比如说:“请计算5的阶乘除以3的结果是多少”)2、什么是计算机语言;语言的分类有哪些

计算机语言:是一个能完整、准确和规则地表达人们如何控制计算机工作的一套“符号系统”。

语言的分类:①机器语言:二进制形式书写,计算机直接识别和执行,编写复杂容易出错。(古代文言文)

②汇编语言:助记符形式书写,需编译后执行,执行效率高,移植性查。(现代各地方言)

③高级语言:接近人类语言形式书写,需编译后执行,执行效率底(相对前两者),移植性好。

(现代普通话)

3、语言与程序的区别

由特定的语言来编写程序,程序就是某种语言的符号序列。

(就是用某一种语言,例如现代普通话,说出的一段即具有逻辑又有意义的话)

4、C语言的起源及特点

C语言是一门高级语言,由美国贝尔研究所的D.M.Ritchie于1972年推出,之后又有改进和不同版本。

其主要特点如下:(无需死记硬背,了解即可,编程久了自然明白)

①简洁紧凑,使用方便、灵活

②运算符丰富

③数据类型丰富

④是结构化语言

⑤语法限制不太严格,程序设计自由度大

⑥允许直接访问物理地址,可对硬件进行操作

⑦生成目标代码质量高,程序执行效率高(相对别的高级语言)

⑧适用范围大,可移植性好

5、一个简单的hello world程序(最简单的第一印象)

main()

{

printf("hello world!");

}

(虽然我不赞同死记硬背,但是这个简单结构必须记住,否则最好换专业)

6、源程序的编译、连接、运行、集成开发环境等概念

?源程序不能执行,需经编译连接后生成可执行二进制码(即可执行文件,后缀名为.exe),才可以执行。

(源程序是给人看的,不是给计算机看的)

?集成开发环境,是方便用户编写、运行和调试程序的一套软件。

例如:TC、Win-TC、Visual C++、Dev C++等(程序员们编程的工具)

注意:由于不同的集成开发环境因为使用了不同的编译器,所以相同的程序使用不同的开发软件可能会得到不同的运行结果,例如:

(1)long double 变量在Win-TC中使用%Lf可以输出正确结果,但Dev C++中会出错

(2)对于int型变量Win-TC使用sizeof返回为2,而Dev C++返回为4

(3)Win-TC中必须将变量定义放在前面,而Dev C++却不然

(初学者可以暂时忽略这方面)

7、C语言最基本、最简单的结构

main()

{

}

(这是每个程序都必须写出来的结构,考试能写出这个就能得3分啦)

8、等级考试中经常被考到的一些基本概念

?函数是C语言的基本构成单位;

?一个程序有且仅有一个main函数;

?程序都是从main函数开始执行;

? main函数可以放在程序任何位置;

?语句必须以分号作为结束符;

? C语言没有输出输入语句,其输出输入由函数完成;

(在中国应试考试的选择题中经常出现,你可能不太能明白,没关系,算是先灌点应试概念吧)

目标与任务:

【1】建立C语言基本概念,会写简单的Hello World程序

【2】掌握C语言程序的编写、编译、运行过程

【3】会使用printf打印输出,会使用\n进行换行,会使用%d输出数据结果,明白getch()的作用。

二、数据类型

在程序中为数据有必要区分为不同的类型以适应不同的应用场合,例如存储人的姓名(字符型)、年龄(整型)、体重(实型)就需要使用不同的数据类型。

C语言数据类型如下:

(相当于小学学习汉语拼音和简单汉字,是以后作文(程序)写得好不好的关键基础,是学习编程的第一步)

其中使用最多的是:整型(int、long)、实型(float、double)、字符型(char)

(1)数据类型不一样,所占内存字节数不一样

char:1字节;short:2字节;int:2或4字节【Win-TC中2字节,DEV C++中4字节】

long:4字节;float :4字节;double: 8字节

注:sizeof运算符可用来测定数据类型的字节数;

(2)signed与unsigned

signed与unsigned可以放在整型变量short、int、long前,以表示该整型数为有符号数或无符号数?无符号整型:unsigned == unsigned int

?无符号短整型:unsigned short == unsigned short int

?无符号长整型:unsigned long == unsigned long int

-----------------------------------------------

?有符号整型:int == signed int

?有符号短整型:short == short int == signed short int

?有符号长整型:long == long int == signed long int

目标与任务:

【1】重点认识整型、实型、字符型

【2】使用sizeof测试各种常用数据类型的字节数

三、常量和变量

1、什么是常量与变量

例如:求半径为R高为H的圆柱体的体积V。

其中V=3.14*R*R*H 其中3.14为常量,R、H、V为变量;

2、变量的定义

定义格式:数据类型变量1 [ ,变量2,…,变量n ];

例如:int x;

int x,y,z;

也可:int x=1,y=2,z;

注意:多数编译器要求变量的定义置于程序的起始处,但是DEV C++例外;

3、常量的两种形式

?直接常量

例如:56、3.14、5.1E4、’A’、…

?符号常量

#define PI 3.14

#define true 1

注意:#define定义常量时,必须置于程序起始处,且末尾不加分号

4、标识符

【程序中用户自定义的变量名,函数名等都属于标识符】

?是由字母、数字、下划线所组成的且首字母不为数字的字符序列;

?用来标识变量名、符号常量名、函数名、数组名等;

?不能与C语言中的关键字相同;

目标与任务:

【1】能区分常量与变量,明白“赋值”的含义

【2】会定义整型、实型、字符型变量,同时掌握 %d、%f、%c的使用

【3】会用scanf进行基本的数据输入

四、常量的书写形式

1、整型常量

(1)十进制:123、-756

(2)八进制:0123、-0756

(3)十六进制:0X123、-0x756

注意:整型常量的默认类型为int;高精度可以向低精度赋值,但是会有精度损失。

(1)若以u或U结尾,则为unsigned int型

(2)若以l或L结尾,则为long int型

(3)若无U或L结尾,则自动按照其数值大小匹配为int或long int

2、浮点型常量

(1)十进制形式:.123、0.34、56.、78.9(必须有小数点出现)

(2)指数的形式:123e4、34.6E7、.23E-6(E的前后都必须有数字,其后数字必须为整数)

注意:浮点型常量的默认类型为double;高精度可以向低精度赋值,但是会有精度损失。

(1)若以f或F结尾,则为float型;

(2)若无f或F结尾,则为double型;

【如何验证?sizeof(45.6)】

3、字符型常量

(1)用单引号括起来的一个字符:’A’、’@’、’?’

(2)用单引号括起来的八进制形式:’\123’、’\34’,…’\ddd’(ddd:1~3位8进制)

(3)用单引号括起来的十六进制形式:’\x45’、’\xff’,…’\xhh’ (hh:1~2位16进制,其x只能小写)

注意:字符可以当作整型运算;整型可以当作字符输出(0~255之间的数);

4、字符串常量

由一对双引号括起来的字符序列。例如:”abc?f%...”、”How are you?”

注意:’A’与”A”的不同

目标与任务:

【1】编写一个实例,要求使用上面几种实型常量

【2】明白转义字符的作用和正确定义标识符的意义;举例说明

五、运算符

1、各种运算符的分类

(1)算术运算符:( + - * / % ++ -- )

(2)关系运算符:( < <= == > >= != )

(3)逻辑运算符:(! && || )

(4)位运算符:( << >> ~ | ^ & )

(5)赋值运算符:( = 及其扩展)

(6)条件运算符:( ?: )

(7)逗号运算符:( , )

(8)指针运算符:( * & )

(9)求字节数:( sizeof )

(10)强制类型转换:( (类型) )

(11)分量运算符:( . -> )

(12)下标运算符:( [] )

(13)其它:(函数调用运算符( ) )

2、基本运算符介绍

(1)/ :除法运算符,若被除数与除数均为整数则商也为整数。例如:5/2结果为2;

(2)% :求余运算符,要求被除数与除数均为整数。例如:7%4结果为3;

(3)++:自加1运算符,例如:X++或++X;

X++:X先参与运算,之后自加1;

++X:X先自加1,之后参与运算;

(4)+=:复合运算符,例如:A+=B等价于A=A+B;X+=Y-B等价于X=X+(Y-B)

(5)/=:复合运算符,例如:A/=B等价于A=A/B;X/=Y-B等价于X=X/(Y-B)

3、运算符的优先级和结合性

参考教材附录D,不必死记,在应用中理解记忆。

目标与任务:

【1】下面是计算10的阶乘程序,分析其在Win-Tc和DEV C++中的执行结果,为什么?

main()

{

int x;

x=10*9*8*7*6*5*4*3*2*1;

printf("%d",x);

getch();

}

提示:int、long、%d、%ld、L

【2】掌握 / % 的用法。输入一个3位整数,然后将其各位数字反向输出,例如123输出为321。

六、输入输出函数详解

1、输出函数printf()

printf(“%d”,x);

printf(“%d%f”,x,y);

printf(“width=%d length=%f”,x,y);

重点掌握:%d、%f、%c

重点掌握:.n 、l

特别说明:printf函数输出表列中的求值顺序,不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。

例如:int i=0; printf("%d%d%d",i++,i++,i++);的打印结果为210

2、输入函数scanf()

scanf(“%d”,&x);

scanf(“%d%f”,&x,&y);

scanf(“%d,%f”,&x,&y);

错误用法:scanf(“width=%d length=%f”,&x,&y);

重点掌握:%d、%f、%c

重点掌握:l

3、printf()与scanf()中的常见错误

(1)“”所括的位置不正确;

(2)丢失输入变量名前的&;

(3)连续输入数据时如何正确分割;

4、字符输入输出getchar与putchar

(1)getchar用法

char ch;

ch = getchar();

printf(“%c”,ch);

(2)putchar用法

char ch;

ch = ‘A’;

putchar(ch);

目标与任务:

【1】使用getchar连续输入3个数字字符,以这三个数字字符分别作为百位、十位、个位,则其对应了一个三位10进制数,请分别以8进制、10进制、16进制的形式输出该数字。

七、选择结构

1、逻辑关系及运算符

(1)关系运算符:< <= == > >= !=(不等于)

(2)逻辑运算符:!(非) && (与) ||(或)

注意:(1)C语言没有逻辑变量;

(2)“表达式”值不为零表示“逻辑真”;“表达式”值为零表示“逻辑假”;

(3)“逻辑真”其返回值为“1”;“逻辑假”其返回值为“0”;

例如:已知X=3,Y=5,Z=8,F=0分析下面的逻辑真假

(1)X!=Y、Z>=X、Z>X+Y 3个逻辑表达式中那个为逻辑真那个为逻辑假;

(2)5.6、1-2、0 、3/5 4个逻辑表达式中那个为逻辑真那个为逻辑假;

*(3)Z=X>Y; F=Z>Y>X;F=(X==Y)&&(X!=Y);F=(X==Y)||(X!=Y);

X||Y+Z && Y-X;!(X+Y)+Z-1 && Y+Z/2 6个逻辑表达式中那个为逻辑真那个为逻辑假;

2、if语句

(1)if( 表达式 ) { 语句块 }

(2)if( 表达式 ) { 语句块1 } else { 语句块2 }

(3)if语句的嵌套形式

注意:(1)if( 表达式 )的后面不能有分号;

(2)当“语句块1”只有一句,且没有{ }括住时,其后必须有分号;

(3)“语句块”只有一句时,可以不加{ },若为多句时,必须加{ };

强化与练习:

【1】输入一个三角形的三边长度,然后判断其是否为三角形,并输出“是”或“否”。

【2】输入一个字母,若为小写则转换为大写输出,若为大写则转换为小写输出。

【3】输入一元二次方程的三个系数,然后求解其根。

3、条件运算符

表达式1 ?表达式2 :表达式3

例 y = (x<0) ? –x+1 : x+1; 等价于 if(x<0) y=-x+1; else y=x+1;

注意:(1)运算符的执行顺序;

(2)其优先级比赋值高;

(3)结合方向自右向左;

例如:(1)A>B ? A : B+1

(2)A>B ? A : C>D ? C : D

4、switch语句

switch( 表达式 )

{

case 常量表达式1 :语句块1;

case 常量表达式2 :语句块2;

case 常量表达式n :语句块n;

[ default :语句块; ]

}

例如:

main()

{

int n;

scanf("%d",&n);

switch(n)

{

case 0: printf("Sunday\n"); break;

case 1: printf("Monday\n"); break;

case 2: printf("Tuesday\n"); break; case 3: printf("Wednesday\n"); break; case 4: printf("Thursday\n"); break; case 5: printf("Friday\n"); break; case 6: printf("Saturday\n"); break; default: printf("Error");

}

}

注意:(1)switch后的{ }不可以省略;

(2)“语句块”为多句时可以不加{ };

(3)switch( 表达式 ) 的后面不能有分号;

(4)“常量表达式”的值只能为整型,且互不相等;

(5)使用“break”可以中止某个case后的语句执行;

(6)case无先后顺序,多个case可以共用同一语句块;

强化与练习:

【1】根据学生成绩所在区间分别输出评价等级:A、B、C、D、E;

90≤成绩≤100 :A

80≤成绩< 90 :B

70≤成绩< 80 :C

60≤成绩< 70 :D

成绩< 60 :E

八、循环结构

1、什么是循环?可应用于什么场合?

(1)在屏幕上连续输出10000个“hello!”;

(2)输出1000~3000内的闰年年号;

(3)求1~N所有数字的和(N由用户输入);

2、goto语句

标号:语句;

……;

语句;

goto 标号;

即:从“goto 标号”处程序跳转至“标号:语句”出接着向下执行。

注意:(1)标号,就是合法的标示符,就和变量名道理一样;

(2)goto语句尽可能少用,更不可以滥用,它可能导致程序严重混乱;

例如:求1~100所有数字之和

N=1; SUM=0;

loop: SUM=SUM+N;

N++;

If(N<=100) goto loop;

printf(“SUM=%d”,SUM);

3、while语句

while( 表达式 )

{

循环体语句;

}

即:当“表达式”为“真”,则重复执行“循环体语句”。

注意:(1)while( 表达式 )的后面不能有分号;

(2)当“循环体语句”只有一条语句时,可以不加{ },若为多句时,必须加{ };

(3)若while( 表达式 )后无{ },则其后第一条语句就是它的“循环体语句”;

例如:求1~100所有数字之和

N=1; SUM=0;

while(N<=100)

{

SUM=SUM+N;

N++;

}

printf(“SUM=%d”,SUM);

4、do-while语句

do

{

循环体语句;

}while( 表达式 )

即:首先“循环体语句”被执行一次,然后当“表达式”为“真”,则重复执行“循环体语句”。

注意:(1)do的后面不能有分号;

(2)当“循环体语句”只有一条语句时,可以不加{ },若为多句时,必须加{ };

(3)若do后无{ },则其后第一条语句就是它的“循环体语句”;

while与do-while的区别:while的循环体语句可能一次都不被执行,而do-while的循环体语句至少被执行一次;

5、for语句

for( 表达式1 ;表达式2 ;表达式3 )

{

循环体语句;

}

执行过程:

①执行“表达式1”;

②执行“表达式2”;(若结果=“真”执行③;结果=“假”循环结束);

③执行“循环体语句”;

④执行“表达式3”;接着转②执行

即: for(循环变量赋初值;循环条件;循环变量增值)

{

循环体语句;

}

注意:(1)for(表达式1 ;表达式2 ;表达式3)的后面一般不能有分号;

(2)当“循环体语句”只有一条语句时,可以不加{ },若为多句时,必须加{ };

(3)若for(表达式1 ;表达式2 ;表达式3)后无{ },则其后第一条语句就是它的“循环体语句”;

(4)表达式1、表达式2、表达式3都可以省略;相当于while(1){ };

(5)“表达式2”省略时,相当于“表达式2”永远为“真”;

(6)任何时候()中的两个“;”不能省略,即使表达式1、表达式2、表达式3都已被省略;

例如:求1~100所有数字之和

for( N=1,SUM=0 ; N<=100 ;N++)

{

SUM=SUM+N;

}

printf(“SUM=%d”,SUM);

或者

for( N=1,SUM=0 ; N<=100 ;N++, SUM=SUM+N) ;

printf(“SUM=%d”,SUM);

6、break与continue语句

(1)break只能用于循环体内和switch语句内;

用于循环体内时,循环体内break之后的语句不被执行,并使循环立刻结束;

(2)continue只能用于循环体内;

用于循环体内时,循环体内continue之后的语句不被执行,但不影响循环的正常进行;

例如:求300以内能被17整除的最大的数。

main()

{ int x,k;

for(x=300;x>=1;x--)

if(x%17==0) break;

printf("x=%d\n",x);

}

例如:输出300以内能被17整除的所有整数。

main()

{ int x,k;

for(x=1;x<=300;x++)

{

if(x%17!=0) continue;

printf("%d\t",x);

}

}

九、数组

1、数组的作用

可以快速方便的定义大量的变量,这些变量通过数组名及其下标编号进行区分和引用。

2、一维数组的定义

数据类型数组名[常量表达式]

例如:(1)int x[100]; 即定义了一个包含100个整型变量的数组;

这100个变量分别是x[0]、x[1]、x[2]、…、x[98]、x[99];

(2)char y[35]; 即定义了一个包含35个字符型变量的数组;

这35个变量分别是y[0]、y[1]、y[2]、…、y[33]、y[34];

注意:(1)数组名要遵循标识符原则;

(2)数组最后一个变量(元素)的下标为N-1,N为数组的长度;

(3)定义数组时,[ ]内的“常量表达式”某些编译系统允许为变量,例如dev c++;

3、一维数组的初始化

(1)int x[10]={5,8,-2,7,9}

自动将这5个数字按照先后顺序赋给x[0]~x[4],其余自动赋0;

(2)int x[ ]={3,2,5,9}

省略数组长度时,将自动根据初始数据的个数确定数组长度,并自动按照顺序赋初值;

即相当于:int x[4]={3,2,5,9}

4、一维数组的使用

例:找出数组中的最大值、最小值和平均值

main()

{

int i,max,min; float ave;

int data[10]={3,5,100,-67,85,99,65,31,123,8};

max=data[0]; ave=0;

for(i=0;i<=9;i++)

{

if(max

if(min>data[i]) min=data[i];

ave=ave+data[i];

}

ave=ave/10.0;

printf(“max=%d min=%d ave=%f”,max,min,ave);

}

5、二维数组的定义

数据类型数组名[常量表达式][常量表达式]

例如:float a[3][4]; 即定义了一个包含12个浮点型变量的数组。

这12个变量逻辑上按照3行4列排放如下:

a[0][0] a[0][1] a[0][2] a[0][3]

a[1][0] a[1][1] a[1][2] a[1][3]

a[2][0] a[2][1] a[2][2] a[2][3]

注意:(1)数组最后一个变量(元素)为A[M-1][N-1],M、N为二维数组行、列长度;

(2)定义数组时,[ ]内的“常量表达式”绝不能为变量【win-tc】;

6、二维数组的初始化

(1)int a[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };按行全赋值

(2)int a[3][4]={ {1}, {7,8,9} };按行部分赋值

(3)int a[3][4]={ 1,2,3,4,5,6,7,8,9,10,11,12 };按数组顺序全部赋值

(4)int a[3][4]={ 1,2,3,4,5,6,7,8,9 };按数组顺序部分赋值

(5)int a[ ][4]= { {1},{ },{7,8,9} };按行赋值,行自动推算

(6)int a[ ][4]={ 1,2,3,4,5,6,7,8,9,10,11,12 };按数组顺序全部赋值,行自动推算

注意:重在理解,不可死记!

7、二维数组的使用

例1:定义一个二维数组,并初始化它,然后将其值按照行列输出;

例2:定义一个二维数组,并初始化它,然后求其对角线元素之和;

十、字符数组

1、传统的初始化方法

char c[5]={ ’A’,’B ’, ’C’, ’D’, ’E’}

2、字符串常量初始化方法

char c[6]={“ABCDE”} 或 char c[ ]={“ABCDE”} 或 char c[ ]=“ABCDE”

等价于:char c[6]={ ’A’,’B ’, ’C’, ’D’, ’E’,’\0’}

3、字符数组的输入/输出

char c[10];

scanf(“%s”,c); 特别注意:c前无需加“&”, c本身就是地址;输入时以“空格”或“回车”作为结束; printf(“%s”,c);特别注意:从字符串开始输出,遇到第一个‘\0’结束输出;

4、字符串处理函数

char str[30],str1[30],str2[30];

(1)gets : 从键盘读取字符串,用法:gets(str);

(2)puts : 向屏幕输出字符串,用法:puts(str);

(3)strcat : str2连接在str1之后, 用法:strcat (str1, str2);

(4)strcpy : str2复制到str1中, 用法:strcpy (str1, str2);

(5)strcmp : str1与str2比较, 用法:strcmp (str1, str2),若str1=str2,则返回值为0;

(6)strlen : 获取str的字符个数,不含’\0’, 用法:strlen(str);

(7)strlwr : 将str的字符全部改为小写, 用法:strlwr(str);

(8)strupr : 将str的字符全部改为大写, 用法:strupr(str);

字符串处理有很多函数,应掌握查询参考手册使用函数的能力。

十一、函数(重点)

1、函数的概念和作用

通俗的讲,就是将main函数内的语句片段拿出来写在main的外面,并给它一个名称,即函数名。

当要执行这段语句片段时,只需要在想执行的位置写出片段的名称,即函数名,就可以使这段语句得到执行;

优点:使程序更具结构化,能有效减少重复代码;

2、函数的定义

函数返回类型函数名([参数列表])

{

变量声明部分;

执行语句部分;

[return xx];

}

注意:(1)“函数返回类型”为void时,表示“空”类型,即无需返回值;

(2)“函数返回类型”不写时,默认为int型,建议不要省略“函数返回类型”;

(3)函数不调用是不执行的;若有返回值则用return返回结果值;

3、函数的返回值

int Add(int x,int y)

{

int s;

sum=x+y;

return sum

}

4、函数的调用方式

(1)函数作为一个语句,例如: printf(“hello”);

(2)函数在表达式中,例如: c = 2 * max(a,b);

(3)函数作为参数,例如: printf(“%d”,max(x,y));

5、实例说明

void swap(int x,int y) /* 此处x,y为形参 */

{

int t;

t=x;

x=y;

y=t;

printf("x=%d y=%d\n",x,y);

}

void main()

{

int a,b,x,y;

x=3; y=5;

printf("x=%d y=%d\n",x,y);

swap(x,y); /* 此处x,y为实参,当然也可以写成swap(3,5) */

printf("x=%d y=%d\n",x,y);

getch();

}

6、函数使用说明

(1)函数不能嵌套定义;

(2)注意区分形参与实参;

(3)参数传递时,只是实参向形参的“单方向,值传递”,形参的改变不影响实参;

(4)形参只存在于函数调用期间,函数调用结束,则形参自动消失;

(5)函数中可以有多个return,遇到第一个则结束函数调用并返回;

(6)当返回值类型与函数定义中的类型不一致时,则自动被转换为函数定义中的类型;

7、被调用函数的声明

(1)当被调用函数定义在主调函数之后时,被调用函数应在主调函数调用之前进行声明;

注:当“函数的返回类型”为int时例外,可以不声明,但是建议声明;

(2)被调用函数的声明有两种:①在主调函数之前;②在主调函数的变量声明处;

①float max(float a, float b); // float max(float , float );

void main()

{

②float max(float a, float b);// float max(float , float );

………

z=max(x,y);

………

}

float max(float a, float b)

{

………

}

8、函数的嵌套与递归

(1)在函数中再调用另一个函数称为函数的嵌套调用;

(2)当函数嵌套的调用自己时称之为函数的递归调用;使用递归可以解决很多复杂的问题,而代码量却很小;

举例:求N!; P185

--------------------------------------------------------------------------

问题分析:

N=1:A→C

N=2:A→B,A→C,B→C

N=3:A→C,A→B,C→B,A→C,B→A,B→C,A→C

--------------------------------------------------------------------------

由N=3可以总结出,要使N个盘子从A移到C,可以递归的分解为如下三步:

①先将A上的N-1个盘子借助C移到B上; A----(C)--→B

②将A上剩下的唯一一个盘子由A移到C; A→C

③先将B上的N-1个盘子借助A到C; B----(A)--→C

------------------------------------------------------------------------- 所以函数如下定义:

void hano(int n, char src, char tmp, char dec) //src:源点,tmp:过渡,dec:终点

{

if(n==1)

printf("%c-->%c\n",src,dec);

else

{

hano(n-1,src,dec,tmp);

printf("%c-->%c\n",src,dec);

hano(n-1,tmp,src,dec);

}

}

十二、变量的作用范围

1、局部变量

在函数内部定义的变量,其作用范围仅限于本函数内部。例如:

float func1(int x,char y)

{

int a,b;

a=1; b=2;

{

double z=5;

printf(“z=%d”,z);

}

printf(“sum=%d”,a+b);

}

其中x,y,a,b,z均为局部变量,x,y,a,b在func1函数内部有效;z仅在其所在的{ }内有效;

2、全局变量/外部变量

在所有函数之外定义的变量,其作用范围为变量定义之处到原文件结束,可以被多个函数共享。例如:

int a;

void func1()

{

a=3;

}

int b;

void func2()

{

a=a+b;

}

Void func3()

{

printf(“%d%d”,a,b);

}

3、变量使用说明

(1)局部变量在函数调用时创建,调用结束后销毁,即仅存在于函数调用期间;

(2)全局变量在程序运行时创建,在程序的整个执行期间一直存在,直至程序运行结束;

(3)全局变量名和局部变量名相同时,函数内部局部变量可用,全局变量被屏蔽;

十三、变量的存储类别

1、存储空间

静态存储区:在程序编译时就分配空间,程序执行期间始终占用该空间,直至程序运行结束;

动态存储区:在程序运行期间可以动态的分配空间和收回已分配的空间;

2、四种存储类型

3、变量的默认初值

C语言上机考试题

考试时间120分钟题目中所有要求统计或输出的地方都要用printf函数输出相关内容要求:新建一个以自己中文姓名命名的文件夹,将如下题目的答案保存在该文件夹中,各题命名要求Exam1.c,Exam2.c,Exam3.c,Exam4.c,Exam5.c 只需提交每个题目的源文件 1.定义一个字符数组s[50],从键盘输入如下字符串给s数组中,统计其中数字字符的个数和英文字母的个数以及特殊字符的个数。(要求:输入的字符为:“123ABCDhijkop#&%*&!”)(本题5分) 输入功能,3个统计 2.从键盘输入10个元素给数组a,然后将这些元素逆向复制到数组b中(要求:输入的这10个数为:1,2,3,4,5,6,7,8,9,10)。(本题5分) 输入,逆序2个功能,错一个扣2分 3.使用循环嵌套,打印输出如下图形结果(提示使用两次循环嵌套)。 (本题5分) 没有中文后面扣1分 实现一半扣2分 4.从键盘上输入一个字符,如果是’M’,输出Mondey,’T’输出Tuesday,’W’输出Wednesday,’R’输出Tursday,’F’输出Friday,’S’输出Saturday,’U’输出Sunday,否则输出Error(本题5分)输入字符,switch语句,细节有错扣0.5 5.从键盘上输入10个学生的数学成绩,使用冒泡排序实现对成绩的排序功能(排序后的成绩按从低到高排列,效果如下), 输出排序后的学生成绩,输出最高成绩,输出最低成绩,将55-60之间的成绩(含55,不含60)修改为60,并统计被修改的成绩个数,统计及格人数,统计95(含95,优秀)分以上的学生成绩人数,输出及格率和优秀率(>=60,及格,>=95优秀)。(要求:输入的10个

C语言上机试题

1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。 6: 第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n 中存放指定的下标。 7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。 8: 第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n) 9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)! 10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。 迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0; (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0.739085。 11: 第11题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 12: 第12题下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13: 第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数

C语言期末上机考试题及答案

C语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

C语言程序设计课程C语言上机考试题—2014

1、从键盘输入10个整数,对这10个数排序(由小到大)后输出。 2、从键盘输入10个整数,对这10个数排序(由大到小)后输出。 3、对于一个自然数,如果该数的所有因子之和正好等于该数,则该数称为完数。统计1000以内的完数个数。 4、编写主函数和一个函数int diff(int year, int m1, int d1, int m2, int d2)。(1)函数diff计算year年的m1月d1日至m2月d2日之间相隔的天数(假设m1<=m2);(2)主函数中输入某年的两个日期,调用diff函数计算它们之间相隔的天数,并输出。 5、编写主函数和一个函数void merge(int a[], int b[], int c[])。要求是:(1)函数merge对两个已是升序的数组a、b进行归并,归并后的结果仍然是升序的,并通过形参c返回;(2)主函数:定义长度为5的数组a,并升序初始化;定义长度为8的数组b,并升序初始化;调用merge函数对数组a、b进行归并,输出归并结果。 6、从键盘输入一个0~99999之间的整数。 ①判断它是一个几位数; ②将该数的各位数字按逆序输出。 7、输入一行字符,统计其中有多少个单词并输出,单词之间用空格符分隔开。 8、输入10个整数,判断它们是否为素数。要求:编写一个函数int prime(int m)来判断形参变量m是否为素数,如果是素数则返回1,否则返回0。 9、输入10个学生的成绩,求平均成绩。要求控制成绩输入的正确性,即控制输入的成绩必须为0~100分。 10、编写主函数和一个函数int monthDay(int year, int month)。(1)函数monthDay 计算year年month月的天数,并返回;(2)在主函数中输入一个日期(年、月、日),计算该日是当年的第几天(说明:需要调用monthDay函数)。 11、写两个函数int gcd(int m, int n)和int lcm(int m, int n),分别求两个正整数m 和n的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数的值在主函数中从键盘输入。 12、有0、1、2、3、4五个数字,能组成多少个互不相同且无重复数字的三位数?并计算这些三位数之和。 13、输出2至1000之间的所有同构数,所谓同构数是指它出现在它的平方数的右端。例如,5、6、25的平方分别等于25、36、625,所以5、6和25都是同构数。 14、编写一个函数,将一个数插入到已是升序的数组中,且插入后该数组仍是升序数组。已是升序数组的内容由主函数给出,待插入的数在主函数中输入。 15、编写一个程序,查找某数是否在给定的升序数组中,如果在则输出“Find success!”并输出它是第几个数,否则输出“No find!”。 16、有4个学生,每个学生有5门课程的成绩,编写一个程序计算每一个学生5门课程的平均成绩。 17、有4个学生,每个学生有5门课程的成绩,编写一个程序统计每一个学生有几门不及格的课程。 18、有4个学生,每个学生有5门课程的成绩,编写一个程序计算每一门课程4个学生的平均成绩。 19、有4个学生,每个学生有5门课程的成绩,编写一个程序统计每一门课程有几个不及格的学生。

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

大学本科C语言上机考试题

C语言程序设计上机考试题 班级:姓名:学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include int main() {inta,b,c,e,d,f,g; printf("请输入三个数\n"); scanf("%d,%d,%d",&a,&b,&c); d=(a>b?a:b); e=(d>c?d:c); printf("Max is %d\n",e); f=(a int main() {float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||score<0)); {printf("\n输入有误,请输入); scanf("%f",&score); } switch((int)(score/10)) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break;

case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include int main() {intc,d,e; floata,b,f; printf("请输入两个数"); scanf("%f,%f",&a,&b); c=a+b; d=a-b; e=a*b; f=a/b; printf("加法结果为%d\n",c); printf("减法结果为%d\n",d); printf("乘法结果为%d\n",e); printf("除法结果为%f\n",f); return 0; } 4.100以内的素数 从键盘输入一个正整数,判断该整数是否为素数。 #include int main() { intn,i; printf("\n"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

c语言上机考试题

上机考试:6月2日 13:30 不准携带:课本/参考书/参考资料/移动存储设备/草纸 一定要带:学生证/签字笔 1 用起泡法对N=10个整数由大到小排序。10个整数由键盘输入,排序后从屏幕输出结果 2 编写一函数,从实参传来一个字符串,分别统计其中数字、大写字母、小写字母和其它字符的个数,输入输出在main函数中完成 3 用一函数inv将一个字符串的字符逆序排列。输入输出在main函数中完成。要求在inv中用指针处理。4 求200之内的素数的和。从屏幕输出结果 5 从屏幕输入一行字符,将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母,其它字符不变,从屏幕输出结果 6 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次落地后又反弹多高? 7 对N=20个字符由大到小排序。20个字符由键盘输入,排序后从屏幕输出结果 8 有一字符串,把其中的字母a和A去掉,成为一个新字符串。原字符串从键盘输入。从屏幕输出结果 9 求Fibonacci数列的前30项的和。从屏幕输出结果。Fibonacci数列为: F(1)=1,(n=1) F(2)=1,(n=2) F(n)=F(n-2)+F(n-1),(n>=3) 10 写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 11 从键盘输入一个大于2的整数,判断是否是素数。从屏幕输出结果。要求用函数处理 12 从键盘输入月份,输出这个月有多少天。要求用函数处理 13 求两个数的最大公约数。要求用函数处理 14 求两个数的最小公倍数。要求用函数处理 15 从屏幕输入3个整数,按从小到大顺序输出,要求用指针进行处理 16

c语言上机考试

去年的c语言上机考试,是题库的题 四、编写程序题及参考答案 【4.41】从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。 【4.42】输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。 【4.43】编写程序,读入一个整数N;若N为非负数,则计算N到2×N之间的整数和;若N为一个负数,则求2×N到N之间的整数和。分别利用for和while写出两个程序。 【4.44】求解爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶,若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶? 【4.45】一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。编写程序求这个自然数。 【4.46】编写程序,用二分法求一元二次方程2x3-4x2+3x-6=0在(10,10)区间的根。 【4.47】中国古代科学家祖冲之采用正多边形逼近的割圆法求出了π的值。请编写一程序, 采用割圆法求出π的值,要求精确到小数点之后的第十位。 【4.48】A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各 自找地方睡觉。日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自 己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。C、D、 E依次醒来,也按同样的方法拿鱼。编写程序求出他们合伙至少捕了多少条鱼。 【4.49】一辆卡车违犯交通规则,撞人逃跑。现场三人目击事件,但都没记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的; 丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。 【4.50】若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,每次从中任取 8个球,编写程序求出共有多少种不同的颜色搭配。 【4.51】100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。试编 写程序计算大、中、小马的数目。 【4.52】编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。

大学本科C语言上机考试题

C语言程序设计上机考试题 班级::学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include int main() {int a,b,c,e,d,f,g; printf("请输入三个数\n"); scanf("%d,%d,%d",&a,&b,&c); d=(a>b?a:b); e=(d>c?d:c); printf("Max is %d\n",e); f=(a int main() {float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||score<0)); {printf("\n输入有误,请输入); scanf("%f",&score); } switch((int)(score/10)) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break;

case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include int main() {int c,d,e; float a,b,f; printf("请输入两个数"); scanf("%f,%f",&a,&b); c=a+b; d=a-b; e=a*b; f=a/b; printf("加法结果为%d\n",c); printf("减法结果为%d\n",d); printf("乘法结果为%d\n",e); printf("除法结果为%f\n",f); return 0; } 4.100以的素数 从键盘输入一个正整数,判断该整数是否为素数。 #include int main() { int n,i; printf("\n"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i

C语言上机考试

一、单项选择 1.题号:4889 以下函数调用语句中,实参的个数是(). exce((v1,v2),(v3,v4,v5),v6); A、3 B、4 C、5 D、6 A、可以在同一个函数中,出现多次 B、在主函数和其他函数中,均可出现 C、必须在每个函数中,出现 D、只能在除主函数之外的函数中,出现一次 A、该数组的首地址 B、该数组的元素个数 C、该数组中各元素的值 D、该数组的长度 答案:A 2.题号:4525 在C语言的函数中,下列正确的说法是(). A、数组名不能作形参 B、可以有也可以没有形参 C、形参必须是变量名 D、必须有形参 答案:B 3.题号:4083 以下正确的函数定义形式是(). A、double fun(int x,int y)

B、#include"" C、scanf D、printf 答案:A 4.题号:4048 下面对函数的叙述,正确的是(). A、函数中无论是否有return语句,都能返回正确值 B、函数中没有return语句,说明不带回值 C、函数不能嵌套定义 D、函数的返回值是通过return语句获得的 答案:C 5.题号:4073 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(). A、传递方式由用户指定 B、由实参传给形参,再由形参传回实参 C、地址传递 D、单向值传递 答案:D 6.题号:5119 下列关于函数的叙述中正确的是(). A、每个函数都可以单独运行 A、5 B、3 C、2 D、4 答案:C 7.题号:4901

A、static B、register C、auto D、extern 答案:C 8.题号:4507 C语言规定,在一个源程序中,main()函数的位置. A、必须在最开始 B、必须在系统调用的库函数的后面 C、可以任意 D、必须在最后 答案:C 9.题号:4847 以下叙述中,正确的是(). A、main()可作为用户标识符,用以命名任意一个函数作为主函数 B、C语言程序将从源程序中,第一个函数开始执行 C、可以在程序中,由用户指定任意一个函数作为主函数,程序将从此开始执行 D、C语言规定必须用main()作为主函数名,程序将从此开始执行,在此结束 答案:D 10.题号:5137 以下函数的类型是 fff(float x) { printf("%d\n",x); }

浙江大学C语言上机考试题库

上机考试练习题 20021程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0 int main(void) { int repeat, ri; double x, y; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%lf", &x); /*---------*/ if(x!=0) y=1/x; else y=0; printf("f(%.2f) = %.1f\n", x, y); } } 20022程序填空,不要改变与输入输出有关的语句。 输入华氏温度,输出对应的摄氏温度。计算公式:c = 5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。 输入输出示例:括号内为说明 输入 150 (fahr=150) 输出 celsius = 65 #include int main(void)

int celsius, fahr; /*---------*/ scanf(“%d”,&fahr); celsius=5.0*(fahr-32)/9; printf("celsius = %d\n", celsius); } 20023程序填空,不要改变与输入输出有关的语句。 输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。 interest = money(1+rate)^year - money 输入输出示例:括号内为说明 输入 1000 3 0.025 (money = 1000, year = 3, rate = 0.025) 输出 interest = 76.89 #include #include int main(void) { int money, year; double interest, rate; /*---------*/ scanf(“%d%d%lf”,&money,&year,&rate); interest=money*pow((1+rate),year)-money; printf("interest = %.2f\n", interest); } 20024程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0= 0时,f(x) = x^0.5,当x小于0时,f(x) = (x+1)^2 + 2x + 1/x。 输入输出示例:括号内是说明 输入 3 (repeat=3) 10 -0.5

C语言上机考试技巧

C 语言上机考试技巧 一、程序填空题(程序改错题) 由于这两类题型的考核特点,在解答这两类题型实际没有什么技巧,要说有技巧的话,那就是: 1.程序填空题和程序改错题一般情况下都有2至3个空要填或改,每填对或改对一处,则按相应的比例给分; 2.查找有“**************FOUND**************”标记的行,需填或改的语句一般就在该行对应的下面一行; 3 .填入或改正相应的语句后,一定要运行一遍程序,运行程序的过程如下图所示: 1 .单击2.单击3.单击 4.程序运行之后,对照题干中的说明查看运行结果是否正确,一般情况下,题干部分都会有如下图红框处所示的提示内容,考生运行程序时就按照提示的要求输入相关对内容(如下题输入“Ab,cD ”),然后查看程序的执行结果是否如提示所示(如下图所示,应为“AB ,CD ”),否则就是填空或改错有错误,需重新检查程序段。 二、程序设计题 如果某道题确实不会做,则考生可按如下技巧进行答题。在进行该技巧前请考生按照以下步骤对计算机进行设置。 然后按照以下步骤进行操作: 1.打开考生文件夹,一般情况下,考生文件夹的位置是“K:\所抽到的机器号\准考证号的前两位+准考证号的后6位”,如一考生的准考证号是“2535999999000001”,进入考场前抽到的机位号是“28”,则该考生答题时所对应的考生文件夹的位置是“K:\28\25000001”; 3.单击

2.在考生文件夹下新建一个名为“out.txt”的文件,然后打开该记事本文件; 3.反复阅读题干部分的要求,并推敲,以理解题干要求,然后在稿纸上(一般情况下考场会发,否则可以举手向监考老师要)演算,以确定需要向上面新建的out文件中填入的数据,一般情况下,又有两种情况。 (1)考生文件夹下本来就存在一个名为in.dat的文件。此时,考生需用记事本打开该文件,然后对其中的数据进行分析和演算,并将结果填入上面新建的out文件中。例如有以下一道题。 首先:打开考生文件夹下存在的in.dat 文件,其中的内容如上图所示: 其次:在考生文件夹下新建一个名为 out.txt的文件,并将其打开,然后理解题 干的要求,本题是“将所有大于1小于整 数m的非素数存入xx所指数据组,非素 数的个数通过k返回”; 再次:打开“prog1.c”程序,查看其 中类似于下图红框所示的语句,以确定以 什么样的方式将结果写入out.txt的文件 中。本题要求每输入一个数据通过“\n” 进行换行。 然后:将结果写入out.txt的文件中, 如右图所示。然后对out.txt进行保存,再 关闭。 最后:将out.txt文件的扩展名改为 out.dat。 (2)考生文件夹下本来没有in.dat文件。此时,考生需题干进行仔细地分析和演算,并将结果填入上面新建的out文件中。例如有以下一道题。 最后,请考生结合虎贲版软件或网校,对上面所述的技巧进行熟悉。

C语言上机考试题

C语言上机考试题(第一套)1. #include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年\n"); else printf("不是闰年\n"); } C语言上机考试题(第二套)1. #include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i

C语言上机试题及答案

实验一Visual C++6.0 的使用及顺序结构程序设计 一、实验目的 1、掌握启动和退出VC6 的方法。 2、熟悉VC6 开发环境。 3、初步掌握简单程序的上机操作基本步骤,熟悉 C 单文件程序的输入、编译、链接和运行过程。 4、初步掌握程序的编辑修改和调试。 5、熟练使用赋值运算、算术运算等表达式。 6、熟练使用标准输入、输出函数及各种数据类型的格式说明符。 二、实验内容 1、下面C 语言程序,其功能是显示字符串“欢迎同学们来到华北水院计算中心!”。 请同学们按照下面的实验指导学习VisualC++6 .0 的使用。 1.启动VisualC++6 .0 开发环境 (1) 单击“开始”按钮,选择“程序”——〉“Microsoft Visual Studio 6 .0 菜单项, 单击“MicrosoftVisualC++6 .0”,屏幕出现标题为“当时的提示”的窗口。 (2) 单击“结束”按钮,关闭窗口,进入VC6.0 开发环境的主窗口。 2.使用Visual C++6.0 对一个 C 程序进行编辑、编译、连接和运行。 ⑴分析 Visual C++6.0 中程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、 连接和运行四个步骤。 ⑵步骤 ①编辑

图 1-2 编辑窗口 ②编译 编译是使用系统提供的编译器将文本文件 Exa.c 生成机器语言的过程,结果为 Exa.obj ,由 于没有得到系统分配的绝对地址,还不能直接运行,如图 1-3 所示。选择 Build 菜单下的 Co mpile Exa.c ,计算机将完成对当前源程序的编译。按提示建立默认工程空间。编译无错时,将 源程序 Exa.c 编译为目标文件 Exa.obj 。 编译结果如图 1-4 所示。如果出现运行错误,应该分 析错误的原因,例如,是输入数据错误,还是代码错误;如果需要修改源程序文件,还需重 新编译、链接和执行。改正编译窗口下方指出的两个错误,直至编译成功,如图 1-5 所示。 图 1-1 New 对话框 编辑是将 C 源程序输入计算机的过程。在 Visual C++6.0 主界面下,点击 File 菜单,选择 New 菜单项,即可出现 New 对话框,如图 1-1 所示。在弹出窗口中的 Files 标签页下,选择 C ++ Source File 。在选项卡右面的 File 编辑框里输入文件名如 “ Exa .c ”, 在 Location 编辑框里输 入文件路径,如 “d:test 。”点击 OK 按钮。将出现编辑窗口,如图 1-2 所示。 在图 1-2 所示的 右端编辑窗口里输入以下 C 源程序并保存文件。 include void main() { printf(" } 欢迎同学们来到华北水院计算中心! ");

c语言上机试题1(数学计算)

1整型、实型 1.1实型四舍五入 请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567, 则函数返回1234.57;实型数为1234.564, 则函数返回1234.56。注意: 部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include int NONO(void); float fun ( float h ) { } int main(void) { float a; printf ("Enter a: "); scanf ( "%f", &a ); printf ( "The original data is : " ); printf ( "%f \n\n", a ); printf ( "The result : %f\n", fun ( a ) ); NONO( ); return 1; } int NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用fun 函数,输出数据,关闭文件。*/

int i ; float a ; FILE *rf, *wf ; rf = fopen("./05/in.dat","r") ; wf = fopen("./05/out.dat","w") ; for(i = 0 ; i < 20 ; i++) { fscanf(rf, "%f", &a) ; fprintf(wf, "%f\n", fun(a)) ; } fclose(rf) ; fclose(wf) ; return 1; } 答案1: long i=h*1000; if(i%10<5) return (i/10)/100.0; else return (i/10+1)/100.0; 答案2: long temp=a*1000,temp2; temp2=temp/10; temp=temp%10; float result; //被除数定义成float if(temp>4)

C语言上机考试

一、单项选择 1.题号:4889 以下函数调用语句中,实参的个数就是()、 exce((v1,v2),(v3,v4,v5),v6); A、3 B、4 C、5 D、6 // (v1,v2)就是一个逗号表达式,(v3,v4,v5)也就是一个逗号表达式 答案:A 2.题号:4093 关于return语句,下列正确的说法就是()、 A、可以在同一个函数中,出现多次 B、在主函数与其她函数中,均可出现 C、必须在每个函数中,出现 D、只能在除主函数之外的函数中,出现一次 //只能执行其中的一个的return 语句。并且函数遇到return语句,结束函数的执行。答案:A 3.题号:4535 数组名作为实参数传递给函数时,数组名被处理为()、 A、该数组的首地址 B、该数组的元素个数 C、该数组中各元素的值

D、该数组的长度 答案:A 4.题号:4525 在C语言的函数中,下列正确的说法就是()、 A、数组名不能作形参 B、可以有也可以没有形参 C、形参必须就是变量名 D、必须有形参 答案:B 5.题号:4083 以下正确的函数定义形式就是()、 A、double fun(int x,int y) B、double fun(int x;int y)//错在分号 C、double fun(int x,y);//错在形参y没有类型 D、double fun(int x,int y);//错在函数头后没有分号答案:A 6.题号:4232 C语言程序中,必须有的函数就是()、 A、main() B、#include"stdio、h" C、scanf D、printf 答案:A

相关主题
文本预览
相关文档 最新文档