C语言char *p=“abcde/Ofghjik/0”;   printf(“%d/n”,strlen(p)); 10

char*p=“abcde/Ofghjik/0”;printf(“%d/n”,strlen(p));p为什么会是5;这5个字符分别是,,为什么谢谢的,下周要求证了... char *p=“abcde/Ofghjik/0”;
  printf(“%d/n”,strlen(p));
p为什么会是5 ;这5个字符分别是,,为什么
谢谢的,下周要求证了
展开
 我来答
陈学阳
2010-09-14 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5423万
展开全部
一、选择题((1)—(40)每题1分,(41)—(50)每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
  
(1) 在32位计算机中,一个字长所占的字节数为( )。
A) 1
B) 2
C) 4
D) 8
  
(2) 与十进制数511等值的十六进制数为( )。
A) 1FF
B) 2FF
C) 1FE
D) 2FE
  
(3) 能将高级语言编写的源程序转换成目标程序的是( )。
A) 编程程序
B) 编译程序
C) 解释程序
D) 链接程序
  
(4) 在计算机系统中,存储一个汉字的国标码所需要的字节数为( )。
A) 1
B) 2
C) 3
D) 4
  
(5) 下列带有通配符的文件名中,能表示文件ABC.TXT的是( )。
A) *BC.?
B) A?.*
C) ?BC.*
D) ?.?
  
(6) 在多媒体计算机系统中,不能用以存储多媒体信息的是( )。
A) 光缆
B) 软盘
C) 硬盘
D) 光盘
  
(7) DOS命令“COPY/?”的功能是( )。
A) 将当前盘当前目录中的所有文件复制到当前盘的根目录下
B) 将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下
C) 以提示方式复制文件
D) 显示COPY命令的帮助信息
  
(8) 在Windows环境下,若要将当前活动窗口存入剪贴板,则可以按( )。
A) Ctrl+PrintScreen键
B) Ctrl+PrintScreen键
C) Shift+PrintScreen键
D) PrintScreen键
  
(9) 在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是( )。
A) 将当前应用程序转为后台运行
B) 退出Windows后再关机
C) 退出Windows后重新启动计算机
D) 终止当前应用程序的运行
  
(10) 在Windows环境中,粘贴按钮是( )。
A) ctrl+A
B) ctrl+C
C) ctrl+X
D) ctrl+V
  
(11) 以下叙述中正确的是( )。
A) 构成C程序的基本单位是函数
B) 可以在一个函数中定义另一个函数
C) main()函数必须放在其它函数之前
D) 所有被调用的函数一定要在调用之前进行定义
  
(12) 以下选项中合法的实型常数是( )。
A) 5E2.0
B) E-3
C) .2E0
D) 1.3E
  
(13) 以下选项中合法的用户标识符是( )。
A) long
B) _2Test
C) 3Dmax
D) A.dat
  
(14) 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( )。
A) 字符A
B)字符a
C)字符e
D)非法的常量
  
(15) 以下非法的赋值语句是( )。
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;
  
(16) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A)6.500000
B)6
C) 5.500000
D) 6.000000
  
(17) 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( )。
A) scanf(“%2d%2d%2d”,&i,&j,&k);
B) scanf(“%d %d %d”,&i,&j,&k);
C) scanf(“%d,%d,%d”,&i,&j,&k);
D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
  
(18) 与数学式子 对应的C语言表达式是( )。
A) 3*x^n(2*x-1)
B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1))
D) 3*pow(n,x)/(2*x-1)
  
(19) 设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是( )。
A)printf(“x=%d\n”,x);
B) printf(“x=%1d\n”,x);
C)printf(“x=%8dL\n”,x);
D)printf(“x=%LD\n”,x);
  
(20) 若有以下程序:
  main()
  { int k=2,i=2,m;
  m=(k+=i*=k);printf(“%d,%d\n”,m,i);
  }
  执行后的输出结果是( )。
A) 8,6
B) 8,3
C) 6,4
D) 7,4
  
(21) 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是( )。
A) 6
B) 0
C) 2
D) 1
  
(22) 有一函数, ,以下程序段中不能根据x值正确计算出y值的是( )。
A) if(x>0) y=1; B) y=0;
   else if(x==0) y=0; if(x>0) y=1;
   else y=-1; else if(x<0) y=-1;
C)y=0; D)if(x>=0)
   if(x>=0); if(x>0) y=1;
   if(x>0) y=1 ; else y=0;
   else y=-1; else y=-1;
  
(23) 以下选项中,与k=n++完全等价的表达式是( )。
A) k=n,n=n+1
B) n=n+1,k=n
C) k=++n
D) k+=n+1
  
(24) 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
  main()
  { int n,k;
  float score ,sum,ave;
  sum=0.0;
  for(n=1;n<=10;n++)
  { for(k=1;k<=4;k++)
  
  ave=sum/4.0;
  printf(“NO%d:%f\n”,n,ave);
   }
  }
  上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( )。
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(“NO%d:%f\n”,n,ave);
  
(25) 有以下程序段
  int n=0,p;
  dowhile(p!=12345 &&n<3);
  此处do—while循环的结束条件是( )。
A) P的值不等于12345并且n的值小于3
B) P的值等于12345并且n的值大于等于3
C) P的值不等于12345或者n的值小于3
D) P的值等于12345或者n的值大于等于3
  
(26) 有以下程序
  main()
  { int a=15,b=21,m=0;
  switch(a%3)
  { case 0:m++;break;
  case 1:m++;
   switch(b%2)
  { default:m++;
  case 0:m++;break;
  }
  }
  printf(“%d\n”,m);
  }
   程序运行后的输出结果是( )。
A) 1
B) 2
C) 3
D) 4
  
(27) C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。
A) void
B) int
C) float
D) double
  
(28) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;
  
(29) 有以下程序
  float fun(int x,int y)
  
  main()
  { int a=2,b=5,c=8;
  printf(“%3.0f\n”,fun(int)fun(a+c,b),a-c));
  }
  程序运行后的输出结果是( )。
A) 编译出错
B) 9
C) 21
D) 9.0
  
(30) 有以下程序
  void fun(char *c,int d)
  { *c=*c+1;d=d+1;
  printf(“%c,%c,”,*c,d);
  }
  main()
  { char a=’A’,b=’a’;
  fun(&b,a); printf(“%c,%c\n”,a,b);
  }
  程序运行后的输出结果是( )。
A)B,a,B,a
B) a,B,a,B
C) A,b,A,b
D) b,B,A,b
  
(31) 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
  void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1,j
if(a[i]
}
main()
,i;
sort(&aa[3],5);
for(i=o;i<10;i++) print(“%d,”,aa[i]);
printf(‘\n”);
}
  程序运行后的输出结果是( )。
A)1,2,3,4,5,6,7,8,9,10
B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10
D) 1,2,10,9,8,7,6,5,4,3
  
(32) 有以下程序
  int f(int n)
  { if (n==1) return 1;
  else return f(n-1)+1;
  }
  main()
  { int i,j=0;
  for(i=i;i<3;i++) j+=f(i);
  printf(“%d\n”,j);
  }
  程序运行后的输出结果是( )。
A) 4
B) 3
C) 2
D) 1
  
(33) 有以下程序
  main()
  ; int i,j;
  i=sizeof(a); j=strlen(a);
  printf(“%d,%d\b”i,j);
  }
  程序运行后的输出结果是( )。
A)9,9
B)8,9
C)1,8
D)9,8
  
(34) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
  void reverse(int a[ ],int n)
  { int i,t;
  for(i=0;i  
  }
  main()
  ; int i,s=0;
   reverse(b,8);
   for(i=6;i<10;i++) s+=b[i];
   printf(“%d\n”,s);
  }
  程序运行后的输出结果是( )。
A) 22
B) 10
C) 34
D) 30
  
(35) 有以下程序
  main()
  ,,,};
  int i,s=0
  for(i=0;i<4;i++) s+=aa[i][1];
  printf(“%d\n”,s);
  }
  程序运行后的输出结果是( )。
A) 11
B) 19
C) 13
D) 20
  
(36) 有以下程序
  #include
  main()
  { char *p=“abcde\Ofghjik\0”;
  printf(“%d\n”,strlen(p));
  }
  程序运行后的输出结果是( )。
A) 12
B) 15
C) 6
D) 5
  
(37) 程序中头文件typel.h 的内容是:
  #define N 5
  #define M1 N*3
  程序如下:
  #define “type1.h”
  #define M2 N*2
  main()
  { int i;
  i=M1+M2; printf(“%d\n”,i);
  }
  程序编译后运行的输出结果是:( )。
A) 10
B) 20
C) 25
D) 30
  
(38) 有以下程序
  #include
  main()
  { FILE *fp; int i=20,j=30,k,n;
  fp=fopen(“d1.dat”“w”);
  fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j);
  fclose(fp);
  fp=fopen(“d1.dat”, “r”);
  fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%d\n”,k,n);
  fclose(fp);
  }
  程序运行后的输出结果是( )。
A) 20 30
B) 20 50
C) 30 50
D) 30 20
  
(39) 以下叙述中错误的是( )。
A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针

(40) 有以下程序
  #include
  main(int argc,char *argv[])
  { int i,len=0;
  for(i=1;i  printf(“%d\n”,len);
  }
  程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
  ex1 abcd efg 10<回车>
  则运行的结果是:( )。
A) 22
B) 17
C) 12
D) 9
  
(41) 有以下程序
  int fa(int x)
  
  int fb(int x)
  
  int f(int (*f1)(),int (*f2)(),int x)
  
  main()
  { int i;
  i=f(fa,fb,2); printf(“%d\n”,i);
  }
  程序运行后的输出结果是( )。
A) -4
B) 1
C) 4
D) 8
  
(42) 有以下程序
  int a=3;
  main()
  { int s=0;
  
  s+=a++;printf(“%d\n”,s);
  }
  程序运行后的输出结果是( )。
A) 8
B) 10
C) 7
D) 11
  
(43) 有以下程序
  void ss(char *s,char t)
  { while(*s)
  { if(*s==t) *s=t-‘a’+’A’;
   s++;
  }
  }
  main()
  { char str1[100]=“abcddfefdbd”,c=’d’;
  ss(str1,c); printf(“%s\n”,str1);
  }
  程序运行后的输出结果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd
  
(44) 有以下程序
  struct STU
  ;
  main()
  ,
  ,
  },*p=s;
  int i; float sum=0;
  for(i=0;i<3,i++)
  sum=sum+p->score[i];
  printf(“%6.2f\n”,sum);
  }
  程序运行后的输出结果是( )。
A) 260.00
B) 270.00
C) 280.00
D) 285.00
  
(45) 设有如下定义:
  struck sk
  { int a;
  float b;
  }data;
  int *p;
  若要使P指向data中的a域,正确的赋值语句是( )。
A) p=&a;
B) p=data.a;
C) p=&data.a;
D) *p=data.a;
  
(46) 有以下程序
  #include
  struct NODE
  ;
  main()
  { struct NODE *p,*Q,*R;
  p=(struct NODE*)malloc(sizeof(struct NODE));
  q=(struct NODE*)malloc(sizeof(struct NODE));
  r=(struct NODE*)malloc(sizeof(struct NODE));
  p->num=10; q->num=20; r->num=30;
  p->next=q;q->next=r;
  printf(“%d\n”,p->num+q->next->num);
  }
  程序运行后的输出结果是( )。
A) 10
B) 20
C) 30
D) 40
  
(47) 若有以下说明和定义
  typedef int *INTEGER;
  INTEGER p,*q;
  以下叙述正确的是( )。
A) P是int型变量
B) p是基类型为int的指针变量
C) q是基类型为int的指针变量
D) 程序中可用INTEGER代替int类型名
  
(48) 有以下程序
  main()
  { unsigned char a,b,c;
  a=0x3; b=a|0x8; c=b<<1;
  printf(“%d%d\n”,b,c);
  }
  程序运行后的输出结果是( )。
A) –11 12
B) –6 –13
C) 12 24
D) 11 22
  
(49) 有以下程序
  #include
  main()
  { char *p,*q;
  p=(char*)malloc(sizeof(char)*20); q=p;
  scanf(“%s%s”,p,q); printf(“%s%s\n”,p,q);
  }
  若从键盘输入:abc def<回车>,则输出结果是:( )。
A) def def
B) abc def
C) abc d
D) d d
  
(50) 以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
  #include
  void f(char p[][10],int n)
  { char t[20]; int i,j;
  for(i=0;i  for(j=i+1;j  if(strcmp(p[i],p[j])<0)
  
  }
  main()
  ;int i;
  f(p,5); printf(“%d\n”,strlen(p[0]));
  }
  程序运行后的输出结果是( )。
A) 6
B) 4
C) 5
D) 3
  
二、填空题(每空2分,共40分)
请将答案分别写在答题卡中序号为至的横线上,答在试卷上不得分。
  
1、计算机软件分为系统软件和应用软件,操作系统属于 [1] 。
  
2、在DOS环境下,代表键盘和显示器的设备文件名为 [2] 。
  
3、支持Internet基本服务的协议是 [3] 。
  
4、从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为 [4] 。
  
5、某微型机的运算速度为2MIPS,则该微型机每秒执行 [5] 条指令。
  
6、设有定义:int n,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
  scanf(“%d, ” [6] );
  printf(“%d\n”, [7] 。);
  
7、以下程序运行后的输出结果是 [8] 。
   main()
  { int x=10,y=20,t=0;
  if(x==y)t=x;x=y;y=t;
  printf(“%d,%d \n”,x,y);
  }
  
8、以下程序运行后的输出结果是 [9] 。
  main()
  { int x=15;
  while(x>10 && x<50)
  { x++;
  if(x/3)
  else continue;
  }
  printf(“%d\n”,x);
  }
  

9、有以下程序:
  #include
  main()
  { char c;
  while((c=getchar( ))!=’?’) putchar(--c);
  }
  程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为 [10] 。
  
10、以下程序运行后的输出结果是 [11] 。
  void fun(int x,int y)
  { x=x+y;y=x-y;x=x-y;
  printf(“%d,%d,”,x,y); }
  main()
  { int x=2,y=3;
  fun(x,y);
  printf(“%d,%d\n”,x,y);
  }
  
11、以下函数的功能是计算s=1+ + +……+ ,请填空。
  double fun(int n)
  { double s=0.0,fac=1.0; int i;
  for(i=1,i<=n;i++)
  { fac=fac [12] ;
  s=s+fac;
  }
  return s;
  }
  

12 fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。
  #include
  #define N 100
  int fun(int(*a)[N])
  { int row,col,max,min;
  for(row=0;row  { for(max=a[row][0],col=1;col  if( [13] )max=a[row][col];
   if( row==0)min=max;
   else if( [14] )min=max;
   }
  return min;
  }
  
13、函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
  #include
  int sstrcmp(char *s,char *t)
  { while(*s&&*t&& *s== [15] )
  
  return [16] ;
  }
  
14、下面程序的运行结果是 [17] 。
  #define N 10
  #define s(x) x*x
  #define f(x) (x*x)
  main()
  { int i1,i2;
  i1=1000/s(N); i2=1000/f(N);
  printf(“%d %d\n”,i1,i2);
  }
  
15、下面程序的运行结果是: [18] 。
  void swap(int *a,int *b)
  { int *t;
  t=a; a=b; b=t;
  }
  main()
  { int x=3,y=5,*p=&x,*q=&y;
  swap(p,q);
  printf(“%d%d\n”,*p,*q);
  }
  
16、下面程序的运行结果是: [19] 。
  typedef union student
  { char name[10];
  long sno;
  char sex;
  float score[4];
  }STU;
  main()
  { STU a[5];
  printf(“%d\n”,sizeof(a));
  }
  
(17) 函数sstrcmp()的功能是对两个字符串进行比较。当s 所指字符串和t所指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==)

return ;
}

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
九指无名
推荐于2018-03-28 · 超过24用户采纳过TA的回答
知道答主
回答量:136
采纳率:100%
帮助的人:32.3万
展开全部
应该是打错了、、/o是不是/0啊。o和0还是不一样的。。/0是结束符号,要是这样的话,那么五个字符就应该是abcde了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feiniao23
2010-09-13 · TA获得超过503个赞
知道答主
回答量:52
采纳率:0%
帮助的人:63.9万
展开全部
楼主 你应该把问题弄错了
字符串 "abcde/Ofghjik/0" 应该是"abcde\0fghijk\0"吧
对于strlen是读取字符串个数,碰到\0就结束
参考:
strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的长度,不是类型占内存的大小,strlen只能用char*做参数,且必须是以''\0''结尾的。
1、第二个元素就是\0 所以得到字符串长度为1
2、\t \v \\都是转义字符,为三个字符,后面又是\0,所以长度为3
3、\x69就是16进制的69,十进制为105,查看ASCII表对应字符,而\xxx指的是一个八进制值所对应字符,但是\082显示不是,八进制只有0-7的数字,所以这里只是一个\0 和数字 82 字符串长度为1
如果要获得每个数组中有多少个字符可以考虑用sizeof

参考资料: http://zhidao.baidu.com/question/180680452.html

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶小怜
2010-09-12 · TA获得超过408个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:259万
展开全部
这个字符串你打错了吧,再检查一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式