c语言复习题顺序结构
c语言复习题顺序结构(精选10篇)
c语言复习题顺序结构 第1篇
1.有以下程序 #include
1、给b赋值
2、给 c赋值3,以下输入形式中错误的是(注:□代表一个空格符)()。答案:A A)1□2□3<回车> B)□□□1,2,3 <回车> C)1,□□□2,□□□3<回车> D)1,2,3<回车> 4.设变量均已正确定义,若要通过 scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)()。A)10X<回车> 20Y<回车> B)10□X20□Y<回车> C)10□X<回车> 20□Y<回车> D)10□X□20□Y<回车> 5.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。答案:A A)x=y==5;B)x=n%2.5;C)x+n=i;D)x=5=4+1;6.设有定义: int a;float b;执行
scanf(“%2d%f”, &a, &b);语句时,若从键盘输入 876 543.0<回车> 则a和b的值分别是()。A)87和6.0 B)876和543.0 C)87和543.0 D)76和543.0 7.有如下程序段: int x=12;double y=3.141593;printf(“%d%8.6f”, x, y);其输出结果是()。答案:A A)123.141593 B)12 3.141593 C)12, 3.141593 D)123.1415930 8.若有定义语句: int a=3,b=2,c=1;以下选项中错误的赋值表达式是(A)a=(b=4)=3;B)a=b=c+1;)。C)a=(b=4)+c;D)a=1+(b=c=4);9.若有定义: int a,b;通过语句
scanf(“%d;%d”,&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是()。答案:A A)3;5 B)3,5 C)3 5 D)35 10.若有定义 int a;float b;double c;程序运行时输入: 3 4 5<回车> 能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是()。
A)scanf(“%d%f%lf”, &a,&b,&c);B)scanf(“%d%lf%lf”, &a,&b,&c);C)scanf(“%d%f%f”, &a,&b,&c);D)scanf(“%lf%lf%lf”, &a,&b,&c);11.若变量已正确定义并赋值,以下不能构成C语句的选项是()。答案:A A)a=a+b B)A=a+b;C)B++;D)A?a:b;12.设有定义: double a,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)□□1.0□□2.0□□3.0<回车> 则能进行正确输入的语句是()。A)scanf(“%lf%lf%lf”,&a,&b,&c);B)scanf(“%lf%lf%lf”,a,b,c);C)scanf(“%f%f%f”,&a,&b,&c);D)scanf(“%5.1lf%5.1lf%5.1lf”,&a,&b,&c);13.以下叙述中正确的是()。答案:A A)在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式
B)a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数
C)若有int a=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0 D)若有int a=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4 14.以下叙述中正确的是()。
A)赋值语句是一种执行语句,必须放在函数的可执行部分 B)scanf和printf是C语言提供的输入和输出语句
C)由printf输出的数据都隐含左对齐
D)由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的 15.以下叙述中正确的是()。答案:A A)当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改 B)花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的
C)空语句就是指程序中的空行
D)复合语句在语法上包含多条语句,其中不能定义局部变量
16.以下叙述中正确的是()。
A)在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B)在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔 C)在printf函数中,各个输出项只能是变量 D)使用printf函数无法输出百分号% 17.以下叙述中正确的是()。答案:A A)在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符
B)只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度 C)scanf函数中的字符串,是提示程序员的,输入数据时不必管它
D)复合语句也被称为语句块,它至少要包含两条语句
18.有以下程序 #include
5c=getchar();d=getchar();printf(“%c%c%c%cn”,a,b,c,d);} 当执行程序时,按下列方式输入数据(从第1列开始,
for(i=0;i<6;i++){ if(i%2)putchar(i+b);else putchar(i+c);} printf(“n”);} 程序运行后的输出结果是()。A)AbCdEf B)ABCDEF C)aBcDeF D)abcdef 25.有以下程序 #include
A)getchar函数用于从磁盘文件读入字符 B)gets函数用于从终端读入字符串 C)fputs函数用于把字符串输出到文件
D)fwrite函数用于以二进制形式输出数据到文件
c语言复习题顺序结构 第2篇
3.1.选择题
(1).D(2).C(3).D(4).C(5).B(6).C(7).C(8).C(9).B(10).B(11).D(12).B(13).D(14).C(15).C(16).C(17).D(18).C(19).C(20).B 3.2.填空题
(1)FILO, FIFO(2)-1, 3 4 X * + 2 Y * 3 /-(3)stack.top, stack.s[stack.top]=x(4)p>llink->rlink=p->rlink, p->rlink->llink=p->rlink(5)(R-F+M)%M(6)top1+1==top2(7)F==R(8)front==rear(9)front==(rear+1)%n(10)N-1 3.3 答:一般线性表使用数组来表示的
线性表一般有插入、删除、读取等对于任意元素的操作 而栈只是一种特殊的线性表
栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。
3.4 答:相同点:栈和队列都是特殊的线性表,只在端点处进行插入,删除操作。
不同点:栈只在一端(栈顶)进行插入,删除操作;队列在一端(top)删除,一端(rear)插入。3.5 答:可能序列有14种:ABCD;ACBD;ACDB;ABDC;ADCB;BACD;BADC;BCAD;BCDA;BDCA;CBAD;CBDA;CDBA;DCBA。
3.6 答:不能得到4,3,5,6,1,2,最先出栈的是4,则按321的方式出,不可能得到1在2前的序列,可以得到1,3,5,4,2,6,按如下方式进行push(1), pop(), push(2), push(3), pop(), push(4), push(5), pop(), pop(), pop(), push(6), pop()。3.7 答:stack 3.8 非递归: int vonvert(int no,int a[])//将十进制数转换为2进制存放在a[],并返回位数 {
int r;
SeStack s,*p;
P=&s;
Init_stack(p);
while(no)
{
push(p,no%2);
no/=10;
}
r=0;
while(!empty_stack(p))
{
pop(p,a+r);
r++;
}
return r;} 递归算法: void convert(int no){
if(no/2>0)
{
Convert(no/2);
Printf(“%d”,no%2);
}
else
printf(“%d”,no);
} 3.9 参考程序:
void view(SeStack s){
SeStack *p;//假设栈元素为字符型
char c;
p=&s;
while(!empty_stack(p))
{
c=pop(p);
printf(“%c”,c);
}
printf(”n”);} 3.10 答:char 3.11 参考程序:
void out(linkqueue q){ int e;while(q.rear!=q.front){ dequeue(q,e);
print(e);//打印
}
}
c语言复习题顺序结构 第3篇
C语言函数参数的求值顺序及可变参数函数的设计方法在一般的教课书上很少提及,但此方法在实际应用中却经常碰到。设计参数数目可变的C语言函数方法,将有助于初学C语言的人及C语言业余爱好者掌握和应用。
2 C语言函数参数的求值顺序
C语言函数在调用时实参的求值顺序为自右向左而非想当然的自左向右顺序,这在一般情况下不会引起误会,但在某些情况下就会引起误解,看下面实例:
实际的输出结果是:2,3,3而非1,2,3
3 设计变参数函数所需模式说明
4 原理介绍
在模式说明第一步的va_list是一个自定义变量类型,是一个指向字符的指针。第二至第四步用到的va_start(ap,ara2);va_arg(ap,type);va_end(ap);实则为宏定义。在VC++6.0的STDARG.H中的完整定义是:
其执行的过程是:先执行va_start(ap,v),按定义的宏运算,&v得到v所在的地址,然后这个地址加上v的大小,则使ap指向第一个可变参数。然后,再执行va_arg(ap,t)取得类型t的可变参数值,先是让ap指向下一个参数:ap+=_INTSIZEOF(t),然后在减去_INTSIZEOF(t),使得表达式结果为ap之前的值,即当前需要得到的参数地址,强制转换成指向此参数的类型指针,然后用觹取值。最后执行va_end(ap),给ap初始化,保持健壮性。
5 实例演示
6 结束语
C语言函数在调用时实参的求值顺序为自右向左。这是由编译程序确定的。而由STDARG.H头文件定义的宏,有效的解决了函数参数数目可变的设计方法。
参考文献
[1]谭浩强.C程序设计[J].北京:清华大学出版社,1999-12.
c语言复习题顺序结构 第4篇
【关键词】C语言;循环结构;微课
当今,信息化高速发展,数字技术正在影响和改变着我们生活中的各个领域,其中也包括教学模式的改变。微课作为数字时代的一种新型课程表现形式,以其主题明确、短小精悍、交互效果好等优点,在各个学科的教学中正被积极地推广和应用。在我院的C语言课程教学中,微课设计被应用于很多较难理解的知识点讲解中,经过实践发现教学效果良好。本文以应用C语言循环结构解决等差数列求和问题作为微课主要内容,对微课设计进行研究与探索。
一、微课的介绍
1.微课的定义。
微课是以视频为主要载体,记录教师在课堂内外教育教学过程中围绕某个知识点(重点难点疑点)或技能点的教学环节开展的精彩教与学活动全过程,具有目标明确、针对性强和教学时间短的特点。
2.微课的组成。
(1)围绕某个知识点或技能点的教学视频和微课设计脚本;
(2)微课教学相关的教学设计方案和教学课件;
(3)微课相关素材、练习题、测试题、教学反思等辅助性教学资源。
3.微课的主要特点。
(1)教学时间较短:时长一般为8—10分钟。
(2)教学内容较少:主要是突出课堂教学中某个知识点,内容十分精简。
(3)资源容量较小:学生可以在线观看视频学习,也可查看相应教学资料。
(4)主题突出:一个微课就只包含一个主题任务,内容明确。
(5)自主学习为主:学生可以使用微课完成自主的、一对一的学习。
二、应用C语言循环结构解决等差数列求和问题微课设计
1.微课名称:应用C语言循环结构解决等差数列求和问题。
2.所属专业:软件技术专业。
3.所属年级:高职一年级。
4.所属课程:C语言。
5.知识点。
(1)掌握while循环语句的格式和执行过程;
(2)学会分析循环结构程序的设计思路;
(3)熟练应用while循环语句来编写程序。
6.技能点:能够通过while循环语句编写程序来解决实际问题。
7.教学类型:讲授型。
8.设计思路。
(1)微课设计目标:通过微课交代出课程的基本知识点(包括理论部分与实践部分)、课程的整个教学环节以及所实现的具体任务。
(2)教学情境设计:在现实生活中,我们会遇到很多需要重复操作的事情。比如,在数学课中曾经接触过的等差数列求和问题。因为等差数列中的数据都是有规律的,而且加法的计算也是重复的,所以完全可以用循环程序来帮助我们完成这个看似复杂的计算。
(3)微课基本思路:在微课设计中,通过教学情境的引入,向学生交代本次课的主要内容是用循环结构程序来解决等差数列求和问题,学生首先聆听教师讲解有关循环结构的相关知识点,教师做好相关的技术指导,之后教师将学生带入到具体任务的实现过程中,包括本次课中主要学习的while循环结构的特点、语法格式、流程图和执行过程,再根据等差数列的特点分析出用程序解决该问题的设计思路和所需变量,然后结合while循环的语法格式将循环语句书写出来。在具体编程设计工作之前要将整个程序的流程分析清楚,再动手写出具体程序,这样才能避免问题的产生,还能够培养学生良好的程序设计书写习惯。学生在分组完成具体任务后要进行讨论,能够总结出while循环应用于实际问题中的设计思路和分析方法,之后能够举一反三合理解决其它问题。本次课程结束前,要求各项目组对项目成果进行演示和阐述,并进行评分。最后总结归纳本次课的主要内容。
9.教学过程。
(1)片头(20秒以内)
通过画面展示“微课”名称 、“微课”所支持的课程名称、“微课”教学内容简介、“微课”主讲教师简介。可以添加适当的背景音乐。
(2)正文(8分钟)
① 画面1:通过课件展示教学情境,引入具体研究任务。(30秒)
具体展示内容:各位同学,在现实生活中,我们会遇到很多需要重复操作的事情。比如,在数学课中曾经接触过的等差数列求和问题。因为等差数列中的数据都是有规律的,而且加法的计算也是重复的,所以完全可以用循环程序来帮助我们完成这个看似复杂的计算。
② 画面2:讲解循环结构的特点、while循环的语法格式和执行过程。(220秒)
具体技术指导内容:学生首先聆听教师讲解有关循环结构的相关知识点,教师做好相关的技术指导,之后教师将学生带入到具体任务的实现过程中,包括本次课中主要学习的while循环结构的特点、语法格式、流程图和执行过程。
③ 画面3:分析等差数列求和问题中所使用的变量、设计流程,并进行程序编写。(300秒)
具体操练内容:向学生交代本次课的主要内容是用循环结构程序来解决等差数列求和问题,再根据等差数列的特点分析出用程序解决该问题的设计思路和所需变量,然后结合while循环的语法格式将循环语句书写出来。在具体编程设计工作之前要将整个程序的流程分析清楚,再动手写出具体程序,这样才能避免问题的产生,还能够培养学生良好的程序设计书写习惯。
(3)小结(20秒)
通过画面展示总结本微课重点。
(4)片尾(10秒)
通过画面展示“微课”制作者信息、 相关“微课”信息、“微课”应用信息和必要的内容注解。
三、结语
本微课在C语言教学中已经应用,并取得了较好的教学效果,学生通过微课的学习对C语言循环结构的理解更加深刻了。张一春教授认为,对于老师而言,最关键的是要从学生的角度去制作微课,而不是在教师的角度去制作,要体现以学生为本的教学思想。因此,在今后的微课设计中,我们还要不断地探索,真正使微课成为学生自主学习的重要资源。
参考文献:
[1]张一春.微课建设研究与思考[J].中国教育网络,2013,10.
[2]孟祥增,刘瑞梅,王广新.微课设计与制作的理论与实践[J].远程教育杂志,2014,6.
c语言复习题顺序结构 第5篇
课题: 第四章 顺序程序设计
教学目的:
1、掌握赋值语句、输入输出语句
2、学会简单的顺序程序设计
教学重点: 输入、输出语句 教学难点: 格式输入输出语句
步骤一 复习引导
上一章介绍的常量、变量、运算符、表达式等都是构成程序的基本成分。本章将介绍为编写简单程序所必需的一些内容。
步骤二 讲授新课
一、C语句概述
1、控制语句
二个分支语句(if-else、switch) 三个循环语句(for、while、do-while) 四个转移语句(continue、break、goto、return)
2、函数调用语句
如:printf(“Hello, world!”);
3、表达式语句
x+y;
i++;a=2;a=3*5, 40;
4、空语句(;)
5、复合语句
{ 语句序列
}
一、赋值语句
赋值语句是由赋值表达式加上一个分号构成,如:b=3;
if((a=b)>0)t=a;
三、数据输入输出的概念及在C语言中的实现
1、输入、输出
2、输入输出操作是由函数来实现的
C语言函数库中有“标准输入输出函数” 字符的输入与输出:getchar()、putchar() 字符串的输入与输出: gets()、puts() 格式输入与输出: scanf()、printf()
3、在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。
例如:使用标准输入输出库函数时,要用到“stdio.h”文件,在源文件开头应有: #include
(一)字符数据的输入输出
1、字符输出函数——putchar 语法:putchar(c)语义:(向stdout终端)输出一个字符;
如:#include
putchar(„a‟);
putchar(„A‟+32);
putchar(„n‟);}
输出:aaa
2、字符输入函数——getchar
语法:getchar(),是一个无参函数; 语义:(从stdin终端上)输入一个字符;
getchar 包含在 stdio.h中,是stdio.h中定义的宏; 如:#include
putchar(getchar());}
如:#include
while((c=getchar())!=„#‟)
if(c>=„a‟c<=„z‟)putchar(c-‟a‟+‟A‟);
else putchar(c);
}从键盘上输入一串字符遇‘#’结束,若字符在a~z之间时,则输出字符的大写;否则直接输出字符。
(二)格式输入与输出
1、格式输出函数——printf 语法:printf(“格式控制”, 输出表列); 格式控制:是用双引号括起来的字符串,包含两种信息: 普通字符和转义字符(这类字符总是原样输出)格式说明:由%和格式控制符组成。如:%d, %f等;(P77)
如:printf(“a=%d, b=%d”,a,b);
若a、b的值分别为2和3,则输出结果为: a=2, b=3 例1:
#include
long int b=123456;
printf(“%5dn%3dn%ldn%9ldn”,a,a,b,b);
} 例2:
#include
printf(“dec a=%dn oct a=%on hex a=%xn”,a,a,a);} 例3:
#include
printf(“a=%d,%c,%un”,a,a,a);
printf(“b=%d,%c,%un”,b,b,b);
printf(“c=%d,%c,%un”,c,c,c);
printf(“c=%3d,%3c,%3un”,c,c,c);}
2、格式输入函数
scanf 语法:scanf(“格式控制”,地址表列); 格式控制:包含三类符号
空白字符:(空格、Tab或t、n),输入时不必一一对应;
普通字符:(非格式转换说明符、非空白符、非%),输入时必须一一对应; 格式转换说明符:
(由%后接一个任选的压缩指示符“*”,表示本输入项在读入后不赋给相应的变量)
例1:#include
scanf(“%d%f%s”,&a,&b,str);
…… } 例2:#include
…… }
注意:scanf函数规定,组成输入项表的输入对象须是地址量;如:
scanf(“%d,%d,%d”,&a,&b,&c);
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);①第一个输入语句,正确的输入数据流为:123,456,789
例3:#include
scanf(“%c%c%c”,&c1,&c2,&c3);
scanf(“%3c%3c%3c”,&c1,&c2,&c3);
…… }
①对第一个输入语句, 若输入数据流为abc
②对第二个输入语句:要求输入3个字段9个字符,但三个变量中只能各存放一个字符,其余的2个字符将被丢掉。如当输入数据流为:abcdefghi
四、顺序结构程序设计举例
例1:输入三角形的三边长,求三角形面积。
分析:三边为a,b,c,面积area2=s(s-a)(s-b)(s-c),其中s=(a+b+c)/2 程序:
#include
main(){ float a,b,c,s,area;
sacnf(%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.2fn”,a,b,c,s);
printf(“area=%7.2fn”,area);
}
例2:从键盘输入一个大写字母,要求改用小写字母输出。
}
步骤三 课堂小结
1、字符输入输出函数:getcharputchar
2、格式输入输出函数:scanfprintf,特别注意scanf函数的地址项是否要加&
3、注意简单程序的结构,头文件、变量定义、输入语句及输出语句
步骤四 布置作业
1、上机练习:(课本第四章课后练习)4.4、4.6
2、书面作业:(课本第四章课后练习)4.8、4.10 #include
c1=getchar();
printf(“%c,%dn”,c1,c1);
c2=c1+32;
C语言复习提纲 第6篇
1.整型(长整型、短整型)、浮点型(单精度、双精度)、字符型在计算机中占用的字节(P43)
2.标识符命名规则(P42)
3.类型转换
4.关系表达式(P92)
5.函数定义(P173)
6.递归函数定义与调用
7.参数值传递与地址传递
8.变量的动态存储与静态存储
9.数组作为函数参数
10.数组、字符数组、数组的初始化
11.指针与数组的关系、用指针表示数组
12.指针的各种表示方式(P289表8.4)
13.十进制、二进制、八进制转换
14.字符串、字符串函数
15.循环,break,continue的区别
16.冒泡排序
17.结构体类型定义
18.系统函数及所在的头文件
参考题目:
1.定义一个学生(student)结构体类型,该类型包含学号(num)、姓名(name)、系别(dept)、班级(class)、4门课的成绩(score)5个属性;并根据该结构体类型定义有20个学生的数组。
2.定义一个函数,函数名为func,该函数有两个输入参数,一个是整型数组,一个是数组元素个数,无返回值。
3.定义一个日期(date)结构体类型,该类型包含年、月、日3个属性;并根据该结构体类型定义两个日期变量:datefrom和dateto。
4.P218第9题
5.P226例8.3
6.冒泡排序算法
七:结构与联合(C语言) 第7篇
在实际问题中,一组数据往往具有不同的数据类型,例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型“结构”。 它相当于其它高级语言中的记录。
“结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构既是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。
一、结构的定义
定义一个结构的一般形式为:
struct 结构名
{
成员表列
};
成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:
类型说明符 成员名;
成员名的命名应符合标识符的书写规定。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。 应注意在括号后的分号是不可少的。结构定义之后,即可进行变量说明。 凡说明为结构stu的变量都由上述4个成员组成。由此可见, 结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合。
二、结构类型变量的说明
说明结构变量有以下三种方法。以上面定义的stu为例来加以说明。
1. 先定义结构,再说明结构变量。如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
struct stu boy1,boy2;
说明了两个变量boy1和boy2为stu结构类型。也可以用宏定义使一个符号常量来表示一个结构类型,例如:
#define STU struct stu
STU
{
int num;
char name[20];
char sex;
float score;
};
STU boy1,boy2;
2. 在定义结构类型的同时说明结构变量。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
3. 直接说明结构变量,
例如:
struct
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量。三种方法中说明的boy1,boy2变量都具有图7.1所示的结构。说明了boy1,boy2变量为stu类型后,即可向这两个变量中的各个成员赋值。在上述stu结构定义中,所有的成员都是基本数据类型或数组类型。成员也可以又是一个结构, 即构成了嵌套的结构。例如,图7.2给出了另一个数据结构。 按图7.2可给出以下结构定义:
struct date{
int month;
int day;
int year;
}
struct{
int num;
char name[20];
char sex;
struct date birthday;
float score;
}boy1,boy2;
首先定义一个结构date,由month(月)、day(日)、year(年) 三个成员组成。 在定义并说明变量 boy1 和 boy2 时, 其中的成员birthday被说明为data结构类型。成员名可与程序中其它变量同名,互不干扰。结构变量成员的表示方法在程序中使用结构变量时, 往往不把它作为一个整体来使用。
在ANSI C中除了允许具有相同类型的结构变量相互赋值以外, 一般对结构变量的使用,包括赋值、输入、输出、 运算等都是通过结构变量的成员来实现的。
表示结构变量成员的一般形式是: 结构变量名.成员名 例如:boy1.num 即第一个人的学号 boy2.sex 即第二个人的性别 如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。例如:boy1.birthday.month 即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。
结构变量的赋值
前面已经介绍,结构变量的赋值就是给各成员赋值。 可用输入语句或赋值语句来完成。
[例7.1]给结构变量赋值并输出其值。
main{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102;
boy1.name=“Zhang ping”;
printf(“input sex and scoren”);
scanf(“%c %f”,&boy1.sex,&boy1.score);
boy2=boy1;
printf(“Number=%dnName=%sn”,boy2.num,boy2.name);
printf(“Sex=%cnScore=%fn”,boy2.sex,boy2.score);
}
本程序中用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2 的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。
结构变量的初始化
C语言循环结构教学探讨 第8篇
循环结构是结构化程序设计的基本结构之一, 它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元, 合称为C语言的三大逻辑结构[1]。三大逻辑结构当中, 循环结构最为重要, 因为在日常生活的许多问题中都需要用到循环控制。例如, 要输入全校学生成绩;求若干个数之和;迭代求根等等[2]。显然, 为解决这些实际问题而编写的应用程序绝大多数也就都包含循环, 所以熟练掌握循环结构的概念及使用是C语言程序设计最基本的要求。同时它与后续章节如数组、函数也有很好的衔接点, 本章内容如果掌握得好, 会大大减少后续章节学习的时间和难度。接下来, 本文就从教学大纲、教学内容、教学过程等方面展开对C语言循环结构的教学探讨。
2 教学大纲 (Teaching syllabus)
2.1 教学目标
结合本章的内容和特点, 从如下三个方面制定了教学目标:
(1) 认知目标:熟练掌握三种循环语句的运用、掌握break和continue语句的运用。
(2) 能力目标:培养学积极探索、主动学习以及相互间分工合作的能力。
(3) 情感目标:让学生在展示自我程序的过程中感受成功的喜悦, 同时让学生在相互评价中直面程序设计存在的问题, 通过不断地尝试激发学习热情, 通过不断地探索培养学习兴趣。
2.2 学习要求
学习本章要求学生已经掌握前几章的知识, 包括:C语言概述、算法基础、数据类型、表达式与运算符、顺序结构、选择结构;同时具备上机熟练应用这部分知识的能力。
2.3 重点难点
(1) for、while、do-while循环语句
(2) 循环的嵌套
(3) break和continue语句
为了有效落实教学重点、难点, 对教材教参作了局部调整, 并采取了相应的教学方法, 说明如下。
3 教学内容 (Teaching content)
结合所选教材章节, 将“循环控制”这部分的教学内容确定为如下六节, 分配8学时进行学习, 如表1所示。
4 教学过程 (Teaching process)
4.1 导入环节
在导入环节, 采用的主要教学方法是情境教学法和任务驱动法。首先提出模拟情境期末考试结束了, 任课老师为了检验课程教学效果, 想要将学生分数从百分制转换成五分制 (百分制的90100分转换为五分制的A, 8089分转换为B, 7079分转换为C, 6069分转换为D, 60分以下转换为E) , 该如何操作?随后启发学生回忆上一章选择结构中if语句和switch语句的使用方法, 编写出单个学生分数从百分制到五分制的转换代码。在此基础上, 提出新的任务, 如果要将全班同学、全年级同学、甚至是全校同学的分数都进行同样的转换, 该如何减少重复劳动, 简化操作流程呢?进而导入本章的新授内容循环控制, 展开下一步的学习。
4.2 新授环节
在新授环节, 主要采用了对比讲述法和现场演示法进行学习。将while语句、do-while语句、for语句的基本语法格式以及循环流程描述清楚后, 通过现场演示的方法将三种循环语句对比开来, 让学生明确其具体的使用方法及相互间的细微差别。例如针对下面的代码:
如果变量i的初值是10, 那么用while书写的循环语句最终运行结果是没有人任何输出, 而用do-while书写的循环语句最终运行结果却是输出一句“hello”。可见在初值相同、循环条件相同、循环体也相同的情况下, while和do-while语句可以产生不同的结果。
同样还是这段代码, 只将变量i的初值稍微改动, 将i的初值由10改为9。这样改动之后, 用while书写的循环语句最终运行结果是输出一句“hello”, 用do-while书写的循环语句最终运行结果也是输出一句“hello”。可见在这个例子中, 初值相同、循环条件相同、循环体也相同的情况下, while和do-while语句又产生了相同的结果。
通过这样的对比讲述、现场演示不仅加深了学生对三种循环语句的理解和掌握, 而且还培养了他们根据实际情况灵活运用循环结构的能力。
4.3 巩固环节
在巩固环节, 主要采用分组实训的方法夯实基础、强化技能。分组, 即将学生分成学习小组, 三五人一组, 小组成员中尽量融合不同层次的学生, 这样有利于先进生帮带后进生完成上机实训任务, 最终达到共同进步的效果[3]。除此之外, 在小组合作中, 还能逐步培养学生的集体荣誉感和团队协作意识, 为他们日后走上就业岗位奠定一定的工作基础。
5 结论 (Conclusion)
C语言是学生在大学期间接触到的第一门计算机编程语言, 课程进行到循环控制这部分, 实际上整个学期已将近过半, 此时学生的学习情况已经分出层次, 用良莠不齐来形容也不为过。通过观察可以发现学生对本章的内容既有畏难情绪, 又有求知欲望, 这就要求教师能够起到课堂的主导作用, 充分调动起学生的求知欲望和学习兴趣, 及大地发挥学生的主体作用[4], 深入浅出、循序渐进地传道、授业、解惑, 同时综合运用多种教学方法和教学手段落实教学重点、突破教学难点。学生则应贯彻“三多两勤”的学习方法来完成本部分的学习, 即多读程序、多写程序、多上机调试程序、勤动脑、勤动手。
参考文献
[1]谭浩强.C程序设计 (第三版) [M].北京:清华大学出版社, 2005.
[2]徐东, 祁薇, 刘海见.《C语言循环结构》课程教学设计研究[J].软件导刊, 2014, 13 (6) :154-156.
[3]唐红杰.《UML》课程教学分析与设计[J].网络安全技术与应用, 2014 (6) :241-243.
c语言复习题顺序结构 第9篇
C语言数据结构与指针 第10篇
学院:
班级:
学号:
姓名:
实验四
(一)实验名称:C语言数据结构与指针
(二)实验目的:巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点,加强学习数据结构语言基础。
(三)实验内容:
1)学生信息的显示,具体要求如下:
定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址);
设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构体类型;
设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数进行显示(学生人数不少于5人)。
2)输入若干个整数作为数组元素值,然后按输入时顺序的就地逆置排序,最后打印出逆置后的元素值。要求用指针和动态内存分配方法实现。例如 输入:10 2 30 4 5,逆置后显示为:5 4 30 2 10。
(四)源代码:
#define MAXSIZE 100
#include
ElemType data[MAXSIZE];int length;
} SqList;SqList l;
void InitList(SqList &L)
{
L.length = 0;} void CreatSqlist(SqList &L,int n)
{
printf(“请输入节点”);int i;for(i=0;i } void Output(SqList &L) { int i;for(i=0;i printf(“n”);} int chazhao(SqList &L,int x){ int i,k;printf(“n请输入你要查找的元素 x=?”);scanf(“%d”,&x);for(i=0;i<=(L.length+1);i++){ if(x==L.data[i]) {printf(“要查找的元素%d位于线性表第%d位上nn”,x,i+1); k=0; break; } } if(k!=0)printf(“所要查找的元素%d不在线性表中”,x);return 0;} int GET(SqList &L,int i){ int m;if((i<0)||(i>L.length)){printf(“所查找范围超出线性表长度”);return 1;} else if((i>=1)(i<=L.length)){ m=L.data[i-1];}printf(“%d ”,m);return 0;} int DELETE(SqList &L,int i){ int j;if(i<1||i>L.length){printf(“删除错误”);return 0;} else { for(j=i;j L.data[j-1]=L.data[j]; L.length--; } return 1;} int INSERT(SqList &L,int x,int i){ int j;if(L.length>=MAXSIZE-1){printf(“over flow”);return 1;} else if((i<1)||(i>L.length+1)){printf(“插入错误”);return 1;} else {for(j=L.length;j>=i-1;j--)L.data[j+1]=L.data[j];L.data[i-1]=x;L.length=L.length+1;} return 0;} int main(){int n,i,k,x;InitList(l);printf(“请输入线性表的长度 ”);scanf(“%d”,&n);CreatSqlist(l,n);Output(l); printf(“请输入你要查找的数所在的节点位置”);scanf(“%d”,&i);GET(l,i);chazhao(l,x);printf(“请输入你要删除元素的位置=?”);scanf(“%d”,&k);DELETE(l,k);Output(l);printf(“请输入你要插入的数和位置x,i=?”);scanf(“%d,%d”,&x,&i);INSERT(l,x,i);Output(l);return 0;} (五)代码运行结果: (六)需求分析 1、输入的形式和输出值的范围:1)输入10个整数。2)输出整个顺序线性表。 2、输出的形式:完成各种功能后的线性表。 3、程序所能达到的功能:1)所存储顺序线性表的显示、元素的查找、删除和插入。 (七)所用到的函数: void CreatSqlist void Output Int chazhao int GET int INSERT int DELETE (八)心得体会:
c语言复习题顺序结构
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


