C语言程序设计习题打印.docx
《C语言程序设计习题打印.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题打印.docx(16页珍藏版)》请在冰点文库上搜索。
C语言程序设计习题打印
程序设计基础复习题
一、填空题
1、C语言所提供的实型变量分为两种类型,它们是。
2、一个C源程序中至少应包含一个。
3.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’的值为。
4.在标准C语言中,输入操作是由库函数完成的,输出操作是由库函数
完成的。
5.对以下说明:
intc[10]={116,125,218,312,100,40,13,67,186};
c[4]的值为。
6.在C语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许
是。
7.设y为int型变量,请写出描述“y是偶数”的表达式。
8.设inti=0,j=1,k=2,a=3,b=4;执行表达式(a=ik)的值为。
9.与表达式a+=b等价的另一书写形式是。
10.有以下定义和语句
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是。
11.代表一个反斜杠字符“\”的转义字符是。
12.变量的指针就是变量的地址,存放变量地址的变量就是,它用来指向另一个变量。
13.++i和i++的不同之处在于。
14.设x、y和z是int型变量,且x=3,y=4,z=5,则表达式!
((xz||1)值为。
15.已知函数intf(intk){return((k<0)?
1:
f(k-2)+2);}
则f(3)的值是。
16.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为。
17.计算表达式:
x=(i=4,j=10,k=24)后,x的值为。
18.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++后,a的值为,b的值为。
19.设inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则表达式*(p+8)的值是。
20.若有以下定义:
chara;intb;
floatc;doubled;
则表达式a*b+d-c值的类型为。
21.*(p++)和*(++p)作用不同,它们的意义分别是
二、程序理解题
请给出运行以下程序的输出结果:
1.
#include
voidmain()
{intu=24,v=16,w;
while(v)
{w=u%v;u=v;v=w;}
printf("%d\n",u);
}
输出结果为:
2.
voidmain()
{chars[]"Yes\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
输出结果:
3.
voidmain()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
输出结果:
。
4、下列程序的运行结果是。
voidmain()
{intarr_sum(intarr[],intn);
inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int*p,total;
p=a[0];
total=arr_sum(p,12);
printf(“total=%d\n”,total);
}
intarr_sum(intarr[],intn)
{inti,sum=0;
for(i=0;isum=sum+arr[i];
return(sum);
}
5.给出以下程序的运行结果:
voidmain()
{inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d,%d,%d\n",a,b,c);
}
运行结果:
6.给出有下面一段程序的运行结果。
voidmain()
{intp[7]={11,13,14,15,16,17,18};
inti=0,,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
运行结果:
7.给出有下面一段程序的运行结果。
#include
intfac(intn)
{
staticintf=1;
f=f*n;
return(f);
}
voidmain()
{
inti;
for(i=1;i<=5;i++)
printf("%d!
=%d\n",i,fac(i));
}
答案:
8.请给出运行以下程序的运行结果:
voidmain()
{inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{if(i==2||i==4)continue;
j=0;
do{s+=a[j];j++;}while(j<4);
}
printf("%d\n",s);
}
运行结果:
三、程序填空题
1.以下程序可判断输入的一个整数是否能被5或13整除,若能整除,输出“yes”并换行,否则输出“no”并换行。
请填空。
#include
voidmain()
{intk;
printf(“Enteraintnumber:
”);
scanf(“%d”,&k);
if_____________
printf(“yes\n”);
else
printf(_____);
}
2.下面程序是将键盘输入的英文字符全改为小写英文字符输出,用换行符结束循环。
请填空。
#include
voidmain()
{
charc;
while()
{
if()
c=c+32;
printf("%c",c);
}
printf("\n");
}
3.有一个一维数组score,内放10个学生成绩,求平均成绩,请填空。
#include
floataverage(floatarray[10]);
voidmain()
{floatscore[10],aver;
inti;
printf("input10scores:
\n");
for(i=0;i<10;i++)
scanf("%f",);
printf("\n");
aver=average(score);
printf("averagescoreis%5.2f",aver);
}
floataverage(floatarray[10])
{inti;
floataver,sum=array[0];
for()
sum=sum+array[i];
;
;
}
4.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
请填空。
voidmain()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",);
for(i=0;i<20;i++)
{if(a>0)
{count++;
sum+=;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
5.下面程序可以逐行输出由language数组元素所指向的5个字符串。
请填空。
#include
voidmain()
{char*language[]={“BASIC”,“FORTRAN”,“PROLOG”,“JAVA”,
“C++”};
char;
intk;
for(k=0;k<5;k++)
{q=;
printf(“%s\n”,*q);
}
}
6.以下程序的功能是:
从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include
voidmain()
{charstr[81],*sptr;
inti;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]=='\n')break;
}
str[i]=;
sptr=str;
while(*sptr)putchar(*sptr);
}
7、程序的功能是用递归方法计算第五位学生的年龄,请填空。
递归公式如下:
10(n=1)
age(n)=
age(n-1)+2(n>1)
程序:
intage(intn)
{intc;
if()
c=;
else
c=;
return(c);
}
voidmain()
{printf(“age:
%d\n”,age(5));
}
8)下面程序的功能是在三个字符串中找出最小的,请填空:
#include
#include
voidmain()
{chars[20],str[3][30];
inti;
for(i=0;i<3;i++)gets(str[i]);
strcpy(s,();
if(strcmp(str[2],s)<0)strcpy(s,str[2]);
print(“%s\n”,);
}
9)以下程序的功能是:
通过指针操作,找出三个整数中的最小值并输出。
请填空。
#include
voidmain()
{int*a,*b,*c,num,x,y,z;
a=&x;b=&y;c=&z;
printf(“输入3个整数:
”);
scanf(“%d%d%d”,a,b,c);
printf(“%d,%d,%d\n”,*a,*b,*c);
num=*a;
if(*a>*b);
if(num>*c);
printf(“输出最小整数:
%d\n”,num);
}
10.C语言源程序文件的后缀是___________,经编译后生成的文件的后缀是_______,连接后生成的文件的后缀是.exe。
11.从键盘输入一个大写字母,要求改用小写字母输出。
请填空:
#include
voidmain()
{charc1,c2;
c1=;
printf(“%c,%d\n”,c1,c1);
;
printf(“%c,%d\n”,c2,c2);
}
12.以下程序的功能是:
从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。
请填空:
#include
voidmain()
{charstr[81],*sptr;
inti;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]=='\n')break;
}
str[i]=;
sptr=str;
while(*sptr)putchar(*sptr;
}
13.输入三角形的三边长,求三角形面积。
请填空:
voidmain()
{float;
scanf(“%f,%f,%f”,&a,&b,&c);
s=1.0/2*(a+b+c);
area=;
printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);
printf(“area=%7.2f\n”,area);
}
14.判断m是否素数。
请填空:
#include
#include
voidmain()
{
intm,i,k;
scanf("%d",&m);
;
for(i=2;i<=k;i++)
if()break;
if()printf("%disaprimenumber\n",m);
elseprintf("%disnotaprimenumber\n",m);
}
15.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。
如’a’变成‘f’,’w’变成’b’。
请填空:
#include
voidmain()
{charc;
c=getchar();
if(c>=’a’&&c<=’u’);
elseif(c>=’v’&&c<=z);
putchar(c);
}
16.输入三个整数x,y,z,请把这三个数由小到大输出。
请填空:
#include"stdio.h"
#include"conio.h"
main()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{}/*交换x,y的值*/
if(x>z)
{}/*交换x,z的值*/
if(y>z)
{}/*交换z,y的值*/
printf("smalltobig:
%d%d%d\n",x,y,z);
}
17.求1!
+2!
+3!
+4!
+…+20!
的值。
请填空:
#include
voidmain()
{floats=0,t=1;
intn;
for(n=1;n<=20;n++)
{
;
;
}
printf("1!
+2!
+...+20!
=%c\n",s);
}
18.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
请填空:
#include"stdio.h"
#include"conio.h"
main()
{
charc;
intletters=0,space=0,digit=0,others=0;
printf("pleaseinputsomecharacters\n");
while(!
='\n')
{
if()
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("allinall:
char=%dspace=%ddigit=%dothers=%d\n",letters,
space,digit,others);
}
19.以下程序是通过指针操作,找出三个整数中的最小值并输出。
请填空:
#include
voidmain()
{int*a,*b,*c,num,x,y,z;
a=&x;b=&y;c=&z;
printf(“输入3个整数:
”);
scanf(“%d%d%d”,a,b,c);
printf(“%d,%d,%d\n”,*a,*b,*c);
num=*a;
if(*a>*b);
if(num>*c);
printf(“输出最小整数:
%d\n”,num);
}
20.下面程序的功能是打印100以内个位数为6且能被3整除的所有数。
请填空。
#include
voidmain()
{inti,j;
for(i=0;;i++)
{j=i*10+6;
if()continue;
printf(“%d”,j);
}
}
四、编程题
1.给学生成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。
90分以上为‘A’,80-89分为‘B’,70-79分为‘C’,60-69分为‘D’,60分以下为‘E’。
2.输入一数组各元素值,将这个数组中的值按逆序重新存放(如原来顺序为5,4,3,2,1要求改为1,2,3,4,5)。
3、将一个2×3的二维数组中行与列的元素互换并存到另一个二维数组中。
设原数组的初值为{{1,2,3},{4,5,6}}。
4.用选择法对10个数排序(由小到大)。
要求从键盘输入这10个数。