C语言第二次作业答案
c语言二级考试试题及答案

c语言二级考试试题及答案C语言二级考试试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中数组的描述,正确的是:A. 数组名是一个变量名B. 数组名是一个常量C. 数组名是一个指针D. 数组名是一个函数答案:B2. 以下哪个是C语言中的合法变量名?A. 2variableB. variable-nameC. variable_nameD. variable name答案:C3. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World" + "Hello World"D. "Hello\nWorld"答案:D4. C语言中,以下哪个不是标准输入输出库函数?A. printf()B. scanf()C. getchar()D. puts()答案:C5. 下列哪个是C语言中的条件语句?A. ifB. switchC. forD. while答案:A6. C语言中,以下哪个是正确的函数定义?A. int function_name(int x, int y) { /* ... */ }B. int function_name(int x, int y);C. int function_name(int x, y) { /* ... */ }D. int function_name(int x; int y) { /* ... */ }答案:A7. 在C语言中,以下哪个是正确的递归函数调用?A. function_name(x)B. function_name(x, y)C. function_name(function_name(x))D. function_name(&x)答案:C8. 在C语言中,以下哪个是正确的结构体定义?A. struct person { int age; char name[50]; };B. struct person { int age; char name[50] }C. struct person { int age; char name[50]; }D. struct person { int age; char name[50] } person;答案:A9. 在C语言中,以下哪个是正确的指针声明?A. int *ptr;B. int ptr*;C. *int ptr;D. int * ptr;答案:A10. 下列哪个是C语言中的位运算符?A. &&B. ||C. &D. ++答案:C二、填空题(每题2分,共10分)1. C语言中,使用________运算符可以实现两个整数的按位与操作。
C语言 第2次作业

1 .C语言中规定函数的返回值的类型是由()。
A.return语句中的表达式类型所决定B.调用该函数时系统临时决定C.调用该函数时的主调用函数类型所决定D.在定义该函数时所指定的函数类型所决定参考答案:D2 .以下不能正确进行字符串赋初值的语句是____。
A.char str[5]="good“B.! char str[]=goodC.! char *str=goodD.! char str[5]={'g','o','o','d'}!参考答案:A3 .C语言中_______。
A.能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值小于零时结束循环参考答案:A4 .以下选项中,与k=n++完全等价的表达式是_____。
A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1参考答案:A5 .有定义语句:int b;char c[10]; ,则正确的输入语句是_____。
A.scanf("%d%s",&b,&c);B.scanf("%d%s",&b,c);C.scanf("%d%s",b,c);D.scanf("%d%s",b,&c);参考答案:B6 .若有定义:int aa[8];则以下表达式中不能代表数组元aa[1]的地址的是_____。
A.&aa[0]+1B.&aa[1]C.&aa[0]++D.aa+1参考答案:D7 .若i 、j 已定义为int 型,则以下程序段中语句printf( “%d ”,i*j); 的执行次数是_____。
国家开放大学C语言程序设计A第二次形考任务及问题详解

一、选择题〔共20分,每一小题2分〕当处理特定问题时的循环次数时,通常采用的语句是〔〕。
a. forb. whilec. do-whiled. switch题目2在switch语句的每个case块中,假定都是以break语句完毕的,如此此switch语句容易被改写成的语句是〔〕。
a. forb. ifc. dod. while题目3for语句能够被改写成的语句是〔〕。
a. 复合b. ifc. switchd. while题目4下面循环语句执行完毕后输出的i值为〔〕。
for(int i=0; i<n; i++) if(i>n/2) {cout<<i<<endl; break;}a. n/2b. n/2+1c. n/2-1d. n-1题目5在下面循环语句中,内层循环体S语句的执行总次数为〔〕。
for(int i=0; i<n; i++)for(int j=i; j<n; j++) S;a. n2b. (n+1)/2c. n(n-1)/2d. n(n+1)/2题目6在下面的do循环语句中,其循环体被执行的次数为〔〕。
int i=0; do i++; while(i*i<10);a. 4b. 3c. 5d. 2题目7在下面的一维数组定义中,有语法错误的选项是〔〕。
a. int a[]={1,2,3};b. int a[10]={0};c. int a[];d. int a[5];在下面的二维数组定义中,语法正确的选项是〔〕。
a. int a[5][];b. int a[][5];c. int a[][3]={{1,3,5},{2}};d. int a[](10);题目9假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};〞,如此元素a[1][1]的值为〔〕。
a. 2b. 4c. 6d. 8题目10假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};〞,如此元素a[2][1]的值为〔〕。
国家开放大学电大《C语言程序设计》网络课形考任务2作业及答案

国家开放大学电大《C语言程序设计》网络课形考任务2作业及答案形考任务2一、选择题(共20分,每小题2分)题目1当处理特定问题时的循环次数已知时,通常采用的语句是()。
选择一项:a. for题目2在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是()。
选择一项:b. if题目3for语句能够被改写成的语句是()。
选择一项:d. while题目4下面循环语句执行结束后输出的i值为()。
for(int i=0; i<n; i++) if(i>n/2) {cout<<i<<endl; break;}选择一项:b. n/2+1题目5在下面循环语句中,内层循环体S语句的执行总次数为()。
for(int i=0; i<n; i++)for(int j=i; j<n; j++) S;选择一项:d. n(n+1)/2题目6在下面的do循环语句中,其循环体被执行的次数为()。
int i=0; do i++; while(i*i<10);选择一项:a. 4题目7在下面的一维数组定义中,有语法错误的选项是()。
c. int a[];题目8在下面的二维数组定义中,语法正确的选项是()。
选择一项:c. int a[][3]={{1,3,5},{2}};题目9假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][1]的值为()。
选择一项:d. 8题目10假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。
选择一项:a. 0二、判断题(共20分,每小题1分。
叙述正确则回答“是”,否则回答“否”)题目11在执行“typedef int DataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。
2022c语言二级考试题及答案

2022c语言二级考试题及答案一、单项选择题(每小题2分,共40分)1. C语言中,用于定义变量类型为整型的关键字是()。
A. intB. floatC. doubleD. char答案:A2. 下列选项中,不是C语言标准库函数的是()。
A. printf()B. scanf()C. strcat()D. input()答案:D3. 若有以下定义和语句:```cint a=5, b=2;a=a+b;```则执行后变量a的值是()。
A. 5B. 7C. 2D. 0答案:B4. 在C语言中,以下哪个选项是正确的字符串常量?A. "123"B. '123'C. "123""D. 123答案:A5. C语言中,以下哪个选项是正确的二维数组定义?A. int a[2,3];B. int a[2][3];C. int a[2][3][];D. int a[][];答案:B6. 在C语言中,以下哪个选项是正确的函数定义?A. int fun(int a, int b);B. int fun();C. int fun(int a, int b) {}D. int fun(a, b) {}答案:C7. 下列哪个选项是C语言中的合法标识符?A. 2aB. a-bC. _a1D. int答案:C8. 若有以下定义和语句:```cint a=5, b=0;if (a=b)printf("%d", b);elseprintf("%d", a);```则执行后输出的结果是()。
A. 5B. 0C. 1D. 无输出答案:B9. C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. fclose()C. fgetc()D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的结构体定义?A. struct student {int age;float score;};B. struct {int age;float score;} student;C. Both A and BD. None of the above答案:C11. C语言中,以下哪个选项是正确的枚举类型定义?A. enum color {red, green, blue};B. enum {red, green, blue};C. Both A and BD. None of the above答案:C12. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14B. #define PI = 3.14C. #define PI 3.14D. #define PI = 3.14答案:A13. C语言中,以下哪个选项是正确的指针定义?A. int *p;B. int *p[];C. int (*p)[];D. int *p[10];答案:A14. 若有以下定义和语句:```cint a=10;printf("%d", ++a);```则执行后输出的结果是()。
c语言二级考试选择题及答案

c语言二级考试选择题及答案1. 在C语言中,以下哪个关键字用于声明函数?A. intB. returnC. voidD. function答案:C2. C语言中,哪个运算符用于计算两个整数的除法,并向下取整?A. %B. /C. //D. 无此运算符答案:C3. 下列哪个选项是C语言中的正确注释方式?A. // 这是一个注释B. /* 这是一个注释 */C. <!-- 这是一个注释 -->D. 以上都是答案:D4. 在C语言中,以下哪个选项是合法的变量名?A. 2variableB. variable2C. $variableD. none-of-these答案:B5. C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. length()C. size()D. lengthOf()答案:A6. 在C语言中,哪个关键字用于定义一个结构体?A. structB. classC. unionD. enum答案:A7. C语言中,以下哪个选项不是控制语句?A. ifB. switchC. forD. define答案:D8. 在C语言中,以下哪个选项是正确的二维数组声明方式?A. int array[2][3];B. int [2][3] array;C. int array[][];D. int 2array[3];答案:A9. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strncat()答案:A10. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. open()C. fileopen()D. file()答案:A结束语:以上是C语言二级考试选择题及答案,希望能够帮助考生复习和准备考试。
C++程序设计语言第二次作业题及答案.doc

第2次作业一、单项选择题(本大题共50分,共25小题,每小题2分)1.C++程序屮,数据的两种表现形式是()。
A.常最和变最B.常量和矢量C.变量和矢量D.矢量和标量2.C++程序中,定义函数时()。
A.可以嵌套定义B.可以不指定函数名C.不能嵌套定义D.可以不指定返冋值类型3.C++程序屮,主函数的常用返回整型数据的形式,类型名是()。
A.intB.INTC.integerD.Tnt4.C++程序中,用于实现数据输入的是()。
A.输入流对象cin和提取运算符>>B.输入流对象cin和插入运算符《C.输入流对彖cout和提取运算符>>D.输入流对象cout和插入运算符〈〈5.C++程序屮,定义引用变量时,()。
A.使用的运算符是*B.使用的运算符是()C.使用的运算符是&D.使用的运算符是[]6•下列关于函数的说法屮,不正确的是()。
A.在不同函数屮可以使用相同的名字命名变量B.形式参数是局部变量C.在函数内部定义变量的作用域在本函数中D.在一个函数内的复合语句屮定义变量的作用域也是整个函数7. C++程序的函数调用屮,使用数值参数传递吋,()oA.能够在被调函数屮通过形参修改实参B.实参和对应的形参数据类型可以不一致C.形参不能够从实参获取数值D.不能在被调函数屮通过形参修改实参&在C++程序小,注释的书写方法除了/**/这种形式外,述可以使用的形式是()OA.字符序列〉”B.\0〈字符序列>\0C.〃v字符序列〉D.\\〈字符序列〉9.C++语言中,定义一个文件流对象的正确语句形式是()。
A.void *sp;B.fstream sp;C.FILE &sp;D.filestream *sp;10.对于字符常量'B',与其对应的转义字符书写形式是()oA.B.'\x42'C.'\x41'D.'\A,11.C++程序的函数调用中,使用数组参数传递时,()。
国家开放大学C语言程序设计A第二次形考任务及答案

一、选择题共20分,每小题2分当处理特定问题时的循环次数已知时,通常采用的语句是;a. forb. whilec. do-whiled. switch题目2在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是;a. forb. ifc. dod. while题目3for语句能够被改写成的语句是;a. 复合b. ifc. switchd. while题目4下面循环语句执行结束后输出的i值为;forint i=0; i<n; i++ ifi>n/2 {cout<<i<<endl; break;}a. n/2b. n/2+1c. n/2-1d. n-1题目5在下面循环语句中,内层循环体S语句的执行总次数为; forint i=0; i<n; i++forint j=i; j<n; j++ S;a. n2b. n+1/2c. nn-1/2d. nn+1/2题目6在下面的do循环语句中,其循环体被执行的次数为; int i=0; do i++; whileii<10;a. 4b. 3c. 5d. 2题目7在下面的一维数组定义中,有语法错误的选项是;a. int a={1,2,3};b. int a10={0};c. int a;d. int a5;题目8在下面的二维数组定义中,语法正确的选项是;a. int a5;b. int a5;c. int a3={{1,3,5},{2}};d. int a10;题目9假定一个二维数组的定义语句为“int a34={{3,4},{2,8,6}};”,则元素a11的值为;a. 2b. 4c. 6d. 8题目10假定一个二维数组的定义语句为“int a34={{3,4},{2,8,6}};”,则元素a21的值为;a. 0b. 4c. 8d. 6二、判断题共20分,每小题1分;叙述正确则回答“是”,否则回答“否”题目11在执行“typedef int DataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用; 对题目12在switch语句中,每个case和冒号之间的表达式只能是常量; 对题目13为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句; 对题目14在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置;错题目15在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口; 错题目16假定一维数组的定义为“char a8;”,则该数组所含元素的个数大于8; 错题目17假定二维数组的定义为“int a35;”,则该数组所占存储空间的字节数为60; 对题目18假定二维数组的定义为“char aMN;”,则该数组所含元素的个数为M+N;错题目19假定二维数组的定义为“double aMN;”,则每个数组元素的行下标取值范围在0~M-1之间; 对题目20假定二维数组的定义为“double aMN;”,则每个数组元素的列下标取值范围在0~N之间;错题目21存储一个空字符串需要占用0个字节的存储空间; 错题目22使用“typedef char BB1050;”语句定义标识符BB为含有10行50列的二维字符数组类型; 对题目23存储字符'a'需要占用1个字节的存储空间; 对题目24空字符串的长度为1; 错题目25字符串"a:\\xxk\\数据"的长度为13; 错题目26为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1; 对题目27strcmp函数用于进行两个字符串之间的比较; 对题目28strcpy函数用于把一个字符串拷贝到另一个字符数组空间中; 对题目29一个二维字符数组a1020能够最多存储9个字符串; 错题目30一个二维字符数组a1020能够存储的每个字符串的长度不超过20; 错三、填空题:写出下列每个程序运行后的输出结果共40分,每小题4分题目31include<stdio.h>void main{int x=5;switch2x-3 {case 4: printf"%d ",x;case 7: printf"%d ",2x+1;case 10: printf"%d ",3x-1; break;default: printf"%s","default\n";}}11 14题目32include<stdio.h>void main {int i,s=0;fori=1;i<=5;i++ s+=ii;printf"s=%d\n",s;}s=55题目33include<stdio.h>void main {int i, s1=0, s2=0;fori=0;i<10;i++ifi%2 s1+=i; else s2+=i;printf"%d %d\n",s1,s2;}25 20题目34include<stdio.h>void main {int n=6,y=1;whilen y=n--;printf"y=%d\n",y;}y=720题目35include<stdio.h>const int M=20;void main{int i,c2,c3,c5;c2=c3=c5=0;fori=1; i<=M; i++ {ifi%2==0 c2++;ifi%3==0 c3++;ifi%5==0 c5++;}printf"%d %d %d\n",c2,c3,c5;}10 6 4题目36include<stdio.h>void main{int i,s;fori=1,s=0;i<10;i++ {ifi%3==0 continue;s+=i;}printf"%d\n",s;}27题目37include<stdio.h>void main {int a8={12,39,26,41,55,63,72,40};int i, i1=0, i2=0;fori=0;i<8;i++ifai%2==1 i1++; else i2++;printf"%d %d\n",i1,i2;}4 4题目38include<stdio.h>int a10={4,5,6,15,20,13,12,7,8,9};void main{int i,s4=0;fori=0; i<10; i++ {switchai%4 {case 0: s0+=ai;break;case 1: s1+=ai;break;case 2: s2+=ai;break;default: s3+=ai;break;}}fori=0; i<4; i++ printf"%d ",si;}44 27 6 22题目39include<stdio.h>void main {char a="abcdbfbgacd";int i1=0, i2=0, i=0;whileai {ifai=='a' i1++;ifai=='b' i2++;i++;}printf"%d %d %d\n",i1,i2,i;}2 3 11题目40include<stdio.h>void main {int a34={{1,2,7,8},{5,6,10,6},{9,12,3,4}};int m=a00;int i,j;fori=0; i<3; i++forj=0; j<4; j++ifaij>m m=aij;printf"%d\n",m;}12四、简答题:根据下列每个题目要求编写程序共20分,每小题4分题目41编写一个函数,函数头格式为“double Meandouble aMN,int m,int n”,要求返回二维数组amn 中所有元素的平均值,假定在计算过程中采用变量v存放平均值;double Meandouble aMN,int m,int n{int i,j;double v=0.0;fori=0; i<m; i++forj=0; j<n; j++ v+=aij;v/=mn;return v;}题目42编写一个递归函数“int FFint a, int n”,求出数组a中所有n个元素之积并返回;include<stdio.h>int FFint a , int n{int mul=1;ifn==1mul=a0;else mul=an-1FFa,n-1;return mul;}/void main{int a6={1,2,3,4,5,6};printf"%d\n",FFa,6;}/题目43编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+……+1/n>5的最小n 值;include<stdio.h>void main{int i=0; double s=0; //或int i=1; double s=1;whiles<5 s+=double1/++i;printf"n=%d\n",i;}题目44编写一个主函数,求出满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程;include<stdio.h>void main{int i=0; //用i作为依次取值偶数的变量int s=0; //用s作为累加变量do {i+=2;s+=ii;}whiles<1000;printf"n=%d\n",i-2;}题目45编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入;include<stdio.h>void main{int i; //用i作为计数循环变量int s=0; //用s作为累加变量int n;printf"输入一个自然数: ";scanf"%d",&n;fori=1; i<=n; i++ s+=ii;printf"s=%d\n",s;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量 = 变量 双目运算符 表达式 例如:
a+=5 等价于 a=a+5
x %= 8 等价于 x = x % 8 n &= m 等价于 n = n & m x * = y + 7 等价于 x = x * ( y + 7 ) x << = n + 1 等价于 x = x << ( n + 1)
1. 关系运算符(比较运算符) 用于比较两个表达式值的大小,有6种: > 、>= 、< 、<= 、= = 、!=
2. 关系表达式 • 是用关系运算符把两个表达式联系起来的
式子
• 关系表达式成立,其值为真,用1代表;否 则为假, 用0代表。 如 int a = 4, b = 8; 则 关系表达式 a > b 的值为0, 而 关系表达式 a < b 的值为1。
• 定点数形式 由正负号、整数部分、小数点、小数部分组成
例:0.0、12.34、0.123、.123、-123.0 、-123. • 指数形式
由正负号、整数部分、小数点、小数部分、E(e)后 带或不带正负号的整数组成 合法:1e-5、-3.14157E+7、-28e-005、123.45E0 非法:E8、3E-5.6、.e2、4e、e
2. 实型常量不分单、双精度, 都按双精度 double型处理
字符常量
1.字符常量是用一对单引号(作为定界符)括起 来的一个字符,字符不能是单引号 ‘ 、双引号 “ 、反斜杠 \。例如: 'A', 'a', '5', '?', '+', '!', '$'。
2.字符常量具有数值,即其 ASCII 代码值。如: C = 'A'; 与 C = 65; 等价。
注:赋值号右边是作为一个完整的表达式参加 运算
例: int x=6; 执行x+=x-=x*x;后,x的值是? -60 *执行x+=x-=x++;后,x的值是? 2
例: 复合赋值运算符示例 #include "stdio.h" main() { int a=2, b=3, c=4;
a*=b/=c-=a;
数据类型 变量名表; 例: int a,b; (定义两个整数) 分类 整型变量、实型变量、字符型变量 变量初始化
C标识符
用来标识变量名、符号常量名、函数名、 数组名、文件名的有效字符序列。
标识符必须由字母或下划线开头,后跟字 母或下划线或数字,字母区分大小写。
标识符的长度(字符个数)无统一规定, 随系统而不同,一般只能识别前8个字符。
(如何按照条件写表达式)
4.1算术运算符
1. 加、减、乘、除和取余运算符:+ 、-、*、/、%
除号/
- 当两个整型数相除时,结果为整数(商的整数
部分)
- 当被除数和除数只要有一个是实型数时,结果
为实数的商。
取余号 %
只能对整型数运算。
比如取整数的个位数:53%10是3, 1253/10%10是5
• 赋值运算符具有右结合性。
a=b=c=1
可理解为:
a=(b=(c=1))
2. 复合赋值运算符: += 、-= 、*= 、/= 、 %= (算术运算) &= 、|= 、^= 、>>= 、<<= (位运算)
• 复合赋值符是在赋值符“=”之前加上其它二 目运算符可构成,执行顺序是:先运算,再 赋值。
• 复合赋值表达式的一般形式为: 变量 双目运算符 = 表达式
部自动追加一个字符'\0' 。 h e l l o ! \0 104 101 108 108 111 33 0
符号常量
符号常量即用一个特定的符号来代表一个常量 • 定义:#define 符号常量 常量(字符串)
例: #define R 5.179 • 符号常量须“先定义,后使用”,一般用大写字
母 例: #define PRICE 35
选择标识符时,提倡使用有意义的英文单 词,注意做到“见名知义”
关键字是由C语言规定的具有特定意义的 字符串,通常也称为保留字 ,不允许作标 识符(见附录)
数据类型 int,short long [int] unsigned int unsigned short unsigned long
整型变量
取整数的十位数
2. 自增、自减运算符:++、--
• 用法
- 前置运算: ++或--用在变量之前,先将变量的
值增1或减1,再将该变量的新值用于表达式中 - 后置运算: ++或--用在变量之后,先将变量的
值用于表达式中,再将该变量的值增1或减1 例: i=5+j--; i=5+--j;
• 该运算符只能用于变量,不能用于常量和表达式
例2: main() { int a ; char b; a='a'; b=98; printf("%c %c\n", a, b); printf("%d %d\n", a, b); } 运行结果:a b
97 98
变量初始化
定义变量时仅为变量分配内存,并不对这部分内 存进行清空操作,分配作变量的内存中的原值被 保留,且其值无法确定。因此,变量在参与运算 前应初始化,赋予初值,以免产生逻辑错误。
*例2:执行下列语句后,输出结果是什么?
main() { int a=10, b=20, c; c=++a+b--; printf( "a=%d,b=%d,c=%d", a, b, c ); }
结果:a=11,b=19,c=31
算术表达式
是用算术运算符和括号将运算对象(常量、 变量和函数等)连接起来的、符合C语法 规则的式子,如:
功能 8进制数表示的ASCII字符 16进制数表示的ASCII字符 响铃 水平制表 换行 回车 退格 单引号 双引号 反斜线 空字符
字符串常量
1.字符串常量一对双引号括起来的字符系列。
例:"hello!", "program", "a", 123.45"
2.存储形式 字符串中的每个字符占一个字节,在其尾
第三章
基本数据类型、运算符、输入输出函数
1 数据类型
为什么数据要分类
对数据进行分类,以便让计算机进行相 应的存储和处理
C语言的基本数据类型有: • char(字符型) • int (整型) • float (实型或浮点型) • double(双精度实型)
2 常量
概念:
程序运行过程中其值不能被改变的量
常量的分类:
整型常量 实型常量 字符常量 字符串常量 符号常量
整型常量
整型常量即整常数 1.整数 • 取值范围:一般占一个机器字,字长2字节,
取值范围为 -32768 ~ +32767 • 表示形式: 十进制整数 以非0开头的整数 八进制整数 以0开头的整数 十六进制整数 以0x或0X开头的整数 例:-123、456、0123、-0x123
3.一种特殊的字符常量-转义字符(见表3-1)
一对单引号括起来,里面是反斜线开头,后跟 一个字符,如'\n'。或反斜线开头,后跟一个一到三位 八进制数,或后跟一个一到二位x开头的十六进制数。
常用转义字符
符号 \ddd \xhh
\a \t \n \r \b \' \" \\ \0
ASCII值
7 9 10 13 8 39 34 92 0
合法:i++; --j; i=(j++)*5; 非法:6--; i=(j*5)++;
例1:main() { int a=5,c; c = ++ a; /* a先增1,再运算 */ c = c + a ++; /* a先运算,再增1 */ printf ("a = %d \tc = %d\n",a,c); } 结果:a = 7 c = 12
实际上是把该字符的 ASCII 代码放到字 符变量对应的内存单元中去
• 字符数据与整型数据的存储形式相类似, 可以相互赋值或混合运算,一个字符数 据既可以以字符形式输出,也可以整数 形式输出.
例1: main() { char a, b; a='a'; b='b'; printf("%c %c\n", a, b); printf("%d %d\n", a, b); }
x++ a+b a%b n/100%10 …
4.2 赋值运算符与赋值表达式
1. 基本赋值运算符: =
• 由“=”连接的式子称为赋值表达式。其一般形 式为:
变量=表达式
功能是:计算右边表达式的值再赋予左边的变 量。 例如:
a=3
b = i++ + --j
c=sin(x)+sin(y)
C语言规定,可以在定义变量的同时给变量赋初值。
例如:int a=2,c=3;
float pi=3.14;
char c1=‘a’,c2=‘9’;
如果要对n个同类型的变量赋相同的初始值,也要 分别赋值。
例如: int a=10,b=10,c=10;
int a=b=c=10;
错误!!!
4 运算符和表达式-1
#define NUM 10 #define SUM PRICE*NUM