C语言考试笔试易错题
C语言易错题
D.7
C.8
D.7
i=f(4+4)/f(2+2); printf("%d\n",i); } A.28 B.64 C.4 D.3
36. 有以下程序执行后输出结果是 #include <stdio.h> struct STU {char name[10]; int num; int score; }; main() {struct STU s[5]={{"YangSan",0041,703},{"LiSiguo",0042,580},{"WangYin", 0043,680},{"Sundan",0044,550},{"PengHua",0045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score > p[j]->score) {t=p[i];p[i]=p[j];p[j]=t;} printf("%d %d\n",s[1].score,(*p[1]).score); } A.550 550 B.680 680 C.580 550 D.580 680 37.下面程序的运行结果是: int f(int a[],int n) {if(n>1) return a[0]+f(&a[1],n-1); else return a[0]; } main() {int aa[3]={1,2,3},s; s=f(&aa[0],3); printf("%d\n",s); } 答案: 6 38.结构化程序有三种基本结构组成,三种基本结构组成的算法: A. 可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完成符合结构化的任务 D. 只能完成一些简单的任务 39.有以下程序运行后输出结果是 main() {int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q;
C语言易错
C语言【考点6】标识符合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
【考点7】实型数据实型数据的合法形式:小数形式和指数形式。
掌握判定指数形式合法性。
2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e 前e 后必有数,e 后必为整数。
【考点9】整型数据整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节:考试时候一般会说,在16 位编译系统,或者是32 位系统。
碰到这种情况,不要去管,一样做题。
掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节就可以了。
【考点10】转义字符转义字符的考查:在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x 必须存在。
在程序中int a = 06d, 是一个八进制的形式。
在转义字符中,’\x6d’才是合法的,0 不能写,并且x 是小写。
‘\141’是合法的,0 是不能写的。
‘\108’是非法的,因为不可以出现8。
【考点11】算术运算算术运算符一共有+、—、*、/、%这五个。
%符号两边要求是整数。
不是整数就错了。
三种取整丢小数的情况:不是四舍五入是舍掉小数部分。
1、int a =1.6;2、(int)a;3、1/2;3/2;【考点12】强制类型转换将一个运算对象转换成指定类型,格式为(类型名)表达式一定是(int)a 不是int(a),注意类型上一定有括号的。
注意(int)(a+b)和(int)a+b 的区别。
前是把a+b 转型,后是把a 转型再加b。
【考点14】逗号运算逗号表达式:优先级别最低;表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
【考点5】switch语句a) 一定要注意有break 和没有break 的差别,书上(53,54 页)的两个例子,没有break 时候,只要有一个case 匹配了,剩下的都要执行,有break 则是直接跳出了switch 语句。
c语言考试题答案
c语言考试题答案一、选择题1. 答案:B. 除法解析:C语言的除法运算符是"/"2. 答案:C. 'a'解析:单引号括起来的字符表示字符型常量3. 答案:A. 4解析:sizeof运算符返回变量或数据类型所占用的内存字节数,sizeof(int)为44. 答案:D. %解析:%为取模运算符5. 答案:B. 两个数据相加得到一个较大的数据类型解析:当两个不同数据类型的操作数相加时,C语言会自动将较小的数据类型提升为较大的数据类型二、判断题1. 答案:正确解析:数组名可以用作指针常量,但不能用作左值进行赋值操作2. 答案:错误解析:字符串是以'\0'作为结尾的字符数组,因此,字符串数组的长度应该比存储的字符个数多13. 答案:正确解析:字符数组和字符串之间可以相互复制4. 答案:正确解析:指针变量可以指向数组的某一个元素,即数组名可以被解释为指向第一个元素的指针5. 答案:错误解析:字符数组可以用字符串常量进行初始化,但不能用整型数据初始化三、填空题1. 答案:int解析:函数的返回值类型是int2. 答案:break解析:break语句用于终止循环或switch语句的执行3. 答案:指针解析:函数的参数如果需要改变实参的值,则需要使用指针作为参数4. 答案:++解析:++运算符可以使变量的值增加15. 答案:NULL解析:NULL是一个特殊的宏定义,表示空指针常量四、编程题示例代码如下:```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;}```以上代码实现了两个整数相加并输出结果的功能。
青岛科技大学c语言考试易错
青岛科技大学c语言考试易错青岛科技大学C语言考试练习易错题1、从键盘输入一个3位整数,将输出该数的逆序数。
(实验指导书P89)#include "stdio.h"void main(){int a,b,c,x,y;printf("enter a numbers:\n");scanf("%d",&x);a=x/100;b=(x-a*100)/10;c=x%10;y=c*100+b*10+a;printf("%d,%d",x,y);}2、输入三角形三条边的边长,求三角形的面积。
(书P55)#include "stdio.h"#include "math.h"void main(){double a,b,c,p,s;printf("enter 3 numbers:\n");scanf("%lf %lf %lf",&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf("%lf",s);}3、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出#include "stdio.h"void main(){char a,b,c;double d;printf("enter:\n");scanf("%c %c %c",&a,&b,&c);d=(a+b+c)/3;printf("%lf",d);}4、输入某一年月,输出该月的天数。
(实验指导书P105)#include "stdio.h"void main(){int year,month,days;printf("enter the year and month:\n");scanf("%d %d",&year,&month);switch(month){case 2:if(year%400==0||year%4==0&&year%100!=0)days=29;elsedays=28;break;case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;case 4:case 6:case 9:case 11:days=30;break;}printf("%d,%d\n",year,days);}5、从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其他字符,原样输出。
各公司C语言笔试频繁易错题
2布尔变量,整型变量,浮点变量与零值得比较方法(flag)
布尔型:if(flag)
整形:if(flag==0)
浮点型:Define EPSILON0.000000001
if ( fabs(a-b) <= EPSILON )
3.软件开发过程分为:需求分析、设计、编码、测试4个阶段。
5.strcpy的原函数
6.用来求一个十进制数转换成二进制后有多少个1
7,软件设计中划分模块的准则是高内聚,低耦合。
8,赋值表达式(研华)
9.研华(数据指针以及存储)
10,字节范围表达
11,数组的旋转填充。
顺时针填充数字(n*n)
12,指针加1搜代表的含义
13,结构体所占存储空间
6,12
14,关键字static的作用:
1)对局部变量使用static声明,则使得该变量在整个程序执行期间不释放,
为其分配的空间始终存在。
2)全局变量用static声明,则该变量只限于本文件模块(声明所在的文件15,指针
gh int *p[4]:p是存有4个指向整型数据的指针
int(*p)[4]:p是指向有四个数据的一维数组的指针
16.不同类型的数据占用的内存
17,函数调用形参仅仅是值传递
test。
c语言易错选择题错题集
1:设有定义:char p[]={'1','2','3'},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。
A) sizeof(p)B) sizeof(char)C) sizeof(*q)D) sizeof(p[0])参考答案:A【解析】根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。
2:面向对象方法中,继承是指()。
A) 一组对象所具有的相似性质B) 一个对象具有另一个对象的性质C) 各对象之间的共同性质D) 类之间共享属性和操作的机制参考答案:D【解析】继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。
广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
3:若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A) x+1=yB) ++x,y=x--C) x=x+10=x+yD) double(x)/10参考答案:B【解析】A选项中不能将变量y赋给表达式,C选项中错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。4:有以下程序#include <stdio.h>main(){ FILE *pf;char *s1="China", *s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf); /*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是A) ChinaB) ChinangC) ChinaBeijingD) BeijingChina参考答案:B【解析】本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前五个字符覆盖,所以最终结果为Chinang,选项B正确。
c语言数组笔试错题
c语言数组笔试错题在学习C语言的过程中,我们经常会进行一些笔试来检验自己的掌握程度。
然而,有时候我们会在一些看似简单的题目上犯下错误。
下面就让我们来看看一些常见的C语言数组笔试错题。
1. 下面的代码段中,数组arr的长度是多少?```cint arr[] = {1, 2, 3, 4, 5};```A. 1B. 2C. 3D. 5正确答案:D. 5解析:在这个代码段中,我们使用了初始化列表来初始化数组arr。
初始化列表中有5个元素,因此数组arr的长度为5。
2. 下面的代码段中,数组arr的第一个元素的索引是多少?```cint arr[] = {1, 2, 3, 4, 5};```B. 1C. 2D. 3正确答案:A. 0解析:在C语言中,数组的索引是从0开始的。
因此,数组arr的第一个元素的索引是0。
3. 下面的代码段中,数组arr的最后一个元素的索引是多少?```cint arr[] = {1, 2, 3, 4, 5};```A. 3B. 4C. 5D. 6正确答案:B. 4解析:数组arr有5个元素,索引从0到4。
因此,数组arr的最后一个元素的索引是4。
4. 下面的代码段中,数组arr的长度是多少?int arr[10];```A. 0B. 5C. 10D. 11正确答案:C. 10解析:在这个代码段中,我们声明了一个长度为10的整型数组arr。
因此,数组arr的长度是10。
5. 下面的代码段中,数组arr的第一个元素的值是多少?```cint arr[5];```A. 0B. 1C. 未定义D. 随机值正确答案:C. 未定义解析:在这个代码段中,我们声明了一个长度为5的整型数组arr。
由于我们没有对数组进行初始化,因此数组arr的元素值是未定义的。
通过对这些常见的C语言数组笔试错题的解析,我们可以更好地理解和掌握C语言中数组的相关知识。
在以后的学习中,我们应该注意这些细节,避免在笔试中犯下类似的错误。
考研c语言考试题及答案
考研c语言考试题及答案一、选择题(每题2分,共10分)1. 下列关于C语言中变量的描述,错误的是:A. 变量必须先声明后使用B. 变量的声明可以放在函数内部C. 变量的声明必须放在函数的开始处D. 变量的声明可以放在语句中间答案:D2. 在C语言中,以下哪个选项不是合法的字符串常量?A. "Hello"B. 'Hello'C. "123"D. "C语言"答案:B3. 下列关于数组的描述,正确的是:A. 数组必须初始化B. 数组可以声明为局部变量C. 数组的大小在声明后不能改变D. 数组可以作为函数的参数答案:C4. 下列关于指针的描述,错误的是:A. 指针可以指向任何类型的数据B. 指针可以作为函数的参数C. 指针不能作为函数的返回值D. 指针可以指向另一个指针答案:C5. 下列关于函数的描述,错误的是:A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数可以递归调用D. 函数的参数可以是数组答案:B二、填空题(每题2分,共10分)1. 在C语言中,用于定义一个整型变量的关键字是_________。
答案:int2. 以下代码段的输出结果是_________。
```c#include <stdio.h>int main() {int a = 10;printf("%d", a++);return 0;}```答案:103. 在C语言中,用于定义一个字符型数组的声明语句是_________。
答案:char array_name[size];4. 以下代码段中,变量b的值是_________。
```cint a = 5, b;b = a;```答案:55. 在C语言中,用于声明一个指向整型数据的指针的语句是_________。
答案:int *p;三、简答题(每题5分,共10分)1. 请简述C语言中指针和数组的关系。
c语言易错题
当涉及到易错题时,以下是一些常见的C语言易错题及其解析:1. 下面代码的输出结果是什么?```c#include <stdio.h>int main() {int x = 5;printf("%d", x++);return 0;}```答案:该代码的输出结果是5。
这是因为`x++`是后置递增操作符,它会先使用变量的当前值,然后再将其递增。
2. 下面代码的输出结果是什么?```c#include <stdio.h>int main() {int x = 10;if (x = 5) {printf("Hello");} else {printf("World");}return 0;}```答案:该代码的输出结果是"Hello"。
这是因为在条件语句中使用了赋值操作符`=`而不是相等操作符`==`。
因此,表达式`x = 5`会将5赋值给变量x,并且由于赋值操作的结果为非零值,条件判断为真。
3. 下面代码的输出结果是什么?```c#include <stdio.h>int main() {char str[] = "Hello";printf("%c", str[5]);return 0;}```答案:该代码会导致未定义的行为。
数组下标从0开始计数,而`str`数组的长度为6(包括结尾的空字符'\0')。
因此,`str[5]`尝试访问越界的内存位置,导致未定义的行为。
这些是一些常见的C语言易错题,通过理解和注意这些概念,可以帮助避免在编写C 代码时出现常见的错误。
同时,建议在学习过程中多做练习题,加深对C语言的理解和运用。
C语言易错题分析解答
一、单项选择题(每小题2 分,共50 分)1、一个C 程序的执行是从___A__。
A、本程序的 main 函数开始,到 main 函数结束B、本程序的 main 函数开始,到本程序文件的最后一个函数结束C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序 main 函数结束2、C 语言程序的基本单位是___C___。
A、程序行B、语句C、函数D、字符3、请选出可用作 C 语言用户标识符的一组标识符___B___。
A、voidB、a3_b3C、ForD、2a define _123 -abc DO WORD IF asesizeof注:C语言用户标识符命名规则为:1.只能由字母、数值和下划线3种字符组成。
2.第一个字符必须是字母或下划线。
3.不能与C语言中的关键字或保留字相同。
B)中的IF 不合法,a3_b3 和 _123 都可以用作C语言用户标识符C) For和Case都是C语言中的关键字,而-abc有不合法的字符“-”4、假定 x 和 y 为 double 型,则表达式(x=2,y=x+5/2)的值是__C__ 。
A、4.500000B、4C、4.000000D、2.0000005、下列可以正确表示字符型常量的是___D__。
A、297B、"a"C、"\u005cn"D、'\t'注;字符型常量的十进制ASCII值0~255, 所以A错B,C加了双引号,都表示字符串常量D,是单引号,正确6、在 C 语言中,要求运算数必须是整型的运算符是__D__。
A、/B、++C、*=D、%注:. % -- 整除取余数运算,二个运算数必须是整型。
b. ++ -- 自增,非整型也允许自增。
7、C 语言中,复合语句的构成是将一系列语句置于__C__。
A、begin 与 end 之间B、方框号“[ ]”之间C、花括号“{ }”之间D、圆括号“( )”之间8、有如下程序段,对应正确的数据输入是___D___。
c语言 经典易错题
1. **问题:**```c#include <stdio.h>int main() {int x = 5;printf("%d", x++);return 0;}```**解析:**输出为5,因为后置递增操作符`x++`会先返回`x`的值,然后再将`x`的值加1。
2. **问题:**```c#include <stdio.h>int main() {int x = 5;printf("%d", ++x);return 0;}```**解析:**输出为6,因为前置递增操作符`++x`会先将`x`的值加1,然后返回加1后的值。
3. **问题:**```c#include <stdio.h>int main() {int x = 5;printf("%d", x++);printf("%d", x);return 0;}```**解析:**输出为56,因为第一个`printf`语句中的`x++`会先返回`x`的值(5),然后再将`x`的值加1,所以第一个`printf`输出5,第二个`printf`输出加1后的值6。
4. **问题:**```c#include <stdio.h>int main() {char ch;while (ch = getchar() != '\n') {putchar(ch);}return 0;}```**解析:**此循环将一直运行,即使输入了回车键。
原因是赋值操作符`=`的优先级低于不等于操作符`!=`,所以`getchar() != '\n'`会先执行,然后将结果赋给`ch`。
应该使用括号来明确优先级:`while ((ch = getchar()) != '\n')`。
5. **问题:**```c#include <stdio.h>int main() {char str[] = "Hello";printf("%c", str[5]);return 0;}```**解析:**会输出未定义的结果,因为数组`str`的有效索引是0到4,访问`str[5]`超出了数组的边界。
c语言常见笔试题
C语言常见笔试题
以下是一些常见的C语言笔试题,这些题目涵盖了基本的语法、数据类型、流程控制等方面。
请注意,这只是一小部分可能出现在C 语言笔试中的题目,实际的笔试可能会根据岗位的不同涵盖更广泛的主题。
基本语法:
编写一个程序,输出"Hello,World!"。
变量与数据类型:
声明一个整数变量并初始化为10,输出该变量的值。
运算符:
编写一个程序,计算并输出两个整数的和、差、积、商和余数。
条件语句:
编写一个程序,输入一个整数,判断它是否是正数、负数还是零,并输出相应的提示信息。
循环结构:
使用循环结构输出1到10的所有偶数。
数组:
声明一个整数数组,存储5个成绩,并计算平均值。
字符串处理:
编写一个程序,输入一个字符串,然后输出字符串的长度。
函数:
编写一个函数,接受两个整数参数,返回它们的和。
指针:
声明一个整数变量,然后声明一个指向该变量的指针,并通过指针修改变量的值。
结构体:
声明一个表示学生的结构体,包括学生的姓名、学号和成绩,并输出这些信息。
文件操作:
编写一个程序,打开一个文件,读取文件中的内容并输出到屏幕上。
这些问题涵盖了C语言中的一些基本概念,包括语法、数据类型、流程控制、函数、指针等。
在准备C语言笔试时,建议练习这些题目以熟悉常见的编程任务。
C语言易错点考点(完整版)
C语言易错点考点(完整版)总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch) 2)用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”;源程序经编译后生成后缀名为“.obj”的目标文件;再把目标文件与各种库函数连接起来,生成“.exe”的可执行文件。
3)main函数,又称主函数,每个C程序有且只有一个main函数;无论main函数在整个程序中的位置如何,程序总是从main函数开始执行、也从main函数结束。
读程序时应从main函数开始, 然后从上往下读(碰到循环做循环,碰到选择做选择)。
4)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 5)bit是位是指为0 或者1。
byte 是指字节, 一个字节 = 八个位. 6)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C 语言的一部分,不占运行时间,不要加分号。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数定义中不可以再定义函数、即不允许函数嵌套定义。
4、算法可以没有输入,必须要有输出。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
7、任意合法的表达式一定有一个数值与它对应。
第一章 1)C程序中对字母的大小写是敏感的,如A与a是不同的标识符。
注释:是对程序的说明,目的是提高程序的可读性,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,不允许嵌套注释。
3)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
C语言易错题集及易忘知识
C语言易错题集及易忘知识1.下面的程序运行后输出为【】。
main( ){ int a=-32769;ptintf("%8U\\n",a);}A) 32769 B) %8U C) 32767 D) -32767分析:格式字符必须小写,题中的"%8U"不会当作格式控制符,而是原样输出,变量a 将没有对应的格式说明,也不会送出。
本题正确答案为B。
2. ①八进制----> 十进制(31.5)(八)整数部分:3*8(1)+1*8(0)=25小数部分:5*8(-1)=0.625所以(31.5)(八)=(25.625)(十)②十六进制----> 十进制(19.A)(十六)整数部分:1*16(1)+9*16(0)=25小数部分:10*16(-1)=0.625所以(19.A)(十六)=(25.625)(十)3. 若执行下面程序段后的输出为:3,4,5,请填空。
int a,b=3,c=5;a=b<c?【3】:c++;printf("%d,%d,%d",a,b,c);分析:本题考查条件运算符和增量运算符的概念,题中b<C为真,应取B++的值给A,因B的值是先用后增1,所以A为3,题中的C++没有执行到,C保持原值。
4. 与其它高级语言相比,在C语言中赋值号并不是优先级最低的,C语言中优先级最低的运算符是逗号运算符。
5. C语言语句一行写不下时,可以【D 】。
A) 用逗号换行B) 用分号换行C) 用回车换行D) 在任意一空格处换行6. 表达式5%(-3)的值是2 ,表达式-5%(-3)的值是-2 。
分析:注意到%运算符只能两边为整数,且其作用是取余数,与正负无关,二%的优先级高于符号。
7. 在C语言中,格式输入库函数为scanf 格式输出库函数为printf 。
8. C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
计算机二级C语言易错知识点题型总结(word文档物超所值)
二叉树的性质:(1)二叉树的第i层上至多有2^(i-1)个节点(2)深度为k的二叉树至多有2^k-1个节点(3)对任意一棵二叉树,其度为0的节点数比度为2的节点数多1(4)具有n个节点的完全二叉树深度为以2为底n的对数再加1试卷3:栈支持子程序的调用注意程序中if语句中分号的位置,以前有题目分号位于第一个语句后,此处位于第二个语句处,易形成定性思维。
排除法经典例题不懂对switch语句的考察,最常见陷阱为一种情况结束后没有break语句,导致情况的贯穿性注意:在定义时未初始化的指针不能对其进行赋值函数调用结束后,static变量会保存数据,再次调用初值为上一次保存的值树结构随着层数的发展,树结构越大或不变,不会减小(呈倒三角结构)扇出为正三角,扇入为倒三角粗心易错题学号和课程号共同决定成绩,且两者之间不能互推,课程号与课程名两者可以互推,X与Y关系中必须为单向,Y与Z关系可以为双向所谓的结合性就是一种计算方式而已,而对于赋值运算符来说它是自右向左的,也就是说,是从‘=’后面算到前面去。
比如说,a=b=3,那就是说,3先赋给b,然后,再把b的值给a。
对于这个赋值运算符,不能出现这样的情况:a=b+7=3括号的优先级最高,高于加法运算符逗号运算符,c语言提供一种特殊的运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。
如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14,a=(a=3*5,a*4)的值是60,而(a=3*5,a*4)的值是60,a的值是15。
******************************************************************************* ******************************************************************************* ****************************************************************************。
c语言结构体易错题
c语言结构体易错题以下是一些C语言结构体易错题:1.结构体变量作为函数参数时是值传递还是地址传递?答:结构体变量作为函数参数时,默认情况下是值传递,即会复制一个新的结构体变量传递给函数。
如果想要通过地址传递结构体变量,需要使用指针。
2.结构体变量可以在定义时初始化吗?答:是的,结构体变量可以在定义时进行初始化。
例如:cstruct Student {char name[20];int age;};int main() {struct Student stu = {"Tom", 18};return0;}注意,如果结构体中包含指针类型的成员,则只能初始化指针本身,而不能初始化指针所指向的内容。
3.结构体数组中的每个元素都是结构体类型的数据吗?答:是的,结构体数组中的每个元素都是结构体类型的数据。
每个元素都包含结构体中定义的所有成员。
4.结构体类型变量的长度等于各成员长度之和吗?答:不一定。
结构体类型变量的长度可能会因为编译器对内存对齐的要求而大于各成员长度之和。
编译器为了提高内存的访问效率,可能会对结构体成员进行内存对齐,使得每个成员的起始地址都是某个数的倍数。
这样会导致结构体类型变量的长度大于各成员长度之和。
5.共用体类型和结构体类型有什么区别?答:共用体类型和结构体类型都可以包含多个成员,但是它们的使用方式不同。
结构体类型中的成员各自占用不同的内存空间,而共用体类型中的成员则共享同一块内存空间,即所有成员的首地址相同。
因此,共用体类型变量的长度等于最长的成员的长度。
需要注意的是,由于共用体类型中的成员共享内存空间,因此修改其中一个成员的值会影响其他成员的值。
在使用共用体类型时需要特别小心。
C语言错题汇总
练习11、在下数据输出的判断中,正确的是()。
int x=0xaffbc;printf(“%x”,x);A.赋值非法B.输出值不确定C.输出值为affbD.输出值为ffbc2、下列语句中,最正确的赋值语句是()。
A.a=7+b+c=a+7;B.a=7+b++=a+7;C.a=7+b,b++,a+7;D.a=(7+b,c=a+7);3、下列语句中正确的是()。
A.int x=y=z=0;B.int z=(x+y)++;C.x+=3= =2;D.x%=2.5;4、表达式a=(a=6,a*3,a+3);运行后。
则a的值为()。
A. 39B. 36C. 6D. 95、C语言的程序一行写不下时,可以()。
A. 用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行6、对于条件表达式(M)?(a++):(a--)来说,其中的表达式M等价于()。
A. M==0B. M==1C. M!=0D.M!=17、下列程序的输出结果是()。
main(){int x=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,5练习21、若x和y均为int型变量,则执行下面的循环后,y的值为()。
for(y=1,x=1;y<=5;y++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;}A.2B.4C.6 D82、在下列程序中,若要求a1,a2,c1,c2的值分别为10,20,A,B,正确的数据输入是()。
main(){int a1,a2;char c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,&c2);}A.1020AB<CR>B.10 20<CR>AB<CR>C.10 20 AB<CR>D.10 20AB<CR>3、下列程序段中所表示的逻辑关系是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51、有以下程序
#include <stdio.h>
void WriteStr(char *fn,char *str)
{ FILE *fp;
fp=fopen(fn,"w");
fputs(str,fp);
fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是______。
Start
End Y
startend
endrt
58、有以下程序
main()
{ int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p; p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是 8,7,7,8
59、有以下程序
int fun1(double a){return a*=a;}
int fun2(double x,double y)
{ double a=0,b=0;
a=fun1(x);b=fun1(y); return(int)(a+b);
}
main()
{double w;w=fun2(1.1,2.0);……} //定义w为double型
程序执行后变量w中的值是 5.0
14、若变量已正确定义并赋值,下面符合C语言的表达式是______。
a:=b+1
Ya=b=c+2
int 18.5%3
a=a+7=c+b
33、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
x=x*100+0.5/100.0;
x=(x*100+0.5)/100.0
x=(int)(x*100+0.5)/100.0; Y
x=(x/100+0.5)/100.0;
48、下列程序段的输出结果是______。
void fun(int *x,int *y)
{ printf("%d %d",*x,*y);*x=3;*y=4;} main()
{ int x=1,y=2;
fun(&y,&x);
printf(" %d %d",x,y);
}
2 1 4
3 Y
1 2 1 2
1 2 3 4
2 1 1 2。