尔雅程序设计基础_14期末答案(学习通2023题目答案)

外语类考试2024-05-19 09:09:4953505抢沙发
尔雅程序设计基础_14期末答案(学习通2023题目答案)摘要: 第一章 概述单元测试1、1.以下叙述中错误的是 )。A、C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件B、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令C ...

尔雅程序设计基础_14期末答案(学习通2023题目答案)

第一章 概述

单元测试

1、尔雅1.以下叙述中错误的程序是( )。
A、设计C程序经过编译、基础链接步骤之后才能形成一个真正可执行的期末二进制机器指令文件
B、C语言中的答案每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
C、用C语言编写的学习程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D、通题C语言源程序经编译后生成后缀为.obj的目答目标程序

2、下列叙述中错误的尔雅是( )。
A、程序C程序可以由一个或多个函数组成
B、设计C程序可以由多个程序文件组成
C、基础一个C语言程序只能实现一种算法
D、期末一个C函数可以单独作为一个C程序文件存在

3、答案对于一个正常运行的C程序,以下叙述中正确的是( )。
A、程序的执行总是从程序的第一个函数开始, 在main函数结束
B、程序的执行总是从main函数开始
C、程序的执行总是从main函数开始,在程序的最后一个函数中结束
D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

4、计算机能直接执行的程序是( )。
A、汇编程序
B、目标程序
C、可执行程序
D、源程序

5、以下叙述中正确的是( )。
A、main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等
B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C、C语言程序将从源程序中第一个函数开始执行
D、C语言规定必须用main作为主函数名,程序将从此开始执行

单元作业_概述

1、请在屏幕上分行输出以下内容。第一行:你的真实姓名。第二行:你的学号。第三行:你的班级。第四行:爱我中华,爱我扬工院。

第二章 算法

单元测试_算法

1、下列叙述中正确的是( )。
A、所谓算法就是计算方法
B、程序可以作为算法的一种描述方法
C、算法设计只需考虑得到计算结果
D、算法设计可以忽略算法的运算时间

2、下列关于算法的描述中错误的是( )。
A、算法强调动态的执行过程,不同于静态的计算公式
B、算法必须能在有限个步骤之后终止
C、算法设计必须考虑算法的复杂度
D、算法的优劣取决于运行算法程序的环境

3、下列关于算法复杂度叙述正确的是( )。
A、最坏情况下的时间复杂度一定高于平均情况的时间复杂度
B、时间复杂度与所用的计算工具无关
C、对同一个问题,采用不同的算法,则它们的时间复杂度是相同的
D、时间复杂度与采用的算法描述语言有关

4、算法的有穷性是指( )。
A、算法程序的运行时间是有限的
B、算法程序所处理的数据量是有限的
C、算法程序的长度是有限的
D、算法只能被有限的用户使用

5、算法的空间复杂度是指( )。
A、算法在执行过程中所需要的计算机存储空间
B、算法所处理的数据量
C、算法程序中的语句或指令条数
D、算法在执行过程中所需要的临时工作单元数

6、下列叙述中正确的是( )。
A、一个算法的空间复杂度大,则其时间复杂度也必定大
B、一个算法的空间复杂度大,则其时间复杂度必定小
C、一个算法的时间复杂度大,则其空间复杂度必定小
D、算法的时间复杂度与空间复杂度没有直接关系

7、下列叙述中正确的是( )。
A、算法的效率只与问题的规模有关,而与数据的存储结构无关
B、算法的时间复杂度是指执行算法所需要的计算工作量
C、数据的逻辑结构与存储结构是一一对应的
D、算法的时间复杂度与空间复杂度一定相关

8、算法空间复杂度的度量方法是( )。
A、算法程序的长度
B、算法所处理的数据量
C、执行算法所需要的工作单元
D、执行算法所需要的存储空间

9、算法时间复杂度的度量方法是( )。
A、算法程序的长度
B、执行算法所需要的基本运算次数
C、执行算法所需要的所有运算次数
D、执行算法所需要的时间

单元作业_算法

1、找出现实生活中的一个解决某个问题场景(算法),用一种算法描述工具来对其进行描述。

第三章 顺序结构程序设计

3.常量和变量、变量的操作随堂测验

1、以下非法的字符常量是( )。
A、’\n’
B、’\101’
C、’\x21’
D、’\0’

2、以下选项中,合法的数值型常量是( )。
A、3.2
B、’X’
C、099
D、0xEH

3、以下选项中,合法的C语言实数是( )。
A、.1e0
B、E1
C、0.10E
D、2.1e0.2

4、以下选项中,合法的C语言常量是( )。
A、21.84
B、’CPP’
C、"\1.0
D、2MB

6.顺序结构习题随堂测验

1、设有定义:double x=2.12;,以下不能完整输出变量x值的语句是( )。
A、printf("x=%5.0f\n",x);
B、printf("x=%f\n",x);
C、printf("x=%lf\n",x);
D、printf("x=%0.5f\n",x);

2、设有定义:int a,b; float x,y; ,则以下选项中对语句所作的注释叙述错误的是( )。
A、scanf("%d%d",&a,&b,&x); /* 多余的输入项不能获得输入数据 */
B、scanf("%d%d%f",&a,&b); /* 多余的格式符%f完全不起作用 */
C、scanf("%d%f%d",&a,&b,&x); /* 输入项与格式符类型不匹配,变量b和x得不到正确的输入数据 */
D、scanf("Input:%d%d",&a,&b); /* 格式串中允许加入格式符以外的字符串 */

3、有以下程序 #include <stdio.h> main() { char a,b,c,d; scanf("%c%c",&a, &b); c=getchar(); d=getchar(); printf("%c%c%c%c\n",a,b,c,d); } 当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符) 12<CR> 34<CR> 则输出结果是( )。
A、1234
B、12
C、12 3
D、12 34

4、若变量已正确定义为int型,要通过语句 scanf("%d,%d,%d",&a,&b,&c); 给a赋值1、给b赋值2、给 c赋值3,以下输入形式中错误的是(注:□代表一个空格符)( )。
A、1,2,3<回车>
B、□□□1,2,3 <回车>
C、1,□□□2,□□□3<回车>
D、1□2□3<回车>

5、有以下程序 #include <stdio.h> main() { int a=1,b=0; printf("%d,",b=a+b); printf("%d\n",a=2*b); } 程序运行后的输出结果是( )。
A、3,2
B、1,0
C、1,2
D、0,0

6、设变量均已正确定义,若要通过 scanf("%d%c%d%c",&a1,&c1,&a2,&c2); 语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)( )。
A、10□X20□Y<回车>
B、10X<回车> 20Y<回车>
C、10□X<回车> 20□Y<回车>
D、10□X□20□Y<回车>

7、设有定义: int a; float b; 执行 scanf("%2d%f", &a, &b); 语句时,若从键盘输入 876 543.0<回车> 则a和b的值分别是 ( )。
A、76和543.0
B、876和543.0
C、87和543.0
D、87和6.0

8、有如下程序段: int x=12; double y=3.141593; printf("%d%8.6f", x, y); 其输出结果是 ( )。
A、12, 3.141593
B、12 3.141593
C、123.141593
D、123.1415930

9、若有定义: int a,b; 通过语句 scanf("%d;%d",&a,&b); 能把整数3赋给变量a,5赋给变量b的输入数据是( )。
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("%lf%lf%lf", &a,&b,&c);
B、scanf("%d%lf%lf", &a,&b,&c);
C、scanf("%d%f%f", &a,&b,&c);
D、scanf("%d%f%lf", &a,&b,&c);

单元测试_顺序结构

1、有以下程序 #include <stdio.h> main() { char a,b,c,d; scanf("%c%c",&a, &b); c=getchar(); d=getchar(); printf("%c%c%c%c\n",a,b,c,d); } 当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符) 12<CR> 34<CR> 则输出结果是( )。
A、1234
B、12
C、12 3
D、12 34

2、有以下程序 #include <stdio.h> main() { int a=1,b=0; printf("%d,",b=a+b); printf("%d\n",a=2*b); } 程序运行后的输出结果是( )。
A、3,2
B、1,0
C、1,2
D、0,0

3、有如下程序段: int x=12; double y=3.141593; printf("%d%8.6f", x, y); 其输出结果是 ( )。
A、12, 3.141593
B、12 3.141593
C、123.141593
D、123.1415930

4、有以下程序 #include <stdio.h> main() { int a=2, c=5; printf( "a=%%d,b=%%d\n", a,c ); } 程序的输出结果是 ( )。
A、a=2,b=5
B、a=%2,b=%5
C、a=%d,b=%d
D、a=%%d,b=%%d

5、有以下程序 #include <stdio.h> main() { int k=33; printf("%d,%o,%x\n", k, k, k); } 程序的运行结果是( )。
A、33,41,21
B、33,33,33
C、41,33,21
D、33,21,41

6、有以下程序 #include <stdio.h> main() { int k=-17; printf("%d,%o,%x\n", k, 1-k, 1-k); } 程序的运行结果是( )。
A、17,22,12
B、-17,12,22
C、-17,-22,-12
D、-17,22,12

7、有以下程序 #include <stdio.h> main() { int a=2, c=5; printf("a=%%d,b=%%d\n", a, c ); } 程序运行后的输出结果是( )。
A、a=%d,b=%d
B、a=%2,b=%5
C、a=%%d,b=%%d
D、a=2,b=5

8、以下叙述中正确的是( )。
A、由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
B、scanf和printf是C语言提供的输入和输出语句
C、由printf输出的数据都隐含左对齐
D、赋值语句是一种执行语句,必须放在函数的可执行部分

9、以下叙述中正确的是( )。
A、当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改
B、花括号对{ }只能用来表示函数的开头和结尾,不能用于其他目的
C、空语句就是指程序中的空行
D、复合语句在语法上包含多条语句,其中不能定义局部变量

10、以下叙述中正确的是( )。
A、在printf函数中,各个输出项只能是变量
B、在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C、在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
D、使用printf函数无法输出百分号%

顺序结构单元作业

1、输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。

第四章 选择结构程序设计

13.选择结构习题随堂测验

1、若有定义int x,y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是( )。
A、(x-y==0)
B、(x-y<0)
C、(x-y>0)
D、(x-y<0||x-y>0)

2、有以下程序 #include <stdio.h> main() { char a=′H′; a = ( a>=′A′ && a<=′Z′ ) ? (a+32) : a; printf("%c\n", a ); } 程序运行后的输出结果是( )。
A、h
B、H
C、A
D、a

3、有以下程序 #include <stdio.h> main() { int x=1, y=0; if (!x) y++; else if (x==0) if (x) y+=2; else y+=3; printf("%d\n", y); } 程序运行后的输出结果是( )。
A、0
B、2
C、1
D、3

4、若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是( )。
A、switch(a+b) { case 1: printf("*\n"); case c: printf("**\n"); }
B、switch((int)x); { case 1: printf("*\n"); case 2: printf("**\n"); }
C、switch(x) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); }
D、switch(a+b) { case 1: printf("*\n");  case 2+1: printf("**\n"); }

5、若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是( )。
A、ch=getchar()
B、a<>b+c
C、a==b+c
D、a++

选择结构单元测试

1、有以下程序段 #include <stdio.h> int a, b, c; a=10; b=50; c=30; if (a>b) a=b, b=c; c=a; printf("a=%d b=%d c=%d\n", a, b, c); 程序的输出结果是( )。
A、a=10 b=50 c=30
B、a=10 b=50 c=10
C、a=10 b=30 c=10
D、a=50 b=30 c=50

2、设有定义: int a=1,b=2,c=3; 以下语句中执行效果与其它三个不同的是( )。
A、if(a>b) { c=a;a=b;b=c;}
B、if(a>b) { c=a,a=b,b=c;}
C、if(a>b) c=a,a=b,b=c;
D、if(a>b) c=a;a=b;b=c;

3、if语句的基本形式是:if (表达式) 语句,以下关于"表达式"值的叙述中正确的是( )。
A、必须是正数
B、必须是整数值
C、可以是任意合法的数值
D、必须是逻辑值

4、有如下嵌套的if语句 if(a<b) if(a<c) k=a; else k=c; else if(b<c) k=b; else k=c; 以下选项中与上述if语句等价的语句是( )。
A、k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B、k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C、k=(a<b)?a:b;k=(b<c)?b:c;
D、k=(a<b)?a:b;k=(a<c)?a:c;

5、有以下程序 #include <stdio.h> main() { int x; scanf("%d", &x); if(x<=3) ; else if(x!=10) printf("%d\n", x); } 程序运行时,输入的值在哪个范围才会有输出结果( )。
A、大于3或等于10的整数
B、不等于10的整数
C、大于3且不等10的整数
D、小于3的整数

6、以下程序段中,与语句: k=a>b?(b>c ? 1 : 0) : 0; 功能相同的是( )。
A、if(a<=b) k=0; else if(b<=c) k=1;
B、if((a>b)||(b>c)) k=1; else k=0;
C、if((a>b) && (b>c)) k=1; else k=0;
D、if(a>b) k=1; else if(b>c) k=1; else k=0;

7、以下选项中与 if(a==1)a=b; else a++; 语句功能不同的switch语句是( )。
A、switch(a==1) { case 0:a=b;break; case 1:a++;}
B、switch(a) { case 1:a=b;break; default : a++;}
C、switch(a) { default:a++;break; case 1:a=b;}
D、switch(a==1) { case 1:a=b;break; case 0:a++;}

8、有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=0; if (a==1 && b++==2) if (b!=2||c--!=3) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); } 程序运行后的输出结果是( )。
A、3,2,1
B、1,3,2
C、1,2,3
D、1,3,3

9、下列条件语句中,输出结果与其他语句不同的是( )。
A、if ( a ) printf("%d\n", x); else printf("%d\n", y);
B、if ( a==0 ) printf("%d\n", y); else printf("%d\n", x);
C、if ( a!=0 ) printf("%d\n", x); else printf("%d\n", y);
D、if ( a==0 ) printf("%d\n", x); else printf("%d\n", y);

10、有以下程序 #include <stdio.h> main() { int x=1,y=2,z=3; if(x>y) if(y<z) printf("%d",++z); else printf("%d",++y); printf("%d\n", x++ ); } 程序的运行结果是( )。
A、41
B、1
C、2
D、331

11、若有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=4; if ((a=2) || (b=1)) c=2; if ((c==3) && (d=-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d); } 则程序的输出结果是( )。
A、2,1,2,-1
B、2,2,2,4
C、5,1,2,-1
D、1,2,3,4

12、若有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b==2) r+=2; else; if (c!=3) r+=3; else; if (d==4) r+=4; printf("%d\n", r); } 则程序的输出结果是( )。
A、6
B、10
C、7
D、3

13、若有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=4; if ((a=2) && (b=1)) c=2; if ((c==3) || (d=-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d); } 则程序的输出结果是( )。
A、2,1,2,-1
B、5,1,2,-1
C、2,2,2,4
D、1,2,3,4

14、若有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b==2) r+=2; if (c!=3); r+=3; if (d==4) r+=4; printf("%d\n", r); } 则程序的输出结果是( )。
A、7
B、10
C、6
D、3

15、有以下程序 #include <stdio.h> main() { int x=1, y=0,a=0,b=0; switch( x ) { case 1: switch ( y ) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; } printf("a=%d,b=%d\n",a,b ); } 程序运行后的输出结果是( )。
A、a=2,b=2
B、a=1,b=1
C、a=1,b=0
D、a=2,b=1

第五章 循环结构程序设计

18.循环结构习题随堂测验

1、以下程序段中的变量已正确定义 for( i=0; i<4; i++,i++ ) for( k=1; k<3; k++ ); printf("*" ); 该程序段的输出结果是( )。
A、试题及答案

**
B、****
C、**
D、*

2、以下叙述中错误的是( )。
A、结构化程序设计提倡模块化的设计方法
B、结构化程序由顺序、分支、循环三种基本结构组成
C、C语言是一种结构化程序设计语言
D、使用三种基本结构构成的程序只能解决简单问题

3、以下关于结构化程序设计的叙述中正确的是( )。
A、一个结构化程序必须同时由顺序、分支、循环三种结构组成
B、结构化程序使用goto语句会很便捷
C、在C语言中,程序的模块化是利用函数实现的
D、由三种基本结构构成的程序只能解决小规模的问题

4、关于"while(条件表达式)循环体",以下叙述正确的是( )。
A、循环体的执行次数总是比条件表达式的执行次数多一次
B、条件表达式的执行次数总是比循环体的执行次数多一次
C、条件表达式的执行次数与循环体的执行次数一样
D、条件表达式的执行次数与循环体的执行次数无关

5、关于 do 循环体 while (条件表达式); 以下叙述中正确的是( )。
A、条件表达式的执行次数总是比循环体的执行次数多一次
B、循环体的执行次数总是比条件表达式的执行次数多一次
C、条件表达式的执行次数与循环体的执行次数一样
D、条件表达式的执行次数与循环体的执行次数无关

6、有以下程序 #include <stdio.h> main() { int y=9; for( ; y>0; y--) if(y%3==0) printf("%d", --y); } 程序的运行结果是( )。
A、875421
B、963
C、741
D、852

7、有以下程序 #include <stdio.h> main() { int i,j,m=1; for(i=1;i<3;i++) { for(j=3;j>0;j-- ) { if(i*j>3) break; m*=i*j; } } printf("m=%d\n",m); } 程序运行后的输出结果是( )。
A、m=6
B、m=2
C、m=4
D、m=5

8、以下不构成无限循环的语句或语句组是( )。
A、n=10; while (n); { n--;}
B、n=0; while (1) { n++;}
C、n=0; do { ++n;} while (n<=0);
D、for(n=0,i=1; ; i++) n+=i;

9、有以下程序 #include <stdio.h> main() { int c=0,k; for (k=1;k<3;k++) switch (k) { default: c+=k; case 2: c++;break; case 4: c+=2;break; } printf("%d\n",c); } 程序运行后的输出结果是( )。
A、3
B、5
C、7
D、9

10、有以下程序 #include <stdio.h> main() { int i,j; for(i=1; i<4; i++) { for(j=i; j<4; j++) printf("%d*%d=%d ",i,j,i*j); printf("\n"); } } 程序运行后的输出结果是( )。
A、1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3
B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
C、1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9
D、1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9

19.循环习题讲解随堂测验

1、有以下程序 #include <stdio.h> main() { int k=5; while(--k) printf("%d",k -= 3); printf("\n"); } 执行后的输出结果是( )。
A、死循环
B、2
C、4
D、1

2、有以下程序 #include <stdio.h> main() { int i,j; for(i=3; i>=1; i--) { for(j=1; j<=2; j++) printf("%d ",i+j); printf("\n"); } } 程序的运行结果是( )。
A、2 3 3 4 4 5
B、4 3 2 5 4 3
C、4 5 3 4 2 3
D、2 3 3 4 2 3

3、有以下程序 #include <stdio.h> main() { int k=5,n=0; do { switch(k) { case 1: case 3: n+=1; k--; break; default: n=0; k--; case 2: case 4: n+=2; k--; break; } printf("%d",n); }while(k>0 && n<5); } 程序运行后的输出结果是( )。
A、02356
B、0235
C、235
D、2356

4、有以下程序 #include <stdio.h> main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是( )。
A、y=0
B、y=-1
C、y=1
D、while构成无限循环

5、有以下程序 #include <stdio.h> main() { int i; for(i=1; i<=40; i++) { if(i++%5==0) if(++i%8==0) printf("%d ",i); } printf("\n"); } 执行后的输出结果是( )。
A、5
B、24
C、32
D、40

循环结构单元测试

1、以下叙述中正确的是( )。
A、程序的算法只能使用流程图来描述
B、结构化程序的三种基本结构是循环结构、选择结构、顺序结构
C、N-S流程图只能描述简单的顺序结构的程序
D、计算机可以直接处理C语言程序,不必进行任何转换

2、以下叙述中正确的是( )。
A、结构化程序必须包含所有的三种基本结构,缺一不可
B、在C语言程序设计中,所有函数必须保存在一个源文件中
C、只要包含了三种基本结构的算法就是结构化程序
D、在算法设计时,可以把复杂任务分解成一些简单的子任务

3、设有以下代码 do { while (条件表达式1) 循环体A; } while (条件表达式2); while (条件表达式1) { do { 循环体B; } while (条件表达式2); } 其中,循环体A与循环体B相同,以下叙述正确的是( ).
A、循环体A比循环体B的执行次数少一次
B、循环体A比循环体B的执行次数多一次
C、循环体A与循环体B的执行次数相同
D、循环体A与循环体B的执行次数不确定

4、有以下程序 #include <stdio.h> main() { int a=1, b=2; for( ;a<8;a++) { b+=a; a+=2;} printf("%d,%d\n",a,b); } 程序运行后的输出结果是( )。
A、7,11
B、8,11
C、10,14
D、9,18

5、有以下程序 #include <stdio.h> main() { int i,j, m=55; for(i=1;i<=3;i++) for(j=3; j<=i; j++) m=m%j; printf("%d\n ", m); } 程序的运行结果是( )。
A、3
B、0
C、2
D、1

6、若变量已正确定义,有以下程序段 i=0; do printf("%d,",i); while( i++ ); printf("%d\n",i); 其输出结果是( )。
A、程序进入无限循环
B、0,0
C、1,1
D、0,1

7、有以下程序段 int i, n; for( i=0; i<8; i++ ) { n = rand( ) % 5; switch (n) { case 1: case 3: printf("%d \n", n); break; case 2: case 4: printf("%d \n", n); continue; case 0: exit(0); } printf("%d \n",n); } 以下关于程序段执行情况的叙述,正确的是( )。
A、当产生的随机数n为4时结束循环操作
B、当产生的随机数n为0时结束程序运行
C、当产生的随机数n为1和2时不做任何操作
D、for循环语句固定执行8次

8、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是( )。
A、while((ch=getchar())!=′N′) printf("%c ",ch);
B、while(ch=getchar() =′N′) printf("%c ",ch);
C、while(ch=getchar()==′N′) printf("%c ",ch);
D、while((ch=getchar())==′N′) printf("%c ",ch);

9、若有以下程序 #include <stdio.h> main() { int s=0, n; for (n=0; n<4; n++) { switch(n) { default: s+=4; case 1: s+=1; case 2: s+=2; case 3: s+=3; } } printf("%d\n", s); } 则程序的输出结果是( )。
A、24
B、18
C、10
D、6

10、若有以下程序 #include <stdio.h> main() { int a=-2, b=0; while(a++) ++b ; printf("%d,%d\n", a, b); } 则程序的输出结果是( )。
A、2,3
B、0,2
C、1,3
D、1,2

第六章 函数

23.函数习题课随堂测验

1、以下叙述中正确的是( )。
A、函数调用时,不必区分函数名称的大小写
B、调用函数时,函数名必须与被调用的函数名完全一致
C、函数名允许用数字开头
D、在函数体中只能出现一次return语句

2、有以下程序 #include <stdio.h> int f( int x ); main() { int a, b=0; for ( a=0; a<3; a+=1 ) { b += f(a); putchar(′A′+b); } } int f( int x ) { return x*x+1; } 程序运行后输出结果是( )。
A、ABE
B、BCD
C、BDI
D、BCF

3、有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N]) { int b[N][N],i,j; for(i=0; i<N; i++) for(j=0; j<N; j++) b[i][j] = a[N-1-j][i]; for(i=0; i<N; i++) for(j=0; j<N; j++) a[i][j] = b[i][j]; } main() { int x[N][N]={ { 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9,10,11,12}, { 13,14,15,16}}, i; fun(x); for (i=0;i<N; i++) printf("%d,", x[i][i]); printf("\n"); } 程序的运行结果是( )。
A、4,7,10,13,
B、1,6,11,16,
C、13,10,7,4,
D、1,5,9,13,

函数单元测试

1、有以下程序 #include <stdio.h> void fun(int a[ ], int n) { int i,j=0,k=n-1, b[10]; for (i=0; i<n/2; i++) { b[i] =a[j]; b[k]=a[j+1]; j+=2; k--; } for (i=0; i<n; i++) a[i] = b[i]; } main() { int c[10]={ 10,9,8,7,6,5,4,3,2,1},i; fun(c, 10); for (i=0;i<10; i++) printf("%d,", c[i]); printf("\n"); } 程序的运行结果是( )。
A、10,8,6,4,2,1,3,5,7,9,
B、10,9,8,7,6,5,4,3,2,1,
C、1,2,3,4,5,6,7,8,9,10,
D、1,3,5,7,9,10,8,6,4,2,

2、以下关于C语言函数参数传递方式的叙述正确的是( )。
A、数据可以在实参和形参之间双向传递
B、数据只能从实参单向传递给形参
C、数据只能从形参单向传递给实参
D、C语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用

3、下列叙述中正确的是( )。
A、每个C程序文件中都必须要有一个main函数
B、在C程序中main函数的位置是固定的
C、C程序中所有函数之间都可以相互调用
D、在C程序的函数中不能定义另一个函数

4、以下叙述正确的是( )。
A、C语言函数不可以单独编译
B、C语言程序是由过程和函数组成的
C、C语言函数可以嵌套调用,例如:fun(fun(x))
D、C语言中除了main函数,其他函数不可作为单独文件形式存在

5、有以下程序 #include <stdio.h> int m1(int x,int y) { return x<=y ? x :y; } int m2(int x,int y) { return x<=y ? y :x; } int fun(int a,int b) { return a+b; } main() { int x=2,y=3,z=1; printf("%d\n", fun(m1(x,y),m2(y,z))); } 程序的运行结果是 ( )。
A、5
B、6
C、4
D、3

6、有以下程序 #include <stdio.h> int f(int x); main() { int n=1,m; m=f(f(f(n))); printf("%d\n",m); } int f(int x) { return x*2; } 程序运行后的输出结果是( )。
A、4
B、2
C、8
D、1

7、有以下程序 #include <stdio.h> void fun( int a[], int n) { int i, t; for(i=0; i<n/2; i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } } main() { int k[10]={ 1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2; i<8; i++) printf("%d",k[i]); printf("\n"); } 程序的运行结果是( )。
A、345678
B、876543
C、1098765
D、321678

8、有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N], int b[]) { int i; for (i=0; i<N; i++) b[i] = a[i][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; fun (x, y); for (i=0; i<N; i++) printf("%d,", y[i]); printf("\n"); } 程序运行后的输出结果是( )。
A、-3,-1,1,3,
B、-12,-3,0,0,
C、0,1,2,3,
D、-3,-3,-3,-3,

第七章 数组

28.数组习题课随堂测验

1、以下叙述中正确的是( )。
A、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
B、一条语句只能定义一个数组
C、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
D、在引用数组元素时,下标表达式可以使用浮点数

2、以下叙述中正确的是( )。
A、char c1, c2, *c3, c4[40];是合法的变量定义语句
B、数组下标的下限由数组中第一个非零元素的位置决定
C、数组下标的下限由数组中第一个被赋值元素的位置决定
D、数组下标的下限是1

3、以下叙述中正确的是( )。
A、语句 char a[2] = { "A", "B"}; 是合法的,定义了一个包含两个字符的数组
B、语句 int a[] = ;是不合法的,遗漏了数组的大小
C、语句int a[8] = ; 是合法的
D、语句 char a[3]; a = "AB"; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符

4、以下叙述中正确的是( )。
A、语句 int a[][3] = { 1,2,4,5}; 是错误的初始化形式
B、语句 int a[4][3] = { 1,2,4,5}; 是错误的初始化形式
C、在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵
D、语句 int a[4][3] = { { 1,2}, { 4,5}}; 是错误的初始化形式

5、有以下程序 #include <stdio.h> main() { int i, x[3][3] = { 1,2,3,4,5,6,7,8,9 }; for( i=0; i<3; i++ ) printf( "%d ", x[i][2-i] ); printf( "\n" ); } 程序的输出结果是 ( )。
A、1 5 0
B、3 5 7
C、1 4 7
D、3 6 9

6、以下数组定义中错误的是( )。
A、int x[2][3]={ 1,2,3,4,5,6};
B、int x[][3]=;
C、int x[][3]={ { 1,2,3},{ 4,5,6}};
D、int x[2][3]={ { 1,2},{ 3,4},{ 5,6}};

7、下列定义数组的语句中,正确的是( )。
A、int x[];
B、int N=10; int x[N];
C、int x[0..10];
D、#define N 10 int x[N];

数组单元测试

1、设有定义: int x[2][3]; 则以下关于二维数组x的叙述错误的是( )。
A、可以用x[0]=0;的形式为数组所有元素赋初值0
B、数组x可以看作是由x[0]和x[1]两个元素组成的一维数组
C、元素x[0]可看作是由3个整型元素组成的一维数组
D、x[0]和x[1]是数组名,分别代表一个地址常量

2、以下选项中叙述正确的是( )。
A、只要程序包含了三种基本结构中的任意一种,就是结构化程序
B、使用三种基本结构就可以实现任何复杂算法
C、程序语法错误要在运行时才能发现
D、C语言程序不需要包含main()函数

3、以下定义数组的语句中错误的是( )。
A、int num[]={ 1,2,3,4,5,6 };
B、int num[][3]={ { 1,2},3,4,5,6 };
C、int num[2][4]={ { 1,2},{ 3,4},{ 5,6} };
D、int num[][4]={ 1,2,3,4,5,6};

4、有以下程序 #include <stdio.h> main() { int x[3][2]=, i; for(i=0; i<3; i++) scanf("%d",x[i]); printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]); } 若运行时输入:2 4 6<回车>,则输出结果为( ).
A、2 0 0
B、2 0 4
C、2 4 0
D、2 4 6

5、下列选项中,能正确定义数组的语句是( )。
A、int N=2008; int num[N];
B、int num[];
C、#define N 2008 int num[N];
D、int num[0..2008];

6、有以下程序 #include <stdio.h> main() { int a[4][4]={ { 1,4,3,2}, { 8,6,5,7}, { 3,7,2,5}, { 4,8,6,1}}; int i, j, k, t; for (i=0; i<4; i++) for (j=0; j<3; j++) for (k=j+1; k<4; k++) if (a[j][i] > a[k][i]) { t=a[j][i]; a[j][i] = a[k][i]; a[k][i] = t; } /* 按列排序 */ for (i=0; i<4; i++) printf("%d, ",a[i][i]); } 程序运行后的输出结果是( )
A、8, 7, 3, 1,
B、1, 6, 5, 7,
C、4, 7, 5, 2,
D、1, 6, 2, 1,

7、有以下程序 #include <stdio.h> main() { int i, t[][3]={ 9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf("%d ",t[2-i][i]); } 程序执行后的输出结果是 ( )。
A、3 6 9
B、7 5 3
C、3 5 7
D、7 5 1

8、有以下程序 #include <stdio.h> main() { int s[12]={ 1,2,3,4,4,3,2,1,1,1,2,3},c[5]=,i; for(i=0; i<12; i++) c[s[i]]++; for(i=1; i<5; i++) printf("%d ",c[i]); printf("\n"); } 程序的运行结果是 ( )。
A、2 3 4 4
B、4 3 3 2
C、1 2 3 4
D、1 1 2 3

9、设有如下程序段 int a[8] = ; int b[] = ; char c[2] = { "A", "B"}; char d = "AB"; 以下叙述正确的是( )。
A、a,b,c,d的定义都是合法的
B、只有a, b的定义是合法的
C、只有a,b,c的定义是合法的
D、只有c的定义是合法的

10、若有定义语句:int m[ ][3]={ 1,2,3,4,5,6,7};,则与该语句等价的是 ( )。
A、int m[ ][3]={ { 1,2,3},{ 4,5},{ 6,7}};
B、int m[ ][3]={ { 1,2},{ 3, 4},{ 5, 6,7}};
C、int m[ ][3]={ { 1,2,3},{ 4,5,6},{ 7}};
D、int m[ ][3]={ { 1},{ 2,3,4},{ 5,6,7}};

学习通程序设计基础_14:文件操作

在程序设计中,文件操作是非常常见的操作之一。本篇文章将介绍文件操作的基本功能以及如何在程序中进行文件读写。

文件操作基础

文件操作是指对计算机中的文件进行读取、写入、删除等操作。在程序中,一般需要通过文件操作来进行数据的存储和获取。

在进行文件操作前,首先需要打开文件。文件打开后,可以进行读取、写入等操作。文件操作完成后,需要关闭文件以释放资源。

文件操作的基本流程如下:

  1. 打开文件
  2. 进行文件操作(读取、写入等)
  3. 关闭文件

文件打开

在程序中,可以通过函数来打开文件。常见的文件打开函数有以下几种:

  1. fopen():打开文件并返回文件指针。如果文件不存在,则创建一个新文件。
  2. freopen():将一个文件指针指定给另外一个文件,可用于重定向输入输出。
  3. open():打开文件并返回文件描述符(类似文件指针)。通常用于系统级别编程。

fopen()函数的语法如下:

    FILE *fopen(const char *filename, const char *mode);

其中,filename是文件路径,mode表示打开模式。常见的打开模式有:

  1. r:只读模式,打开文件并从文件头开始读取。
  2. w:只写模式,打开文件并从文件头开始写入。如果文件存在,则清空文件内容。
  3. a:追加模式,打开文件并定位到文件末尾,如果文件不存在,则创建一个新文件。

文件打开成功后,会返回一个文件指针,该指针用于后续的文件读写操作。

文件读取

文件读取是指从文件中读取数据到程序中。在进行文件读取前,需要先打开文件,然后通过文件指针进行读取操作。

常见的文件读取函数有以下几种:

  1. fscanf():从文件中读取数据并格式化输出。
  2. fgets():从文件中读取一行数据。
  3. fread():从文件中读取指定字节数的数据。

fscanf()函数的语法如下:

    int fscanf(FILE *stream, const char *format, ...);

fscanf()函数根据指定的格式从文件中读取数据并存储到变量中。例如,可以从文件中读取一个整数:

    int num;
    fscanf(fp, \d\ &num);

上述代码中,fp是文件指针,%d表示读取的数据类型为整数,&num表示将读取到的数据存储到num中。

fgets()函数用于从文件中读取一行数据,语法如下:

    char *fgets(char *s, int size, FILE *stream);

fgets()函数接收三个参数,s表示存储读取到的数据的字符数组,size表示要读取的最大字符数,stream表示文件指针。例如,可以从文件中读取一行字符串:

    char buffer[1024];
    fgets(buffer, 1024, fp);

fread()函数用于从文件中读取指定字节数的数据,语法如下:

    size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

fread()函数接收四个参数,ptr表示存储读取到的数据的指针,size表示每个数据块的大小,count表示要读取的数据块数量,stream表示文件指针。例如,可以从文件中读取一个整型数组:

    int nums[10];
    fread(nums, sizeof(int), 10, fp);

文件写入

文件写入是指将程序中的数据写入到文件中。在进行文件写入前,需要先打开文件,然后通过文件指针进行写入操作。

常见的文件写入函数有以下几种:

  1. fprintf():将数据格式化输出到文件中。
  2. fputs():将字符串写入文件中。
  3. fwrite():将指定字节数的数据写入到文件中。

fprintf()函数的语法如下:

    int fprintf(FILE *stream, const char *format, ...);

fprintf()函数根据指定的格式将数据写入到文件中。例如,可以将一个整数写入到文件中:

    int num = 123;
    fprintf(fp, \d\ num);

fputs()函数用于将字符串写入文件中,语法如下:

    int fputs(const char *s, FILE *stream);

fputs()函数接收两个参数,s表示要写入的字符串,stream表示文件指针。例如,可以将一行字符串写入到文件中:

    char *str = \Hello, World!\
    fputs(str, fp);

fwrite()函数用于将指定字节数的数据写入到文件中,语法如下:

    size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

fwrite()函数接收四个参数,ptr表示要写入的数据的指针,size表示每个数据块的大小,count表示要写入的数据块数量,stream表示文件指针。例如,可以将一个整型数组写入到文件中:

    int nums[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    fwrite(nums, sizeof(int), 10, fp);

文件关闭

在进行文件读写操作后,需要关闭文件以释放资源。关闭文件可以使用fclose()函数。

fclose()函数的语法如下:

    int fclose(FILE *stream);

fclose()函数接收一个文件指针作为参数,用于关闭指定的文件。例如:

    fclose(fp);

文件操作实例

下面是一个简单的文件读写程序,用于将一个整数数组写入到文件中,并从文件中读取数据到另外一个整数数组中:

    #include <stdio.h>

    int main()
    {
        int nums1[5] = { 1, 2, 3, 4, 5};
        int nums2[5];

        FILE *fp = fopen(\nums.txt\ \w\
        if (fp == NULL)
        {
            printf(\文件打开失败!\
            return 0;
        }

        fwrite(nums1, sizeof(int), 5, fp);
        fclose(fp);

        fp = fopen(\nums.txt\ \r\
        if (fp == NULL)
        {
            printf(\文件打开失败!\
            return 0;
        }

        fread(nums2, sizeof(int), 5, fp);
        fclose(fp);

        int i;
        for (i = 0; i < 5; i++)
        {
            printf(\d \ nums2[i]);
        }

        return 0;
    }

上述程序将一个整数数组写入到文件中,并从文件中读取数据到另外一个整数数组中,最后输出读取到的数据。

总结

文件操作是程序设计中不可避免的一部分。在进行文件操作时,需要注意文件的打开、读取、写入和关闭,以保证程序的正确性和效率。

文章版权及转载声明

本文地址:http://www.zzxhsh.org/4d799900.html发布于 2024-05-19 09:09:49
文章转载或复制请以超链接形式并注明出处五煦查题

评论列表 (暂无评论,44人围观)参与讨论