第一篇:模拟题c语言答案
此答案为自己所出,若有不对之处请谅解,并希望能留言
单选题(共60题,每题1分,共60分)1.下列符号串中,属于C语言合法标识符的个数为(B)。
_1_2_3,a-b-c,float,9cd,a3b4
A:1
B:2
C:3
D:4 2.下列能为字符变量 a 赋值的是:char a=(C)。
A:'ab'
B:“a”
C:' '
D:“ ” 3.在下列字符序列中,合法的标识符是(B)。
A:P12.a
B:stud_100
C:$water.1
D:88sum 4.下列用于printf函数的控制字符常量中,代表tab的字符常量是(B)。
A:'b'
B:'t'
C:'r'
D:'f' 5.下列用于printf函数的控制字符常量中,代表退格的字符常量是(A)。
A:'b'
B:'t'
C:'r'
D:'n' 6.如有以下程序:unsigned int a=6;int b=-20;char c;c=(a+b>6);则c的值为(C)。(int转换为unsigned)
A:6
B:-14
C:1
D:0 7.关于C语言,以下不正确的叙述是(B)。
A:在C语言程序设计中,逗号运算符的优先级最低
B:在C语言程序设计中,var和VAR是两个相
同的变量
C:C语言也支持重载
D:此处的两个语句int a;a=-13.06;在程序编译中将会提示出错 8.若有定义: int a=2,*p;float x=1, y=2;char e=‘w’;
则以下用法不正确的是(B)。
A:printf(“%c”,e+a);
B:p=&x;
C:a *=y+x;
D:x=y=e;9.int x=20;printf(“%dn”,~x);以上程序片段的输出是(B)。
A:235
B:-21
C:-20
D:-11 10.在C语言中,要求运算数必须是整型的运算符是(D)。
A:/
B:++
C:!=
D:% 11.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(结果保留两位小数)(A)。
A:2.50
B:2.75
C:3.50
D:0.00 12.以下运算符中优先级最低的是(C)。
A:&&(第三)
B:&(第一)
C:||(第四)
D:|(第二)
13.设有定义语句:char c1=1,c2=1;,则以下表达式中值为零的是(A)。
A:c1^c2
B:c1&c2
C:~c2
D:c1|c2 14.以下程序的输出结果是
#include
unsigned char a,b;
a=0x0a|3;
b=0x0a&3;
printf(“%d %dn”,a,b);}(B)。
A:2 11
B:11 2
C:7 13
D:13 7 15.如果int i = 4, 则printf(“%d”,-i--)结果是__,i的值是。(A)
A:-4 3
B:-3 3
C:-3 4
D:-4 4 16.若x=2,y=3则x&y的结果是(B)。
A:1
B:2
C:3 的输出
D:5 17.下列程序的输出是(B)。main(){int x;printf(“%dn”,(x=3*5,x*2,x+10));}
A:15
B:25
C:30
D:40 18.若x,i,j和k都是int型变量,则计算下面表达式后,x的值为(C)。x=(i=4,j=16,k=32)
A:4
B:16
C:32
D:其他值
19.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)。
A:7
B:8
C:6
D:2
20.以下程序运行后的输出结果是(A)。main(){int a,b;a=50;b=90;printf(“%dn”,(a,b));}
A:90
B:50 90
C:50
D:其他
21.以下程序的运行结果是(A)。void main(){
int a=4;char ch=‘a’;
printf(“%dn”,(a&2)&&(ch>‘A’));}
A:0
B:1
C:2
D:3 22.以下程序的输出是(D)。#include
main()
{ int i,j=4;
for(i=j;i<=2*j;i++)switch(i/j){ case 0 :
case 1: printf(“*”);break;
case 2: printf(“#”);break;} }
A:*###
B:**##
C:***#
D:****# 23.有如下程序片段: int i = 0;while(i++ <= 2);printf(“%d”, i--);则正确的执行结果是(C)。
A:2
B:3
C:4
D:以上都不是 24.有以下程序段 main(){ int i=1,sum=0,n;
scanf(“%d”,&n);do { i+=2;sum+=i;}while(i!=n);printf(“%d”,sum);} 若使程序的输出值为15,则应该从键盘输入的n的值是(D)。
A:1
B:3
C:5
D:7 25.以下程序的输出是(A)。
#include
int a=10;
p=&a;
++a;} void main(){
int a=5;
fun(&a);
printf(“%dn”,a);}
A:5
B:6
C:10
D:11 26.以下关于函数的说法中正确的是(C)。
A:定义函数时,形参类型说明可放在函数体内
B:return语句后边的值不能为表达式
C:如果函数类型与返回值类型不一致,以函数类型为准
D:如果形参与实参的类型不一致,以实参为准
27.已知有定义:int *p();则以下说法正确的是(C)。
A:指向int型的指针变量
B:int型的指针数组
C:一个函数,该函数的返回值是指向int型的指针变量
D:一个指向函数的指针变量,该函数的返回值为int型
28.若有如下程序: void s(char *m,int n){
*m=*m+3;n=n+3;
printf(“%c,%c,”,*m,n);} void main(){
char p=‘b’,q=‘B’;
s(&q,p);
printf(“%c,%cn”,p,q);}则程序运行后的输出结果是(A)。
A:E,e,b,E
B:e,E,b,F
C:E,e,e,E
D:e,E,b,E 29.C语言规定函数返回值的类型由(A)。
A:在定义时所指定的函数类型所决定
B:调用该函数时的主调函数类型所决定
C:return语句中的表达式类型所决定
D:调用该函数时系统临时决定
30.要在c语言中求正弦30度的值,可以调用库函数,可用格式为(D)。
A:sin(30)
B:sin(30.0)
C:sin((double)30)
D:sin(3.1415/6)31.在C语言程序设计中,简单变量作为实参时,它和对应形参之间的数据的传递方式是(B)。
A:地址传递
B:单向值传递
C:由实参传给形参,再由形参传给实参
D:由用户指定传递方式 32.以下程序的输出为(C)。int a=2;int f(int *a)
{
return(*a)++;} void main(){
int s=0;
{int a=5;
s+=f(&a);
}
s+=f(&a);
printf(“%d %dn”,a,s);}
A:2 7
B:2 10
C:3 7
D:3 11 33.以下程序输出结果是(D)。#include
return(a);} void main(){ int *p,j;p=NULL;p=fun();for(j=0;j<4;j++){printf(“%dn”,*p);p++;} }
A:输出0 0 0 0
B:输出0 1 2 3
C:输出1 1 1 1
D:输出不确定值 34.以下程序的运行结果是(D)。void fun(int *n){
static int m=2;
*n*=m-1;m+=2;} void main(){
static int m=1;
int i;
for(i=1;i<4;i++)
fun(&m);
printf(“%dn”,m);}
A:8
B:10
C:11
D:15 35.下面对typedef的叙述中不正确的是(B)。
A:用typedef可以定义各种类型名,但不能用来定义变量
B:typedef和#define都是在预编译时处理的
C:用typedef只是将已存在的类型用一个新的标识符来代表
D:使用typedef有利于程序的通用和移植 36.要使用内存分配函数malloc,需要引入的头文件是(BC)。
A:stdio.h
B:stdlib.h
C:malloc.h
D:memory.h
37.以下宏定义中,不会引起二义性的宏个数为(A)。1)#define POWER(x)x*x 2)#define POWER(x)(x)*(x)3)#define POWER(x)(x*x)4)#define POWER(x)((x)*(x))(没有二义性)
A:1个
B:2个
C:3个
D:4个
38.若有二维数组定义语句:int a[4][5];则下面对元素a[2][3]不正确的引用方式是(B)。
A:*(&a[2][3])
B:*(a+5*2+3)可以换为(&a[0][0]+5*2+3)
C:*(a[2]+3)
D:*(*(a+2)+3)39.若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为(B)。(不知怎么下面是m,应该是n把,不清楚!)
A:j*m+i
B:i*m+j
C:i*m+j-1
D:j*m+i-1
40.有字符数组a[10]={‘A’,‘ ’}和b[10]={‘B’},则以下正确的输出语句是(D)。
A:puts(a,b);
B:printf(“%s %sn”,a[],b[]);
C:putchar(a,b);
D:puts(a);puts(b);41.下列程序的输出结果是(D)。#include
char p1[20]=“abcd”,p2[20]=“ABCD”;
char str[50]=“xyz”;
strcpy(str+2,strcat(p1+2,p2+1));
printf(“%sn”,str);}
A:xyabcAB
B:abcABz
C:Ababcz
D:xycdBCD 42.以下程序执行后输出结果是(C)。void main()
{
char a[]=“movie”,b[10]=“movie”;
printf(“%d %dn”,sizeof(a),sizeof(b));}
A:5 5
B:6 6
C:6 10
D:10 10 43.以下程序的输出结果是(A)。void main(){
char *p[10]={“abc”,“aabdfg”,“dcdbe”,“abbd”,“cd”};
printf(“%dn”,strlen(p[4]));}
A:2
B:3
C:4
D:编译出错 44.已知有以下的说明,int a[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a[3])]的值为(B)。
A:5
B:0
C:4
D:7 45.以下程序输出结果是(B)。#include
int a[2][2]={1,2,3,4},(*p)[2];
p=a;
p++;
printf(“%dn”,**p);}
A:2
B:3
C:4
D:以上都不对
46.设char ch,str[4],*strp;,则正确的赋值语句是(C)。
A:ch=“CBA”;
B:str=“CBA”;
C:strp=“CBA”;
D:*strp=“CBA”;47.下面程序的运行结果是(C)。#include A:7654321 B:1714171 C:1711717 D:7177171 48.以下程序的输出是(C)。#include main(){ char a[]=“language”,*p;p=a;while(*p!=‘u’){ printf(“%c”,*p-‘u’+‘U’);p++;} } A:LANGUAGE B:language C:LANG D:LANGuage 49.struct s1 { char a[3]; int num;}t={‘a’,‘b’,‘x’,4},*p;p=&t;则输出为x的语句是(B)。 A:printf(“%cn”,p->t.a[2]); B:printf(“%cn”,(*p).a[2]) C:printf(“%cn”,p->a[3]); D:printf(“%cn”,(*p).t.a[2]); 50.以下程序的输出是(D)。#include struct st {int x; int y; }cnum[2]={1,3,2,7}; printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x);} A:0 B:1 C:3 D:6 51.以下对age的非法引用是(B)。struct student {int age; int num;}stu1,*p;p=&stu1; A:stu1.age B:student.age C:p->age D:(*p).age 52.以下程序的输出是(B)。#include A:4 B:5 C:6 D:0 53.若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式字符串应是(C)。 A:“ab+” B:“rb+” C:“wb+” D:“ab” 54.若执行fopen函数时发生错误,则函数的返回值是(B)。 A:地址值 B:0 C:1 D:EOF 55.要打开文件c:usertext.txt用于追加数据,正确的语句是(C)。 A:fp=fopen(“c:turboc2abc.txt”,“r”); B:fp=fopen(“c: urboc2abc.txt”,“r”); C:fp=fopen(“c: urboc2abc.txt”,“a+”); D:fp=fopen(“c:turboc2abc.txt”,“a+”);56.在执行fopen函数时,ferror函数的初值是(D)。 A:TRUE B:-1 C:1 D:0 57.#include char * s1=“Hello”,*s2=“Beijing”; FILE *pf=fopen(“abc.dat”,“wb+”); fwrite(s2,7,1,pf); fseek(pf,-1,SEEK_CUR); fwrite(s1,5,1,pf); fclose(pf);} 以上程序执行后,文件abc.dat中的内容为(C)。 A:Hellong B:Beijing Hello C:BeijinHello D:Hello 58.若fp为文件指针,且文件已正确打开,i为整型数据,以下语句的输出结果是(B)。fseek(fp,0,SEEK_END);i=ftell(fp);printf(“i=%dn”,i); A:fp所指的文件记录长度 B:fp所指的文件长度,以字节为单位 C:fp所指的文件长度,以比特为单位 D:fp所指的文件当前位置,以字节为单位 59.函数调用语句:fseek(fp,-20L,2);的含义是(C)。 A:将文件位置指针移到距离文件头20个字节处 B:将文件位置指针从当前位置向后移动20个字节 C:将文件位置指针从文件末尾处后退20个字节 D:将文件位置指针移到离当前位置20个字节处 60.若将文件指针的读写位置指针移动到距离文件头200个字节的位置,对应正确的操作是(A)。 A:fseek(fp, 200, SEEK_SET) B:fseek(fp, 200, SEEK_CUR) C:fseek(fp, 200, SEEK_END) D:ftell(200) 1. C语言源程序的基本单位是(函数) 2. 若有以下数组a,数组元素:a[0]~a[9],其值为 4 12 8 2 10 7 5 1 改数组中下标最小的元素名字是() 3. 按内存排列顺序,数组char a[2]中的所有元素是a[1]和(a[0])4. 设x=5〉1+2,x的值为()5. 设有以下定义的语句: int a[3][2]={10,20,30,40,50,60},(*p)[2];p=a;则*(*(p+2)+1)值为(60)6. 调用fopen函数打开一文本文件,在使用方式这一项中,为输出而打开需填入(w或w+)7. 执行下列语句后,*(p+1)的值是(b) char s[3]=”ab”,*p;P=s;8. 函数的(递归)调用时一个函数直接或间接地调用它自身 9. Int x;x=-3+4%-5*3,则x的值是(9)10. 当a=3,b=2,c=1;时,执行以下程序后c=(2)if(a>b)a=b;if(b>c)b=c;else c=b;c=a;判断 1.一个include命令可以指定多个被包含的文件 错 2.若有定义和语句:int a;char c;float f;scanf(“%d,%c,%f””,&a,&c,&f);若通过键盘输入:10,A,12.5,则a=10,c=”A”,f=12.5 对 3.进行宏定义时,宏名必须使用大写字母表示 错 4.整数-32100可以赋值给int型和long int 型变量 对 5.在程序中定义了一个结构类型后,可以多次用它来定义具有该类型的变量 对 6.函数strlen(“ASDFGN”)的值是7 错 7.通过return语句,函数可以带回一个或一个以上的返回值 错 8.若有说明int c;则while(c=getchar());是正确的c语句 对 9.C语言中只能逐个引用数组元素而不能一次引用整个数组 对 10.在c语言环境中,此定义和语句是合法的: enum aa{a=5,b,c}bb;bb=(enum aa)5; 对 11.共同变量所占的内存长度等于最长的成员的长度 对 12.在Turbo C 中,下面的定义和语句是合法的: file *fp;fp=fopen(“a.txt”,”r”); 错 13.Char *p=”girl”;的含义是定义字符型指针变量p,p的值是字符串“girl“ 错 14.若有定义和语句: int a[3][3]={{3,5},{8,9},{12,35}},I,sum=0; for(i=0;i<3;i++)sum+=a[i][2-i];则sum=21 对 15.Int i=20;switch(i/10){case 2:printf(“A”);case 1 :printf(“B”);} 的输出结果是 AB 单选 16.Int i=20;switch(i/10){case 2:printf(“A”);case 1 :printf(“B”);} 的输出结果是 AB 1.变量p为指针变量,若p=&a,下列说法不正确的事() A 2.函数ftell(fp)的作用是() A 3.函数ftell(fp)的作用是() A 4.下列变量说明语句中,正确的是() D 5.在c语言的函数中,下列说法正确的是() C 6.Fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是() C 7.在位运算中,操作数每右移一位,其结果相当于() B XILIE Fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是(8.A A 填空 1.Int a=1,b=2,c=3;执行语句a += b *= c;后a的值是7。 2.若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3,该数组可用的最小下标值是a[0] 3.C语言的三种基本结构是(顺序)结构,选择结构,循环结构 4.Int x=2,y=3,z=4;则表达式x+y〉z的值为(0) 5.为了避免嵌套条件语句的二义性,c语言规定else与其前面最近的(if)语句配对 6.以下程序的输出结果为(9,10)#include “stdio。h” main(){int a=010,j=10; printf(“%d,%d、n”,++a,j--);} 7.在c语言中,文件的存取是以(字节)为单位的,这种文件被称为(流式文件)文件 8.若有以下定义和语句:int a[5]={1,3,5,7,9},*p;p=&a[2];则++(*p)的值是(6)9.Static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为(6)10.执行下列语句后,*(p+1)的值为(1)char s[3]=“ab”,*p;p=s; 判断 1.#define和printf都不是c语句X 2.int i=20;switch(i/10){case 2:printf(“A”);Case 1:printf(“B”)}的输出结果为AX 3.在c语言中,此定义和语句是合法的:enum aa{ a=5,b,c}bb=(enum aa)5;√ 4.若有定义和语句:inta[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;〈i3;i++ sum+=a[i][2-i]; 则sum=21 5.char c[]=“very good”;是一个合法的为字符串数组赋值的语句√ 6.共同体变量所占的内存长度等于最长的成员的长度√ 7.函数strlen(“ASDFGn”)的值是7X 8.c语言中只能逐个引用数组元素而不能一次引用整个数组√ 9.如果函数值的类型和return语句中表达式ide值不一致,则以函数类型为准√ 10.用fopen(“file”,“r+”);打开的文件“file”可以进行修改X 11.char *p=“girl”;的含义是定义字符型指针变量p,p的值是字符串“girl”X 12.结构体类型只有一种X 13.在turbo c中,整型数据在内存中占2个字节X 14.c程序中有调用关系的所有函数必须放在同一个源程序文件中X。15.若有说明int c;则while(c=getchar());是正确的c语句√ 单选 1.指针变量p进行自加运算(即执行p++;)后,地址偏移值为2,则其数据类型为(A) 2.函数ftell(fp)的作用是()3.在位运算中,操作数每右移一位,其结果相当于(B) 4.C语言程序中,当调用函数时(A) 5.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(B) 6.char *math(char c)是(B) 7.以下不符合c语言语法的赋值语句是(C) 8.以下不是无限循环的语句为(A) 9.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A) 10.在执行fopen函数时,ferror函数的初值是(D) 填空 假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是(8)函数调用语句func((e1,e2),(e3,e4,e5))中含有[ ]个实参3 执行语句char str[81]=”abcdef”;后,字符串str结束标志存储在str[ [6] ] 4 在C语言中,最大整型数是[32767 ] 5 以下程序的输出结果为[10],#include”stdio.h”main(){int a;for(a=0;a<10;a++);printf(“%d”,a);} 6设啊取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的二进制数是[11110000 ] 7 C语言源程序的基本单位是[函数 ] 8 设I,j,k均为int型变量,则执行完下面的for循环后,k的值为[10]。For(i=0,j=10;i<=j;i++,j--)k=i+j 9 int x=2;x*=y=z=4;则x的值为[8 ] 10 预处理命令行都必须以[ #]号开始 判断 一个include 命令可以指定多个被包含的文件 错 2 int i,*p=&i;是正确的C说明 对 3 若有int i=10, j=0;则执行完语句 错 If(j=0)i++;else i--;i的值为11 4 在Turbo C中,下面的定义和语句是合法的: 错 File *fp;fp=fopen(“a.txt”,”r”)5 int a[3] [4]={{1},{5},{9}};它的作用是将数组各行第一列的元素赋初值,其余元素值为0。 对 进行宏定义时,宏名必须使用大写字母表示。 错 通过return语句,函数可以带回一个或一个以上的返回值。 错 8 在程序中定义了一个结果体类型后,可以多次用它来定义具有该类型的变量。 对 共同体变量所占的内存长度等于最长的成员的长度 对 10 用fopen(“file”,”r+”);打开的文件”file”可以进行修改 单选 以下对二维数组a的正确说明是(c)A int a[3] [ ] B float a(3,4)C double a[1][4] D float a(3)(4)2 C语言允许函数类型缺省定义,此时函数值隐含的类型是(B)A float B int C long D double 3设有定义:int N=0,*P=&N,**q=&p;则以下选项中,正确的赋值语句是(D)A p=1 B *q=2 C q=p D *p=5 4 C语言中要求对变量作强制定义的主要理由是(D)A 便于移植 B 便于写文件 C 便于编辑预处理程序的处理 D 便于确定类型和分配空间 5 位字段数据vd单位是()位 A 十六进制 B 八进制 C 二进制 D 十进制 以下程序的输出结果是(D)main(){int i,j,k,a=3,b=2;I=(--a==b++)?---a:++b;J=a++;k=b;Printf(“i=%d,j=%d,k=%dn”,I,j,k);} A i=2,j=1,k=3 B i=1,k=1,k=2 C i=4,j=2,k=4 D i=1,j=1,k=3 7 char *s1=”hello”,*s2;s2=s1;则(C)A s2指向不确定的内存单元 B 不能访问”hello” C puts(s1);与puts(s2);结果相同 D s1不能再指向其它单元 函数调用语句:fseek(fp,-20l,2);的含义是()A 将文件位置指针移到距离文件头20个字节处 B 将文件位置指针从当前位置向后移动20个字节 C 将文件位置指针从文件末尾处退后20个字节 D 将文件位置指针移到离当前位置20个字节处 已知p,p1为指针变量,a为数组名,j为整型变量,下了赋值语句中不正确的是(D)。A a=&j,p=p1;B p=a;C p=&a[j];D p=10;10在执行fopen函数时,ferror函数的初值是(D)A TRUE B-1 C 1 D 0 填空 若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3 该数组中下标最大的元素是a2 2下列程序的运行结果是(65535),main(){unsigned x1;int b=-1;x1=b;printf(“%u”,x1);} 3int x;x=-3+4%5-6,则x的值为(-5) 4已知 a=10,b=15,c=1,d=2,e=0,则表达式!a〈e的值为(0)5在C语言中,最大整数是() 6若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是(3)C=(a-=(b-5));C=(a%11)+(b=3);7C语言中,数组名是一个不可变的(指针常)量,不能对它进行加减和赋值运算 8定义 int a[2][3];表示数组a中的元素个数是(6)各 9a=10;b=0;do {b+=2;a-=2+b;} while(a>=0)执行几次3 10执行语句char s[3]=”ab”,*p;p=3;*(p+2)的值是(‘/0’)判断 1#define和printf都不是C语句 ✘ 2结构体类型只有一种 ✘ 3如果函数值的类型和return语句表达式的值不一致,则以函数类型为准 ✔ 4用fopen(“file”,“r+”);打开的文件 file 可以进行修改✔ 5int i,*p=&i;是正确的C说明✔ 6若有 int i=10,j=0;则执行完语句 if(j=0)i++;else i--;i的值为11 ✘ 7C程序中有调用关系的所有函数必须放在同一个原程序文件中 ✘ 8char *p=“girl”;的含义是定一字符型指针变量p,p的值是字符串“girl” ✘ 9 int a[3][3]={{3,5},{8,9},{12,35}},I,sum=0 For(i=0;I<3;i++)sum+=a{i}{2-i};sum=21 ✔ 10在 Turbo C中 file *fp=fopen(a.txt,r);是合法的✘ 单选 一下运算等级最低的 A&& B& C| | D| c 2若以“A+”方式打开一个以存在的文件,正确的事 a A原有文件不删除,位置指针移到文件末尾,可作添加和读操作 B原有文件不删除,位置指针移到文件开头,可作重写和读操作 C原有文件删除,只可作写操作 D都不正确 3对结构体类型的变量的成员的访问,无论数据类型如何都可使用a 4main(){int i=010,j=10;printf(“%d”,%dn,++I,j--);}结果 b 5利用 fseek函数可以实现的操作a 6设一下变量未int类型,则值不等于7的是a 7不正确的b double类型数据占d 在C语言程序中 b 10不正确的填空 1. 以下do-while语句中循环体的执行次数是(1)a=10 b=0 do { b+=2;a-=2+b;} while(a>=0);2字符串长度的库函数是[1],只写 3行下面两个语句,输出的结果是[1],char 4语言中调用[fopen]函数来打开文件 5若a是int型变量,且a的初值为6,则执行下面表达式后a的值为。a+=a-=a*a-60 6有定义:int a=10 7有定义:char s [ ] = 则TurboC 系统为数组s开辟[ 6] 个字节的内存单元 8若有以下定义和语句: int a[5]={1,3,5,7,9},*p;p=&a[2];则++(*p)的值是__6__.判断 1有宏定义:#define S(a,b)……所以此宏定义是错误的错 2构体类型只有一种 错 3有定义和语句:int。。。则sum=21 4果函数值的类型和return语句。。则以函数类型为准 对 5果想使一个数组中全部元素为0 可以写成int a[10]={0*10}; 错 6加位运算的数据可以是任何类型的数据 错 7ar *p= girl。。。p的值是字符串 girl 对 8efine和printf 都不是C语句 对 单选 1位计算中,操作数每右移一位。。 B 2执行下列语句后,a和b的值分别为() B 3fseek函数的正确调用形式是()B 4下列 判 断 正 确的事 (C 5char *match(char c)是B 6若有说明: int a [3][4]= 。。正确的叙 述D) 是7为了提高程序的运行速度,在函数。。。的变量 8以下程序的输出结果是()D 【程序填空】 -------------------------- 功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出 其和。 ------------------------*/ #include int i,n,sum; sum=0; /***********SPACE***********/ B D n=0; /***********SPACE***********/ for(i=1;i<=300;i++) /***********SPACE***********/ if(i%7 == 0 || i%17 == 0) if(i%2==0) { sum=sum+i; n++; printf(“%6d”,i); /***********SPACE***********/ if(n%5 == 0) printf(“n”); } printf(“ntotal=%d”,sum);} 2./*------------------------【程序填空】 -------------------------- 功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1 到3报数),凡报到3的人退出圈子,问最后留下的是原来 第几号的那位。 ------------------------*/ #include int i,k,m,n,num[nmax],*p; printf(“please input the total of numbers:”); scanf(“%d”,&n); p=num; /***********SPACE***********/ for(i=0;i /***********SPACE***********/ *(p+i)=i+1; i=0; k=0; m=0; while(m { /***********SPACE***********/ if(*(p+1)!=0)k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==n)i=0; } /***********SPACE***********/ while(*p==0)p++; printf(“%d is leftn”,*p);} 程序改错 /*----------------------- 【程序改错】 ------------------------- 功能:求1到10的阶乘的和。 -----------------------*/ #include int i; float s=0; float fac(int n); /**********FOUND**********/ for(i=1;i<=10;i++) /**********FOUND**********/ S+=fac(i); printf(“%fn”,s);} float fac(int n){ /**********FOUND**********/ float y=1; int i; for(i=1;i<=n;i++) y=y*i; /**********FOUND**********/ Return y;} 程序填空 1.功能:计算一元二次方程的根。 ------------------------*/ #include double x1,x2,imagpart; float a,b,c,disc,realpart; scanf(“%f%f%f”,&a,&b,&c); printf(“the equation”); /***********SPACE***********/ if(a<=1e-6) printf(“is not quadraticn”); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf(“has two equal roots:%-8.4fn”,-b/(2*a)); /***********SPACE***********/ else if(disc>0) { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf(“has distinct real roots:%8.4f and %.4fn”,x1,x2); } else { realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(“has complex roots:n”); printf(“%8.4f=%.4fin”,realpart,imagpart); printf(“%8.4f-%.4fin”,realpart,imagpart); } } 2.功能:利用全局变量计算长方体的体积及三个面的面积。 ------------------------*/ #include int v; /***********SPACE***********/ v=a*b*c; s1=a*b; /***********SPACE***********/ s2=b*c; s3=a*c; return v;} main(){ int v,l,w,h; printf(“ninput length,width and height: ”); /***********SPACE***********/ scanf(“%d%d%d”,&l,&w,&h); /***********SPACE***********/ v=vs(l,w,h); printf(“v=%d s1=%d s2=%d s3=%dn”,v,s1,s2,s3);} 程序改错 功能:用起泡法对10个整数从小到大排序。 -----------------------*/ #include int i,j,t; for(i=0;i /**********FOUND**********/ for(j=0;j /**********FOUND**********/ if(x[i]>x[i+1]) { t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } main(){ int i,n,a[100]; printf(“please input the length of the array:n”); scanf(“%d”,&n); for(i=0;i scanf(“%d”,&a[i]); /**********FOUND**********/ sort(n,a); printf(“output the sorted array:n”); for(i=0;i<=n-1;i++) printf(“%5d”,a[i]); printf(“n”);} 【程序填空】 -------------------------- 功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显 示出来。 ------------------------*/ #include /*定义符号常量 人数为5*/ #define N 4 /*定义符号常量 课程为4*/ main(){ int i,j; void aver(float sco[M+1][N+1]); static float score[M+1][N+1]={{78,85,83,65}, {72,65,54,75},{86,88,75,60},{69,60,50,72}}; aver(score); printf(“学生编号 课程1 课程2 课程3 课程4 个人平均n”); for(i=0;i { printf(“学生%dt”,i+1); {88,91,89,93},/***********SPACE***********/ for(j=0;j printf(“%6.1ft”,score[i][j]); printf(“n”); } for(j=0;j<8*(N+2);j++) printf(“-”); printf(“n课程平均”); for(j=0;j printf(“%6.1ft”,score[i][j]); printf(“n”);} void aver(float sco[][N+1]) { int i,j; /***********SPACE***********/ for(i=0;i { for(j=0;j { sco[i][N] += sco[i][j]; sco[M][j] += sco[i][j]; sco[M][N] += sco[i][j]; } /***********SPACE***********/ sco[i][N]/= N; } for(j=0;j /***********SPACE***********/ sco[M][j] /= M; sco[M][N]=sco[M][N]/M/N; } 2./*------------------------【程序填空】 -------------------------- 功能:删除字符串中的数字字符。 例如:输入字符串:48CTYP9E6,则输出:CTYPE。 ------------------------*/ #include { char *p=s; while(*p) if((*p>='0')&&(*p<='9'))p++; /***********SPACE***********/ else *s++=*p++; /***********SPACE***********/ *s=’ ’ } main(){ char item[100]; printf(“nEnter a string: ”); gets(item);fun(item); printf(“nThe string:”%s“n”,item);} 改错 /*----------------------- 【程序改错】 ------------------------- 功能:用插入排序法将n个字符进行排序(降序)。 提示:插入法排序的思路是:先对数组的头两个元素进行排序,然后根据前两个元素的情况插入第三个元素,再插入第 四个元素…)。 -----------------------*/ #define N 81 #include void fun(char *aa, int n){ /**********FOUND**********/ int a ,b,t; for(a = 1;a { t = aa[a];b = a1; /**********FOUND**********/ while((b>=0)and(t>aa[b])) { aa[b+1]=aa[b];b;} /**********FOUND**********/ aa[b+1] = t } } main(){ char a[N]; printf(“nEnter a string: ”); gets(a); fun(a , strlen(a)); printf(“nThe string: ”); puts(a);getch();} 程序填空 功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中 马驮2担,两匹小马驮一担,求大、中、小马各多少匹? ------------------------*/ #include int hb,hm,hl,n=0; /***********SPACE***********/ for(hb=0;hb<=100;hb+=3) /***********SPACE***********/ for(hm=0;hm<=100-hb;hm+=2) { /***********SPACE***********/ hl=100-hb-hm; /***********SPACE***********/ if(hb/3+hm/2+2*hl==100) { n++; printf(“hb=%d,hm=%d,hl=%dn”,hb/3,hm/2,2*hl); } } printf(“n=%dn”,n);} 2 功能:产生并输出杨辉三角的前七行。1 1 1 1 1 1 ------------------------*/ #include int a[7][7]; int i,j; for(i=0;i<7;i++) { a[i][0]=1; /***********SPACE***********/ a[i][i]=1;; } for(i=2;i<7;i++) /***********SPACE***********/ for(j=1;j /***********SPACE***********/ a[i][j]= a[i-1][j-1]+a[i-1][j]; for(i=0;i<7;i++) { /***********SPACE***********/ for(j=0;j<=i;i++) printf(“%6d”,a[i][j]); printf(“n”); } } 程序改错 功能:编写函数fun生成一个对角线元素为5,上三角元素为0,下三角元素为1的3*3的二维数组。 -----------------------*/ #include fun(int arr[][3]){ /**********FOUND**********/ int i,j; /**********FOUND**********/ for(i=0;i<3;i++) for(j=0;j<3;j++) /**********FOUND**********/ if(i==j) arr[i][j]=5; else if(j>i) arr[i][j]=0; else arr[i][j]=1;} main(){ int a[3][3],i,j; fun(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%d ”,a[i][j]); printf(“n”); } } 【程序填空】 -------------------------- 功能:求一个二维数组中每行的最大值和每行的和。------------------------*/ #include int a[5][5],b[5],c[5],i,j,k,s=0; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=rand()%(40)+20; for(i=0;i<5;i++) { /***********SPACE***********/ k=a[i][0];s=0; for(j=0;j<5;j++) { /***********SPACE***********/ if(k s=s+a[i][j]; } b[i]=k; /***********SPACE***********/ c[i]=s; } for(i=0;i<5;i++) { for(j=0;j<5;j++) /***********SPACE***********/ printf(“%5d”, a[i][j]); printf(“%5d%5d”,b[i],c[i]); printf(“n”); } } /*------------------------【程序填空】 -------------------------- 功能:计算并输出high以内最大的10个素数之和,high由主函数传 给fun函数,若high的值为100,则函数的值为732。 ------------------------*/ #include int sum = 0, n=0, j, yes; /***********SPACE***********/ while((high >= 2)&&(n<10)) { yes = 1; for(j=2;j<=high/2;j++) /***********SPACE***********/ if(0==high%j) { yes=0; break; } if(yes) { sum +=high; n++; } high--; } /***********SPACE***********/ return sum; } main(){ printf(“%dn”, fun(100));} *----------------------- 【程序改错】 ------------------------- 功能:有1、2、3、4个数字,能组成多少个互不相同且无重复数 字的三位数?都是多少? -----------------------*/ #include int i,j,k; /**********FOUND**********/ printf(“n”); /**********FOUND**********/ for(i=1;i<5;i++) for(j=1;j<5;j++) for(k=1;k<5;k++) { /**********FOUND**********/ if(i!=k&&i!=j&&j!=k) printf(“%d,%d,%dn”,i,j,k); } } 6-13 #include int i=0,j=0; printf(“input string1:”); scanf(“%s”,s1); printf(“input string2:”); scanf(“%s”,s2); while(s1[i]!=' ') i++; while(s2[j]!=' ') s1[i++]=s2[j++]; s1[i]=' '; printf(“nThe new string is:%sn”,s1); return 0;} 6-14 #include char s1[100],s2[100]; printf(“input string1:”); gets(s1); printf(“ninput string2:”); gets(s2); i=0; while((s1[i]==s2[i])&&(s1[i]!=' '))i++; if(s1[i]==' ' && s2[i]==' ') resu=0; else resu=s1[i]-s2[i]; printf(“nresult:%d.n”,resu); return 0;} 6-15 #include int i; printf(“input s2:”); scanf(“%s”,s2); for(i=0;i<=strlen(s2);i++) s1[i]=s2[i]; printf(“s1:%sn”,s1); return 0;} 第7章用函数实现模块化程序设计170 7.1为什么要用函数170 7.2怎样定义函数172 7.2.1为什么要定义函数172 7.2.2定义函数的方法173 7.3调用函数174 7.3.1函数调用的形式174 7.3.2函数调用时的数据传递175 7.3.3函数调用的过程177 7.3.4函数的返回值178 7.4对被调用函数的声明和函数原型179 7.5函数的嵌套调用182 7.6函数的递归调用184 7.7数组作为函数参数192 7.7.1数组元素作函数实参193 7.7.2数组名作函数参数194 7.7.3多维数组名作函数参数197 7.8局部变量和全局变量199 7.8.1局部变量199 7.8.2全局变量200 7.9变量的存储方式和生存期204 7.9.1动态存储方式与静态存储方式204 7.9.2局部变量的存储类别205 7.9.3全局变量的存储类别208 7.9.4存储类别小结212 7.10关于变量的声明和定义214 7.11内部函数和外部函数215 7.11.1内部函数215 7.11.2外部函数215习题218 7-1-1 #include int lcd(int,int,int); int u,v,h,l; scanf(“%d,%d”,&u,&v); h=hcf(u,v); printf(“H.C.F=%dn”,h); l=lcd(u,v,h); printf(“L.C.D=%dn”,l); return 0;} int hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v);} int lcd(int u,int v,int h) { return(u*v/h); } 7-1-2 #include void lcd(int,int); int u,v; scanf(“%d,%d”,&u,&v); hcf(u,v); lcd(u,v); printf(“H.C.F=%dn”,Hcf); printf(“L.C.D=%dn”,Lcd); return 0;} void hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r; } Hcf=v;} void lcd(int u,int v) { Lcd=u*v/Hcf; } 7-2 #include { greater_than_zero(a,b); printf(“x1=%fttx2=%fn”,x1,x2); } else if(disc==0) {equal_to_zero(a,b); printf(“x1=%fttx2=%fn”,x1,x2); } else {smaller_than_zero(a,b); printf(“x1=%f+%fitx2=%f-%fin”,p,q,p,q); } return 0;} void greater_than_zero(float a,float b){x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a);} void equal_to_zero(float a,float b){ x1=x2=(-b)/(2*a);} void smaller_than_zero(float a,float b){ p=-b/(2*a); q=sqrt(-disc)/(2*a);} 7-3 #include int n; printf(“input an integer:”); scanf(“%d”,&n); if(prime(n)) printf(“%d is a prime.n”,n); else printf(“%d is not a prime.n”,n); return 0;} int prime(int n) {int flag=1,i; for(i=2;i if(n%i==0) flag=0; return(flag); } 7-4 #include for(j=0;j scanf(“%d”,&array[i][j]);printf(“noriginal array :n”);for(i=0;i {for(j=0;j printf(“%5d”,array[i][j]); printf(“n”); } convert(array);printf(“convert array:n”);for(i=0;i {for(j=0;j printf(“%5d”,array[i][j]); printf(“n”); } return 0;} void convert(int array[][3]){int i,j,t;for(i=0;i for(j=i+1;j {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } #include void inverse(char str[]){char t; int i,j; for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--) {t=str[i]; str[i]=str[j-1]; str[j-1]=t; } } 7-6 #include void concatenate(char string1[],char string2[],char string[]){int i,j;for(i=0;string1[i]!=' ';i++) string[i]=string1[i];for(j=0;string2[j]!=' ';j++) string[i+j]=string2[j];string[i+j]=' ';} 7-7 #include void cpy(char s[],char c[]){ int i,j; for(i=0,j=0;s[i]!=' ';i++) if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U') {c[j]=s[i]; j++; } c[j]=' ';} 7-8 #include void insert(char str[]){int i;for(i=strlen(str);i>0;i--) {str[2*i]=str[i]; str[2*i-1]=' '; } printf(“output:n%sn”,str);} 7-9 #include printf(“nletter:%dndigit:%dnspace:%dnothers:%dn”,letter,digit,space,others);return 0;} void count(char str[]){int i;for(i=0;str[i]!=' ';i++)if((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z')) letter++;else if(str[i]>='0' && str [i]<='9') digit++;else if(str[i]==32) space++;else others++;} 7-10 #include printf(“%c”,line[i]);printf(“n”);return 0;} int alphabetic(char c){if((c>='a' && c<='z')||(c>='A'&&c<='z')) return(1);else return(0);} int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i<=strlen(string);i++) if(alphabetic(string[i])) if(flag) {point=i; flag=0; } else len++; else {flag=1; if(len>=length) {length=len;place=point;len=0;} } return(place);} 7-11 #include {printf(“input string:n”); scanf(“%s”,&str); if(strlen(str)>N) printf(“string too long,input again!”); else flag=0; } sort(str);printf(“string sorted:n”);for(i=0;i printf(“%c”,str[i]);printf(“n”);return 0;} void sort(char str[]){int i,j;char t;for(j=1;j for(i=0;(i第二篇:C语言模拟题总集
第三篇:c语言答案