(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是
A)scanf() B)getchar() C)gets() D)getc()
(37)下列选项中错误的说明语句是
A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′}; B)char a[]={"toyou\0"};
C)char a[]="toyou\0"; D)char a[]=′toyou\0′;
(38)以下程序的输出结果是
int f()
{ static int i=0;
int s=1;
s+=i; i++;
return s; }
main()
{ int i,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);}
A)20 B)24 C)25 D)15
(39)下列程序的输出结果是
#include "stdio.h"
#define M(x,y) x%y
main()
{ int a,m=12,n=100;
a=M(n,m);
printf("%d\n",a--);}
A)2 B)3 C)4 D)5
(40)假定当前盘符下有两个如下文本文件:
文件名 a1.txt a2.txt
内容 123# 321#
则下面程序段执行后的结果为
#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}
main()
{ FILE *fp;
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
fclose(fp);
putchar('\n');}
A)123321 B)123 C)321 D)以上答案都不正确
(36)C
【解析】本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。
(37)D
【解析】通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的'\0'是多余的,在C语言中,系统会自动在字符串的结尾处加上一个字符'\0'作为串的结束标记。
(38)D
【解析】函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。
(39)C
【解析】带参数的宏定义命令行形式如下: #define 宏名(形参表) 替换文本
在编译的时候编译预处理程序用"替换文本"来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。
(40)A
【解析】本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。