华拓科技网
您的当前位置:首页C语言习题6

C语言习题6

来源:华拓科技网
测试题6

下面的程序片断所表示的数学函数关系是A

y = -1;

if(x != 0) y = 1; if(x > 0) y = 1; else y = 0;

A、

B、

C、

D、

以下程序段的输出结果是C

int i, j, m = 0;

for(i = 1; i <= 15; i += 4) for(j = 3; j <= 19; j += 4) m++;

printf(“%d\\n”, m);

A、15 B、12 C、20 D、25

fgets(str,n,fp)函数从文件中读入一个字符串,以下正确的叙述是(D)。

A、字符串读入后不会自动加入'\\0' B、fgets函数将从文件中最多读入n个字符 C、fp是file类型的指针

D、fgets函数将从文件中最多读入n-1个字符

下面说明不正确的是(A)。

A、char a[10],*p;p=a=\"china\" B、char a[10],*p=a;p=\"china\" C、char *a;a=\"china\"; D、char a[10]=\"china\";

若有int m=7,n=4;float a=38.4,b=6.4,x;,则执行下列语句后x的值为(D)。 x=m/2+n*a/b+1/2;

A、27.500000 B、28.000000 C、28.500000 D、27.000000

C语言结构体类型变量在程序执行期间(C)。

A、部分成员驻留在内存中 B、只有一个成员驻留在内存中 C、所有成员一直驻留在内存中 D、没有成员驻留在内存中

char h,*s=&h;可将字符H通过指针存入变量h中的语句是(B)。

A、s='H' B、*s='H'; C、s=H; D、*s=H;

下面不正确的字符串常量是(B)。

A、\"0\" B、'abc' C、\"12'12\" D、\" \"

函数调用:strcat(strcpy(str1,str2),str3)的功能是(B)

A、将串str1复制到串str2中后再连接到串str3之后

B、将串str2复制到串str1中后再将串str3连接到串str1之后 C、将串str1连接到串str2之后再复制到串str3之后 D、将串str2连接到串str1之后再将串str1复制到串str3中

设有定义语句char c1=92, c2=92;,则以下表达式中值为零的是C

A、c1|c2 B、c1&c2 C、c1^c2 D、~c2

在一个C程序中(B)。

A、main函数必须出现在固定位置 B、main函数可以在任何地方出现 C、main函数必须出现在所有函数之前 D、main函数必须出现在所有函数之后

有以下程序段 int n=0,p;

do {

scanf(\"%d\n++;

}while(p!=12345&&n<3);

此处do-while循环的结束条件是__D____。

A、p的值等于12345并且n的值大于等于3 B、p的值不等于12345并且n的值小于3 C、p的值不等于12345或者n的值小于3 D、p的值等于12345或者n的值大于等于3

若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是D

A、a=b=c=100 B、d=(c=22)-(b++) C、d++ D、c+b

在C语言中,引用数组元素时,其数组下标的数据类型允许是(D)。

A、任何类型的表达式 B、整型常量 C、整型表达式

D、整型常量或整型表达式

以下程序的输出结果是A

void sub(int x, int y, int *z) { *z = y - x; } main()

{ int a, b, c;

sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf(“%d, %d, %d\\n”, a, b, c); }

A、-5, -12, -7 B、-5, -12, -17 C、5, -2, -7 D、5, 2, 3

C语言中的文件类型只有(A)。

A、ASCII文件和二进制文件两种 B、二进制文件一种 C、文本文件一种

D、索引文件和文本文件两种

为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定: else子句总是与(B)配对。

A、同一行上的if B、其之前最近的if C、其之后最近的if D、缩排位置相同的if

C语言的switch语句中case后B

A、可为任何量或表达式 B、只能为常量或常量表达式

C、可为常量或表达式或有确定值的变量及表达式 D、只能为常量

C语言程序中必须有的函数是(C)。

A、printf

B、#include \"stdio.h\" C、main D、scanf

C语言中运算对象必须是整型的运算符是(D)。

A、= B、/ C、〈= D、%=

已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是(C)。

A、语法错 B、0 C、1 D、\"假\"

若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是A

A、scanf(“%d%d%d”, &a,&b,&c); B、scanf(“%d%d%d”,a,b,c); C、read(a,b,c)

D、scnaf(“%D%D%D”,&a,&b,&C);

打开文件时,方式“w”决定了对文件进行的操作是(D)。

A、追加写盘 B、可读可写盘 C、只读盘 D、只写盘

sizeof(float)是(D)。

A、一个浮点表达式 B、一个不合法的表达式 C、一种函数调用 D、一个整型表达式

若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是D

A、scanf(%8.4f”, &c); B、scanf(%6.2f”, &c); C、scanf(%f”,c) D、scanf(%8f”, &c);

对 for(表达式1; ;表达式3) 可理解为(D)。

A、for(表达式1;表达式3;表达式3) B、for(表达式1;表达式1;表达式3) C、for(表达式1;0;表达式3)

D、for(表达式1;1;表达式3)

C语言中,double类型数据占(C)。

A、4个字节 B、1个字节 C、8个字节 D、2个字节

已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为(C)。 char a='a'; a--;

printf(\"%d,%c\\n\

A、98,c

B、格式描述和输出项不匹配,输出无定值 C、b,c

D、a--运算不合法,故有语法错

下述对C语言字符数组的描术中错误的是(C)

A、字符数组可以存放字符串

B、字符数组中的字符串可以整体输入、输出

C、可以在赋值语句中通过赋值运算符\"=\"对字符数组整体赋值 D、不可以用关系运算符对字符数组中的字符串进行比较

以下标识符中,不能作为合法的C用户定义标识符的是(D)。

A、IF B、_123 C、a3_b3 D、void

在Turbo C中,下面的定义和语句是合法的: file *fp;fp=fopen(\"a.txt\

int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列 的元素赋初值,其余元素值为0。Y

若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义, 所以此宏定义是错误的。N

关系运算符<= 与 == 的优先级相同。N 结构体类型只有一种。N

C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式.N

#define 和printf 都不是C语句。Y

在C语言中,语句str[3]='\\0'等价于str[3]=0.Y 若有定义和语句:

inta;charc;floatf;scanf(\"%d,%c,%f\若通过键盘输入:

10,A,12.5,则a=10,c='A',f=12.5.Y

typedef可以定义生成新的数据类型.N

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:对任意输入的 x,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10

------------------------------------------------*/

#include

void VV();

int fun(int n) {

/********** Begin **********/

/********** End ***********/ }

void main () { intx,y;

printf(\"enter x:\"); scanf(\"%d\ y=fun(x);

printf(\"x=%d,y=%d\\n\VV(); }

void VV() {

FILE *IN,*OUT; int i; intiIN; longintiOUT;

IN=fopen(\"in.dat\if(IN==NULL) {

printf(\"Please Verify The CurrerntDir..it May Be Changed\"); }

OUT=fopen(\"out.dat\if(OUT==NULL) {

printf(\"Please Verify The Current Dir.. it May Be Changed\"); }

for(i=0;i<5;i++) {

fscanf(IN,\"%d\iOUT=fun(iIN);

fprintf(OUT,\"%ld\\n\ }

fclose(IN); fclose(OUT); }

【参考代码】 int m; if(n<10) m=5; else

if(n==10) m=0; else m=-5; return m;

===============

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:将1~lim中所有能被3整除的数存放在aa数组中, 在函数中返回元素的个数。

------------------------------------------------*/

#include #include #define M 100

void TestFunc();

int fun(intlim,intaa[M]) {

/*********Begin**********/

/********** End **********/ }

main() {

intlimit,i,n; intaa[M];

printf(\"Please input ainteger:\"); scanf(\"%d\ n=fun(limit,aa);

for(i=0;iTestFunc(); }

voidTestFunc() {

inti,j,array[100],n,lim; FILE *rf, *wf ;

rf = fopen(\"in.dat\wf = fopen(\"out.dat\for (j=0; j <= 5; j++) {

fscanf(rf, \"%d\ n=fun(lim,array); for(i=0;ifprintf(wf, \"%7d\fprintf(wf, \"\\n\"); } fclose(rf); fclose(wf); }

【参考代码】 int n=0; int i;

for(i=1;i<=lim;i++)

if(i%3==0) aa[n++]=i; return n;

===============

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:求出数组中最大数和次最大数,并把最大数和a[0]中的数 对调、次最大数和a[1]中的数对调。

------------------------------------------------------*/

#include #include #define N 20

int fun ( int * a, int n ) {

int i, m, t, k ; for(i=0;i<2;i++) {

/**********ERROR**********/ m=0;

/**********ERROR**********/ for(k=1;k/**********ERROR**********/ if(a[k]>a[m]) k=m;

t=a[i];a[i]=a[m];a[m]=t; } }

main( ) {

int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i; clrscr( );

for ( i=0; ifor ( i=0; i}

【改错1】 错误 【学生答案】 m=0;

【参】 m=i;

============================================================

【改错2】 错误 【学生答案】 for(k=1;k【参】 for(k=i;k============================================================

【改错3】 错误 【学生答案】 if(a[k]>a[m]) k=m;

【参】 if(a[k]>a[m]) m=k;

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

题目:任意输入一个字符,如果是小写字母以大写字母输出, 是大写字母以小写字母输出;否则,按原样输出。 程序有4条错误语句,请改正错误。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include main()

{

charch;

printf(\"Enter ch:\");

/**********ERROR**********/ ch=getchar(r);

/**********ERROR**********/ if(ch>=a&&ch<=z) putchar(ch-32);

/**********ERROR**********/ else if(ch>=A&&ch<=Z) putchar(ch+32);

/**********ERROR**********/ elseputchar(); }

【改错1】 错误 【学生答案】 ch=getchar(r);

【参】 ch=getchar();

============================================================

【改错2】 错误 【学生答案】

if(ch>=a&&ch<=z)

【参】 if(ch>=97&&ch<=122) if(ch>='a'&&ch<='z')

============================================================

【改错3】 错误 【学生答案】

else if(ch>=A&&ch<=Z)

【参】

else if(ch>='A'&&ch<='Z') else if(ch>=65&&ch<=90)

============================================================

【改错4】 错误 【学生答案】 elseputchar();

【参】 elseputchar(ch);

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:打印出如下图案(菱形) * *** ***** ******* ***** *** *

-------------------------------------------------------*/

#include main() {

inti,j,k;

/**********FILL**********/ for(i=0;_____;i++) {

for(j=0;j<=4-i;j++) printf(\" \");

/**********FILL**********/ for(k=1;k<=_____;k++) printf(\"*\"); printf(\"\\n\"); }

/**********FILL**********/ for(_____;j<3;j++) {

for(k=0;kprintf(\" \");

for(k=0;k<5-2*j;k++) printf(\"*\"); printf(\"\\n\"); } }

【空1】 错误 【学生答案】 for(i=0;_____;i++)

【参】 i<=3 i<4 3>=i 4>i

============================================================

【空2】 错误 【学生答案】

for(k=1;k<=_____;k++)

【参】 2*i+1 i*2+1 1+2*i 1+i*2

============================================================

【空3】 错误 【学生答案】 for(_____;j<3;j++)

【参】 j=0

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:编写程序,输出 1000 以内的所有完数及其因子。 说明:所谓完数是指一个整数的值等于它的因子之和。 例如“ 6 的因子是 1 、 2 、 3 ,而 6=1+2+3 ,故 6 是 一个完数。

-------------------------------------------------------*/

#include

main() {

int i,j,m,s,k,a[100] ; for(i=1 ; i<=1000 ; i++ ) {

m=i ; s=0 ; k=0 ; for(j=1 ; j/**********FILL**********/

if(_____) {

s=s+j ;

/**********FILL**********/ _____=j ; }

if(s!=0&&s==m) {

/**********FILL**********/

for(j=0 ; _____ ; j++) printf(\"%4d\printf(\" =%4d\\n\ } } }

【空1】 错误 【学生答案】

if(_____)

【参】 m%j==0

============================================================

【空2】 错误

【学生答案】 _____=j ;

【参】 a[k++]

============================================================

【空3】 错误 【学生答案】

for(j=0 ; _____ ; j++)

【参】 jj

因篇幅问题不能全部显示,请点此查看更多更全内容