C语言程序设计综合实习报告

C语言程序设计综合实习报告
C语言程序设计综合实习报告

C语言程序设计综合实习

报告

The latest revision on November 22, 2020

课题一:用指针优化学生成绩排名

一、目的

1.熟悉变量的指针和指向变量的的指针变量的概念和使用

2.熟悉数组的指针和指向数组的的指针变量的概念和使用

3. 掌握冒泡法或选择法排序的算法

4. 掌握函数的定义、调用、声明,以及参数的两种传递方式

二、实习环境

个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境

三、实习内容与步骤

1.定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现

2.将数组stu[10]的内容输出到屏幕上,要求用指针实现

3.将成绩数组按照从高到低进行排序,要求用指针实现

4.将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单

5.采用指针方法,输入字符串“student score ”,复制该字符串并输出(复

制字符串采用库函数或用户自定义函数)

6.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行

结果(屏幕截图)。 7. 在实习报告中说明知识点。

8.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。 四、程序流程图、算法及运行结果

1.程序流程图:

2.算法:

由键盘输

输出成绩

先定义一个函数接收10个学生的成绩,利用指针将数据保存在数组中,再定义第二个函数输出所以学生的成绩,同样也是使用指针,最后定义一个函数用选择排序法对成绩进行由大到小的排序,将指针指向的是数组中的第一个地址,在主函数中依次调用这两个函数;

定义一个字符指针指向字符串,利用库函数中的strcpy将student score复制给字符指针,输出字符串

3.程序:

#include"stdio.h"

#include"string.h"

struct student

{

int grade;

int num;

}stu[10];

void input(struct student *p)

{ int i;

for(i=0;i<10;i++,p++)

{ printf("请输入第 %-2d个学生的成绩:",i+1);

scanf("%d%d",&p->num,&p->grade); }

}

void printout(struct student *p)

{ int i;

for(i=0;i<10;i++,p++)

printf("第 %-2d个学生的成绩为:%d\n",i+1,p->grade); }

void arrow (int *p1,int *p2,int *px,int *py)

{ int t,m;

t=*px; *px=*py; *py=t;

m=*p1; *p1=*p2; *p2=m;

}

void place(struct student stu[])

{ int i,j;

for(i=1;i<10;i++ )

for(j=0;j<10-i;j++)

if (stu[j].grade

arrow(&stu[j].num,&stu[j+1].num,&stu[j].grade,&stu[j+1].grade);

}

int main(void)

{ struct student stu[10],*ptr;

int i;

char string[100],*s;

s=string;ptr=stu;

input(ptr);

printout(ptr);

place(stu);

printf("排序后的成绩单为:\n");

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

printf("第 %-2d名 %-2d %-5d\n",i+1,stu[i].num,stu[i].grade);

printf("\n");

strcpy(s,"student score");

printf("%s\n",string);

}

4.运行结果:

五、知识点、难点及解决办法。

主要考察的是利用指针作为函数参数以及指针数组的知识点,如何使指针指向数组并能将值返回给主函数是一个难点

首先定义一个整型指针指向数组stu[]的首地址,在自定义函数中运用循环结构实现指针的移动并分别存储各个学生的成绩返回给主函数

六、编程小结或体会。

编程时除了注意指针与函数如何调用外,还要注意细节问题,比如自定义变量类型的统一,循环结构的循环次数等等,要谨慎对待

课题二:学生成绩单制作

一、目的

1.掌握结构体变量及数组的定义、赋值、初始化、输入、输出

2.结构体数组的操作。

二、实习环境

个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境

三、实习内容与步骤

1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩

2.从键盘输入10个学生的以上内容

3.输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩

4.输出三门课程的平均分数最高的学生的学号、姓名及其平均分

5.将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:number name math Chinese English average

103 tom 90 90 100 95

101 alice 90 80 70 80

6.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。

7.在实习报告中说明知识点。

8.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会

四、程序流程图、算法及运行结果

1.程序流程图:

2.算法:

先定义一个结构体,存储学生的各项信息,定义一个结构体指针指向结构体数组,第一个函数比较每个学生单门课的成绩,返回每一门课最高分学生的stu 的下标;第二个函数比较每个学生的平均分,返回平均分最高的学生;第三个函数主要按照平均分高低对学生进行排序,通过循环和选择排序法实现指针的移动以及重新排列,主函数中依次调用这三个函数 3.程序:

比较每个学生单门课成

#include"stdio.h"

#define N 10

struct student

{

long number;

char name[20];

float grade[3];

float average;

}stu[10];

int hanshu_best(struct student *p,int m) { int q,num;

float a;

a=p->grade[m];

num=0;

for(q=0;q

if((p+q)->grade[m]>a)

{ a=(p+q)->grade[m];

num=q; }

return num;

}

int hanshu_average(struct student *p)

{ int i,m,index;

float a;

for(m=0;m

{ p->average=0;

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

p->average=p->average+p->grade[i]; p->average=p->average*1.0/3; }

a=p->average;

for(m=0;m

if(p->average>a)

{ a=p->average;

index=m; }

else

index=0;

return index;

}

void hanshu_place(struct student stu[])

{ int i,j;

struct student t;

for(i=0;i

for(j=i;j

if(stu[j+1].average>stu[i].average)

{ t=stu[j+1]; stu[j+1]=stu[i]; stu[i]=t;} }

void main()

{

struct student stu[10],*ptr;

int i,j,index,m,num;

float average;

ptr=stu;

for(i=0;i

{ printf("请输入第%d个学生的学号、姓名及三科成绩:\n",i+1); scanf("%ld%s",&stu[i].number,stu[i].name);

for(j=0;j<3;j++)

scanf("%f",&stu[i].grade[j]); }

printf("\n");

for(m=0;m<3;m++)

{ num=hanshu_best(ptr,m);

printf("学号%ld 姓名:%-10s 最高分% -

8.2f\n",stu[num].number,stu[num].name,stu[num].grade[m]); } index=hanshu_average(ptr);

printf("\n三门课平均分最高的学生信息是:\n");

printf("学号%ld 姓名:%-10s 平均分%-

8.2f\n",stu[index].number,stu[index].name,stu[index].av

erage);

printf("\n10个学生由高分到低分排名为:\n");

printf("number name Math Chinese English

average\n");

hanshu_place(ptr);

for(i=0;i

{ printf("%-10ld%-10s%",stu[i].number,stu[i].name);

for(j=0;j<3;j++)

printf("%-10.2f",stu[i].grade[j]);

printf("%-10.2f\n",stu[i].average);}

}

4.运行结果:

五、知识点、难点及解决办法。

主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结构体并返回我们所要的数值

先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址,在自定义函数中通过指针的运算实现数组的运算,并返回相应的值

六、编程小结或体会。

在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。

掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复杂问题的能力,以后多练习此类的程序设计问题,使自己更加熟练

课题三:学生成绩文件管理

一、目的

1.掌握文件指针的概念和运用

2.掌握文件的相关操作:打开、读、写、关闭

3.掌握文件的定位操作

二、实习环境

个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境

三、实习内容与步骤

1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩

2.从键盘输入10个学生的以上内容,存入文件stud.txt,关闭文件

3.打开stud.txt文件,将数据读出,查看是否正确写入,关闭文件。

4.打开文件stud.txt文件,读出数据,将10个学生按照平均分数从高到低进行排序,

分别将结果输出到屏幕上和另一文件studsort.txt中。

5.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。

6.在实习报告中说明知识点。

7.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。

四、程序流程图、算法及运行结果

1.程序流程图:

2.算法:

首先创建一个可读可写的新文件stud.txt,键入十个学生的信息并储存在文件中,关闭程序;打开文件stud.txt,读出文件中的信息并输出,检查有无错漏,并按照平均分通过选择排序法对学生由高到低排序,关闭程序;将排好序的信息输出并存储在新的可写文件studsort.txt中

3.程序:

#include"stdio.h"

#include"stdlib.h"

#define N 10

struct student

{

long num;

char name[20];

int grade[3];

}stu[10];

int main(void)

{ FILE *fp,*fpp;

struct student stu[10],t;

float average[100];

int i=0,j;

if((fp=fopen("stud.txt","w+"))==NULL)

{ printf("该文件打开失败!");

exit(0); }

for(i=0;i

{ printf("第 %-2d个学生的学号、姓名及三门课成绩:\n",i+1);

scanf("%ld%s",&stu[i].num,stu[i].name);

fprintf(fp,"第%-2d个学生的学号、姓名及三门课成绩:\n",i+1);

fprintf(fp,"%ld %-5s",stu[i].num,stu[i].name);

for(j=0;j<3;j++)

{ scanf("%d",&stu[i].grade[j]);

fprintf(fp,"%d ",stu[i].grade[j]); }

fprintf(fp,"\n");

}

if(fclose(fp))

{ printf("该文件无法正常关闭!\n");

exit(0); }

if((fp=fopen("stud.txt","r+"))==NULL)

{ printf("该文件打开失败!");

exit(0); }

printf("\n");

for(i=0;i

{ printf("第%d个学生的学号、姓名及三门课成绩:\n",i+1);

fscanf(fp,"%ld%s",&stu[i].num,stu[i].name);

printf("%ld %-5s",stu[i].num,stu[i].name);

for(j=0;j<3;j++)

{ fscanf(fp,"%d",&stu[i].grade[j]);

printf("%d ",stu[i].grade[j]); }

printf("\n");

}

if(fclose(fp))

{ printf("该文件无法正常关闭!\n");

exit(0); }

if((fp=fopen("stud.txt","r+"))==NULL)

{ printf("该文件打开失败!");

exit(0); }

for(i=0;i

{ fscanf(fp,"%ld%s",&stu[i].num,stu[i].name);

for(j=0;j<3;j++)

fscanf(fp,"%d",&stu[i].grade[j]); } for(i=0;i

{ for(j=0;j<3;j++)

average[i]=average[i]+stu[i].grade[j];

average[i]=average[i]*1.00/3; }

for(i=0;i

for(j=i;j

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计模拟试题1(附答案)

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 x = 9; while (x > 7)

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

C语言程序设计模拟试题A附答案

《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的就是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被瞧作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的就是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的就是(C)。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 4、执行下列程序段后输出的结果就是(C)。 x = 9; while (x > 7) { printf(“*”); x- -; } A) **** B) *** C) ** D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果就是(D)。 解析: strcpy(str1,str2); 后,str1[] 里就是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的就是str1, 因为str1[] 里就是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8 C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的就是(A)。

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计模拟试题2(附答案)

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是___1.000000___ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是__17______。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() {

float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( X>0&&X<=100 ) { if (x>amax) amax=x; else if (x

_k++ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是_-3 -4 0 4 4 3___ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是____6_____ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

第四章MCS-51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

《汇编语言程序设计》考核方式

考核方式与要求 期末总成绩构成:期末开卷考试60% + 平时作业10% + 实验和实验报告30%。 1、试卷考核方式与要求 “汇编语言程序设计”的课程要求是使学生具有一定的程序设计能力。虽然课程是通过80x86微处理机来开展教学的,但学习的重点不仅仅是学会80x86指令的语法和规范,更重要的是通过多读程序、多练习编写程序来掌握程序设计的基本方法和技术,要求学生在工作中遇到其他机型,都应该能利用所掌握的方法和技术顺利解决实际问题。因此,我们在教学过程的各个环节,特别是具有指挥棒作用的考核环节中,着重体现了“能力培养是首位”的指导思想。 为此,汇编课一直实行多元化考核方式,在考核评分上,平时练习和上机实验占40%,期末考试占60%。期末考试实行开卷考试,这样学生平时学习的关注点就会放在分析问题和编程实现的方法上,有利于学生开阔思路,发挥自身创造力。每年设计开卷考试的考题是有一定难度的,教师必须非常熟悉课程的知识点、重点和难点,以及体现这些知识和能力水平的多种题目类型。 2、实验方式与要求 实验的目标为:加强课堂上相关理论和技术学习的有效性;提高学生上机编程和调试的能力;培养学生科学实践的理念和独立分析问题、解决问题的能力。其设计思想是:实验内容兼顾基础性和综合性,实验题目由简单→复杂,程序功能由单一→综合,实验安排有基本要求题+自选题,实验题类型有验证型和自主创新设计型。 √实验课组织形式: 1.系教学实验室按课程要求负责上机环境配置及实验设备管理; 2.以班为单位组织上机实验,并将上机时间安排表发至每位同学; 3.每单元实验课安排一位助教(助博)负责实验指导和答疑; 4.学生每做完一个实验即可提交老师验收,老师将实验运行结果记录下来作为实验成 绩的依据。验收时教师要注意发现比较突出的好的实验例题(完成时间短、程序运行效率高); 5.要求提交实验报告,根据实验报告及实验运行结果的记录,评出实验成绩,实验成 绩一般占总成绩的30%。 √教师指导方法: 1.大课集体指导。每学期实验前教师安排一次实验指导课,讲解实验方法和实验要求; 2.每次实验课都安排助教(助博)进行个别或集体的实验指导和答疑; 3.对具有共性的、问题比较多的实验,主讲教师在课堂上再进行集体指导; 4.每学期对实验中出现的问题,对照实验题目进行分析、总结,以利于以后的教学。 5.对于实验中有创新点的学生,还可以请他上讲台为同学们介绍他的设计思路,引发大家展开讨论。

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

C语言程序设计模拟试题1

C语言程序设计模拟试题. 一、填空题. 1. C语言程序的三种基本结构是顺序结构,选择结构,循环结构。 2.if语句控制表达式只有其值为非0表示逻辑值“真”,其值为0表示逻辑值“假”。 3.说明语句:int b[10]; 定义了数组b有10个整型元素,这些数组元素的下标是从0开始,最大为9。 4. 有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]=0,a[2][1]=6. 5. 设x,y,z均为int 型变量,C语言描述”x或y中有一个小于z”的表达式是x

8. 在C语言中,十进制数30的八进制表示形式是036 ,十六进制表示形式是0x1e 9. C程序是由函数组成的。一个C程序由一个main()函数和若干个子函数构成。函数的构成可分为两部分:函数说明(或函数头) 和函数体。 10.标识符是指程序中的符号常量、变量、函数等对象的名称。在C语言中,标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。 11.在C语言中整型常量有十进制、八进制和十进制三种表示方法。实型常量有小数形式和指数两种表示方法。 12.C语言中语句的作用是向计算机系统发出操作命令,从而完成一定的操作任务。C语句可以分为:表达式语句、函数调用语句、控制语句、复合语句和空语句等五种类型。 二、单项选择题) 1.一个C语言的执行是从 A (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的 最后一个函数结束

河北工业大学汇编语言知识程序设计实验

汇编语言程序设计实验 网络*** *** 实验一 顺序与分支程序设计 一 、实验目的 1) 掌握顺序程序设计方法。 2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在pc 机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1.实验六 从键盘上接收一位十进制数x ,计算y 值,并以十六进制形式显示出来,y 按下列公式计算。 ???????===-=+=) 6(2/) 5()4(2) 3(22 2 2X X X X X X X X X X Y 2..实验七 实验内容:从键盘上接收两个一位十六进制数x 和y ,然后再输入一个a-d 之间的一个字符,按下列要求计算。 a) 当输入字符为a ,则计算x+y ,并以十六进 制形式显示出来 b) 当输入字符为b ,则计算|x-y|,并以十六进制形式显示出来 c) 当输入字符为c ,则计算x*y ,并以十六进制形式显示出来 d) 当输入字符为d ,则计算x/y ,并以十六进制形式显示出来 三、实验代码 实验六 DATE SEGMENT X DB ?

DATE ENDS ;数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATE START:MOV AX,DATE ;代码段 MOV DS,AX ;初始化ds寄存器 MOV AH,1 INT 21H ;读文件到缓冲区 CMP AL,33H ;比较指令 JB L0 ;A

C语言程序设计竞赛模拟试题

1、编写程序,从键盘上连续输入若干字符,直到回车换行符结束。统计并输出所输入的空格、 大写字母、小写字母,以及其他字符(不含回车换行符)的个数。 #include "" main() { char ch=' '; int i=0, j=0, k=0, m= ?1; do { if (ch>='a' && ch<='z') i++; else if (ch>='A' && ch<='Z') j++; else if (ch == ' ') m++; else k++; }while((ch=getchar())!='\n'); printf ("small letter = %d, capital letter = %d\n", i, j); printf ("space = %d, other = %d\n", m, k); } 编写程序,求100~999之间所有的水仙花数。所谓“水仙花数”,即是一个三位数,它个位、十位、百位数字的立方和,恰好等于该数本身。 #include "" main() { int i, j = 1; int nf, ns, nt; for (i =100; i<=999; i++) { nf = i%10; ns = i/10%10; nt = i/100; nf = nf * nf * nf; ns = ns * ns * ns; nt = nt * nt * nt; if ((nf + ns + nt) == i) { printf ("The %d's number is %d\n", j, i); j++; } } 编写程序,求1-1/2+2/3-3/4+4/5-5/6+6/7….-99/100= 4、编写程序,随机产生1-35个不重复的数,并打印结果。

相关文档
最新文档