级C语言练习题.docx
《级C语言练习题.docx》由会员分享,可在线阅读,更多相关《级C语言练习题.docx(16页珍藏版)》请在冰豆网上搜索。
级C语言练习题
2005级C语言练习题
班级__0502______姓名__王冠男____
一、选择题
1、一个算法应该具有"确定性"等5个特性,下面对另外4个特性的描述中错误的是()
A)有零个或多个输入B)有零个或多个输出
C)有穷性D)可行性
2、以下叙述中正确的是()
A)C语言的源程序不必通过编译就可以直接运行
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C)C源程序经编译形成的二进制代码可以直接运行
D)C语言中的函数不可以单独进行编译
3、以下符合C语言语法的实型常量是()
A)1.2E0.5B)3.14.159EC).5E-3D)E15
4、算法具有五个特性,以下选项中不属于算法特性的是()(A)有穷性(B)简洁性(C)可行性(D)确定性
5、以下选项中可作为C语言合法常量的是()
A)-80.B)-080C)-8e1.0(D)-80.0e
6、以下不能定义为用户标识符是()
A)MainB)_0C)_intD)sizeof
7、以下选项中,不能作为合法常量的是()
A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0
8、数字字符0的ASCII值为48,若有以下程序()
main()
{
chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是
A)3,2B)50,2C)2,2D)2,50
9、有以下程序[]
main()
{
intm=12,n=34;
printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是()
A)12353514B)12353513C)12343514D)12343513
10、有定义语句:
intb;charc[10];则正确的输入语句是()
A)scanf("%d%s",&b,&c);B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);D)scanf("%d%s",b,&c);
11、有以下程序
main()
{
inta,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是()
A)6,1B)2,1C)6,0D)2,0
12、有以下程序
main()
{
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
程序运行后的输出结果是()
A)42B)45C)56D)60
13、以下能正确定义一维数组的选项是()
A)inta[5]={0,1,2,3,4,5};B)chara[]={0,1,2,3,4,5};
C)chara={'A','B','C'};D)inta[5]="0123";
14、有以下程序
main()
{
chara[7]="abc0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序运行后的输出结果是()
A)22B)76C)74D)73
15、有以下程序
main()
{
inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",a[1][i]);
}
程序运行后的输出结果是[]
A)012B)123C)234D)345
16、若以下选项中的变量已正确定义,则正确的赋值语句是()
A)x1=26.8%3B)1+2=x2C)x3=0x12D)x4=1+2=3;
17、设有以下定义
inta=0;
doubleb=1.25;
charc=’A’;
#defined2
则下面语句中错误的是()
A)a++;B)b++C)c++;D)d++;
18、设有定义:
floata=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相
符的是()
A)(a+b)*h/2B)(1/2)*(a+b)*hC)(a+b)*h*1/2D)h/2*(a+b)
18、有以下程序
main()
{
intx=102,y=012;
printf("%2d,%2d\n",x,y);
}执行后输出结果是()
A)10,01B)002,12C)102,10D)02,10
20、设有定义:
inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()
A)scanf("%d",pa);B)scanf("%d",a);
C)scanf("%d",&pa);D)scanf("%d",*pa);
21、有以下程序
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果是()
A)自然数1~9的累加和B)自然数1~10的累加和
C)自然数1~9中的奇数之和D)自然数1~10中的偶数之和
22、若程序中定义了以下函数
doublemyadd(doublea,doubleb)
{return(a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()
A)doublemyadd(doublea,b);B)doublemyadd(double,double);
C)doublemyadd(doubleb,doublea);D)doublemyadd(doublex,doubley);
23、有以下程序
charfun(charx,chary)
{if(xreturny;
}
main()
{inta='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));
}
程序的执行结果是()
A)函数调用出错B)8C)9D)7
24、有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是()
A)5B)6C)8D)9
25、有以下程序
main()
{chara[]="abcdefg",b[10]="abcdefg";
printf("%d%d\n",sizeof(a),sizeof(b));
}
执行后输出结果是()
A)77B)88C)810D)1010
26、有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a);swap2(b[0],b[1]);
printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);
}
其输出结果是()
A)5353B)5335C)3535D)3553
27、有以下程序
intf(intb[][4])
{inti,j,s=0;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[i][j];
}
returns;
}
main()
{inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(a));
}
执行后的输出结果是()
A)12B)11C)18D)16
28、有以下定义
#include
chara[10],*b=a;
不能给数组a输入字符串的语句是()
A)gets(a)B)gets(a[0])C)gets(&a[0]);D)gets(b);
29、有以下程序
main()
{char*p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果是()
A)2B)3C)4D)5
30、有以下程序
#definef(x)x*x
main()
{inti;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
执行后输出结果是()
A)28B)22C)16D)4
31、设有以下语句
typedefstructS
{intg;charh;}T;
则下面叙述中正确的是()
A)可用S定义结构体变量B)可以用T定义结构体变量
C)S是struct类型的变量D)T是structS类型的变量
32、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()
A)chars[10]="abcdefg";B)chart[]="abcdefg",*s=t;
C)chars[10];s="abcdefg";D)chars[10];strcpy(s,"abcdefg");
33、有以下程序
#include
main(intargc,char*argv[])
{inti,len=0;
for(i=1;iprintf("5d\n",len);
}经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
exabcdefgh3k44
执行后输出结果是()
A)14B)12C)8D)6
34、有以下程序
structSTU
{charname[10];
intnum;
intScore;
};
main()
{structSTUs[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},
{"wangYin",20043,680},{"SunDan",20044,550},
{"Penghua",20045,537}},*p[5],*t;
inti,j;
for(i=0;i<5;i++)p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]->Score>p[j]->Score)
{t=p[i];p[i]=p[j];p[j]=t;}
printf("%5d%d\n",s[1].Score,p[1]->Score);
}
执行后输出结果是()
A)550550B)680680C)580550D)580680
35、以下叙述中正确的是[]
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
36)以下语句或语句组中,能正确进行字符串赋值的是[]
A)char*sp;*sp="right!
";B)chars[10];s="right!
";
C)chars[10];*s="right!
";D)char*sp="right!
";
37、有以下程序
main()
{chars[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是()
A)15B)16C)12D)59
38、有以下程序
main()
{intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("%4c",'');
for(j=_____;j<4;j++)printf("%4d",num[j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1234
678
1112
16
则在程序下划线处应填入的是()
A)i-1B)iC)i+1D)4-i
39)有以下程序
point(char*p){p+=3;}
main()
{charb[4]={'a','b','c','d'},*p=b;
point(p);printf("%c\n",*p);
}
程序运行后的输出结果是()
A)aB)bC)cD)d
40、有以下程序
#defineP3
voidF(intx)
{return(P*x*x);}
main()
{printf("%d\n",F(3+5));}
程序运行后的输出结果是()
A)192B)29C)25D)编译出错
二、填空题
1、已知字符A的ACSII码值为65,以下语句的输出结果是___________________。
charch=’B’;
printf("%c%d\n",ch,ch);
2、有以下语句段
intn1=10,n2=20;
printf("__________",n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
3、有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}执行后输出结果是________________。
4、有以下程序
main()
{intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}执行后输出结果是________________。
5、有以下程序
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}执行后输出的结果是_____________。
6、以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。
请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=________________);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
7、下面程序的运行结果是:
________
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
8、以下程序中给指针p分配三个double型动态内存单元,请填空。
#include
main()
{double*p;
p=(double*)malloc(________);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
9、以下程序的运行结果是______________。
#include
typedefstructstudent{
charname[10];
longno;
floatscore;
}STU;
main()
{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>0)d=b;
if(strcmp(c.name,d.name)>0)d=c;
printf("%ld%s\n",d.no,p->name);
}
10、以下sum函数的功能是计算下列级数之和。
S=1+x+x2/2!
+x3/3!
+........+xn/n!
请给函数中的各变量正确赋初值。
doublesum(doublex,intn)
{inti;doublea,b,s;
__________________;
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;
}
11、以下程序运行后的输出结果是_________
#defineS(x)4*x*x+1
main()
{
inti=6,j=8;
printf("%d\n",S(i+j));
}
12、以下程序运行后的输出结果是_____________
main()
{
inta,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
13、以下程序运行后的输出结果是______
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
14、以下程序运行后的输出结果是_____
fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inti,a=5;
for(i=0;i<3;i++)printf("%d%d",i,fun(a));
printf("\n");
}
15、以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,
函数返回字符串:
yes!
否则函数返回字符串:
no!
并在主函数中输出.所谓回文即
正向与反向的拼写都一样,例如:
adgda.请填空.
#include
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=______;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!
=*p2--){t=1;break;}
if(____)return("yes!
");
elsereturn("no!
");
}
main()
{charstr[50];
printf("Input:
");scanf("%s",str);
printf("%s\n",______);
}
16、以下程序运行后的输出结果是___
main()
{charc1,c2;
for(c1='0',c2='9';c1printf(“%c%c”,c1,c2);
printf("\n");
)
三、设计程序
1、设n=50,编写程序,计算并输出S(n)的值,要求结果保留6位小数。
S(n)=(1*2)/(3*4)-(3*4)/(5*6)+(5*6)/(7*8)+…+(-1)^(n-1)*[(2n-1)*2n]/[(2n+1)*(2n+2)]+…
(参考答案-0.472034)
2、编写程序,求下面级数前n项的和S(n),要求S(n)应满足|S(n)-S(n-1)|<0.0001。
结果取6位小数。
1+1/2^4+1/3^4+1/4^4+…+1/n^4+…(其中,^表示幂运算)(1.082037)
3、设n=35,编写程序,计算并输出下面数列前n项的和,结果取6位小数。
2/3,4/5,6/7,8/9,10/11,12/13,14/15,…(38.161447)
4、编写程序,求一元非线性方程f(x)=2x+lnx-3.7=0在区间(1,5)上的近似根r,精确到0.00001。
参考答案(1.6114)
5、输入100个数,输出最小的10个数。
6、编写程序,自己产生一个二维数组A(N,N),(N取5),分别计算出数组中每一行数据的平均值。
7、输入5名学生记录,每个记录含学生姓名,学号,性别,成绩,按成绩从高至低的次序输出学生记录。
8、编写一个通用过程(函数或子程序),判断一个5位数是否满足以下条件:
(1)该数能被3整除。
(2)取它的右边3位数,这个3位数也能被3整除。
例如:
12000、30444、51813。
要求调用该过程,计算并输出区间[10000,20000]之间满足条件的数据的个数。
(参考答案1002)
9、编写程序,从键盘输入一批不少于10个的任意数据,统计小于平均值的数据的个数。
10、计算并输出0°—360°之间每间隔40°(不含边界)的正弦值。
11、建立一单向链表。