求C语言问答!急!
一、选择题(每题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