C语言试题训练.docx
《C语言试题训练.docx》由会员分享,可在线阅读,更多相关《C语言试题训练.docx(8页珍藏版)》请在冰豆网上搜索。
C语言试题训练
C语言试题训练
引导语:
现如今,C语言的应用已经越来越广泛,学习的人也越来越多,以下是小编整理的C语言试题训练,欢迎参考阅读!
一、单项选择题:
(10分,每题2分)
1.设有以下定义:
inta[3][3]={1,2,3,4,5,6,7,8,9};
int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是。
A)*((*ptr+1)[2])
B)*(*(p+5))
C)(*ptr+1)
D)*(*(a+1)+2)
2.有如下程序片段:
inti=0;
while(i++=2);
printf(%d,i);
则正确的执行结果是:
A)2B)3
C)4D)无结果
3.合法的数组定义是。
A)inta[]=language;
B)inta[5]={0,1,2,3,4,5};
C)chara=string;
D)chara[]={0,1,2,3,4,5};
4.设有如下定义:
structst
{
inta;
floatb;
}st1,*pst;
若有pst=st1;则下面引用正确的是________。
A)(*pst.st1.b)B)(*pst).b
C)pst-st1.bD)pst.st1.b
5.如果inti=3,则printf(%d,-i++)的输出结果是,i的值是。
A)-34B)-44
C)-43D)-33
二、写出下列程序的运行结果。
(10分,每题2分)
1.
#include
main()
{
intx,y;
scanf(%2d%*2s%1d,x,y);
printf(%d,x/y);
}
程序运行时输入:
2345678↙
则程序运行结果是:
2.
#include
main()
{
inti=0;
while(i3)
{
switch(i++)
{
case0:
printf(fat);
break;
case1:
printf(hat);
case2:
printf(cat);
default:
printf(Ohno!
);
}
put);
}
}
运行结果是:
3.
#include
intSquare(inti);
main()
{
inti=0;
i=Square(i);
for(;i5;i+=2)
{
staticinti=1;
i+=Square(i);
printf(%d,i);
}
printf(%d,i);
}
intSquare(inti)
{
returni*i;
}
程序运行结果是:
4.
#include
voidinv(int*p,intn);
main()
{
inti;
inta[10]={13,7,9,11,0,6,7,5,4,2};
for(i=0;i10;i++)
{
printf(%d,,a[i]);
}
printf();
inv(a,10);
for(i=0;i10;i++)
{
printf(%d,,a[i]);
}
}
voidinv(int*p,intn)
{
int*i,*j,m=(n-1)/2,t;
j=p+n-1;
for(i=p;i=p+m;i++,j--)
{
t=*i;*i=*j;*j=t;
}
}
程序运行结果:
5.
#include
structname
{
charfirst[20];
charlast[20];
};
structbeam
{
intlimbs;
structnametitle;
charty[30];
};
main()
{
structbeam*pb;
structbeamdeb={6,{Berbnazel,Gwolkapwolk},
Arcturan};
pb=deb;
printf(%d,deb.limbs);
printf(%s,pb-ty);
printf(%s,pb-ty+2);
}
运行结果是:
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(8分,每空1分)
1.下面这个程序的功能是对含有n个元素(最多10个)的一维数组按升序进行排序。
#include
#defineARRAY_SIZE10
voidSort(inta[],intn);
voidInputArray(inta[],intn);
voidPrintArray(inta[],intn);
main()
{
inta[ARRAY_SIZE],n;
printf(Inputarraylenthn=10:
);
scanf(%d,n);
printf(输入数组a:
);
InputArray(a,n);
Sort(a,n);
printf(打印排序后的数组a:
);
PrintArray(a,n);
}
voidSort(inta[],intn)
{
inti,j,p,temp;
for(i=0;i;i++)
{
p=i;
for(j=;jn;j++)
{
if()p=j;
}
if()
{
temp=a[p];
a[p]=a[i];
a[i]=temp;
}
}
}
voidInputArray(inta[],intn)
{
inti;
for(i=0;in;i++)
{
;
}
}
voidPrintArray(inta[],intn)
{
inti;
for(i=0;in;i++)
{
printf(%d,a[i]);
}
printf();
}
2.下面程序的功能是从键盘输入一行字符,统计其中有多少单词。
假设单词之间以空格分开。
[提示:
判断是否有新单词出现的方法是------当前被检验的字符不是空格,而前一被检验字符是空格,则表示有新单词出现。
]
#include
main()
{
charstr[80];
inti,num;
gets(str);
if(str[0]!
=)
{
num=1;
}
else
{
num=0;
}
for(i=1;str[i];i++)
{
if(str[i]str[i-1])
{
num++;
}
}
printf(num=%d,num);
}
四、在下面给出的4个程序中,共有16处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
只要找对15个即可,多找不加分。
)
1.在给定的一组书名中,从键盘任意输入一个书名(书名可以有空格)。
若找到,则打印该书名,否则打印”没找到”。
#include
#include
main()
{
inti,findFlag=0;
charx;
charstr[][13]={Pascal,Basic,Fortran,Java,
VisualC,VisualBasic};
printf(请输入一个字符串:
);
gets(x);
while(i6!
findFlag)
{
if(x==str[i])
{
findFlag=1;
}
i++;
}
if(findFlag)
{
printf(%s,x);
}
else
{
printf(没找到!
);
}
}
2.打印100~200之间的所有素数。
#include
#include
main()
{
intm,i;
for(m=100;m=200;m++)
{
for(i=2;isqrt(m)flag;i++)
{
if(m%i==0)
flag=0;
}
if(flag)
{
printf(%d,m);
}
}
}
3.从键盘输入任意一个学生的学号,在班级学生表中(学生表的学号是按升序排序的,且班级最多30人)查找该学号是否存在,存在打印其考试成绩,否则打印“Notfind!
”。
#include
#defineARR_SIZE30;
intSearch(long*p,intn,longx);
main()
{
longnum[ARR_SIZE],x;
floatscore[ARR_SIZE];
inti,n,pos;
printf(输入班级实际人数:
);
scanf(%d,n);
printf(输入学生学号和成绩);
for(i=0;in;i++)
{
scanf(%ld%f,num[i],score[i]);
}
printf(输入待查找学号:
);
scanf(%d,x);
pos=Search(num,n,x);
if(pos+1)
printf(score=%f,score[pos]);
else
printf(Notfind!
);
}
intSearch(long*p,intn,longx);
{
inti,flag;
for(i=0;in;i++)
{
if(*(p+i)==x)
{
flag=i;
break;
}
else
{
flag=-1;
}
}
returnflag
}
4.该程序的作用是将一个字符串中的元音字母复制到另一个字符串,然后输出。
#include
main()
{
charstr1[80],str2[80];
printf(输入一个字符串:
);
gets(str1);
Cpy(str1[],str2[]);
printf(输出一个字符串);
puts(str2);
}
voidCpy(chars[],charc[])
{
inti,j;
for(i=0;s[i]!
=\0;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)
{
s[i]=c[j];
j++;
}
}
}
五、编程(42分)
1.编程计算:
1!
+3!
+5!
+…+(2n-1)!
的值。
其中,n值由键盘输入。
(14分)
2.不用标准库函数strlen,自己编写一个函数MyStrlen,实现计算字符串长度的功能。
要求在主函数中输入一个字符串(可以读入空格),并在主函数中打印字符串的长度。
(14分)
请按以下给定的函数原型编写程序:
intMyStrlen(charstr[]);
或
intMyStrlen(char*p);
注:
不按给定的函数原型或使用全局变量编写程序不给分。
3.编写一个函数,求最大值及最大值所在元素的下标。
要求在主函数中通过键盘任意输入一组数(最多10个),且在主函数中打印最大数及最大数元素的下标。
(14分)
请按以下给定的函数原型编写程序:
voidFindmax(intnum[],intn,int*pMaxNum,int*pMaxPos);
或
voidFindmax(int*p,intn,int*pMaxNum,int*pMaxPos);
注:
不按给定的函数原型或使用全局变量编写程序不给分。