资源描述
思 考 题
不仅要会做这些题,更重要的是要掌握其相关知识点
一、一般填空题
1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】.
1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】.
1-3、fopen函数的原形在头文件【1】中.
1-4、getchar函数的原形在头文件【1】中.
1-5、sqrt函数的原形在头文件【1】中.
1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空.
答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void .
2-1、字符串“\1011234\\at”的长度(字符数)是【1】.
2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】.
2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】.
2-4、“a“在存中占【1】个字节.
2-5、‘a’在存中占【1】个字节.
2-6、“\71“在存中占【1】个字节.
2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在存应占【1】个字节。
答案:8; 8; 9; 2;1;2 ;0;6.
3-1、设x=(5>1)+2, x的植为【1】.
3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】.
3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】.
答案:3;171;194;
4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】.
4-2、if(!a)中的表达式!a等价于【1】.
4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】.
答案:8;a==0;8;
5-1、若所用变量都已定义,下列程序段的执行结果是【1】.
for(i=1;i<=5;i++);printf(“OK\n”);
5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】.
5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】.
5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);}
答案:OK;’\0’ ;1;10
6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】.
6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】.
6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】.
答案:9;10;6 .
二、单项选择题
1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。
A:文件打开时,原有文件容不被删除,位置指针移到文件末尾,可作添加和读操作
B:文件打开时,原有文件容不被删除,位置指针移到文件开头,可作重写和读操作
C:文件打开时,原有文件容被删除,只可作写操作
D:以上各种说法皆不正确
1-2、若执行fopen函数时发生错误,则函数的返回值是()。
A:地址值 B:0 C:1 D:EOF
1_3、若要打开A盘上user子目录下名为abc.txt的文件进行读、写操作,符合要求的是()。
A:fopen(“A:\user\abc.txt”, “r”) B:fopen(“A:\\user\\abc.txt”, “r+”)
C:fopen(“A:\user\abc.txt”, “rb”) D:fopen(“A:\\user\\abc.txt”, “w”)
答案:A;B;B;
2-1、以下属于c语言预先规定的保留字是()。
A:int B:score C:aver D:sum
2-2、下列运算符中优先级最高的是()。
A:< B:+ C:&& D:!=
2-3、下面不正确的字符串常量是()。
A:‘abc’ B:’’12’12” C:”0” D:”“
2-4、运算对象必须是整型的运算符是()。
A:% B:/ C:= D:<=
2-5、下面错误的常量是()。
A: 0xff B:1.2e0.5 C:2L D:’\72’
2-6、下列变量定义语句中,正确的是()。
A: char: a b c; B:char a; b; c; C:int x;z; D:int x,z;
2-7、sizeof(float)是()。
A:一个双精度型表达式 B:一个整型表达式 C:一种函数调用 D:不合法表达式
2_8、c语言的注释语句开头必须是()。
A:/ B:* C:/* D:’
2_9、设以下变量均为int类型,则值不等于7的表达式是()。
A:(x=y=6,x+y,x+1) B:(x=y=6,x+y,y+1) C:(x=6,x+1,y=6,x+y) D:(y=6,y+1,x=y,x+1)
2_10、C程序的语句结束符是()。
A:; B:: C:. D:换行
2_11、C语言中用于结构化程序设计的三种基本结构是()。
A:顺序结构、选择结构和循环结构 B:if、switch、break
C:for、while、do-while D:if、for、continue
2_12、C语言中,int、char和short三种类型的数据在存中占用的字节数()。
A:由用户自己定义 B:均为两个字节 C:是任意的 D:由所用机器的字长决定
答案:A;B;A;A;B;D;B;C;C; A;A;D;
3-1、在一个c程序中()。
A:main函数必须出现在所有函数之前 B:main函数的位置没有特别限制
C:main函数必须出现在所有函数之后 D:main函数必须出现固定位置
3-2、已知函数原形声明为:float (char a, char b); 该函数的类型为()。
A:指向字符型的指针 B:字符型 C:浮点型 D:指向浮点型的指针
3-3、与实际参数为整型数组名相对应的形式参数不可以定义为()。
A:int a[]; B:int *a; C:int a; D:int a[3];
3_4、全局变量的定义不可能在()。
A:函数部 B:函数外面 C:文件外面 D:最后一行
3_5、putchar函数可以向终端输出一个()。
A:整型变量表达式的值 B:实型变量的值 C:字符串 D:字符或字符型变量值
3_6、数组名作为实际参数传给函数时,数组名被处理为()。
A:数组的长度 B:数组的元素个数 C:数组的首地址 D:数组中各元素的值
3_7、C语言中,当调用函数时()。
A:实参和虚参本身各占一个独立的存储单元 B:实参和虚参可以共用存储单元
C:实参和虚参可以由用户指定是否共用存储单元 D:由计算机自动确定是否共用存储单元
3_8、调用函数时,实参和虚参必须保持一致的是()。
A:在个数上 B:在类型上 C:在顺序上 D:在个数、类型、顺序上
答案:B;C;D;A;D;C;A;D;
4-1、int a=3,b=2,c=1; if(a>b>c)a=b; else a=c; 则a的值为()。
A:3 B:2 C:1 D:0
4-2、下列程序的输出为()。
main()
{ int y=10; while(y--); printf("y=%d\n",y); }
A:y=0 B: while构成无限循环 C:y=1D:y=-1
4-3、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是().
A: 7 B:8 C: 9 D: 2
4-4、以下程序的输出结果是()。
main()
{ int i=010, j=10 ; printf("%d,%d\n",++i,j--); }
A: 11,10 B:9,10 C: 10,9 D: 10,9
4_5、设a=2,且a定义为整型变量,执行语句a+=a-=a*=a;后,a的值为()。
A: 12 B: 144 C: 0 D: 132
4-6、int a=1,b=2,c=3; if(a>c)a=b; a=c;c=b; 则c的值为()。
A:1 B:2 C:3 D:不一定
4-7、若变量a与i已正确定义,且i已正确赋值,合法的语句是()。
A: a==1 B:++i; C:a=a++=5; D:a=int(i);
4_8、strlen(“12\0345\n”)与strlen(“12\0845\n”)的测试结果分别是。
A:相同 B:2和5 C:5和2 D:5和5
4_9、设 char s[10]="\ta\017bc";则数组s所占的字节数是()。
A:9 B:10 C:6 D:7
4_10、设 char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()。
A:9 B:5 C:6 D:7
4_11、若i=3,则printf("%d",-i++);输出的值和i的值分别为()。
A:相同 B:-3和4 C:5和2 D:5和5
答案:C;D;B;B; C; B;B;C;B;C;B;
5-1、一维数组定义的格式为:类型说明符 数组名()。
A:[常量表达式] B:[整型表达式] C:[整型常量] 或[整型表达式] D:[整型常量]
5-2、以下能正确定义数组并正确赋初值的邮局语句是()。
A:int N=5,b[N][N]; B: int a[1][2]={{1},{3}};
C: int c[2][]={{1,2},{3,4}}; D: int d[3][2]={{1,2},{34}};
5_3、以下不正确的定义语句是()。
A:double x[5]={2.0,4.0,6.0,8.0,10.0}; B: int y[5]={0,1,3,5,7,9};
C: char c1[]={‘1’,’2’,’3’,’4’,’5’}; D: char c2[]={‘\x10’,’\xa’,’\x8’};
5_4、在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
A:整型常量 B:整型表达式C:整型常量或整型表达式D: 任何类型的表达式
5_5、若有说明:int a[10];则对a数组元素的正确引用是()。
A:a[10] B:a[3,5] C:a(5) D:a[10-10]
3_6、下列数组定义中,正确的是()。
A:int a[][4]; B:int a[][]; C:int a[][][5]; D:int a[3][];
5_7、若有说明:int a[10];则对a数组元素的正确引用是()。
A:a[10] B:a[3,5] C:a(5) D:a[3>1]
答案:A;D;B;C;D;A;D;
6-1、相同结构体类型的变量之间可以()。
A: 相加 B:赋值 C: 比较大小 D: 地址相同
6_2、结构体类型的定义允许嵌套是指()。
A:成员是已经或正在定义的结构体型 B: 成员可以重名
C: 结构体型可以派生 D: 定义多个结构体型
6_3、有如下定义:struct student{char name[20];int age;}wang,*p;p=&wang;,以下不合法的引用为()。
A: p.age B: wang.age C: p->age D: (*p).age
6_4、在定义构造数据类型时,不能()。
A:说明变量 B:说明存储类型C:初始化 D:末尾不写分号
6_5、当定义一个结构体变量时,系统分配给它的存是()。
A:各成员所需存量的总和B:结构中第一个成员所需存量
C:结构中最后一个成员所需存量D:成员中占存量最大者所需的容量
6_6、enum a {sum=9,mon=-1,tue};定义了()。
A:枚举变量 B:3个标识符C:枚举数据类型 D:整数9和-1
6_7、以下各选项企图说明一种新的类型名,其中正确的是()。
A:typedef v1 int; B:typedef v2=int;
C:typedef int v3; D:typedef v4: int;
答案:B;A;A;D;A;C;C;
7-1、若宏定义为:#define y 2+3, 则表达式y*3+3的值为().
A: 14 B:16 C: 18 D: 20
7-2、若宏定义为:#define y 2+3, 则表达式2+y*3的值为().
A: 11 B:13 C: 15 D: 17
7_3、有宏定义为#define Y(a,b) a+b ,则表达式2+Y(2,3)*3的值为().
A: 11 B: 13 C: 15 D: 17
答案:A;B;B;
8-1、如有int *p,a=5,b; 定义,则以下正确的程序段为()。
A: p=&b;scanf(“%d’,&p); B: p=&b; scanf(“%d’,*p);
C: scanf(“%d’,&b); p=b; D: p=&b;p=a;
8-2、若有语句:int a[3][4],*p[3]={a[0],a[1],a[2]}; 不能表示a[2][3]的元素的是()。
A: *(*(a+2)+3) B: *(*(p+2)+3) C: (p[2]+3) D: (*(p+2))
8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。
A: *p1-*p2 B: p1++ C: *p1%*p2 D: p1-p2
8_4、有以下定义:int a[2][3];,则对数组元素的正确引用()是。
A: *(*(a+i)+j) B: (a+i)[j] C: *(a+i+j) D: a[i]+j
8_5、若有定义:int (*p)();,则该指针为()。
A: 指向整型的指针 B: 指向字符型的指针 C: 指向整型函数的指针 D: 指向字符型函数的指针
8_6、下列正确的定义是()。
① int i,*p=&i; ②int *p=&i,i; ③int *p,i;p=&i;④int *p,i;p=i;⑤int *p,i,p=&i;
A: ①③ B: ②④ C:②⑤ D:④①
答案:D;D;C;A;C;A;
三、多项选择题
1_1、下列选项中合法的标识符有()。
A: good_morning B:main C: stdio.h D: 8abc
答案:AB;
1_2、下列选项中合法的用户标识符有()。
A: page B:short C: _3com D: int
答案:AC;
1_3、下列选项中合法的用户标识符有()。
A: return B:f2_G3 C: a3-3 D: abc
答案: BD;
1_4、以下叙述正确的是()。
A:C语言严格区分大小写英文字母。 B:C语言用“;”作为语句分隔符。
C:C程序书写格式自由:一行可以写几个语句,一个语句也可以写在几行。
D:可以使用/*…*/对C程序中的任何部分作注释。
答案:ABCD;
1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。
A:只能是0或1; B:只能是0或非0正数;
C:可以是整型或字符型数据; D:可以是任何类型的数据;
答案:AB;
1_6、以下对switch语句和break语句中描述错误的有()。
A: 在switch语句中必须使用break语句; B:break语句只能用于switch语句;
C: 在switch语句中可以根据需要使用或不使用break语句; D:break语句是switch语句的一部分;
答案:ABD;
2_1、已定义c为字符型变量,则下列语句中错误的是()。
A: c=’97’; B:c=”97” ; C: c=97; D: c=”a”;
答案:ABD;
3_1、以下正确的是()。
A:预处理命令行必须以‘#’开始。 B:以‘#’开始的都是预处理命令行。
C:程序在执行过程中对预处理命令行进行处理。 D:#define ABCD是正确的宏定义。
答案:ABD;
4_1、在定义int a[2][3]之后,对a[i][j]的正确引用有()。
A: a[0][2] B: a[1,3] C: a[1>2][!1] D: a[2][0]
答案:AC;
4_2、以下对二维数组a正确初始化的是()。
A:static char word[]=’Turbo\0’; B:static char word[]={‘T’,’u’,’r’,’b’,’o’,’\0’};
C:static char word[]={“Turbo\0”}; D:static char word[]=”Turbo\0”;
答案:BCD;
5_1、以下4个选项中可以看作是一条语句的有()。
A: {;} B: a=0,b=0,c=0 ; C: if(a>0); D: if(b==0) m=1;n=2;
答案:ABC;
5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。
A: a=b=c=d=100 ; B: d++; C: c+b; D: d=(c=22)-(b++);
答案:ABD;
5_3、设有以下定义:int a=0;double b=1.25;char c=’A’;
#difine d 2 ,则正确的语句是()。
A: a++; B: b++; C: c++; D: d++;
答案:ABC;
6_1、以下述说中正确的是()。
A:一个c源程序可以由一个或多个函数组成。 B:一个c源程序必须包含一个main()函数。
C:c源程序的基本组成单位是函数。 D:在c源程序中,注释说明只能位于一条语句的最后。
答案:ABC;
6_2、以下对C语言中的函数描述不正确的是()。
A:可以嵌套定义,不可以嵌套调用。 B:不可以嵌套定义,可以嵌套调用。
C:可以嵌套定义,也可以嵌套调用。 D:嵌套定义和嵌套调用都不允许。
答案:ACD;
四、程序填空
1、功能:计算平均成绩并统计90分以上人数。成绩数据以一负数作为结束标志。
#include <stdio.h>
void main(void)
{
int n,m;float grade,average;
/***********SPACE***********/
average=n=m=【?】;
while(1)
{
/***********SPACE***********/
【?】("%f",&grade);
if(grade<0) break;
n++;
average+=grade;
/***********SPACE***********/
if(grade<90)【?】;
m++;
}
if(n) printf("%.2f%d\n",average/n,m);
}
答案: 1). 0 或 0.02). scanf3). Continue
2、功能:找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入。
#include "stdio.h"
void main()
{
int a[10],*p,*s,i;
for(i=0;i<10;i++)
/***********SPACE***********/
scanf("%d", 【?】);
/***********SPACE***********/
for(p=a,s=a;【?】<10;p++)
if(*p>*s) s=p;
/***********SPACE***********/
printf("max=%d,index=%d\n",【?】,s-a);
}
答案:1). a + i 或 &a[i]2). p-a 或 -a+p3). *s
3、功能:输入学生成绩并显示。
# include <stdio.h>
struct student
{
char number[6];
char name[6];
int score[3];
} stu[2];
void output(struct student stu[2]);
void main(void)
{
int i, j;
/***********SPACE***********/
for(i=0; i<2; 【?】)
{
printf("请输入学生%d的成绩:\n", i+1);
printf("学号:");
/***********SPACE***********/
scanf("%s", 【?】.number);
printf(":");
scanf("%s", stu[i].name);
for(j=0; j<3; j++)
{
printf("成绩 %d. ", j+1);
/***********SPACE***********/
scanf("%d", 【?】.score[j]);
}
printf("\n");
}
output(stu);
}
void output(struct student stu[2])
{
int i, j;
printf("学号 成绩1 成绩2 成绩3\n");
for(i=0; i<2; i++)
{
printf("%-6s%-6s", stu[i].number, stu[i].name);
for(j=0; j<3; j++)
printf("%-8d", stu[i].score[j]);
printf("\n");
}
}
答案:
1). i++ 或 ++i 或 i=i+1 或 i+=1
2). stu[i]
3). &stu[i]
4、功能:输入两个整数x,y,请把这两个数由小到大输出。
#include <stdio.h>
void main(void)
{
int x,y,t;
/***********SPACE***********/
scanf("%d%d",【?】);
/***********SPACE***********/
if (【?】)
/***********SPACE***********/
{【?】}
printf("small to big: %d %d\n",x,y);
}
答案:
1). &x,&y 或 &y,&x
2). x>y 或 x>=y 或 y<x 或 y<=x
3). t=y;y=x;x=t; 或 t=y,y=x,x=t; 或 t=x;x=y;y=t; 或 t=x,x=y,y=t;
5、功能:输出结果为:
* * * * *
* * * * *
* * * * *
* * * * *
#include <stdio.h>
void main(void)
{
/***********SPACE***********/
static char 【?】={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for(i=0;i<5;i++)
{
printf("\n");
for(j=1;j<=3*i;j++)
/***********SPACE***********/
printf("%1c",【?】);
/***********SPACE***********/
for(k=0;k<【?】;k++)
printf("%3c",a[k]);
}
printf("\n");;
}
答案:1). a[5] 或 a[]2). space 或 ' '3). 5 或 =4
6、功能:下面函数为二分法查找key值。数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。
#include <stdio.h>
fun(int a[],int n,int key)
{
int low,high,mid;
low=0;
high=n-1;
/***********SPACE***********/
while(【?】)
{
mid=(low+high)/2;
if(key<a[mid])
/***********SPACE***********/
【?】;
else if(key>a[mid])
/***********SPACE***********/
【?】;
else
return mid;
}
return -1;
}
void main(void)
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b,c;
b=4;
c=fun(a,10,b);
if(c==1)
printf("not found");
else
printf("position %d\n",c);
}
答案:1). low<=high 或 high>=low2). high=mid-13). low= mid + 1
7、功能:计算圆周率的近似值。(π/4=1-1/3+1/5-1/7+…)
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
void main(void)
{
int s;
/***********SPACE***********/
float n,【?】;
double t;
t=1;pi=0;n=1;s=1;
/***********SPACE***********/
while(【?】>=1e-6)
{
pi+=t;n+=2;s=-s;t=s/n;
}
/***********SPACE***********/
pi*=【?】;
printf("pi=%.6f\n",pi);
}
2 pi fabs(t) 4
五、程序改错
1、功能:编写函数fun求20以所有5的倍数之积。
#define N 20
#include "stdio.h"
void main(void)
{
int sum;
sum=fun(5);
printf("%d以所有%d的倍数之积为: %d\n",N,5,sum);
getch();
}
int fun(int m)
{
/**********FOUND**********/
int s=0,i;
for(i=1;i<N;i++)
/**********FOUND**********/
if(i%m=0)
/**********FOUND**********/
s=*i;
return s;
}
答案:
1). int s=1,i;
2). if(i%m==0) 或 if(!(i%m))
3). s*=i; 或 s=s*i; 或 s=i*s;
2、功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
例如:输入3+5=或5-2=或3*4=或4/2=,求表达式结果。
#include<stdio.h>
void main(void)
{
float x,y;
char operate1;
printf("Arithmetic expression\n");
/**********FOUND**********/
scanf("%f",x);
/**********FOUND**********/
while((operate1==getchar())!='=')
{
printf("result=");
scanf("%f",&y);
/**********FOUND**********/
switch(y)
{
case '+':
x+=y;
break;
case '-':
x-=y;
break;
case '*':
x*=y;
break;
case '/':
x/=y;
break;
}
}
printf("%f",x);
getch();
return;
}
答案: 1). scanf("%f",&x);2). while((operate1=getchar())!='=')3). switch(operate1)
3、功能:编写函数求2!+4!+6!+8!+10+12!+14!。
#include "stdio.h"
long sum(int n)
{
/**********FOUND**********/
int i,j
long t,s=0;
/**********FOUND**********/
for(i=2;i<=n;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
/**********FOUND**********/
return(t);
}
void main(void)
{
printf("this sum=%ld\n",sum(14));
getch();
}
答案:1). int i,j;
2). for(i=2;i<=n;i=i+2) 或 for(i=2;i<=n;i+=2) 或 for(i=2;i<=n;i++,i++)
3). return(s); 或 return s; 或 return (s);
4、功能:找大于m的最小素数
#include<stdio.h>
#include<math.h>
int fun(int m)
{ int i,k;
for(i=m+1;;i++)
/**********FOUND**********/
{ for(k=2;k<srqt(i);k++)
/**********FOUND**********/
if(i%k=0) break;
/**********FOUND**********/
if(k<sqrt(i)) return i;
}
}
答案:1). <=
2). ==
3). >
5、功能:统计出若干个学生的平均成绩,最低分以与得最低分的人数。
例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,
75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分
的人数为1人。
#include "stdio.h"
float Min=0;
int J=0;
float fun(float array[],int n)
{
int i;float sum=0,ave;
Min=array[0];
展开阅读全文