CSDN自测题——C语言(MAY 04,2014)

来源:互联网 发布:有钱人的生活知乎 编辑:程序博客网 时间:2024/06/09 17:40

C语言自测题:

有疑问的部分:


以下函数的功能是比较两个字符串s和t的大小,函数中应填入( )。
comp(char *s, char *t)
{
for (;*s==*t;________)
if (*s=='\0')
return(0);
return(*s-*t);
}
  • A. s++
  • B. t++
  • C. s++;t++
  • D. s++,t++
那*t == '\0' 怎么办?或者是因为*t==‘\0'时已经return *s - *t;了?不对!注意!网页上的源程序不便于阅读,一个return在for循环内,一个return是在循环之后,省略不写的esle就代表下一次循环了~!


下列程序可以打印出楼梯的形状,同时在楼梯上方打印两个笑脸。
#include "stdio.h"
main( )
{
int i,j;
printf("\1\1\n");
for(i=1;i<11;i++)
{

printf("%c%c",219,219);
②;
}
}
  • A. ①处代码为:for(j=1;j<=i;j++)
  • B. ①处代码为:for(j=1;j<11;j++)
  • C. ②处代码为:printf("\n")
  • D. ②处代码为:printf(" ")



#include<stdio.h>
void main()
{
long int i;
int count=0; /*count:统计满足条件的五位数的个数*/
for(i=1000;i<9999;i++)
① /*判断所选的数能否被3整除*/
count++; /*若满足条件则计数*/
printf("count=%d\\n",count);
}
下列说法正确的是( )。

  • A. ①处代码应为:if(!((i*10+6)%3))
  • B. ①处代码应为:if(!((i*10)%3))
  • C. 输出结果为:count=2999
  • D. 以上说法均不正确



关于结果的计算(当然打印出来简单,但是假设你没有编译器,只能口算):

因为尾数固定6,所以是1006、1016、1026、1036、1046、1056这样变化;

根据除以三的规律,大概三分之一符合标准,即1026、1056、1086这样类推,个位数不变,一直到9999.应该大约是三百次~!


但是忽略了一个细节,统计的是五位数,i 乘以10+6,i本身要循环9999-1000 = 8999次。

实际情况是1000×10+6或者9999×10+6,递推,规律为:

10006、10016、10026、10036......99986(不包含99996)

同样也是“跳二”原则,即:

10026、10056、10086......99966

这样九千除以三,为三千次,三千次刚好缺一次99996,剩下2999次。





结果,“错题”:


    • 下列程序可以打印出楼梯的形状,同时在楼梯上方打印两个笑脸。 #include "stdio.h" main( ) { int i,j; printf("\1\1\n"); for(i=1;i<11;i++) { ① printf("%c%c",219,219); ②; } }
    • A、①处代码为:for(j=1;j<=i;j++)
    • B、①处代码为:for(j=1;j<11;j++)
    • C、②处代码为:printf("\n")
    • D、②处代码为:printf(" ")
说我AC错了,应该为BD,首先,我不知道所谓笑脸是个什么东西,我用linux gcc可看不到笑脸,其次,楼梯是个什么概念?

BD你给我打印出来个楼梯看看?



    • 字符串”\\\”ABC”\\”的长度是( )。
    • A、11
    • B、8
    • C、5
    • D、3
    • C. 
    • 答题时长:8分27秒
    • 要求时长:20秒
说应该选B,我不知道这个怎么算的,感觉根本就不对,其实就是编译不出来











0 0
原创粉丝点击