C语言题目(简单)

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:46:18
1.设char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()
A:9 B:5 C:6 D:7

2.下面程序段中,for循环的执行次数是()
char *s="\ta\018bc";
for( ;*s!='\0';s++) printf("*");

A:9 B:5 C:6 D:7

3.当运行以下程序时,从键盘输入:ab<回车>
c<回车>
def<回车>
则下面程序的运行结果是:( )
#include <stdio.h>
#define N6
main()
{ char c[N];
int i=0;
for( ;i<N;c[i]=getchar(),i++);
for(i=0;i<N;i++) putchar(c[i]);
}

A:abcdef B:a C:b D:ab
b c c
c d d
d
e
f

请告诉我为什么!

1)选C。\t表示Tab(table)键占1个字节,a占1个字节,\017是8进制数(\0开头的数)占1个字节,b和c各占1个字节,还有字符串结束标记'\0'(系统自动加上去的)也要占1个字节,共6个字节。
2)选C。和前面的题差不多的思路,没遇见'\0'结束标记时,'*'会一直打印。和前题的区别在于\017表示一个十进制数1*8+7=15;而这题的\018是2个数,因为8不是8进制数的数值(逢7进1,不存在8);所以\01是1占1个字节,8是占一个字节,所以这题不算字符串结束符'\0'的话,共6个字节,因此这题会循环6次,打印出6个'*'。
3)选D.首先由于循环的限制,在c[i]中只能存6个字符,通过输入c[i]中的值为:
c[0]=a;c[1]=b;c[2]=回车;c[3]=c;c[4]=回车;c[5]=d;因此通过printf最终打印出选项D。

首先纠正一个错误 #define N 6 (N与6要隔开)
应该输出:
ab
c
d
因为该数组只能存放六个字符,并一一打印。而回车也属于字符,因此也被存放在数组中,回车字符输出时的效应就是换行。