C语言程序习题解析

合集下载

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

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程序,判断一个年份是否为闰年并输出结果。

C语言程序设计题解析

C语言程序设计题解析

【第1题】题目:请编写函数fun,对长度为7的字符串,除首、尾字符外,将其余5个字符按将序排列。

例如,雨来的字符串为CEAedca,排序后输出为CedcEAa。

Int fun(char *s,int num){Int i,j;chat t;for(i=1;i<num-1;i++)for(j=i+1;j<num-1;j++)if(s[i]<s[j]){ t=s[i];s[i]=s[j];s[j]=t;}}【第2题】题目:编写函数fun,其功能是:计算出k以内最大的10个能被13或17整除的自然数之和。

(k (3000)。

Int fun(int k){int a=0,b=0,j;while((k>=2)&&(b<10)){k--;if((k%13= =0) | | (k%17= =0)){a=a+k;b++;}}Return a;}【第3题】题目:产生15个[20,80]上的随机整数:用顺序法(比较法)按从小到大排序输出。

void fun(int a[], int n){ int I,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>[j]){t=a[i];a[i]=a[j];a[j]=t; }}【第4题】题目:请编写函数fun,它的功能是:判断m是否为素数。

主函数的功能是:求出100到200之间的素数的个数。

int fun(int m){int i,j;int k=1;if(m<=1) k=0;for(i=2;i<m;i++)if(m%i=0) k=0return k;}【第5题】题目:编写函fun,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

int fun(char *pl){char *p;int n=0;p=pl;while(*p++) n++;rerurn n;}【第6题】题目;给定n个数据,求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。

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

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

C语言程序设计试题第1、2、3章 概述、类型、表达式一、选择题1、 一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:( )A、 任意B、 第一个函数必须是主函数,其他函数任意C、 必须完全按照执行的顺序排列D、 其他函数可以任意,主函数必须在最后2、 下列四个叙述中,正确的是:( )A、 C程序中的所有字母都必须小写B、 C程序中的关键字必须小写,其他标示符不区分大小写C、 C程序中的所有字母都不区分大小写D、 C语言中的所有关键字必须小写3、 下列四个叙述中,错误的是:( )A、 一个C源程序必须有且只能有一个主函数B、 一个C源程序可以有多个函数C、 在C源程序中注释说明必须位于语句之后D、 C源程序的基本结构是函数4、 下面不是C语言合法标识符的是:( )A、abcB、5nC、_4mD、x35、 以下叙述不正确的是:( )A. 分号是C语句的必要组成部分B. C程序的注释可以写在语句的后面C. 函数是C程序的基本单位D. 主函数的名字不一定非用main来表示6、 C语言中允许的基本数据类型包括:( )A. 整型、实型、逻辑型B. 整型、实型、字符型C. 整型、字符型、逻辑型D. 整型、实型、逻辑型、字符型7、 C语言中能用八进制表示的数据类型为:( )A、字符型、整型B、整形、实型C、字符型、实型、双精度型D、字符型、整型、实型、双精度型8、 下列属于C语言合法的字符常数是:( )A、’\97’B、”A”C、’\t’D、”\0”9、 在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:( )A、char<int<=long int <=float<doubleB、char=int<long int <=float<doubleC、char<int<long int=float=doubleD、char=int=<long int <=float<double10、 在C语言中(VC环境),一定是长整型常数的是:( )A、0LB、4962710C、0412765D、0xa34b7fe11、 若有以下定义语句char c1=’b’, c2=’e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是:( )A、2,MB、3,EC、2,ED、输出项与相应的格式控制不一致,输出结果不确定12、 以下合法的赋值语句是:( )A、x=y=100B、d--;C、x + yD、c = int(a+b);13、 设变量t为int型,下列选项中不正确的赋值语句是:( )A、++t;B、n1=(n2=(n3=0));C、k=i==m;D、a=b+c=1;14、 在以下一组运算符中,优先级最高的是:( )A、<=B、==C、%D、&&15、 下列能正确表示a≥10或a≤0的关系表达式是:( )A、a>=10 or a<=0B、a<=10 || a>=0C、a>=10 || a<=0D、a>=10 && a<=016、 下列只有当整数x为奇数时,其值为“真”的表达式是:( )A、x%2==0B、!(x%2==0)C、(x-x/2*2)==0D、! (x%2)17、 设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是:( )A、1 0< a < 15B、!(a<=10 || a>=15)C、a>10 && a<15D、!(a<=10) && !(a>=15)18、 已知x=43, ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:( )A、0B、语法错C、1D、“假”19、 表达式17%4 /8的值为:( )A、0B、1C、2D、320、 语句printf(“%d”,(a=2)&&(b= -2));的输出结果是:( )A、无输出B、结果不确定C、-1D、121、 一个可执行的C程序的开始执行点是:( )A. 程序中的第一个语句B. 包含文件中的第一个函数C. 名为main的函数D. 程序中的第一个函数22、 组成C语句的一个必不可少的符号是:( )A. 逗号B. 引号C. 冒号D. 分号23、 若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:( )A. intB. longC. floatD. double24、 下述是C语言中有关变量定义的几个说法,正确的是:( )A. 变量可以不定义直接使用B. 一个说明语句只能定义一个变量C. 几个不同类型的变量可在同一语句中定义D. 变量可以在定义时进行初绐化25、 与x * = y + z等价的赋值表达式是:( )A. x = y + zB. x = x * y + zC. x = x * (y + z)D. x = x + y * z26、 当代电子计算机能够自动地处理指定的问题是因为:( )A.计算机是电动的B.有解决该问题的计算机程序C.事先存储了解决该问题的程序D.以上都不是27、 以下叙述中最准确的是:( )A.计算机程序是处理某一问题所有指令的集合B.计算机程序是处理某一问题所用到的所有数据的集合C.计算机程序是处理某一问题的所有指令及其数据的集合D.计算机程序是处理某一问题的所有指令及其数据的有序集合28、 关于计算机程序设计,以下描述最准确的是:( )A.程序设计就是用语言来编写程序B.程序设计就是用计算机语言来编写程序C.程序设计就是用计算机程序设计语言来编写程序D.程序设计就是用计算机能识别的语言来编写程序29、 目前编写计算机程序一般采用的是:( )A.机器语言 B.汇编语言 C.高级语言 D.英语30、 设计一个计算机程序最基本的工作是:( )A.制定正确的算法 B.选择合理的数据结构C.制定正确的算法和选择合理的数据结构 D.以上都不是31、 算法具有五个特性,以下选项中不属于算法特性的是:( )A.有穷性 B.简洁性 C.可行性 D.确定性32、 下述哪一个不是结构化程序基本结构:( )A.顺序 B.选择 C.循环 D.嵌套33、 C语言是一种:( )A.机器语言 B.汇编语言 C.高级语言 D.以上都不是34、 C语言源程序的扩展名为:( )A..exe B..c C..obj D..cpp35、 C程序编译后最终产生(即计算机执行)的文件的扩展名为()A..exe B..c C..obj D..cpp36、 下列各项中,不是C语言的特点是:( )A.语言简洁、紧凑,使用方便B.程序执行效率高,可移植性好C.能实现汇编语言的大多数功能D.有较强的网络操作功能37、 构成C语言源程序的基本单位是:( ) A.子程序 B.过程 C.文本 D.函数38、 下列叙述正确的是:( )A.C语言源程序可以直接在DOS环境中运行B.编译C语言源程序得到的目标文件可以直接在DOS环境中运行C.C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行D.C语言源程序可以直接在VC++环境中运行39、 某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:( )A.写在前面的函数先开始执行B.总是从main()函数开始执行C.总是从max()函数开始执行D.写在后面的函数先开始执行40、 以下叙述不正确的是:( )A.分号是C语句的必要组成部分B.C程序的注释可以写在语句的后面C.函数是C程序的基本单位D.主函数的名字不一定用mian表示41、 以下为C语句的是:( )A.a=8 B.a++; C.if(a>8) D.#include <stdio.h>以下不是C语句的是:( )A.a=8; B.a++; C.if(a>8); D.for(i=1;i<5;i++)42、 以下所列语句中,合法的语句是:( )A.a=1,b=2 B.++a; C.a=a+1=5 D.y=int(a);43、 C程序中的复合语句指的是:( )A.并列的多个C语句 B.写在同一行中的多个C 语句C.用一对大括号对括的多个C语句 D.就是函数体中的语句44、 当一个很长的C语句(中间无字符串)在一行写不下(超出屏幕的宽度)时,应该:( )A.由系统自动换行 B.立即按回车键换行C.在任意一个空格处按回车键换行D.输入一个分号后并按回车键换行换行45、 在x值处于-2~2,4~8时值为“真”,否则为“假”的表达式是:( )。

C语言习题及解答

C语言习题及解答

C语言习题及解答C 语言习题及解答1、输入一个华氏温度,要求输出摄氏温度。

公式为#include void main( ) {float C,F;printf("Input F:"); scanf("%f",&F); C=5.0/9*(F-32); printf("C=%.2f\n",C);}2、编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。

(提示:同一个字母的大写比小写小32)#include void main( ) { char ch;printf("Input ch:"); scanf("%c",&ch); ch=ch+32;printf(“ch=%c \n",ch);}3、编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积。

#include void main( ) { float a,b,h,area; printf("Input a,b,h: "); scanf("%f%f%f", &a,&b,&h); area=(a+b)*h/2;printf("area=%.2f\n", area); }4、编写程序,输入圆半径r ,求圆周长、圆面积、圆球表面积、圆球体积。

#include #define PI 3.1415926 void main( ) {float r,L,s1,s2,V; printf("Input r:"); scanf("%f", &r); L=2*PI*r; s1=PI*r*r; s2=4*PI*r*r; V=4.0/3*PI*r*r*r;printf("L=%.2f, s1=%.2f, s2=%.2f, V=%.2f\n", L,s1,s2,V);}5、有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r 。

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

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( ){1printf(“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第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。

C语言试题及答案解析

C语言试题及答案解析

C语言试题及答案解析C语言一、选择题(第题2分,共20分)1.一个C程序的执行是从A。

A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序文件的第一个函数开始,到本程序main 函数结束D)本程序的main函数开始,到本程序文件的最后一个函数结束2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。

x=(i=4,j=16,k=32)A) 4 B) 16 C) 32 D) 523.设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为C。

A) 0~255 B) 0~C) 0~ D) 0~.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为D。

A) float B) char C) int D) double 5.putchar函数可以向终端输出一个D。

A)整型变量表达式B)实型变量值C)字符串D)字符或字符型变量值6.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出按方式B;如果字符串长度小于5,则输出按方式C。

A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字符串,左补空格D)输出错误信息7.判断char型变量ch是否为大写字母的正确表达式是C。

A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’)C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch)8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是B。

if(x>y) z=x; x=y; y=z;A) x=10, y=20, z=30 B) x=20, y=30, z=30C) x=20, y=30, z=10 D) x=20, y=30, z=209.以下步伐段______C__.x=-1;do{x=x*x;}while(!x);A)是死轮回B)轮回履行二次C)循环执行一次D)有语法错误10.以下正确的描绘是___B____.A)continue语句的感化是竣事全部轮回的履行B)只能在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)从多层循环嵌套中退出时,只能使用goto语句二、填空题(每空2分,共20分)3.复合语句是将多个语句用花括号括起来构成一个语句。

C语言编程实例100题(带解析适合新手超经典)

C语言编程实例100题(带解析适合新手超经典)

C语言程序实例100个(一)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

C语言程序题及解析.pdf

C语言程序题及解析.pdf

二、填空题
1、语句 if(4/5 > 3/4)
a=1; else
a=0; 运行后,a 的值是________ 。 答案:0
2、表达式:!!"2010-01-27" 的值为________ 。(以 1 表示真,0 表示假) 答案:1
3、若变量 x 已正确定义并赋值,则表达式(-10<x<0)的值为 ________ 。 答案:0
4、写出表示“ x 的取值在 [-10, 0] 的范围内,结果为真,否则为 假”表达式________ 。注意不需要任何空格。 答案:x>=-10&&x<=0 或 x<=0&&x>=-10 或 !(x<-10||x>0)。
5、若:int a=6, b=0, c=3; 则表达式:a && b || b - c 的结果是________ 。(以 1 表示真,0 表 示假) 答案:1
单元测试二
一、单项选择题
1、阅读下述程序段,设变量 c 的值是 68,运行结果是( )。 提示:小写字母 a 的 ASCII 码是 97, 大写字母 A 的 ASCII 码是 65。 char c; if(c>='A' && c<='Z')
printf("%c\n", c+32); else
printf("%d\n", c); A. D B. 100 C. d D. 68 答案:C
a++; 中的表达式 x%3 等价于( A. x%3==1 B. x%3!=0 C. x%3==2
)。
D. x%3==0 答案:B

c语言习题及详解答案

c语言习题及详解答案

c语言习题及详解答案C语言是一种广泛使用的编程语言,以其结构化、可移植和高效性而著称。

以下是一些C语言的习题以及相应的详解答案。

# 习题1:求和问题编写一个C程序,输入两个整数,输出它们的和。

解答:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("这两个整数的和是:%d\n", sum);return 0;}```# 习题2:判断素数编写一个C程序,判断一个整数是否为素数。

解答:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。

\n", num);} else {printf("%d 不是素数。

\n", num);}return 0;}```# 习题3:字符串反转编写一个C程序,输入一个字符串,然后输出它的反转。

解答:```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int len = strlen(str);for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("反转后的字符串是:%s\n", str);return 0;}```# 习题4:数组排序编写一个C程序,输入一个整数数组,然后使用冒泡排序算法对其进行排序。

c语言程序设计题目及答案解析

c语言程序设计题目及答案解析

一、程序设计共113题第1题题号:319#include "stdio.h"void wwjt();int fun(int m){int i,k=1;if(m<=1) k=0;for(i=2;i<m;i++)if(m%i==0) k=0;return k;}第2题题号:351-----------功能:请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指一维数组中。

二维数组中的数已在主函数中赋予。

#include<conio.h>#include<stdio.h>#define M 3#define N 4void wwjt();void fun(int tt[M][N],int pp[N]) {int i,j;for(j=0;j<N;j++){pp[j]=tt[0][j];for(i=1;i<M;i++)if(tt[i][j]>pp[j])pp[j]=tt[i][j];}第3题题号:375功能:从键盘上输入任意实数,求出其所对应的函数值。

z=e的x次幂(x>10)z=log(x+3) (x>-3)z=sin(x)/((cos(x)+4)#include <math.h>#include<stdio.h>void wwjt();double y(float x){double z;if(x>10) z=exp(x);else if(x>-3) z=log(x+3);else z=sin(x)/(cos(x)+4);return(z);}第4题题号:334功能:求给定正整数n以内的素数之积。

(n<28)#include <stdio.h>#include"conio.h"void wwjt();long fun(int n){long i,k;long s=1;for(i=2;i<=n;i++){for(k=2;k<i;k++)if(i%k==0)break;if(k==i)s=s*i;}return s;}第5题题号:333功能:计算并输出给定整数的所有因子之积(包括自身)。

C语言试题及答案解析

C语言试题及答案解析

C语言试题及答案解析1.选择题(每题2分,共20分)1.一个C程序的执行是从本程序的main函数开始,到main函数结束。

2.若x、i、j、k都是int型变量,则计算下面表达式后,x 的值为32.3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为0~.4.设有说明:char w。

int x。

float y。

double z;则表达式w*x+z-y值的数据类型为double。

5.putchar函数可以向终端输出一个字符或字符型变量值。

6.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出右对齐该字符串,左补空格;如果字符串长度小于5,则输出从左起该字符串,右补空格。

7.判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。

8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是x=20.y=30.z=30.9.以下程序段循环执行一次。

x=-1;do{x=x*x;while(!x);10.以下正确的描述是continue语句的作用是结束本次循环的执行。

1.选择题(每题2分,共20分)1.C程序的执行是从本程序的main函数开始,到main函数结束。

2.若x、i、j、k都是int型变量,则计算下面表达式后,x 的值为32.3.在C语言中,一个int型数据在内存中占2个字节,因此unsigned int型数据的取值范围为0~.4.如果有说明:char w。

int x。

float y。

double z。

则表达式w*x+z-y的数据类型为double。

5.putchar函数可以向终端输出一个字符或字符型变量值。

6.在printf函数中,格式符%5s中的数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出右对齐该字符串,左补空格;如果字符串长度小于5,则输出从左起该字符串,右补空格。

c语言题库及答案详解

c语言题库及答案详解

c语言题库及答案详解C语言题库及答案详解C语言,作为一种广泛使用的编程语言,以其高效、灵活和跨平台的特性,在软件开发、系统编程等领域占据着重要地位。

为了帮助学习者更好地掌握C语言,本文将提供一些常见的C语言题目及其详细解答。

1. 基础语法题- 题目:请编写一个C程序,输出"Hello, World!"。

- 答案:以下是一个简单的C程序示例,用于输出"Hello,World!"。

```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 变量与数据类型题- 题目:声明一个整型变量`a`,初始化为10,并打印其值。

- 答案:在C语言中,可以使用`int`关键字来声明整型变量。

以下是实现题目要求的代码。

```c#include <stdio.h>int main() {int a = 10;printf("The value of a is: %d\n", a);return 0;}```3. 控制结构题- 题目:编写一个程序,判断输入的年份是否为闰年。

- 答案:闰年的判断规则是:如果年份能被4整除但不能被100整除,或者能被400整除,则该年为闰年。

```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```4. 数组与循环题- 题目:编写一个程序,求一个整数数组中所有元素的和。

C语言经典习题及其答案详解

C语言经典习题及其答案详解

C 语言经典习题及其答案详解第二章基本数据类型和表达式2.1 单项选择题1.下列字符列中,可以作为“字符串常量”的是()① ABC ②“ABC“ ③‘abc’ ④‘a’ 「解」C 程序中,一个字符率常量是表示一个字符序列,书写时,用双引号字符前后括住这个字符序列。

所以只有“ABC”是一个正确的字符率常量,其余都不是。

其中,ABC 可作为标识符,字符列‘abc’不能出现在C 程序中,‘a’是一个字符常量。

所以解答是②。

2.在以字节存储字符的系统中,‘\n ’在内存占用的字节数是()①1 ②2 ③3 ④4「解」一般来说,一个字符在内存中只占 1 个字节,‘\n’是转义字符,其意义是换行符,它作为一个字符存储,在内存也只占1 个字节。

所以解答是①。

3.字符串“xyz”在内存占用的字节数是()①3 ②4 ③6 ④8「解」字符串中的每个字符占 1 个字节,但 C 程序在存储字符串时,要在后一个有效字符后面接上1 个字符串结束的标记符‘\0’。

这样,存储字符串常量“xyz”需要 4 个字节。

所以解答是②。

4.在以下字符列中,合法的长整型常数是()① 0L ② 4962710 ③ 0.054838743 ④2.1869el0「解」为表示不同范围的整数,整型数据分短整型、基本型和长整型,并对三种整型内部表示的高位的不同理解,又分别分成无符号和带符号两种。

若要明确指明一个整数是长整型的,必须在整数之后接上字符‘L’。

所以0L 是一个长整型的整型常量,而4962710 是基本整型数据,而对于用 2 个字节表示一个基本整型数据的系统来说,该整数将因超出范围而是一个错误的整数;0.054839743 和2.1869el0 都是double 型的实数。

所以解答是①。

5.一个char 型数据,它的值在内存中存放的是()①ASCll 代码值②BCD 代码值③内码值④ 十进制代码值「解」计算机存储字符,通常是存储字符的某种代码值。

c语言考试题及答案以及解析

c语言考试题及答案以及解析

c语言考试题及答案以及解析一、选择题1. 下列哪个选项是C语言中的关键字?A. intB. floatC. doubleD. string答案:A解析:在C语言中,关键字是保留的词汇,用于表示特定的语法结构。

int是C语言中用于声明整型变量的关键字。

2. C语言中,哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C解析:在C语言中,乘法运算符是星号(*),用于计算两个数的乘积。

二、填空题1. 在C语言中,以下代码片段的输出结果是:```cint main() {int a = 5;printf("%d", a);return 0;}```输出结果为:_________答案:5解析:代码中的printf函数用于输出变量a的值,a被初始化为5,因此输出结果为5。

2. 下列代码段中,变量b的值是多少?```cint main() {int a = 10, b;b = a + 5;printf("%d", b);return 0;}```变量b的值为:_________答案:15解析:变量b被赋值为变量a加上5,由于a的值为10,所以b的值为15。

三、简答题1. 简述C语言中的数组是什么,并给出一个数组的声明和初始化的例子。

答案:C语言中的数组是一种数据结构,用于存储相同类型的多个元素。

数组的声明需要指定元素的类型和数组的长度。

数组的初始化可以在声明时完成。

解析:例如,声明一个整型数组并初始化:```cint numbers[5] = {1, 2, 3, 4, 5};```2. 解释C语言中的函数是什么,并给出一个简单函数的定义和调用的例子。

答案:C语言中的函数是一段具有特定功能的代码块,可以接收参数,并返回一个值。

函数的定义包括函数的返回类型、名称、参数列表和函数体。

函数的调用是使用函数名称和必要的参数来执行函数。

解析:例如,定义一个函数来计算两个数的和,并调用它:```cint add(int x, int y) {return x + y;}int main() {int result = add(5, 10);printf("%d", result);return 0;}```四、编程题1. 编写一个C语言程序,实现输入两个整数,输出它们的和。

C语言程序(习题解答)

C语言程序(习题解答)

C语言程序(习题解答)第 1 章习题解答 ? 学习要点? 完成主教材中的全部习题。

? 熟悉C语言程序设计考试的各种题型:选择题、程序填空题、阅读程序写出运行结果题、编程题等。

? 注意综合运用数据类型、程序结构和典型算法。

1.1 习题1参考答案和解释1.简答题(1)冯・诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?【参考答案】冯・诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。

运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。

数据运算包括算术运算和逻辑运算。

控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的。

存储器是计算机中具有记忆能力的部件,用来存放程序或数据。

输入设备是用来输入程序和数据的部件。

输出设备正好与输入设备相反,是用来输出结果的部件。

(2)简述计算机的工作原理。

【参考答案】计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。

整个过程由控制器进行控制。

(3)计算机软件系统分为哪几类?【参考答案】软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统C语言程序设计教程习题解答与实验指导 2软件和应用软件。

系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。

这类软件一般与具体应用无关,是在系统一级上提供的服务。

系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。

另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。

应用软件是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须在操作系统的基础上运行。

(4)什么叫软件?说明软件与硬件之间的相互关系。

【参考答案】软件是指计算机程序及有关程序的技术文档资料。

两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。

c语言试题及答案详解

c语言试题及答案详解

c语言试题及答案详解C语言是一种通用的编程语言,广泛应用于系统软件、嵌入式系统和应用程序开发。

对于学习和掌握C语言的人来说,练习试题并解答是非常重要的。

本文将提供一些常见的C语言试题,并对每个试题给出详细解答,帮助读者更好地理解和掌握C语言的知识。

试题一:请写出一个简单的C语言程序,显示“Hello World!”。

解答一:```c#include <stdio.h>int main() {printf("Hello World!\n");return 0;}```解析:上述代码中,使用了C语言的标准库函数`printf`来输出字符串"Hello World!",`\n`表示换行。

`main`函数是C程序的入口,程序从`main`函数开始执行。

`return 0`表示程序正常结束。

试题二:请写出一个C语言函数,接收两个整数参数并返回它们的和。

```c#include <stdio.h>int add(int a, int b) {return a + b;}int main() {int num1 = 5;int num2 = 3;int sum = add(num1, num2);printf("The sum is %d\n", sum);return 0;}```解析:上述代码中,定义了一个名为`add`的函数,接收两个整数参数`a`和`b`,返回它们的和。

在`main`函数中,声明并初始化了两个整数变量`num1`和`num2`,然后调用`add`函数将它们的和赋值给变量`sum`,最后使用`printf`输出结果。

试题三:请写出一个C语言循环,计算1到10的平方和。

```c#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 10; i++) {sum += i * i;}printf("The sum of squares is %d\n", sum);return 0;}```解析:上述代码中,使用了`for`循环从1到10遍历每个整数,并计算它们的平方和。

C语言编程题答案与解析

C语言编程题答案与解析

1.编程题(12题)第一题:#include <math.h>#include <stdio.h>double func(double x){/**/return (3*x*sin(x)+tan(x))/(1.5+fabs(x));/**/}void main(){clrscr();printf("func(0.26) = %6.3lf\n", func(0.26));printf("func(5.00) = %6.3lf\n", func(5.00));printf("func(8.50) = %6.3lf\n", func(8.50));getch();}#include <stdio.h>int fun(int a[],int n,float *f){/**/int i,count=0;float sum=0;for(i=0;i<n;i++) 求出数组各元素的累加和sum+=a[i];*f=sum/n; 求出平均值,将它存于指针f内存的地址对应的变量里for(i=0;i<n;i++) for循环再次遍历数组各元素,判断大于等于平均值的元素个数if(*f<=a[i]) count++;return count; 将个数返回/**/}void main(){int a[] = {23,40,8,32,18,2,9,16,27};int i,k = sizeof(a)/sizeof(int); 计算数组元素个数,并存于k中int count=0;float aver=0.0;printf("Array a:\n");for(i=0;i<k;i++)printf("%d ",a[i]);printf("\n");以上语句可无视,输出垃圾信息而已count=fun(a,k,&aver); 将aver的地址传给fun的第3个参数指针变量f,故通过f即可访问到main函数里的aver变量printf("aver is %f, count is %d\n",aver,count);getch();}第三题:#include <math.h>#include <stdio.h>double func(double x){/**/return (exp(x)+sin(x-6))/(x*x+1);/**/}void main(){clrscr();printf("func(0.26) = %6.3lf\n", func(0.26));printf("func(5.00) = %6.3lf\n", func(5.00));printf("func(8.50) = %6.3lf\n", func(8.50));getch();}第四题:#include <stdio.h>#include <math.h>int find(int a[],int n,float x){/**/int i,j=0;double min=fabs(a[0]-x);初始化min为数组中某元素与x差值的绝对值,此处用a[0]相应的用于记录与x差值的绝对值最小的元素的小标的j初始化为0for(i=0;i<n;i++) 遍历数组,依次算出各元素与x差值的绝对值,若该绝对值比当前的min 值来的小则更新min的值,并记录当前元素的下标if(min>fabs(a[i]-x)) {min=fabs(a[i]-x);j=i;}return a[j]; 返回符合条件的元素值/**/}void main(){int a[] = {23,40,8,32,18,2,9,16,27};int i,k,n = sizeof(a)/sizeof(int);计算数组元素个数float x=20.3;初始化x的值printf("Array a:\n");for(i=0;i<n;i++)printf("%d ",a[i]);printf("\n");以上输出垃圾信息的语句再次无视k=find(a,n,x);调用find函数,注意参数的传递,a是数组首地址,n元素个数printf("It is %d\n",k);getch();}第五题:#include <stdio.h>#include <math.h>double fun1(float x){/**/if(x<3) return sin(x);else if(x==3) return x;注意判断两个数相等用两个等号,一个等号为赋值操作else return cos(2*x+1);/**/}void main(){float x;double y;clrscr();printf("Please input a number:\n");scanf("%f",&x);y = fun1(x);printf("fun1(%.2f)=%.2f\n",x,y);getch();}第六题:#include <stdio.h>#include <math.h>int fun(int bg,int fn) 观察main函数可知bg,fn存放的是2个边界自然数的值{/**/int i,j,k,count=0;for(i=bg;i<=fn;i++)枚举bg和fn之间的各个自然数{判断一个数i是素数只要证明其不能被2和它的平方根之间的数整除即可k=sqrt(i);求i的平方根for(j=2;j<=k;j++)枚举2和平方根之间的数if(i%j==0) break; 若找到一个数能被i整除,则说明i不是素数退出循环if(j>k) count++; 若在上面的循环过程中未有一个数能被i整除,则退出循环时j必大于k,由此可说明找到一个素数,故让count++记录找到的素数数量}return count;返回找到的素数个数/**/}void main(){int count;count=fun(100,500);printf("\nThe total of prime is %d",count);getch();}第七题:#include <stdio.h>#include <math.h>double fun1(float x){/*运行结果与示例不符,若要与示例相同则1.0/3 改成1/3 */if(x<3) return (pow(2.5+fabs(x),1.0/3)/(sin(x)+3));else return x;/**/}void main(){float x;double y;clrscr();printf("Please input a number:\n");scanf("%f",&x);y = fun1(x);printf("fun1(%.2f)=%.2f\n",x,y);getch();}第八题:#include <stdio.h>double fun(int n){/**/int i,j=1;double sum=0;for(i=1;i<=n;i++)求累加和咯,j控制正负号变化{sum+= 1.0/(i*(2*i+1))*j; 看到分数要注意到将分子或分母转化成浮点型,如1.0 j*=-1;}return sum;/**/}void main(){int n;printf("Input n: ");scanf("%d",&n);printf("fun(%d)=%lf\n",n,fun(n));getch();}第九题:#include <stdio.h>#include <math.h>double fun1(float x){/**/if(x<10) return sqrt(2.5+cos(x))/(x*sin(x)+3); else return x*x;/**/}void main(){float x;double y;clrscr();printf("Please input a number:\n");scanf("%f",&x);y = fun1(x);printf("fun1(%.2f)=%.2f\n",x,y);getch();}第十题:#include <stdio.h>#include <math.h>int bTrue(int a[][4],int n){/**/方法一:int i,j;for(i=0;i<n;i++)for(j=0;j<4;j++)if(a[i][j]!=a[j][i])return 0; 比较过程中只要出现a[i][j]!=a[j][i]的情况即说明,不是对称矩阵,返回0return 1;若在以上for循环过程中,没执行return语句,则说明是对称矩阵,返回1/**/}void main(){int a[4][4],i,j;int bT;printf("Input array a:\n");for(i=0; i<4; i++)for(j=0; j<4; j++)scanf("%d",&a[i][j]);bT = bTrue(a,4); 4为数组行数if( bT == 1 )printf("Yes\n");elseprintf("No\n");getch();}第11题:#include <stdio.h>#include <math.h>double fun1(float x){/**/if(x<100) return (3*log10(x)-3)/(sin(x)+3);else return x-100;/**/}void main(){float x;double y;clrscr();printf("Please input a number:\n");scanf("%f",&x);y = fun1(x);printf("fun1(%.2f)=%.2f\n",x,y);getch();}第十二题:#include <stdio.h>#include <math.h>int fun(int a[],int n){/**/int i,j; j用于记录与平均值偏差最大的元素的下标float sum=0,max; 下面要求平均值,最好定义成浮点型for(i=0;i<n;i++) 求数组各元素之和sum+=a[i];sum/=n; 求平均值max=fabs(a[0]-sum); 初始化max为数组中某元素与平均值差的绝对值,此处用a[0]j=0; 同时将j初始化为0for(i=0;i<n;i++) 遍历数组各元素,若当前访问的元素与平均值差的绝对值比max大则更新max的值及差值最大元素下标的值if(max<fabs(a[i]-sum)) {max = fabs(a[i]-sum);j=i;}return a[j];返回符合要求的元素/**/}void main(){int a[] = {10,22,8,33,17,5,9,13,27};int i,n = sizeof(a)/sizeof(int); 求数组元素个数int k;printf("Array a:\n");for(i=0;i<n;i++)printf("%d ",a[i]);printf("\n");以上打印数组信息k=fun(a,n); 调用fun函数,其中a为数组名,n传递数组元素个数,k接收返回值printf("It is %d\n",k);getch();}。

C语言程序设计教程练习题解析

C语言程序设计教程练习题解析

单选题1、关于C语言中的函数,下列描述正确的是()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2?、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个A.3B.4C.5D.6答案:A解析:(v1, v2),(v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是()A.printf()函数可以向任何地方输出数据B.printf()只向控制台输出数据C.scanf()只能输入英文字母和数字D.scanf()函数可以识别输入的空格答案:B解析:printf()是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是()A.externB.staticC.thisD.auto答案:B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。

5、当调用时,会调用内部函数A.当调用时,会调用内部函数B.当调用时,会调用外部函数C.当调用时,会调用两次,先调用内部函数再调用外部函数D.都不调用,会报错答案:A解析:当内部函数与外部函数重名时,会优先调用内部函数6、在C语言中,声明外部函数需要添加的关键字是()A.externB.staticC.thisD.auto答案:A解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字7、关于C语言中的局部变量,下列描述中错误的是()A.局部变量就是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调用时才会被使用D.局部变量一旦被调用,其生存周期持续到程序结束答案:D解析:当函数调用结束时局部变量就会失去作用8、关于C语言中的全局变量,下列描述中正确的是()A.全局变量的作用域一定比局部变量的作用域范围大B.静态类别变量的生存周期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:?选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用;选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量;选项4不对:static变量定义时就存储地全局区,初始化为0;9、当全局变量与局部变量重名时,那么在调用时()A.局部变量会被屏蔽B.全局变量会被屏蔽C.都不会调用,系统会报错D.会调用两次,先调用局部变量,再调用全局变量答案:B解析:当局部变量与全局变量重名时,全局变量会被屏蔽。

C语言习题及答案评析

C语言习题及答案评析

第1章 C语言与程序设计初步1.下列标识符中,合法的标识符是( )A.-abc1 B. 1abc C. _abc1 D. for答案:C 注解:基本概念。

C语言的合法标识符要满足:由字母、数字、下划线组成;以字母或下划线开头;不能是C语言的关键字。

2.C语言程序的基本单位是( )A.语句 B.程序行 C.函数 D.字符答案:C 注解:C语言程序是由函数构成的。

一个C源程序至少包含一个主函数,故函数是C程序的基本单位。

3.以下叙述正确的是()A、可以把define和if定义为用户标识符B、可以把define定义为用户标识符,但不能把if定义为用户标识符C、可以把if定义为用户标识符,但不能把define定义为用户标识符D、define和if都不能定义为用户标识符答案:B 注解:if是C语言的关键字,define不是,而#define才是C语言的关键字。

【题1.1】一个C程序的执行是从 。

A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束【题1.2】以下叙述正确的是 。

A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误【题1.3】以下叙述不正确的是 。

A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面【题1.4】C语言规定:在一个源程序中,main函数的位置 。

A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后【题1.5】一个C语言程序是由 。

A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成【题1.6】C源程序的基本单位是【函数】。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章C++语言概述 2第3章控制结构15第4章数组40第5章函数52第六章指针61第七章结构体77第八章?? 类与对象97第九章继承与派生类113第十章多态性125第十一章C++的IO系统142第一章C++语言概述1.1知识要点1.C++语言的特点(1)C++语言支持数据封装封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。

类是数据封装的工具,对象是封装的实现。

(2)C++类中包含私有、公有和保护成员类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。

对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。

封装体现了面向对象方法的―信息隐蔽和局部化原则‖。

(3)C++语言中通过发送消息来处理对象消息指对象之间在交互通讯中所传送的信息。

消息由三部分构成:消息名、接收消息的对象标识和参数。

一个对象向另一个对象发送消息请求某项服务,接收消息的对象响应该消息,进行所要求的服务,并把操作的结果返回给请求服务的对象。

(4)C++语言中允许友元破坏封装性(5)C++语言允许函数名和运算符重载(6)C++语言支持继承性继承指子类(派生类)可以自动拥有父类(基类)的全部属性和服务。

父类和子类是一般与特殊的关系。

在定义一个子类时,可以把父类所定义的内容做为自己的内容,并加入若干新的内容(7)C++语言支持动态联编多态性是指在基类中定义的属性和服务被子类继承后,可以具有不同的数据类型和表现出不同的行为。

当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。

2.C++程序的组成注释部分(两种风格)、编译预处理部分(宏定义,文件包含和条件编译、)、程序正文部分(类型定义、常变量定义、函数定义)。

最终,程序源代码由ASCII码组成类似单词或词组的单元(词法单元),可以用任意的文本编辑器编辑,源代码中的空白(空格、Tab、回车换行)用来表示词法单元的开始和结束,除这一功能外其余空白将被忽略,但如果是字符串内部的空白(不含回车换行,或者说字符串内不能直接回车换行,需要使用转义符)将作为字符串的一部分输出,不会忽略。

注释:1)一对符号―/ *‖与―* /‖之间的内容称为注释。

它可以占多行,是从C语言中继承来的一种注释形式。

2)一行中符号―//‖之后的内容也称为注释。

它只能占一行,是C++语言特有的一种注释形式。

编译预处理命令:C++的编译预处理命令以―#‖开头。

C++提供了三类编译预处理命令:宏定义、文件包含和条件编译。

程序主体:用函数组织过程,每个相对独立的过程都要组织成一个函数;不同的程序由不同的函数按层次结构组织而成。

一个C++程序至少且仅包含一个main()函数,也可以包含一个main()函数和若干个其他函数。

其他函数可以是系统提供的库函数(例如printf ()和scanf()函数),也可以是用户根据需要自己编制设计的函数3.函数????C++的程序由若干个文件组成,文件名的后缀为.cpp(c?plus?plus)。

每个文件又是由函数组成,函数之间可以调用。

在这些函数中只有一个函数是主函数main()。

程序执行时,操作系统先调用主函数,主函数再依次调用其它函数完成设计任务。

4.程序的编辑、编译、连接和运行(1)编辑编辑是将编写好的C++源程序输入到计算机中,生成磁盘文件的过程。

(2)编译和连接过程编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码,然后,再将目标代码进行连接,生成可执行文件。

编译过程又可分为三个子过程。

(1)预处理过程:对源程序编译时,先进行预处理,如果源程序中有预处理命令,则先执行这些预处理命令,执行后再进行下面的编译过程。

(2)编译过程:编译过程主要是进行词法分析和语法分析的过程,又称源程序分析。

1)词法分析。

2)语法分析。

3)符号表。

4)错误处理程序。

5)生成目标代码。

连接过程:这是编译的最后一个过程,将用户程序生成的多个目标代码文件和系统提供的库文件中的某些代码连接在一起由连接器生成一个可执行文件,存储这个可执行文件的扩展名为.exe。

(3)运行一个C++的源程序经过编译和连接后生成了可执行文件。

运行可执行文件可在编译系统下选择相关菜单项来实现,也可以采用其他方法。

1.2 典型例题分析与解答例题1:显示―I am a student‖字符串,并通过简单的程序了解和熟悉运用VC++开发环境进行编写、编译、调试、显示结果的过程。

解答:该程序非常简单,如下代码所示,运用了cout输出流对象代表标准输出显示器,<<代表后边的字符串向显示器输出的方向。

#include <iostream.h>void main(){cout<<‖I am a student‖<<endl; }编辑过程:①编辑?编辑是将C++源程序输入计算机的过程。

在Visual?C++6.0主界面下,点击File菜单,选择New菜单项,即可出现New对话框,如图1-1所示。

在弹出窗口中的Files标签页下,选择C++?Source?File。

在选项卡右面的文件编辑框里输入文件名如―Exa‖,在目录编辑框里输入文件路径,如―d:\test‖。

点击确认按钮。

②编译????编译是使用系统提供的编译器将文本文件Exa.cpp生成机器语言的过程,结果为Exa.obj,由于没有得到系统分配的绝对地址,还不能直接运行,。

选择编译菜单下的编译?Exa.cpp,计算机将完成对当前源程序的编译。

按提示建立默认工程空间。

编译无错时,将源程序Exa.cpp编译为目标文件Exa.obj。

???③连接?连接是将目标文件Exa.obj转换为可执行文件Exa.exe的过程。

如图1-4所示选择编译菜单下的构件?Exa.exe。

连接无错时,将目标文件Exa.obj连接为Exa.exe。

?④运行????运行是执行可执行文件Exa.exe,屏幕输出运行结果。

选择编译菜单下的执行?Exa.exe。

例题2:输入一名学生的成绩,判断该成绩的等级。

如>=60的,显示―合格‖,<60的显示―不合格‖。

程序:#include<iostream.h> //输入输出流对象的头文件void main(){ int score; //声明成绩变量,用来保存分数cout<<‖输入成绩:‖; //提示用户的信息cin>>score; //从键盘上输入分数传递给scoreif( score>=60) //判断该条件是否真或假cout<<‖合格‖<<endl; //当score>=60是真的时候,运行该语句elsecout<<‖不合格‖<<endl; //当score>=60是假的时候,运行该语句}分析:(1)? 首先该题目要求输入一个分数,则事先声明一个整型变量score。

(2)? 其次从键盘上输入该分数,应有输入语句cin,并由上面定义的变量来保存分数。

(3)? 然后根据分数来判断等级,有两种情况应该用if语句。

(4)? 输出的信息是根据不同条件显示字符串,用到cout输出流对象。

(5)? 用到标准输入输出流对象,所以在程序前加相应头文件。

?例题3:面向对象的()是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。

不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。

A.多态性B.封装性C.继承性D.重用性答案B分析:封装性是指把对象属性和操作结合在一起,构成独立的单元,其内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。

若不清楚多态性的定义,误选答案A。

多态性是指当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。

若不清楚继承性的定义,误选答案C。

继承是指派生类可以自动拥有基类的全部属性和服务。

若不清楚重用性的定义,误选答案D。

重用性是多态性的一种表现形式。

?例题4:C++源文件的扩展名为()。

A.cpp B.c C.txt D.exe答案A分析:C++源程序的扩展名为cpp。

C程序的扩展名为c。

文本文件的扩展名为txt。

源程序编译后可执行文件的扩展名为exe。

若不清楚C++源程序扩展名和C源程序扩展名的区别,误选答案B。

C++兼容C,当文件名保存为c时,调用C编译器;当文件名保存为cpp时调用C++编译器。

若不清楚C++源程序扩展名和文本文件扩展名的区别,误选答案C。

C++源程序可以在文本编辑器里编辑,但一定注意将其扩展名保存cpp,不能为txt。

若不清楚C++源程序和C++可执行文件的扩展名的区别,误选答案D。

C++源程序经过编译、连接后得到可执行文件的扩展名为exe。

?例题5:C++的合法注释是()。

A./*This is a C program/* B.// This is a C programC.―This is a C program‖ D.//This is a C program//答案:B分析:单行注释常采用―//‖,多行注释采用―/*‖和―*/‖。

单行注释也可采用―/*‖和―*/‖,但答案A书写格式错误,不能选答案A。

注释和字符串的区别,双引号内的字符为字符串。

不能选答案C。

单行注释不需要结束符―//‖,如果有,只能作为注释的一部分存在。

也不能选答案D。

?例题6:下面标识符中正确的是()。

A._abc B.3ab C.int D.+ab答案:A分析:C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。

答案B第一个字符为数字不能选B。

标识符不能为关键字,不能选答案C。

答案D第一个字符不是字母或下划线,也不能选。

例题7:分析下列该程序的错误。

输入数据格式为:2,5(回车)。

main(){ int sum=0;int a,b;cout<<"input a,b:";cin>>a>>b;sum=a+b;cout<<sum<<endl;}本程序把输入的两个数据进行累加并输出结果。

输入数据格式为:2 5。

#include <iostream.h> // 编译预处理命令,以―#‖开头。

把系统已经定义好的输入//输出功能包含到本程序中。

void main() // 程序的主函数{ // 主函数开始int sum=0; // 定义一个变量sum存放累加结果,并且赋初值为0int a,b; // 定义两个变量,保存输入值cout<<"input a,b:"; // 提示输入cin>>a>>b; // 使用基本输入设备cin输入两个变量值sum=a+b; // 进行累加,结果保存到sum变量cout<<sum<<endl; // 使用基本输出设备cout输出累加结果sum}分析:(1)没有使用编译预处理命令:#include。

相关文档
最新文档