1,B,因为s[1]=s[4]; 又因为s[4]是'0';所以字符中结束,所以就不显示以后的内容。
2,D,写成写成stu[1].name 是正确的。
3,这一题你理解得对
4,不是表达式,表达式应该有运算符。
5,这是一个选择排序法,每一次都从待排序队列中选出一个最小的值,插入(交换)到前面。
另外k=j是有条件的,如果在一趟查找过程中没有发现最小的值,也就是没有执行k=j,那k就等于
i; 这一句if(k!=i)是为了避免多余的交换。可以去掉,但就会多交换一次而已。
6,B
7,这个你看书上,有标准写法。
1 字符串是以0结束的,因为s[1] = s[4] = 0,所以s字符串只打印出了 "r"
2 %s是要输入一个指针地址,所以第二题我觉得应该选D,而不是你的C
3 你这里是不是打错了, i==8 是 false 的,一次循环都不执行。
4 我没看懂题目。
5 这里不好说。你自己静下心来,拿只笔,草稿纸,自己弄一个测试数组,每执行一次循环,写下数组*name[]的值,就就会明白它的具体流程。
6 A case语句里面不能给布尔值。B defualt: 只能在所以得case后面。C a是变量,不行。D正确
7
int aaa(int n)
{
int s = 1;
for(int i = 1; i <= n; i++)
{
s = i * s;
}
return s;
}
我只说些楼上两个意见不统一的
2 选B
printf("%s",&stu[1].name);printf("%s",stu[1].name);printf("%s",&stu[1].name[0);均可
name[0]表示此字符串的首地址 你试一下name[1]就明白了
3 应该是0次
6 选B default的位置是任意的 case后面的语句不能出现变量 而且类型必须是整形 字符型 或者枚举型