C语言作业题(3)

本文提供了一系列C语言填空题和编程题,涵盖了数组、指针、字符串、结构体、循环、内存管理等多个方面,适合C语言学习者进行练习和巩固知识。
摘要由CSDN通过智能技术生成

PS:机器运行环境32位系统。
一、 填空题:
1、 执行一下程序,while循环执行次数()(1分)。 int k = 0; while (!(k = 1)) {k++}

!(k=1)结果为0,不进入循环

2、 有定义:char p[] = {‘a’, ‘b’, ‘c’}, *q = p; 在下面找出一个不能计算出char型数据所占字节数的表达式是()(1分)。
sizeof(p) sizeof(char) sizeof(*q) sizeof(p[0])

sizeof(p)是数组的大小

3、 若定义:int a[9], *p = a; 不能表示a[1]地址表达式的是()(1分)。
p + 1 a + 1 a++ ++p

数组名a不能做左值

4、 (2分)改错:从指定的字符串中删除指定的字符,同一字母的大小写按不同的字符处理。
void func(char p[], char c)
{
int i , j;
for (i=0; p[i]==’\0’; i++)
{
if (c != p[i])
{
p[j++] = p[i];
}
}
}

j未初始化
p[j]=’\0’;
p[i]!=’\0’

5、 (4分)在一个32位的计算机中,计算下面的值。
void main(void)
{
struct
{
char c;
int a;
char b;
}B;
char *s1 = “0123456789”;
char s2[] = “0123456789”;
char s3[100] = “0123456789”;
int s4[100];
char q1[] = “abc”;
char q2[] = “a\n”;
char *q3 = “a\n”;
int len1 = sizeof(s1); //4,指针
int len2 = sizeof(s2);//11
int len3 = sizeof(s3);//100
int len4 = sizeof(s4);//400
int len5 = sizeof(q1);//4
int len6 = sizeof(q2);//3
int len7 = sizeof(q3);//4
int len8= sizeof(B);//12
}

6 (2分)int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。写出下面程序的运算结果().

每次置一个二进制的一为零,9999的二进制是0010 1110 0000 1111,所以一共执行八次

7、(4分)int a[5] = {1, 3, 5, 7, 9};
int *p1 = a + 1;
int p2 = (int )(&a + 2);

printf(“%d.\n”, *(p1+1));//5
printf(“%d.\n”, *p1++);//3
printf(“%d.\n”, ++(*p1));//6
printf(“%d.\n”, *(p2-8)); //6

8、(3分)(1)、func(char *a){} 解释:传递的是字符串首元素的地址。
(2)、func(char a[]){} 解释:传递的是数组首元素的地址。
(3)、func(char a[8]){} 解释:传递的是数组首元素的地址。

9、(3分)分别写出int,float,指针类型的变量a 与“零”的比较语句。
int a ==0;
float if(a>-0.000001&&a<0.000001)
int *a == NULL;

10、(2分)下面代码输出什么,为什么?
void func(void)
{
unsigned int a = 6;
char b = -20;
if (a + b > 6)
{
printf(“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值