程序设计7(结构体3)
- 格式:ppt
- 大小:207.50 KB
- 文档页数:19
二级C语言程序设计-7(总分100,考试时间90分钟)一、选择题1. 构成C程序的三种基本结构是A.顺序结构、转移结构、递归结构 B.顺序结构、嵌套结构、递归结构 C.顺序结构、选择结构、循环结构 D.选择结构、循环结构、嵌套结构2. C语言编译程序的功能是A.执行一个C语言编写的源程序 B.把C源程序翻译成ASCII 码 C.把C源程序翻译成机器代码 D.把C源程序与系统提供的库函数组合成一个二进制执行文件3. 下列形式中不合法的常量是A.2.E8 B.-.28 C.-028 D.2e-84. 以下不是C语言字符型或字符串常量的是A."It's" B."0" C.'a=0' D.'\010'5. C语言程序中,若函数无返回值,则应该对函数说明的类型是A.intB.doubleC.charD.void6. 若变量已正确定义并赋值,则错误的赋值语句是A.a+=a+1;B.a=sizeof(double);C.a=d‖c;D.a+1=a;7. 若有定义:int a=1,b=2,c=3;,则执行表达式(a=b+c)‖(++b)后a,b,c的值依次为A.1,2,3 B.5,3,2 C.5,2,3 D.5,3,38. 有以下程序#include <stdio.h>main(){ int k=10;printf("%4d, %o, %x\n", k, k, k);}程序的运行结果是(□代表一个空格)A.10,12,a B.□□10,012,a C.010,12,a D.□□10,12,a9. 设有:char s[5], c;,则调用函数scanf能正确给s和c读入数据的是A.scanf("%s%c", s,c); B.scanf("%d%c", &s, &c); C.scanf("%d%c", s, &c); D.scanf("%s%c", s, &c);10. 设x,y,z均为实型变量,代数式在C语言中的正确写法是A.x/y*zB.x%y%zC.x/y/zD.x*z/y11. 有以下程序#include<stdio.h>main(){ int i, j, k, a=5, b=6;i=(a==b)?++a: --b;j=a++; k=b; printf("%d, %d, %d\n", i, j, k);}程序的运行结果是A.7,6,5 B.5,5,5 C.7,5,5 D.5,6,512. 设变量x为long int型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是A.x/10%100B.x%10/100C.x%100/10D.x/100%1013. 有以下程序#include<stdio.h>main(){ int i, j, x=0;for(i=0; i<2; i++){ x++;for(j=0; j<=3; j++){if(j%2==0) continue; x++; }x++;}printf("x=%d\n", x);}程序的运行结果是A.x=4 B.x=6 C.x=8 D.x=1214. 有以下程序#include<stdio.h>main(){ int sum=0, x=5;do{sum+=x; }while(!--x);printf("%d\n", sum);程序的运行结果是A.0 B.5 C.14 D.1515. 有以下程序#include<stdio.h>main(){ char ch='Z';ch=(ch-'A'+1)%26+'A'; putchar(ch);程序的运行结果是A.Z B.Y C.B D.A16. 以下函数的功能是:计算a的n次方作为函数值返回double fun(double a, int n){ int i; double s=1.0;for(i=1; i<=n; i++) s=______;return 8;}为实现上述功能,函数中下划线处应填入的是A.s*i B.s*a C.s+i*i D.s+a*a17. 在C语言程序中,下列说法正确的是A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和调用均不可以嵌套 D.函数的定义和调用均可以嵌套18. 若主函数中有定义语句:int a[10],b[10],c;,在主函数前定义的fun函数首部为:void fun(int x[]),则以下选项中错误的调用语句是A.fun(b); B.fun(&c); C.fun(&a[3]); D.fun(b[1]);19. 有以下程序#include<stdio.h>main(){int k, n=0; char c, str[]="teach";for(k=0; str[k]; k++){ c=str[k];switch(k){case 1: case 3: case 5: putchar(c); printf("%d", ++n); break;default: putchar('N');}}}程序的运行结果是A.Ne1NN B.e1a2e3 C.Ne1Nc2N D.Na1NNNN20. 以下叙述中错误的是A.同一个数组中所有元素的类型相同 B.不可以跳过前面的数组元素,给后面的元素赋初值 C.定义语句:int a[10]={0};,给a数组中所有元素赋初值0 D.若有定义语句:int a[4]={1, 2, 3, 4, 5};,编译时将忽略多余的初值21. 执行以下程序段后,s的值为int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9}, s=0, k;for(k=0; k<8; k+=2) s+=*(a+k);A.13 B.16 C.17 D.4522. 有以下程序#include<stdio.h>#define N 4void fun(int a[][N], int b[]){ int i;for(i=0; i<N; i++) b[i]=a[i][N-1-i];}main(){ int x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, y[N], i;fan(x, y);for(i=0; i<N; i++) printf(:%d,", y[i]);printf("\n");}程序的运行结果是A.1,2,3,4, B.3,6,9,12, C.4,7,10,13, D.1,5,9,13,23. 有以下程序#include <stdio.h>#include<string.h>main(){char str[]={"Hello, Beijing"};printf("%d, %d\n", strlen(str), sizeof(str));}程序的运行结果是A.13,13 B.13,14 C.13,15D.14,1524. 有以下程序#include<stdio.h>void fun(char(*p)[6]){ int i;for(i=0; i<4; i++) prinff("%c", p[i][i]);printf("\n");}main(){ char s[6][6]={"ABCDE", "abcde", "12345", "FGHIJ", "fghij", "54321"};fun(s);}程序的运行结果是A.A a 1 F B.A b 3 I C.A B C D D.f g h i j25. 有以下程序#include<stdio.h>int fun(int n){ if(n) return fun(n-1)+n;else return 0;}main(){printf("%d\n", fun(3)); }程序的运行结果是A.4 B.5 C.6 D.726. 有以下程序#include<stdio.h>#define M 5#define f(x, y) x*y+Mmain(){ int k;k=f(2, 3)*f(2, 3);printf("%d\n", k);}程序的运行结果是A.22 B.41 C.100 D.12127. 有以下定义struet data{ int i; char c; double d; } x;以下叙述中错误的是A.x的内存地址与x.i的内存地址相同 B.struct data是一个类型名 C.初始化时,可以对x的所有成员同时赋初值 D.成员i、c和d占用的是同一个存储空间28. 有以下程序#include <stdio.h>#include<string.h>typedef struet{ char name[9]; char sex; float score[2]; }STU;void f(STU *a){ strcpy(a->name, "Zhao");a->sex='m'; a->score[1]=90.0;main(){ STU c={"Qian", 'f', 95.0, 92.0}, *d=&c;f(d); printf("%s, %c, %2.0f, %2.0f\n", d->name, c.sex, c.seore[0], c.score[1]);}程序的运行结果是A.Qian,f,95,92 B.Zhao,f,95,90 C.Zhao,m,95,90 D.Zhao,f,95,9229. 若有以下定义struet tt{char name[10]; char sex; } aa={"aaaa", 'F'}, *p=&aa;则错误的语句是 A.scanf("%c", aa.sex); B.aa.sex=getchar(); C.printf("%c\n", (*p).sex); D.printf("%c\n", p->sex);30. 若有说明:typedef struet {int a; char c; }W;则以下叙述正确的是A.编译后系统为W分配5个字节 B.编译后系统为W分配6个字节 C.编译后系统为W分配8个字节 D.编译后系统不为W分配存储空间二、程序填空题1. 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。
课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。
习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。
```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。
```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。
PLC程序中结构体用法1.什么是结构体?在P LC(可编程逻辑控制器)程序设计中,结构体是一种用户自定义的数据类型,其由多个不同类型的变量按照一定的顺序组合成一个整体。
结构体可以用于表示一个具有多个属性的实体,并且可以方便地对这些属性进行操作和存储。
2.结构体的定义和声明在P LC程序中,我们可以通过以下方式定义和声明一个结构体:```m ar kd ow nS T RU CT Na meA t tr ib ut e1:D at aTy p e;A t tr ib ut e2:D at aTy p e;...E N D_ST RU CT```其中`N am e`是结构体的名称,`At tr ibu t e1`、`A tt ri bu te2`等为结构体的属性名,`Dat a Ty pe`为属性的数据类型。
例如,我们可以定义一个名为`P er so n`的结构体,用于表示一个人的属性:```m ar kd ow nS T RU CT Pe rs onN a me:S TR IN G(20);A g e:IN T;H e ig ht:R EA L;G e nd er:B OO L;E N D_ST RU CT```3.结构体的使用3.1结构体变量的声明和赋值在程序中,我们可以声明一个结构体类型的变量,并通过赋值来初始化其属性:```m ar kd ow nV A Rp1:P er so n;p2:P er so n;E N D_VA Rp1.N am e:='Al ic e';p1.A ge:=25;p1.H ei gh t:=1.65;p1.G en de r:=T RU E;p2:=p1;//将p1的值赋给p2```3.2结构体的属性访问结构体的属性可以通过`.`操作符来访问和修改:```m ar kd ow np1.N am e:='Bo b';I F p2.A ge>18T HE N//do so me th in gE N D_IF```3.3结构体的作为函数参数和返回值结构体可以作为函数的参数和返回值,方便地传递和处理多个属性的信息:```m ar kd ow nF U NC TI ON Pr in tP ers o nI nf o:BO OLV A Rp:Pe rs on;E N D_VA Rp.Na me:='T om';p.Ag e:=30;p.He ig ht:=1.8;p.Ge nd er:=TR UE;//打印人物信息P R IN T('N am e:'+p.N a me);P R IN T('A ge:'+T O_S T RI NG(p.A ge));P R IN T('H ei gh t:'+T O_S TR IN G(p.He igh t));I F p.Ge nd er TH ENP R IN T('G en de r:Mal e');E L SEP R IN T('G en de r:Fem a le');E N D_IFE N D_FU NC TI ON```4.结论结构体是PL C程序设计中一种重要的数据类型,它能够方便地组织和操作多个属性的数据。
c语言程序设计教程第三版习题答案C语言程序设计教程第三版习题答案第一章:C语言概述1. 简述C语言的特点。
C语言是一种结构化编程语言,具有高级语言的特点,同时支持底层硬件操作。
其特点包括:简洁、高效、可移植、丰富的运算符、数据结构支持、广泛的库函数等。
2. 什么是编译型语言?编译型语言是指源代码在执行前需要通过编译器转换成机器语言的程序设计语言。
C语言就是一种编译型语言。
第二章:数据类型、运算符和表达式1. 列出C语言的基本数据类型。
C语言的基本数据类型包括:整型(int)、字符型(char)、浮点型(float和double)。
2. 说明赋值运算符的用法。
赋值运算符(=)用于将右侧表达式的值赋给左侧的变量。
例如:`int a = 10;` 将整数值10赋给变量a。
第三章:控制结构1. 什么是条件语句?条件语句用于根据条件的真假来执行不同的代码块。
C语言中的条件语句主要有if语句和switch语句。
2. 循环语句有哪些?C语言中的循环语句主要有for循环、while循环和do-while循环。
第四章:数组和字符串1. 数组的声明和初始化方式。
数组声明的一般形式为:`type arrayName[arraySize];`。
初始化可以使用花括号一次性赋值,如:`int arr[5] = {1, 2, 3, 4, 5};`。
2. 字符串在C语言中的表示方法。
在C语言中,字符串以字符数组的形式存在,以空字符('\0')作为结束标志。
第五章:函数1. 函数的定义和调用。
函数定义的一般形式为:`returnTypefunctionName(parameterList) { /* function body */ }`。
调用函数时,使用其名称和必要的参数。
2. 函数的参数传递方式有哪些?C语言中函数的参数传递方式主要有值传递(pass by value)和引用传递(pass by reference)。