关于二级C语言的一些问题求教,谢谢!

28.
(28)有以下程序
#include <stdio.h>
#include <string.h>
main()
{ char str[][20]={"One*World","One*Dream!"},*p=str[1];
printf("%d,",strlen(p));
printf("%s\n",p);
}
程序运行后的输出结果是
A)9,One*World
B)9,One*Dream!
C)10,One*Dream!
D)10,One*World

A B C D
29.
(29)有以下程序
#include <stdio.h>
main()
{ int a[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:
switch(a[i]%2)
{ case 0:a[i]++;break;
case 1:a[i]--;
} break;
case 1:a[i]=0;
}
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");
}
程序运行后的输出结果是
A)3 3 4 4
B)2 0 5 0
C)3 0 4 0
D)0 3 0 4

A B C D
30.
(30)有以下程序
#include <stdio.h>
#include <string.h>
main()
{ char a[10]="abcd";
printf("%d,%d\n",strlen(a),sizeof(a));
}
程序运行后的输出结果是
A)7,4
B)4,10
C)8,8
D)10,10

A B C D
31.
(31)下面是有关C语言字符数组的描述,其中错误的是
A)不可以用赋值语句给字符数组名赋字符串
B)可以用输入语句把字符串整体输入给字符数组
C)字符数组中的内容不一定是字符串
D)字符数组只能存放字符串

A B C D
32.
(32)下列函数的功能是
fun(char *a,char *b)
{ while((*b=*a)!='\0'){a++;b++;} }
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有'\0'

A B C D
33.
(33)设有以下函数:
void fun(int n,char *s){……}
则下面对函数指针的定义和赋值均正确的是
A)void (*pf)(); pf=fun;
B)void *pf(); pf=fun;
C)void *pf(); *pf=fun;
D)void (*pf)(int,char);pf=&fun;

A B C D
34.(34)有以下程序
#include <stdio.h>
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行后的输出结果是
A)7
B)8
C)9
D)10

A B C D
35.
(35)有以下程序
#include <stdio.h>
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",s,t);
}
程序运行后的输出结果是
A)10,64
B)10,10
C)64,10
D)64,64
36.
(36)下面结构体的定义语句中,错误的是
A)struct ord {int x;int y;int z;};struct ord a;
B)struct ord {int x;int y;int z;} struct ord a;
C)struct ord {int x;int y;int z;} n;
D)struct {int x;int y;int z;} a;
37.(37)设有定义: char *c;以下选项中能够使字符型指针C正确指向一个字符串的是
A) char str[]="string";c=str;
B) scanf("%s",c);
C) c=getchar();
D) *c="string";
38.
(38)有以下程序
#include <stdio.h>
#include <string.h>
struct A
{ int a;char b[10];double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0};
a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(struct A t)
{ t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;return t;}
程序运行后的输出结果是
A)1001,ZhangDa,1098.0
B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0
D)1002,ChangRong,1202.0
39.
(39)有以下程序
int r=8;
printf("%d\n",r>>1);
输出结果是
A)16
B)8
C)4
D)2
我要的是过程。。谢谢大家!!!

1,选C. *p=str[1] 这表示 二维数组的的第二行元素,很容易就得第二行的长度是10 第二行的内容是“One*Dream!”
2,选C. i的第一次取值为0对2求余的0,switch(){case: }语句,也是循环语句,switch语句中的是条件,当条件满足case时执行case语句,在switch语句中又潜逃了一个switch语句和第一个判断条件一样,因此执行的是 a[i]++;语句 break跳出循环;后面的分析类似!
3, 选B strlen()计算的是字符的个数,sizeof()得出来的是数组占的内存,所以strlen(a)=4,sizeof(a)=10;
看看书上的定义,再做题会好点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-10
第一题*p=str[1],p指向二维数组的第二行One*dream!,One*dream!的长度为10,所以答案为c。
第二题switch结构为c
第三题a的长度为4,字符数组的长度为10.答案b。本回答被提问者和网友采纳
第2个回答  2011-03-11
你可以先照着书本看一下,自己想下着选哪个答案,再在VC上运行下(最好不要复制粘贴,有些是格式不对会出现错误,而源程序是没啥错误的,打程序的时候注意是中文简体-美式键盘),运行后看看是不是和自己选的答案一样,想想原理。其实打程序并运行成功它你会感觉和玩游戏一样很有征服感的!!哈哈!祝你在C语言的学习上一路顺风!!!
第3个回答  2011-03-10
……阁下不会直接用VC或者TC试一下么?……追问

我不是要结果,我是要过程。。

第4个回答  2011-03-13
答案太麻烦了吧,qq语音告诉你吧
相似回答