第一周周任务解析

题引

纸质周任务主要是各种运算符以及其优先级
对于各种符号有一个大致的了解与应用
下列给出优先级表
优先级表

1.

题目:

已知 int x = 5, y = 5, z = 5; 执行语句x %= y + z后, x 的值为多少?

result :

5

解析:

按照优先级,首先运算y+z=10,再运算x%10=5

2.

题目:

下列程序运行结果为?

#include <stdio.h>
int main(){
	int a = 3, b = 3, c = 1;
	c = 5 ? a++: b--;
	
	printf("%d\n", c);
	return 0;
} 

result:

3

解析

这一题使用了三目运算符,可将其等价为:

if(c=5)c=a++else c=b--

c=5条件一定成立,所以c=a++,即c=3
输出3

3.

题目:

下面程序的运行结果是?

#include <stdio.h>
int main(){
	int a = 1,b = 10;
	do{
		b -= a;
		a++;
	}while(b-- < 0);
	
	printf("a = %d,b = %d\n",a,b);
} 

result:

a=2,b=3

解析:

这一题使用do-while语句
意思为:首先执行b-=a,a++;当b- - < 0时跳出循环,输出此时的a,b的值
注意一点,判断时为b- -<0,代表自减操作前的b进行判断
结果较为容易求出

4

题目:

下面程序段运行的结果是?

#include <stdio.h>
int main(){
	int x,y;
	for(y = 1; y < 10;){
		y=((x = 3 * y, x + 1), x - 1);
	}
	printf("x=%d, y=%d\n",x,y);
	
	return 0;
}

result:

x=15,y=14

解析:

这一题使用逗号表达式,并且要考虑优先级
即依次按逗号进行运算,取最后一个逗号后的表达式
此题先运算x=3*y,再运算x+1,最后运算x-1,并且将x-1的值赋给y
当y>=10时,跳出循环,输出x与y的值

5.

以下程序的输出结果是?

#include <stdio.h>
int main(){
	int x = 10,y = 10,i;
	for(i = 0; x > 8; y = ++i)
		printf("%d,%d",x--,y);
		
	return 0;
}

result:

10,109,1

解析:

这一题涉及for循环判断条件的应用
for循环结束条件为x>8,所以输出两组解
注意到两组解之间没有换行,所以结果如上,实际为10,10和9,1
注意使用++i与i++在for循环中,循环的次数不会发生改变
原因在于
无论是++i还是i++,都是在循环最后进行

6.

题目:

#include <stdio.h>
int main(){
	int i,sum;
	for(i = 1;i < 5; i++){
		sum += i;
	}
	printf("%d\n",sum);
	
	return 0;
}

result:

随机数

解析:

没有给sum初始化,sum的值为随机数

7.

题目:

已知 char a[] = “Beijing”; 则数组a所占的存储空间是几个字节?

result:

8

解析:

一个字母的存储空间为1字节
注意字符串末尾’/0‘同样为1字节

8.

题目:

当执行下面程序时,如果输入abc,则输出结果是?

#include <stdio.h>
#include <string.h>
int main(){
	char str[10] = "12345";
	gets(str);
	strcat(str,"def");
	printf("%s\n",str);
	
	return 0;
}

result:

abcdef

解析:

此题涉及gets输入字符串特点以及strcat(字符串连接)函数
通过gets输入abc覆盖了str数组之前的元素1
之后通过strcat函数将‘def’连接到新的str数组后面
之后输出str数组

9.

题目:

已知A的ASCII码值是65,并有如下定义:

#include <stdio.h>
struct person{
	char name[10];
	int age;
}classes[10] = {{"LiMing",29},{"HongGang",21},{"WangFang",22}};

下列表达式中,值为72的是__
A、 classes[0]->age + classes[1]->age + classes[2]->age
B、 classes[1].name[0]
C、 classes[1].name[5]
D、 classes -> name[5]

result:

B

解析:

A:->符号适用于结构体指针,代表指向结构体中的某个元素,所以A选项使用错误(非指针)
B:正确,结构体的第二项的name数组的第1个元素(H)的ASCll码值为72
C:结构体的第二项的name数组的第6个元素(a)的ASCII码值为97
D:代表**结构体的第一项的name数组的第6个元素(g),ASCII码值为103


  1. get通过指针导入,如果想覆盖部分,例如从第二个字符串开始覆盖,只需gets(str+1)
    strcat函数同样如此
    ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值