程序设计基础教材1-5章答案
- 格式:doc
- 大小:68.00 KB
- 文档页数:26
c语言《程序设计基础》课后习题参考答案与解析1. 习题一:编写一个C程序,输出“Hello World!”。
解析:这是一个非常简单的C程序,只需要使用printf函数输出所需的字符串即可。
```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 习题二:编写一个C程序,计算两个整数的和并输出结果。
解析:这个程序需要使用scanf函数从用户输入中读取两个整数,并使用printf函数输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```3. 习题三:编写一个C程序,判断一个数是奇数还是偶数并输出结果。
解析:这个程序需要使用scanf函数读取用户输入的整数,并使用if-else语句判断该数的奇偶性,然后使用printf函数输出结果。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数");} else {printf("该数是奇数");}return 0;}```4. 习题四:编写一个C程序,判断一个年份是否为闰年并输出结果。
第1章C语言概述一、简答题1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。
2.顺序结构,分支结构,循环结构3.所谓算法就是为解决一个问题而采取的方法和步骤。
算法的特性:有穷性、确定性、输入、输出、可行性。
表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。
二、算法1.瓶子A里盛有醋瓶子B里盛有酱油有一个空瓶C将A中的醋倒入C将B中的酱油倒入A将C中的醋倒入B2.输入一个数放在a中max = a以下步骤重复9次:输入一个数放在a中如果a>max,max=a打印max的值3.如果a<btemp=aa=bb=temp如果c>atemp = aa=cc=temp否则如果c>btemp=bb=cc=temp打印a,b,c的值4.i=1sum=0以下程序循环100遍:sum=sum+ii=i+1打印sum 的值5.如果(n 除以3的余数为0 并且 n 除以5的余数为0)n 能够同时被3和5整除否则 n 不能够同时被3和5整除 6.i=101以下语句循环50遍: j=2 flag=1 当j<(i 除以2的整数部分)时循环以下语句: 如果i 除以j 的余数为零 flag=0 退出该循环 如果flag==1 打印i 的值 i=i+2 7.如果m<n temp=m m=n n=temp i=n做以下循环,直到m,n 能够被i 整除:如果m 能够被i 整除并且n 能够被i 整除 i 即是m 和n 的最大公约数 跳出循环 否则 i=i-1 打印i 的值8.data=b*b —4*a*c 如果data >0否则 如果data=0 x1=x2=—b/2 否则 无实数解 三、编程题 1.main () { printf (“##############################\n ”); printf (“ How do you do ? \n”); printf(“##############################\n”); }a datab x 2)(1+-=adata b x 2)(2--=2.main(){int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“sum=%d”,a+b+c);}第二章数据类型与表达式一、单项选择题1. B2. C3. A4. A5. D6. B7.A8.C9.D二、写出下列程序的运行结果1.aabb cc abcAN2.ab97983. 9,11,9,104.a=2,b=3,c=25.s1=2.500000s2=3三、编程题main(){char c1='c',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);}第三章顺序程序设计选择题1)B 2)D 3)D 4)A 5)A 6)B 7)B 8)A 9)D 10)C 11)D 12)A填空题1)b 2)261 3)25 21 37 4)abc 5)5.0,4,c=3 6)3编程题#define PI 3.1415926main( ){float h, r, l, sv, sz ;printf(“请输入圆的半径r,圆柱高h:\n”) ;scanf(“%f,%f”,&r, &h) ;l=2* PI *r ;s= PI *r*r ;sv=3.0/4.0* PI *r*r*r ;sz= PI *r*r*h ;printf(“圆周长为:l=%6.2f, 圆面积为:s=%6.2f\n”, l, s) ;printf(“求体积为:sv=%6.2f, 圆柱体积为:sz=%6.2f\n”, sv, sz) ;}2、main( ){float c, f ;printf(“请输入一个华氏温度:\n”) ;scanf(“%f”, &f) ;c=5.0/9.0*(f-32) ;printf(“摄氏温度为:%6.2f\n”, c) ;}第四章循环程序设计一、选择题1.D2.D3.D4.C5.D6.A7.B8.B9.A 10.D.11.B 12.A 13.B 14.C 15.C 16.A 17.A 18.B 19.D 20.D21.A二、填空题1.5858582.03.184.89215.20,06.67.1,3,28.Year%400==0year%100!=0count++三、编程题1.main(){long a;scanf(“%ld”,&a);if (a>=10000&&a<=99999) printf(“这是个五位数”);else if (a>=1000&&a<=9999) printf(“这是个四位数”);else if (a>=100&&a<=999) printf(“这是个三位数”);else if (a>=10&&a<=99) printf(“这是个二位数”);else if (a>=0&&a<=9)printf(“这是个一位数”);elseprintf(“输入错误”);}3.main(){int a;int g,s,b;//个位、十位、百位printf("水仙花数有:\n");for(a=100;i<=999;a++){g=a%10;s=a/10%10;b=a/100;if (a==g*g*g+s*s*s+b*b*b) printf("%d ",a);}printf("\n");}4、main(){int i,n;printf("input n:");scanf("%d",&n);printf("\n%d=",n);for(i=2;i<=n;i++){while(i!=n)if(n%i==0){printf("%d*",i);n/=i;}else break;}printf("%d\n",n);}5、#include “stdio.h”main(){char c;int w,x,y,z;w=x=y=z=0;while((c=getchar())!=’\n’){if((c>’a’&&c<’z’)||(c>’A’&&c<’Z’))w++;else if (c==’’)x++;else if (c>’0’&&c<’9’)y++;else z++;}printf(“英文字母个数:%d\n”,w);printf(“空格个数:%d\n”,x);printf(“数字个数:%d\n”,y);printf(“其他字母个数:%d\n”,z);}6、main(){float h=100,t=100;int j;for(j=1;j<10;j++){t=t/2;h=h+t*2;}printf(“共经过:%f 米\n”,h);printf(“第十次反弹%f 米\n”,t/2);}第五章数组一、单项选择题1. B2. A3. C4. C5. D6. B7.C8.B9.C 10. B二、写出下列程序的运行结果1.S=3682.*************************3.S1=18S2=104.!margorP5.数字0的出现次数是:3数字1的出现次数是:2数字2的出现次数是:2数字3的出现次数是:2数字4的出现次数是:0数字5的出现次数是:1数字6的出现次数是:1数字7的出现次数是:1数字8的出现次数是:1数字9的出现次数是:1三、编程题1.#include "stdio.h"main(){int a[11];int i,j,t;printf("input 10 number:\n");for (i=1;i<11;i++)scanf("%d",&a[i]);printf("\n");for (i=1;i<=9;i++)for (j=1;j<=10-i;j++)if (a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("the sorted number is:\n");for (i=1;i<11;i++)printf("%4d",a[i]);}2.#include "stdio.h"main(){int a[11],i,b;printf("imput 10 sorted number:\n");for (i=0;i<10;i++)scanf("%d",&a[i]);printf("input an integer:\n");scanf("%d",&b);for (i=9;i>=0&&a[i]>b;i--)a[i+1]=a[i];a[i+1]=b;printf("sorted numbers:\n");for (i=0;i<11;i++)printf("%5d",a[i]);}3.#include "stdio.h"main(){int a[5],i,j,t;printf("input 5 integer:\n");for (i=0;i<5;i++) /*输入5个整数*/scanf("%d",&a[i]);for (i=0,j=4;i<j;i++,j--) /*逆序存放*/{t=a[i];a[i]=a[j];a[j]=t;}for (i=0;i<5;i++) /*逆序存放后重新输出*/printf("%5d",a[i]);}4.#include "stdio.h"main(){int i,j,a[10][10]={{1},{1,1}};for (i=2;i<10;i++) /*给二维数组每个元素赋值*/ {a[i][0]=1;for (j=1;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for (i=0;i<10;i++) /*输出二维数组*/{for (j=0;j<=i;j++)printf("%-5d",a[i][j]);printf("\n");}}5.#include "stdio.h"{int a[3][4],i,j,max,row,col;printf("input 3*4 matrix:\n");for (i=0;i<3;i++) /*输入3*4矩阵*/for (j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0]; row=0; col=0;for (i=0;i<3;i++) /*寻找矩阵中的最大值及其行列号*/ for (j=0;j<4;j++)if (max<a[i][j]){max=a[i][j]; row=i, col=j;}printf("\n数组中最大的数是%d,其行号是%d,列号是%d\n",max,row,col);}6.#define N 3#define M 4#include "stdio.h"main(){int a[N][M],i,j,k,max,row,col;printf("input %d*%d matrix: \n",N,M);for (i=0;i<N;i++) /*输入二维矩阵*/for (j=0;j<M;j++)scanf("%d",&a[i][j]);for (i=0;i<N;i++) /*求鞍点*/{max=a[i][0]; row=i; col=0;for(j=1;j<M;j++) /*求矩阵中每一行的最大值及其所行列号*/ if (max<a[i][j]){max=a[i][j]; col=j;}for (k=0;k<N;k++) /*判断每一行的最大值在其所在列是否最大*/ if (a[k][col]<max)break;if (k==N) /*得到鞍点*/{printf("the point is %d,row=%d,col=%d\n",max,row,col);break;}}if (i==N) /*没有鞍点*/printf("no point\n");}7.#include "stdio.h"main(){int num=0,word=0;/*word=0表示未出现单词,如出现单词就置word为1.num用来统计单词个数*/printf("please input a string :\n");while ((c=getchar())!='\n')if (c==' ')word=0;else if (word==0){word=1; num++;}printf("There are %d words in the line\n",num);}8.#include "stdio.h"main(){int i,j,uppn,lown,dign,span,othn;/*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/char text[3][80];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')uppn++;else if(text[i][j]>='a'&&text[i][j]<='z')lown++;else if(text[i][j]>='0'&&text[i][j]<='9')dign++;else if(text[i][j]==' ')span++;elseothn++;}}for(i=0;i<3;i++)printf("%s\n",text[i]);printf("uppn=%d\n",uppn);printf("lown=%d\n",lown);printf("dign=%d\n",dign);printf("span=%d\n",span);printf("othn=%d\n",othn);}9.#include "stdio.h"main(){int i,j;char str1[20],str2[20];printf("input two strings:\n");gets(str1);gets(str2);j=strlen(str1); /*求字符串1的长度*/for (i=0;str2[i]!='\0';i++,j++) /*字符串合并*/str1[j]=str2[i];str1[j]='\0'; /*加上字符串结束标志*/puts(str1);}10.#include "stdio.h"main(){int i,n;char str1[20],str2[20];printf("input two strings:(no more than 20 characters)\n");gets(str1); gets(str2);n=strlen(str1)<strlen(str2)?strlen(str1):strlen(str2); /*n中存放较短字符串的长度*/ for (i=0;i<n&&str1[i]==str2[i];i++);printf("%d\n",str1[i]-str2[i]);}11。
Python程序设计基础习题答案与分析程昱第1章基础知识1.1 简单说明如何选择正确的Python版本。
答:在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。
这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。
同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。
尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。
1.2 为什么说Python采用的是基于值的内存管理模式?Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。
>>> x = 3>>> id(x)10417624>>> y = 3>>> id(y)10417624>>> y = 5>>> id(y)10417600>>> id(x)10417624>>> x = [1, 2, 3, 1, 1, 2]>>> id(x[0])==id(x[3])==id(x[4])True1.3 解释Python中的运算符“/”和“//”的区别。
答:在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。
课后题答案第一章程序设计基本概念习题分析与解答1.1 【参考答案】.EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=10, a2=10;或float a1=1, a2=1;(系统将自动把1转换为10)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]0或12.25 【参考答案】[1]8 [2]127 [3]-128 [4]111111112.26 【参考答案】[1]32767 [2]-32768 [3]11111111111111112.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。
(2) include程序行中后面的stdio.h是一个文件名,按规定,文件名应当放在一对双引号(″″)内,或放在一对尖括号(< >)内。
c语言程序设计基础教程课后答案C语言程序设计基础教程课后答案第一章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
- 它支持多种编程范式,如过程式编程、结构化编程、面向对象编程等。
- C语言具有较低的抽象级别,接近硬件,因此执行效率较高。
2. C语言的发展历史。
- C语言在1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
- 它最初是作为UNIX操作系统的系统编程语言而设计的。
第二章:C语言环境和基本语法1. 如何设置C语言的开发环境?- 选择一个C语言编译器,如GCC、MSVC等。
- 安装编译器并配置环境变量,以便在命令行中直接调用编译器。
2. C语言的基本语法结构是什么?- C语言的基本结构包括预处理指令、函数定义、变量声明和语句。
第三章:数据类型、运算符和表达式1. C语言中的基本数据类型有哪些?- 整型(int)、字符型(char)、浮点型(float和double)等。
2. 运算符的分类及其用法。
- 算术运算符:+、-、*、/、%等。
- 赋值运算符:=、+=、-=等。
- 比较运算符:==、!=、>、<等。
- 逻辑运算符:&&、||、!等。
第四章:控制语句1. 条件语句的用法。
- if语句用于基于条件执行代码块。
- switch语句用于多条件选择。
2. 循环语句的用法。
- while循环用于在满足条件时重复执行代码块。
- for循环用于已知迭代次数的循环。
- do-while循环先执行代码块再判断条件。
第五章:数组和字符串1. 数组的基本概念和使用。
- 数组是相同数据类型的元素集合,存储在连续的内存位置。
- 声明数组:int arr[10]; 表示一个包含10个整数的数组。
2. 字符串的表示和操作。
- 在C语言中,字符串是以空字符('\0')结尾的字符数组。
- 使用标准库函数如strcpy、strlen等操作字符串。
《C#程序设计基础入门教程》习题答案第1章C#开发入门一、填空题1、.dll、.exe2、CLR3、编译、运行4、互操作性5、Console.WriteLine()二、选择题1、C2、B3、C4、A5、D三、问答题1、它是一个全新的、集成的、面向对象的开发平台,它以公共语言运行时(Common Language Runtime,简写CLR)为基础,支持多种编程语言。
2、.NET平台是一个环境,而C#只是一门语言,并不是它的一部分。
C#语言编写的程序可以在.NET平台上运行。
四、编程题1、参考答案class Program{staticvoid Main(string[] args){Console.WriteLine("这是我的第一个C#程序!");Console.ReadKey();}}第2章C#编程基础(上)一、填空题1、class2、true和false3、54、值数据类型、引用数据类型5、1、46、& && | ||7、08、单行注释、多行注释、文档注释9、break10、1000二、判断题1、错2、错3、错4、对5、错三、选择题1、AD2、BCD3、C4、C5、C 6 、A7、AC8、AC9、BD10、A四、程序分析题1、编译不通过。
int值4和b相加时,由于变量b的类型为byte,取值范围没有int类型大,存不下int类型的值,因此编译不通过。
2、编译不通过。
这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y = x;语句时已经超过了y变量的作用域,所以编译无法通过。
3、编译不通过。
因为switch语句中的每个分支语句之间需要使用break关键字隔开,如果没有break语句就会报错。
4、打印结果为:987五、问答题1、标识符可以由任意顺序的大小写字母、数字、下划线(_)和@符号组成,但标识符不能以数字开头,且不能是C#中的关键字。
习题第一章程序与编程环境一、填空题1. 工程,Form_Load2. 事件(触发)3. 空缺,空缺4. CurrentX, CurrentY5. maxButton, BorderStyle = 1 or 3 or 4 or 56. Alignment, 空缺,空缺7. Style, LoadPicture8. Line, Shape9. 重画10. FillStyle, maxLength, Locked 12. 空缺13. sub, 对象名,事件名14. 方法,Object.Method, text1.setfocus()15. Name, minButtom, CurrentX(Y), Caption16. Interval, Enable 17. timer, Interval, ms(毫秒)18. Mouse Down, Click, LoastFocus19. .Frm, .Frx, .bas. cls. Vbp 20. Rem, Rem 语句二、简答题(略)第二章数据的类型、表示以及运算一、请指出下列哪些是VB的合法常量,并说明原因(1)√(2)X 常量不能加类型说明符号改成123.4 (3)X与上题类似,如果是常量,则类型说明符放在后面(4)√等价于2E3 (5) √(6)√等于十进制的4113(7)X 如果是16进制要写&符号(8)X 指数不能为小数(9)X 月份超过12,日超过31 (10)√(11)√(12)√等价于上一题(13)X 8进制数每一位不能超过8 (14)√(15)X 变量,常量要为基本数据类型的值(16)√二、找出合法变量(1)√(2)√如果与控件Label1同在一个应用程序里面,该变量会屏蔽掉控件Label1(3) X 保留字(4)√(5)X 变量不能以数字开头(6)变量不能有小数点(7)√(8)√数组变量(9)X保留字(10)√可以,但rnd()不可以,rnd()是函数 (11) √(12)√(13)√(14)X ’符号表示注释(15)X 这是表达式,不是变量(16)X 同上,是表达式三、指出下列数据x,y,z的声明是否正确,如果正确请指明其类型(1)√ x--long, y—variant, z—integer(2) √ x—long, y—long, z—integer(3) √ x—double, y—double, z—integer(4) X 变量x &中间不能有空格(5)√自动转换成字符串(6)X 变量声明不能直接赋值(7)√(8)√自动转换成字符串(9)X 常量不能把函数写上去(10)√四、写出下列表达式的结果(1)1 (2) 1 (3)false (4) ab12 (5)123 (6)出错,加法表达式中如果有一个是数值类型,则“+”表示加号,而不是字符的链接符号(7)False (8)true (9)true (10) false 默认转换成相同类型(数值),建议这里把2改成D试试(P.S.布尔类型TRUE = -1, FALSE = 0;优先顺序:^(乘方)→-(求负)→*、/→\(整除)→MOD→+、-)五、写出下列函数的结果(1)3 (2)2 (3)-2 (4)0 (5)2 (6)23 (7)23 (8)1 (9)1 (10)21 日期差分函数,参数“m”为两年月份之差六、写出满足以下条件的表达式(1)fix(rnd()*90)+10 (2)chr(fix(rnd()*26)+65) (3) (A mod 100)\10(4) A mod B<>0 (5)A>“A”and A<“Z”(6) A<B OR A<C (7)A>C AND B>C(8) (A>C AND B<C) OR (A<C AND B>C) (9) A+B>C AND B+C>A AND C+A>B(10)A=“及格”XOR B=“及格”(11)Round(A/B,2) (12) Len(A)<>0 或 Len(A)>0 (13) “A10?”(14) Len(A)>=3七、填空题1. “”, # #2. x>=10 and x<203. (y mod 3=0) or (y mod 7 =0)4. sin(x)^2 + (1/2)*sqr(x^2-y^2)5. 166. T, F7. SIN(ATN(1))8. Randomize9. (c>chr(97) and c<chr(122)) or (c<chr(48) and c>chr(57))10. vbCrLf 11. CInt(), 012. 从第12个月开始,循环一年12个月13. ab, cd0 14. Variant, String, Integer15. Now() 16. DateDif(#2011-5-1#,now(), “m”)八、请指明下列程序运行后,各个变量的值(1) 3 5(2) 120(3) False(4) -3九、分析下面程序中的错误并修改,使其能够完成指定的功能(1)Print 20000+0&+20000或 Print 20000&+20000&(2) 改1:A=xA= a+aB=xB=2*b改2:A=a+x+xB=2*(x+b)十. 简答题(略)第三章程序界面与基本输入输出一、填空题1.Textbox, Inputbox, Label, Textbox, Msgbox, Print2. “,” , “;” , CurrentX, CurrentY3. Print4. AutoSize, Stretch5. Textbox, Label, Textbox, True6. Text1=””, Picture1.cls7. Integer, String8. Textbox, Check , Option, Combo, List9. .setFocus, 失去焦点10. Min, Max, Scroll, Change11. TabIndex12. Enabled, Visible二、简答题(略)三、编程题(略)第四章控制结构一、判断题1.X2. X3. √4. X 循环体中改变其值5.√二、填空题1. 顺序,选择,循环2. “A”,”E”, chr(97), “A” to “Z”, Is>0, Else3. 死循环4. 设置计数器5. True/False, 0/16. 0, ListCount-1三、读程序填空1. 88 及格2. Print x; “是偶数”Print x; “是奇数”3.i= Instr(st, “”)right(st, len(st)-i)I = Instr(st, “The”)Left(st, i-1) & right(st, len(st)-i-3)不用填任何东西(这里是旧版书的过程返回)4.is < 0 “无定义”0 to 1 (log(x)/log(2))^2Is >1 sqr(log(x)/log(2))5.40 ,176.*fAbs(x2-x1)<0.000017. while m<>nPrint m (或n)四、编程题(略)第五章数组和自定义类型一、简答题1.Option Base 1, 只能取0或12.很多情况3.动态数组可重定义,静态数组不可以;动态数组可以用变量,静态数组不可以用变量4.不能,Preserve关键字保留数组原有的内容,但是只能够改变数组的最后一维5.将用引号分隔的字符串塞进数组;UBound(), LBound()在不确定数组上下界情况下可使用或写出的程序更通用6.8字节7.6个元素;[0,2] [3,4]8.这里较为特殊的是List框的Text属性,就是List框所选的内容9.组合框=文本框+列表框;组合框可以输入,列表框不可以;组合框无多选,列表框可以10.自定义类型还没有在内存中分配变量,而自定义变量则是在内存中分配了变量。
C程序设计1-5章测试题(04级)姓名____一、选择题:(每题3分,共60分)1、C语言提供合法的数据类型关键字是( d )A)double B)short C)integer D)char2、下列不属于字符型常量的是(b )A)‘A’B)“B”C)‘\n’ D)‘D’3、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 a 。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。
4、若有定义:int a = 7; float x = 2.5 , y = 4.7 ;则表达式 x + a % 3 * (int) (x + y) % 2/4 的值是 d 。
A) 2.750000 B) 0.00000 C) 3.500000 D) 2.5000005、设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是 ( d)A)2,1,2 B)2,0,3 C)2,2,3 D)2,1,36、下列运符中优先级最高的是( b )A)&& B) ++ C) ?: D)!=7、若x、I、j和k都是int型变量,则计算下面表达式后,x的值是( c )x=(I=4,j=16,k=32)A) 4 B) 16 C) 32 D) 528、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(b)A) 7 B) 8 C) 6 D) 29、C语言规定:在一个源程序中,main函数的位置( c )A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后10、一个C语言程序是由( b )A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成11、下面程序中的输出语句,a的值是( c),输出结果是(b)A)65 B)20 C)15 D)10#include <stdio.h>void main(){ int a;printf("%d\n",(a=3*5,a*4,a+5)); }12、下面不正确的字符串常量是( a )A) ‘bac’B) “12’123”C)”0”D) “”13、以下不符合C语言语法的赋值语句是(D)A) i++; B) i=i=5; C) k=(2*4,k*4); D) y=float(i);14、若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为(D)A) float B) int C) char D) double15、下列可以用作变量名的是( b )A)1 B)al )int D)*p16、C语言中最简单的数据类型包括()A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型分析:本题考查的知识点为C语言里的最基本的数据类型。
《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。
b) 一个C程序中至少应包括一个main函数。
c) 在C语言中,输出操作是有库函数printf( )函数完成。
二、单选题1、A2、C3、B解析:第1题答案:A 。
因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。
且到main函数结束。
第2题答案:C 。
因为main函数没有限制必须位于程序的最前面。
C程序书写自由,一行内可写几个语句。
在对一个 C 程序进行编译的过程中,无法检查注释当中的拼写错误。
不过C语言本身并没有输入输出语句,输入输出是由函数完成的。
第3题答案:B。
因为一个C语言程序是由若干个函数组成的。
但至少包含一个main 函数,且main函数的位置不限。
三、编程题1、编写一个输出“Welcome to C!”信息的小程序。
解:程序如下#include “stdio.h”main( ){printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。
海伦公式为:S△= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。
*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。
*/printf(“area=%f\n”,s1);}第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A16、B 17 D解析:1. 答案:C。
这里考察的是用户标识符的定义。
用户标识符由字母、数字、下划线组成。
且必须以字母或下划线开头,区分大小写,且不能与C语言已有的32个关键字同名。
由于选择不合法的用户标识符,A项的 A 、P_0、Do都是合法的用户标识符;B项的_A是合法的;D项的_123、temp、INT 也都是合法的。
只有C 选项的标识符都是错误的用户标识符。
2.答案:A。
这里考察的是整型常量的概念。
B项当中01a不正确,C项当中的0668不是正确的八进制常量,D项当中的2e5是float型常量。
3.答案:C。
这里考察的是字符常量的定义。
字符常量是用单撇号括起来的单个字符或转义字符。
所以答案是C。
4.答案:A。
字符变量只能包含一个字符。
5.答案:C。
这里考察的是转义字符的正确表示。
C项的‟074‟是错误的转义字符,正确表示方法是‟\074‟。
6.答案:C。
字符变量只能包含一个字符,而C项的c=‟yes‟是错误的。
7.答案:D。
这里考察的是输入格式的控制。
输入格式要与scanf语句中字符串格式相对应。
8.答案:C。
这里考察的是输出格式和字符对应的ASCII 码值。
‟A‟的ASCII码值是65,‟Y‟字符的ASCII码值是89。
9.答案:D。
这里考察输入格式和输出结果形式。
由于输入格式不正确,所以输出的是不确定值。
10.答案:A。
这里考察的是标识符的特点区分大小写,变量sum和变量sUM是两个不同的变量,sum并没有参加运算,所以它的值不边仍然是7。
11.答案:D。
%运算符要求两边的运算数必须是整型。
12.答案:A。
这里考察的是复合赋值运算。
a%=b+1;等价与a=a%(b+1);由于a=10,b=4;所以运算后a的值是0。
13.答案:C。
这里考察的是在变量定义类型是进行赋值操作。
要求a,b,c都赋值为5,且为int 类型。
只有C正确。
14.答案:C。
这里考察的是类型的自动转换,只要有单精度类型或双精度类型参加运算,结果都是double(双精度)类型。
15.答案:B, A。
这里考察的是逻辑表达式的运算过程。
表达式1&表达式2 ,若表达式1的值是0的话,结果就是0,表达式2就不参加运算。
要注意:赋值表达式的值是左边赋值变量的值。
所以答案为B ,A。
16.答案:B。
这里考察的是逗号表达式运算过程是从第1个表达式开始运算,然后依次运行到最后一个表达式。
逗号表达式的值是最后表达式的值,且注意逗号运算符优先级低于赋值运算符。
所以表达式(a=2,b=5,b++,a+b)运算过程a=2 —> b=5 —> b++ —> a+b=8;结果是8。
17.答案:D。
这里考察的是条件表达式的结合性是从右向左。
所以k<a?k:c<b?c:a;等价于k<a ? k:(c<b?c:a);先运算c<b?c:a ;的值是1,然后计算k<a ? k:1;的值是1。
二、填空题1、-32768-327672、字母,数字,下划线3、分号(;)4、30 ,155、186、07、-264 8、7 9、010、1 11、y%2= = 1 12、x<z | | y<z13、0 14、(x>2&&x<3) | | x < -10 15、1三、编程题1、编写程序,输入一个长方形的二边长,输出其面积。
解:程序如下#include “stdio.h”main( ){int a , b , s ; /* a , b 作为长方形的两个边长,s为面积。
*/printf(“请输入两个边长\n”) ;scanf(“%d%d” , & a , & b) ;s = a * b ;printf(“ The area : %d \n “ , s ) ;}2、设置半径为r = 2.9 ,编程求圆周长和圆面积解:程序如下#include “stdio.h”#define PI 3.14main( ){float r , L , S ;L = 2*PI*r ;S = PI * r *r ;printf( “ L = %f , S = %f \n “ , L , S ) ;}3、输入一个华氏温度,输出相应的摄氏温度。
二者的换算公式是:c = 5/9(F – 32) , 其中F表示华氏温度,c表示摄氏温度。
解:程序如下#include “stdio.h”main( ){float c , F ;printf(“请输入一个华氏温度:\n”) ;scanf(“%f” , &F);c = (float) 5/9 *(F-32) ;printf(“ F=%f , c=%f \n” , F , c) ;}第3章程序设计初步一、单选题1、C2、C3、B4、 B5、B解析:1. 答案:C。
这里考察的是if-else 语句和表达式中有增量和减量的执行过程。
if(m++>5) printf(“%d\n”, m) ; else printf(“%d\n”,m++) ;先执行m>5 的值是0,然后执行m=m+1; 得到m=6;由于m>5 的值是0所以执行else语句,应先输出m的值是6,然后m再自增一个单位变成7。
2.答案:C。
这里考察的是if语句的嵌套。
根据else子句总是与之前最近的if语句配对来进行选择满足条件的答案。
3.答案:B。
这里也考察的是if语句的嵌套。
同理:if(x<y) if(y<0) z=0 ; else z+=1 ; 等价与if(x<y) { if(y<0) z=0 ; else z+=1 ; } 因此答案是B。
4.答案:B。
这里考察的是if语句的嵌套。
根据else子句总是与之前最近的if语句配对。
5.答案:B。
由于B项:if(x=y) &&(x!=0) x+=y ; if 后的条件表达式没有用圆括号括起来。
正确的是:if((x=y) &&(x!=0))x+=y ;二、根据要求完成程序填空1、z > y z > x y > x2、ch >= …A‟ && ch<=‟Z‟ch=ch-323、x < 0 x / 10 y!=2三、编程题1、编写一个程序,要求用户从终端键入两个整数数值。
检测这两个数,判定第一个数是否能被第二数整除,并在终端上显示相应的信息。
解:程序如下#include “stdio.h”main( ){int a , b ; /* a为第一个数,b为第二个数*/printf(“Please input two numbers: \n”) ;scanf(“%d%d” , &a ,&b) ;if( a%b = = 0 )printf(“%d能被%d整除。
\n” , a , b) ;elseprintf(“%d不能被%d整除。
\n” , a , b) ;}2、有3个整数a , b , c , 由键盘输入,输出其中最大的数。
解:程序如下#include “stdio.h”main( ){int a , b , c , max ;printf(“ Please input three numbers : \n”) ;scanf(“%d%d%d” , &a ,&b , &c) ;if(a>b) max = a ;else max = b ;if(max < c ) max = c ;printf( “The max is %d \n”, max ) ;}3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分以上为A,80~89分为B,70~79为C,60~69为D,60分以下为E。
解:程序如下#include “stdio.h”main( ){float score ;int grade ;printf(“Please input a score :\n”);scanf(“%f “ ,&score) ;grade=(int ) score /10 ;switch(grade){ case 10:case 9: printf(“grade is A\n”) ; break ;case 8: printf(“grade is B\n”) ; break ;case 7: printf(“grade is C\n”) ; break ;case 6: printf(“grade is D\n”) ; break ;default: printf(“grade is E\n”) ;}}4、新世纪百货进行打折促销活动,消费金额(P)越高,折扣(d)越大,标准如下:消费金额折扣P < 100 0%100 ≤ P < 200 5%200 ≤ P < 500 10%500 ≤ P < 1000 15%P ≥ 1000 20%编程实现从键盘输入消费金额,输出折扣率和实付金额(f)。