C语言错题集

本文列举并解析了C语言中的若干经典错误,包括结构体定义、逻辑判断、实参形参的理解、内存分配、算法结构及转义字符等方面,帮助初学者避免常见陷阱。
摘要由CSDN通过智能技术生成

1.定义结构体typedef struct one { int a;}s; s a;则a为结构体变量()
答案:正确
解析:s为结构体类型名,s a定义了a为一个结构体变量

2.表达式10!=9的值是true。 (F)
解析:在c语言中正确为1,错误为0;所以其值是 1

3.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( D)。

函数的实参和其对应的形参共占同一存储单元
形参只是形式上的存在,不占用具体存储单元
同名的实参和形参占同一存储单元
函数的形参和实参分别占用不同的存储单元

解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元,所以选D

4.变量a所占内存字节数是( D )。
union U
{char st[4];
int i;
long l;
};
struct A
{int c;
union U u;
}a;

A: 4
B: 5
C: 6
D: 8
解析:共用体所占字节数是里面的成员所占字节数相加,int 4个字节 ,union U u取最长4字节,所以a所占字节数为
4+4=8.

5.任何一个算法都必须有的基本结构是( A )

A: 顺序结构
B: 条件分支结构
C: 循环结构
D: 以上三个都要有
解析:根据算法的特点
如果在执行过程中,不需要分类讨论,则不需要有条件结构;
如果不需要重复执行某些操作,则不需要循环结构;
但任何一个算法都必须有顺序结构

6.以下错误的转义字符是(D)

A: ‘\’
B: ‘’’
C: ‘\t’
D: ‘\80’
解析:因为“\”后面使用数字表示字符ASCII值默认用的是8进制 用8自然是错的

7.以下程序输出结果是( B )

#include <stdio.h>
main()
{
static char a[]=“programe”;
char *p;
p=a;
for(p=a;p<a+8;p+=2)
putchar(*p);
}

A: programme
B: porm
C: 有语法错误
D: Prog
解析:p[0]=p,p[2]=o,p[4]=r,p[6]=m;
所以输出为 porm

8.假定所有变量均已正确说明,下列程序段运行后x的值是( B )。
a=b=c=0;x=35;
if(!a) x–;
else if(b) ; if© x=3;
else x=4;

/
A: 34
B: 4
C: 35
D: 3
解析:本题考查if else语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x–,得x=34;第二、三个if语句,判断条件,发现,b=0,c=0,则条件不成立,执行下列的else语句,得x=4。

9.已知 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=30
C: x=20,y=30,z=10 
D: x=20,y=30,z=20
解析:这个题有一个坑,那就是if语句没有假{},所以if只执行接下来的第一个分号之前的内容。
这里 x!=y,所以只执行x=y和y=z。

10.已有如下定义和输入语句,若要求a1,a2的值分别为10,20,正确的输入方式是(A)
int a1,a2;
scanf("%d%d",&a1,&a2);

A: 10 20
B: 1020
C: 10,20
D: 10;20
解析:整型之间输入要隔开,连在一起只会认为是一个整型数据

11.语句y=*p+

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值