一些C语言的简单问题,期末考在即,望各位不吝赐教啊~ 10

1.定义chars[]={"Girl"},t;执行下面语句段后输出结果是()。s[0]=s[2];s[2]=s[0];s[1]=s[4];s[4]=s[1];printf... 1 . 定义char s[
]={"Girl"},t; 执行下面语句段后输出结果是( )。 s[0]=s[2]; s[2]=s[0]; s[1]=s[4]; s[4]=s[1];
printf("%c,%s \n", s[0], s); A、r,Girl B、r,r C、r,lirG D、r,Gril
【第二个输出的不应该是字符串“rlrl”吗,为什么选B呢?】
2 若有以下定义语句: struct student { int num; char name[9]; }stu[2]={1,
"zhangsan",2, "lisi"}; 则以下能输出字符串“lisi”的语句是( )。 A.printf("%s",stu[0].name);
B.printf("%s",&stu[1].name); C.printf("%s",stu[1].name[0]);
D.printf("%s",&stu[1].name[0]);
【排除ABD后,C选项中的stu[1].name[0]没有问题么,是不是应写成stu[1].name 呢?】有一道类似的题是: 若有以下结构体数组的定义语句:
struct teacher { int num; char name[10];}thr[2]={1,”zhangsan”,2,”lisi”}
则以下能输出字符串”lisi”的语句是()   A、 printf(“%s”,thr[0].name); B、
printf(“%s”,thr[1].name); C、 printf(“%s”,thr[0].name[0]) ; D、
printf(“%s”,thr[1].name[0]); 【答案是B而不是D,怎么理解呢?】
3、判断下面while循环体的执行次数( ) i=0; k=10; while(i==8) i=k--; A、1次 B、2次
C、8次 D、无数次【为什么是1次呢?while()的条件不符合不是一次都不执行循环体么? 如果题目改为while(i=8) i=k--;是不是应选D呢?】
4、如果x是整形变量,"7.0"、"x"是不是表达式呢,为什么?
5、函数 void sort (char
*name[],int n) { char * temp; int i,j,k; for(i=0;i<n-1;i++) { k=i;
for(j=i+1;j<n;j++) if(strcmp(name[k],name[j])>0) k=j; if(k!=i) {
temp=name[i]; name[i]=name[k]; name[k]=temp; } } } 【是从大到小排列排列,它的具体流程如何呢?
还有if(k!=i)起什么作用呢?前面的for语句里已有了j=i+1,又k=j,所以k一定不等于i,那么if(k!=i)能不能去掉呢?】
6、假设变量x、k都已定义,下列语句片段中,无语法错误的是( )。
A、switch(x) { case x<15: putchar('A'); case x>30: putchar('E'); }
B、switch(x) { case 3+2: a='A'; defualt: a='E'; case 1*3: a='B'; } C、switch(x) {
case 1+a: k=x-2; case 5*a: k=x+3; default: k=0; } D、switch(x) { case 3.5:
k=0.5*x; case 7.8: k=8*x; default: k=0; }
7、编写程序,输入n,求下列级数和,其中n!用函数实现。
展开
 我来答
zhjiemm
2013-01-13 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:709万
展开全部
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,这个你看书上,有标准写法。
weaselpp
2013-01-12 · TA获得超过612个赞
知道小有建树答主
回答量:381
采纳率:33%
帮助的人:330万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mutabu
2013-01-14
知道答主
回答量:2
采纳率:0%
帮助的人:3044
展开全部
我只说些楼上两个意见不统一的
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后面的语句不能出现变量 而且类型必须是整形 字符型 或者枚举型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式