求C语言问答!急!

c语言试题(1)

一、选择题(每题2分,* * * 20分)

1.下列选项中C语言的数据类型是()。

A.复杂类型b .逻辑类型c .集合类型d .双精度类型

2、C程序的执行来自()

A.main()函数开始,直到main()函数结束。b .第一个函数开始,直到最后一个函数结束。

C.从第一条语句开始,直到最后一条语句结束。D. Main()函数开始直到最后一个函数结束。

3,有一个语句int a = 3;然后执行语句a+= a-= a * a;之后,变量A的值是()

A.3 B.0 C.-12 D.9

4.If char c [5] = {'c ',' d ',' \ 0 ',' \ 0 ' };执行printf语句(" %s ",c);结果是()。

A.cd\0e B.'c''d' C.cd D.cd e

5.已知:int a [2] [3] = {1,2,3,4,5,6},(* p)[3]= a;那么下列表达式不是4()。

A.*(* p+3)b . * p+3 c . *(*(p+0)+3)d . a[0][3]

6.下列关于宏替换的说法不正确的是()。

A.宏替换不占用运行时间b .宏名没有类型。

C.宏替换只是字符串替换d .宏名必须用大写字母表示。

7.执行charstr[10]= " ch \ Nina ";strlen(str)的值是()

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

8.以下程序的输出是: ()

#定义功率(x) (x*x)

主()

{ int I = 4;printf("%d ",POWER(I-2));}

A.-9 B- 7 c . 5d-6

9.在int a[3][4][2]的定义中;之后,第10个元素是()

a . a[2][1][2]b . a[1][0][1]c . a[2][0][1]d . a[2][2][1]

10,下面程序的输出是: ()

typedef结构

{ long x[2];& ltbr & gt短y[4];& ltbr & gtchar z[8];& ltbr & gt} MYTYPE

我的a型;

主()

{ printf("%d\n ",sizeof(a));}

A.2 B. 8 C. 14 D. 24

二。填空(每个空格1,***每个空格11)

1,字符串“a”在内存中占用的字节数为。

2.C语言中的标识符只能由字母、下划线和。

3、如果有定义语句“int a=25,b=14,c = 19;”,下面语句的执行结果是

if(a++ & lt;= 25 & amp& ampb-& lt;= 2 & amp& ampc++) printf("***a=%d,b=%d,c=%d\n ",a,b,c);

else printf("###a=%d,b=%d,c=%d\n ",a,b,c);

4.它有如下定义:a[]= " b 172 \ \ ' a % % ";执行printf语句(" %d ",strlen(a));的结果是。

5.如果定义的话,int A [12] = {1,2,3,4,5,6,7,8,9,10,11,12},*。for(I = 0;我& lt4;i++)p[I]= & amp;a[I * 3];那么*(*(p+1)+2)的值为,而*p[2]的值为。如果数组的第一个地址是2000,则p[1]指向的地址是。

6.设a = 2,b = 3,x = 3.5,y = 2.5,那么表达式(float)(a+b)/2+(int)x%(int)y的结果为。

7.如果X和Y都是int变量,初始值为1,则表达式:-X & amp;& ampy++之后,y的值是。

8.该语句为(I = 1;I = = 10;i++)继续;循环次数为。

9、下面的程序输出。

主()

{enum em {em1=3,em2=1,em3 };

char *aa[]={"AA "," BB "," CC "," DD " };printf("%s%s%s\n ",aa[em1],aa[em2],aa[em3]);

}

三、写出程序结果(每题5分,***35分)

1 、#包含

主()

{int x,y,z;& ltbr & gtx=1,y=2,z = 3;x+= y+= z;& ltbr & gtprintf("1:%d\n ",z+= x & gt;y?x++:y++);& ltbr & gtx = 0x 02 ff;y = 0x ff 00;& ltbr & gtprintf("2:%d\n ",(x & ampy)>;& gt4 | 0x 005 f);& ltbr & gtx = y = z =-1;++ x | | ++ y & amp;& amp++ z;& ltbr & gtprintf("3:%d,%d,%d\n ",x,y,z);& ltbr & gt}

2 、#定义f(x) x*x

主()

{int a=6,b=2,c;& ltbr & gtc = f(a+b)/f(b);& ltbr & gtprintf("%d\n ",c);& ltbr & gt}

3、乐趣(int k)

{ printf("%d ",k);

if(k & gt;0)

好玩(k-1);

}

主( )

{ int w = 5;乐趣(w);printf(" \ n ");}

4 、#包括

主()

{int x=1,y = 0;& ltbr & gt开关(x)& lt;br & gt{ case 1:& lt;br & gt开关(y)& lt;br & gt{ case 0:printf(" first \ n ");打破;& ltbr & gtcase 1:printf(" second \ n ");打破;& ltbr & gt}

案例二:printf(" third \ n ");

}

}

5 、#包括

主()

{ int k = 4;

func(k);func(k);

}

func(int a)

{静态整数m = 0;

m+= a;

printf("%d ",m);

}

6、结构st

{ int x;

int * y;

} * p;

int s[]={30,20 };

struct st a[]={1,& amps[0],2,& amps[1]};

主()

{ p = a;printf("%d ",p-& gt;x);

printf(" % d \ n " ,++((++p)-& gt;y));

}

7.假设当前磁盘目录中有两个文本文件,它们的名称和内容如下:

文件名:a1.txta2.txt。

内容:ABCDEF# abcdef#

#包含“stdio.h”

主()

{ FILE * fp& ltbr & gtvoid fc();& ltbr & gtif((fp=fopen("a1.txt "," r ")= = NULL)& lt;br & gt{printf("无法打开文件!\ n ");退出(1);}

else { fc(FP);fclose(FP);}

if((fp=fopen("a2.txt "," r ")= = NULL)

{printf("无法打开文件!\ n ");退出(1);}

else { fc(FP);fclose(FP);}

}

空fc(fp1)

FILE * FP 1;

{ char c;& ltbr & gtwhile((c=fgetc(fp1))!= ' # ')putchar(c);& ltbr & gt}

四、填空(每空2分,***14分)

1,以下程序求矩阵A的主对角元素之和,请填空。

主()

{ int a[3][3]={2,4,6,8,10,12,14,16,18 };

int sum=0,I,j;

for(I = 0;我& lt3;① )

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

if(I = = j)sum = sum+③;

printf("sum=%d\n ",sum);

}

2.下面的函数coy将字符数组S2中的所有字符复制到字符数组S1中。复制时,' \0 '也要复制,' \0 '后的字符不使用。

coy(char s1[],char s2[])

{ int I;

for(I = 0;s2[i]!= ① ;i++)

s 1[I]= S2[I];

② ;

}

3.下面这个程序的作用是将字符串A中的奇数元素从小到大排序,其他元素不变。请填空。

主()

{ char a[]= "学生",t;int i,j;

for(I = 1;我& lt7;i+=2)

for(j = I+2;j & lt8;① )

如果(②)

{ t = a[I];a[I]= a[j];a[j]= t;}

看跌期权(a);

}

c语言试题(2)

1.填空(每题2分,***20分)

1.c语言的基本数据类型有:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;

结构类型有:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。P.13

2.C语言源程序的注释符号是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

为了显示层次结构,C语言源程序通常以_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _的格式编写。第4页

3.源程序测试的编译目标文件。c是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;

连接处理后,生成的可执行文件是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

4.strlen ("1234 \ 0xy)的值为:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;

sizeof(float)的值是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

5.二维数组a[10] [50]最后一行的第一个地址是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;

最后一个元素的第一个地址是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

6.在C标准库函数中,数学函数的原型在:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。P.130

7.已知函数定义为int stat (int a,float *p)。

{……………}

那么这个函数的两个参数类型就是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

8.设int x,y,z = 4;

x = y = ++ z;

x =(y & gt;z)?x+2;x++;那么x的值是:_ _ _ _ _ _ _ _;

设int a = 0,b = 0,c = 0;c = ++ a | | b++;,那么a,b,c的值是_ _ _ _ _ _ _ _ _ _。

9.if (x=0)的等价形式写成if(!x);

常见的是判断两个(浮点)变量x和z是否相等:if (fabc (x-z)

10.已知赋值语句张。年份= 1985;可以判断张是_ _ _ _ _ _ _ _ _ _ _型变量;

定义文件指针的C语句是:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

2.选择题(每题1,***每题10)

1.C程序的基本单元是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.函数b .标识符c .表达式d .语句

2.如果int类型的数据长度为2字节,则该类型数据的取值范围为_ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.0至65536b

C.-32767至32768d。-32768到32767

3.在C语言中,逻辑值“真”是用_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _来表示的。

A.预定义为真值的宏b .非零数字

C.正数d .非零整数

4.c语言规定else对于嵌套的if语句总是匹配_ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.用最外面的if B .用最近的if before

C.没有else的最近的if D。以及最近的if before {}

5.数组定义CHAR A [10] = {` A ',` b ',` c`}:它包括几个元素_ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.3 B.9 C.4 D.10

6.当数组名作为参数传递给被调用的函数时,形参得到_ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.数组b中第一个元素的值。数组中所有元素的值

C.数组中第一个元素的第一个地址。数组中所有元素的第一个地址。

7.为了表达关系x ≥ y ≥z,C语言中正确的表达方式是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.(x & gt= & gty & gt= z)b .(x & gt;=y)和(y & gt=z)

C.(x & gt= y)& amp;& amp(y & gt= z)d .(x & gt;y)& amp;(y & gt=z)

8.根据定义,int a [] = {1,2,3},I,* p = a;_ _ _ _ _ _ _ _ _ _ _ _ _的语法分析不正确。

A.a[p-a]b . *(& amp;a)c . p . d . *(*(a+I))

9.如果有语句scanf ("%d% d ",&;一,& ampb);使变量A和B分别得到12和34;正确的输入形式是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

A.12 34 B.12,34 C.1234 D.12:34

10 . union uex int I;浮动f;char c;} exsizeof(ex)的值是_ _ _ _ _ _ _ _ _ _ _ _ _ _。

a4 b . 5 c . 6d . 7

3.分析程序,写出运行结果。(每题4分,***20分)

1.源程序如下。在运行时,假设键盘输入字符串是“2004”。

#包括

无效总管(无效)

{

int n = 0;

char c;

while( (c=getchar())!=`\n`) /*字符数*/

{

if(c & gt;= ` 0` & amp& ampc & lt=`9` )

n = n * 10+c-` 0 `;/*数字*/

}

printf("value=%d|n ",n);

}

结果是:值=2004。

2.源程序如下:

#包括

无效总管(无效)

{

int num[9]= { 399398397396395299290311,301 };

int score[9]={81,85,59,77,90,66,89,93,73 };

int iMax,iPos,I;

iPos = 0;

iMax = score[iPos];

for(I = 1;我& lt9;i++)

if(score & gt;iMax)

{

iPos =我;

iMax = score[iPox];

}

printf("数量=%d,分数=%d ",数量[iPos];得分【iPos】);

结果是:num=311,score=93。

3.源程序如下。假设操作时键盘输入数据为:1 2 3 4 5 6 7 8 9 10。

#包括

无效总管(无效)

{

int i,a[10];

int * p;

p = a;

for(I = 0;我& lt10;i++)

scanf("%d ",p++);

for(p = a;p & ltSPAN & gt;p++)

if (*p%2)printf("%3d ",* p);

}

结果是:1 3 5 7 9。

4.源程序如下,运行两次,分别输入数据13和21。

#包括

#包括

无效总管(无效)

{

int n,s;

缺少(" %d ",& ampn);

s =盘端(n);

if(s = = 1)printf(" yes \ n ");

else printf(" no \ n ");

}

int panduan(int n)

{

int k,j;

k =(int)sqrt((double)n);

for(j = 2;j & lt=k,j++)

{

if(n % j = = 0)break;

}

if(j & gt;k)retum(1);

else retum(0);

}

结果是肯定的。

5.源程序如下,假设运行时键盘输入字符为:AxByCz。

#包括

#包括

无效总管(无效)

{

字符串[80];

int I;

gets(str);

for(I = 0;str!=`\0`;i++)

if(str & gt;= `a` & amp& ampstr & lt= ` z `)str-= 32;

else if(str & gt;= `A` & amp& ampstr & lt= ` z `)str+= 32;

卖出(str);

}

结果是:aXbYcZ

4.以下过程中的每一行都有一个错误。改正行中的错误,使之符合题目要求。(每具尸体4分,***20分)

1.找到s=1+2+3+,,,,+100。

Include更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

Void sum (void)更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

{

int s,I;

for (s=0,I = 1;我& lt=100;i++)

{

s = s+i++;更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

}

Printf ("s =% f ",s)被更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

}

2.源程序实现x。

#包括

双功率(浮动。int)更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

无效总管(无效)

{

int i,n;

浮动x;

scanf ("%f,%d ",& ampx & amp;n);

for(I = 1;我& lt9;i++)

printf("%d,%e\n ",I,pow(i,x);

}更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

双v v电源(浮点x,整数n)

{

int I;

双p = 0;更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

for(I = 1;我& lti++)& gt;更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

p * = x;

retum(p);

}

3.源程序按升序排列。

#包括

无效总管(无效)

{

int i,j,iMin,a[10]={4,3,5,1,10,12,2,6,7,9},iTemp

for(I = 0;我& lt9;i++)

{

iMin = 0;更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

for(j = I+1;j & lt10;j++)

if(a[iMin]& lt;iMin = " j;"& gt更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

If (iMin==i)修正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

{ iTemp = a;

a[iMin]= a;更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

a[iMin]= iTemp;

}

}

for(I = 0;我& lt10;i++)

printf("%4d ",a):

}

4.源程序求平均值。

#包括

无效总管(无效)

{

int i,sum更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

浮动平均值;

int sc[10],* p = sc

for (i=0,i & lt10;I++)更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _。

{

scanf("%d ",p++);

sum+= * p;更正是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

}

avg = sum/10;将其更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

printf("avg=%f ",avg);

}

5.源程序需要eX=1+x+x2/2!+……+xn/n!前n+1项之和

#包括

void main(void & gt;

{

float exp,x,t;

int i,n;

scanf("%f,%d ",& ampx & amp;n);

t = 0;将其更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

exp = 1.0;

for(I = 1;我& lt= n;i++)

{

if(t & lt;1e-6)循环;将其更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _。

t+= x/I;将其更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

exp * = t;将其更正为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。

}

printf("\n%15.6f ",exp);

}

动词 (verb的缩写)编程题(每题6分,***30分)

1.根据下面的程序框架,写一个子函数来交换两个整型变量X和Y的值..

#包括

void swap (int *,int *);

无效总管(无效)

{

int x,y;

scanf("%d,%d ",& ampx & amp;y);

互换(ampx & amp;y);

printf("%d,%d ",x,y);

}

无效交换( )

{

}

2.设置一个36人的班级参加C语言考试,使用一维数组score[36]存储考试结果。给出了部分程序,并对以下程序进行了改进,实现统计并输出失败人数和百分比。

#包括

无效总管(无效)

{ int I;

浮动scoer[36],百分比;

int count = 0;

for(I = 0;我& lt36;i++)

{

scanf("%f ",& amp分数);

}

3.改进下面的程序,使其可以通过键盘任意输入一串字符,并计算大写字母ia,小写字母iA和其他字符iother的个数。

#包括

#包括

无效总管(无效)

{

字符串[80];

int i,iA=0,ia=0,io ther = 0;

}

4.改进下面的程序,求一个方阵及其转置矩阵的主副对角元素之和。设方阵用二维数组A表示,转置矩阵用t表示,S1和s2表示主副对角元素之和。

#包括

无效总管(无效)

{

int a[3] [3]={1,3,5,7,9,11,13,15,11 };

int i,j,s1,S2;

int t[3][3];

printf("%d,%d,\n ",s1,S2);

for(I = 0;我& lt3;i++)

for(j = 0;j & lt3;j++)

printf("%3d ",t[j]);

}

5.给定字符数组str[80],编写一个返回指针的子函数,以找到字符ch第一次出现的位置。

#包括

#包括

#包括

char *lstrchar(char*,char);

无效总管(无效)

{

char c,*p,str[80];

gets(str);

scanf("%c ",& ampc);

p=lstrchar(str,c);

if(p = = NULL)printf(" char % c not found \ n " c);

else printf("位置是%d ",p-str);

char "lstrchar()

{ }

历年全国计算机二级考试C语言真题及答案

/upload files/20064222324839 . rar