C语言复习.docx
《C语言复习.docx》由会员分享,可在线阅读,更多相关《C语言复习.docx(15页珍藏版)》请在冰豆网上搜索。
![C语言复习.docx](https://file1.bdocx.com/fileroot1/2022-10/29/78e1d6e5-5672-483f-9d27-be828ab9220a/78e1d6e5-5672-483f-9d27-be828ab9220a1.gif)
C语言复习
一、填空题
二、单项选择题
三、看程序写结果
1、下面程序的输出结果是____。
main()
{inta=1,i=a+1;
do
{a++;
}while(!
~i++>3);
printf("%d\n",a);
}
2
main()
{chars[12]="abook";
printf("%5.3s",s);
}
3
main()
{inta,b;
scanf("%2d%3d",&a,&b);
printf("a=%db=%d\n",a,b);
}
4main()
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=15;
elsed=25;
printf("d=%d\n",d);
}
5
main()
{inta=1,b=0;
switch(a)
{case1:
switch(b)
{case0:
printf("**0**");break;
case1:
printf("**1**");break;
}
case2:
printf("**2**");break;
}
}
6main()
{char*s="12134211";
intv1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{case'1':
v1++;
case'3':
v3++;
case'2':
v2++;
default:
v4++;
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
7
main()
{intk=0;
charc='A';
do
{switch(c++)
{case'A':
k++;break;
case'B':
k--;
case'C':
k+=2;break;
case'D':
k=k%2;contiue;
case'E':
k=k+10;break;
default:
k=k/3;
}
k++;
}while(c<'C');
printf("k=%d\n",k);
}
8main()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
}
9
#include
main()
{intn[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
n[i][j]=i+j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[i+1][j+1]+=n[i][j];
printf("%d\n",n[i][j]);
}
10
#include
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
11
intm[3][3]={{1},{2},{3}};
intn[3][3]={1,2,3};
main()
{printf("%d\n",m[1][0]+n[0][0]);/*①*/
printf("%d\n",m[0][1]+n[1][0]);/*②*/
}
12
#include
try()
{staticintx=3;
x++;
return(x);
}
main()
{inti,x;
for(i=0;i<=2;i++)
x=try();
printf("%d\n",x);
}
13
#include
main()
{intx=1;
voidf1(),f2();
f1();
f2(x);
printf("%d\n",x);
}
voidf1(void)
{intx=3;
printf("%d",x);
}
voidf2(x)
intx;
{printf("%d",++x);
}
14下面程序的输出结果是____。
main()
{inta[]={1,2,3,4,5,6};
int*p;
p=a;
printf("%d",*p);
printf("%d",*(++p));
printf("%d",*++p);
printf("%d",*(p--));
p+=3;
printf("%d%d",*p,*(a+3));
}
15下面程序的输出结果是____。
main()
{inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a;
p+=6;
printf("%d",*p);/*①*/
printf("%d",*(*(a+6)));/*②*/
printf("%d",*(a[1]+=2));/*③*/
printf("%d",*(&a[0][0]+6));/*④*/
}
16下面程序的输出结果是____。
#include
f(intx,inty)
{return(y-x);
}
main()
{inta=5,b=6,c;
intf(),(*g)()=f;
printf("%d\n",(*g)(a,b));
}
17下面程序的输出结果是____。
main()
{char*alpha[7]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX","YZ"};
char**p;
inti;
p=alpha;
for(i=0;i<4;i++)
printf("%c",*(p[i]));
printf("\n");
}
四、程序填空题(每空1分,共15分)
1根据近似公式:
π2/6≈1/12+1/22+1/32+……+1/n2,求π值。
#include
doublepi(longn)
{doubles=0.0;
longi;
for(i=1;i<=n;i++)
s=s+①;
return(②);
}
2计算1-3+5-7+……-99+101的值。
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{①;
s=s+t;
②;
}
printf("%d\n",s);
}
3从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。
main()
{floatx,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while(①)
{if(x>amax)amax=x;
if(②)amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
4辗转相除法求两个正整数m和n的最大公约数。
hcf(intm,intn)
{intr;
if(m{r=m;
①;
n=r;
}
r=m%n;
while(②)
{m=n;
n=r;
r=m%n;
}
③;
}
5下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。
排好序的10个数分两行输出。
程序如下:
#include
main()
{①;
inti,j;
printf("Input10numbersplease\n");
for(i=0;②;i++)
scanf("%f",&a[i]);
printf("\n");
for(i=2;③;i++)
for(j=0;④;j++)
if(⑤)
{x=a[j];
⑥;
a[j+1]=x;
}
printf("Thesorted10numbers;\n");
for(i=0;⑦;i++)
{if(⑧)
printf("\n");
printf("%f\t",a[i]);
}
printf("\n");
}
6下面程序的功能是删除字符串s中的空格。
#include
main()
{char*s="Beijingligongdaxue";
inti,j;
for(i=j=0;s[i]!
='\0';i++)
if(s[i]!
='')①;
else②;
s[j]='\0';
printf("%s",s);
}
7下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:
输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
#include
main()
{charstr1[100],str2[100],c;
inti,s;
printf("Enterstring1:
");gets(str1);
printf("Enterstring2:
");gets(str2);
i=0;
while((str1[i]==str2[i]&&str1[i]!
=①))
i++;
s=②;
printf("%d\n",s);
}
8下面程序的功能是计算S=k!
。
k=0
longfun(intn)
{inti;
longs;
for(i=1;i①;i++)
s*=i;
return(②);
}
main()
{intk,n;
longs;
scanf("%d",&n);
s=③;
for(k=0;k<=n;k++)
s+=④;
printf("%ld\n",s);
}
9下面的函数是一个求阶乘的递归调用函数。
facto(intn)
{if(n==1)①;
elsereturn(②);
}
10下列函数是求一个字符串str的长度。
intstrlen(char*str)
{if(①)return(0);
elsereturn(②);
}
11用递归实现将输入小于32768的整数按逆序输出。
如输入12345,则输出54321。
#include"stdio.h"
main()
{intn;
printf("Inputn:
");
scanf("%d",①);
r(n);
printf("\n");
}
r(intm)
{printf("%d",②);
m=③;
if(④)
⑤;
}