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你给我打印出来个楼梯看看?
-
-
-
- C.
-
说应该选B,我不知道这个怎么算的,感觉根本就不对,其实就是编译不出来