c语言复习题及答案Word文档下载推荐.docx
《c语言复习题及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言复习题及答案Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
![c语言复习题及答案Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/23/fbc82cc3-cf87-4623-82e7-aac34a505a2c/fbc82cc3-cf87-4623-82e7-aac34a505a2c1.gif)
max=%d\n"
max);
count=CountFail(score,20);
count=%d\n"
count);
intFindMax(intscore[],intn)
intmax,i;
max=score[0];
if(score[i]>
max)max=score[i];
returnmax;
intCountFail(intscore[],intn)
intcount,i;
count=0;
if(score[i]<
60)count++;
returncount;
3.一个班有6位同学,每位同学包括学号、姓名、数学、物理、计算机成绩和总分,要求输入学号、姓名、数学、物理、计算机成绩,计算出每位同学的总分,并按总分降序输出。
要求每位同学的信息定义成一个结构体。
structstudent
longnum;
charname[10];
intmt;
intph;
intcm;
intsum;
stu[6],temp;
voidmain()
inti,j;
for(i=0;
i<
6;
i++)
{scanf("
%ld%s%d%d%d"
stu[i].num,stu[i].name,&
stu[i].mt,&
stu[i].ph,&
stu[i].cm);
stu[i].sum=0;
stu[i].sum=stu[i].mt+stu[i].ph+stu[i].cm;
5;
for(j=i+1;
j<
j++)
if(stu[j].sum<
stu[i].sum)
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
%ld\t%s%5d%5d%5d%5d"
stu[i].num,stu[i].name,stu[i].mt,stu[i].ph,stu[i].cm,stu[i].sum);
\n"
);
4.判断101-200之间有多少个素数,并输出所有素数。
math.h>
intm,i,h=0,leap=1;
printf("
for(m=101;
m<
=200;
m++)
{
for(i=2;
=sqrt(m+1);
if(m%i==0)
{leap=0;
break;
if(leap)
{printf("
%-4d"
m);
h++;
if(h%10==0)printf("
leap=1;
\nThetotalis%d"
h);
5.编写程序,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
{charc;
intletters=0,space=0,digit=0,others=0;
pleaseinputsomecharacters\n"
while((c=getchar())!
='
\n'
)
if(c>
a'
&
c<
z'
||c>
A'
Z'
letters++;
elseif(c=='
'
space++;
elseif(c>
0'
9'
digit++;
else
others++;
allinall:
char=%dspace=%ddigit=%dothers=%d\n"
letters,
space,digit,others);
6.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。
voidmain()
{staticcharx[]="
computer"
;
char*p;
for(p=x;
p<
x+7;
p+=2)
putchar(*p);
7.编一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。
要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
string.h>
voidcopystr(char*p1,char*p2,intm)
{intn=0;
while(n<
m-1)
{p2++,n++;
while(*p2!
\0'
{*p1=*p2;
p1++;
p2++;
*p1='
voidmain()
{intm;
charstr1[80],str2[80];
Inputastring:
gets(str2);
Inputm:
scanf("
m);
if(strlen(str2)<
m)
Errinput!
else{copystr(str1,str2,m);
Resultis:
%s\n"
str1);
8.一个求从100米高度自由落下,每次落地后又反弹回原来高度的一半,再落下,求它在第10次落地时共经过多少米?
第10次反弹多高?
编写程序求解该问题。
#include<
floatsn=100.0,hn=sn/2;
intn;
for(n=2;
n<
=10;
n++)
sn=sn+2*hn;
/*第n次落地时共经过的米数*/
hn=hn/2;
/*第n次反跳高度*/
thetotalofroadis%f\n"
sn);
thetenthis%fmeter\n"
hn);
9.编一程序,将2000年到3000年中的所有闰年年份输出并统计出闰年的总年数,要求每10个闰年放在一行输出。
main()
{intyear=0,number=0;
for(year=2000;
year<
3000;
year++)
{if((year%4==0&
year%100!
=0)||year%400==0)
{printf("
%6d"
year);
number++;
if(number%10==0)printf("
\ntotalnumberofleapyearis%d"
number);
10试编一程序完成以下功能:
定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;
然后按顺序每5个数求出一个平均值,放在另一数组中并输出。
{inta[30],b[6],sum=0,k,j=0;
for(k=0;
k<
30;
k++)
a[k]=(k+1)*2;
if(k%5==0){b[j]=sum/5;
j++;
sum=0;
elsesum=sum+a[k];
for(j=0;
printf(“%4d”,b[j]);
11.编一程序,从键盘输入10个整数并保存到数组,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
main()
{inti,array[10];
intmin,k=0;
printf(“\nPleaseinputarray10elements\n”);
10;
array[i]);
printf(“Beforeexchange:
\n”);
printf(“%5d”,array[i]);
min=array[0];
for(i=1;
if(min>
array[i])
{min=array[i];
k=i;
array[k]=array[0];
array[0]=min;
printf(“\nAfterexchange:
printf(“\nk=%d\nmin=%d\n”,k,min);
12.试编程完成如下功能:
输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。
#include<
intx,n,t;
x);
n=0;
while(x>
0)
t=x%10,
t);
x=x/10;
n++;
n=%d\n"
n);
13.请编写一个函数fun(),它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。
若两个字符串长度相等,则返回第1个字符串。
例如,输入nanjing<
CR>
nanchang<
(<
为回车键),函数将返回nanjing。
char*fun(char*s,char*t)
s[i]!
='
i++);
/*求字符串的长度*/
t[j]!
j++);
if(i<
=j)/*比较两个字符串的长度*/
returns;
/*函数返回较短的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returnt;
chara[20],b[10],*p,*q;
inti;
Input1thstring:
"
gets(a);
Input2thstring:
gets(b);
%s"
fun(a,b));
14.请编写函数fun(),它的功能是:
求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
voidfun(int*a,int*n)
inti,j=0;
=1000;
i++)/*求1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数,并放入数组a中*/
if((i%5==0||i%13==0)&
i%65!
=0)
a[j++]=i;
*n=j;
/*传回满足条件的数的个数*/
intaa[1000],n,k;
fun(aa,&
n;
if((k+1)%10==0)
%5d"
aa[k]);
\n"
/*一行写10个数*/
15.请编写一个函数fun(),它的功能是:
将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。
例如,若输入ABC4efG,则应输出aBc4efg。
voidfun(char*ss)
ss[i]!
i++)/*将ss所指字符串中所有下标为偶数位置的字母转换为小写*/
if(i%2==0&
ss[i]>
ss[i]<
)
ss[i]=ss[i]+32;
chartt[81];
clrscr();
\nPleaseenteranstringwithin80characters:
gets(tt);
\n\nAfterchanging,thestring\n\%s"
tt);
fun(tt);
\nbecomes\n\%s\n"
16.下列给定程序中函数fun()的功能是:
从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
例如,当s中的数为4576235时,t中的数为4725。
voidfun(longs,long*t)
longs1=10;
*t=s%10;
while(s>
{
s=s/100;
*t=s%10*s1+*t;
s1=s1*10;
longs,t;
\nPleaseenters:
%ld"
s);
fun(s,&
t);
Theresultis:
%ld\n"
17.请编写一个函数fun(),该函数的功能是:
统计字符串str中的单词个数,结果由变量num传回。
每个单词之间都由空格隔开,并且字符串str开始不存在空格。
str是全部由小写字母字符和空格字符组成的字符串例如:
str=“howdoyoudo”,结果为:
num=4。
#defineN80
voidfun(char*s,int*num)
inti,n=0;
*num;
if(s[i]>
s[i]<
(s[i+1]==
'
||s[i+1]=='
))
n++;
}
*num=n;
charstr[N];
intnum=0;
Enterastring:
gets(str);
while(str[num])
num++;
fun(str,&
num);
Thenumberofwordis:
%d\n\n"
num);
18.编一程序:
从一个字符串中截取前面若干个给定长度的子字符串。
其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。
例如:
当str1=“cdefghij”,然后输入4,则str2=“cdef”。
#defineLEN80
charstr1[LEN],str2[LEN];
intn,i;
Enterthestring:
gets(str1);
Enterthepositionofthestring
deleted:
"
scanf″%d″,&
for(i=0;
str2[i]=str1[i];
str2[i]='
Thenewstringis:
str2);
19.编一程序:
依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
voidfun(char*s)
for(i=0,j=0;
s[i]!
i++)
if((s[i]>
)||(s[i]>
s[j++]=s[i];
s[j]='
charitem[80];
\nEnterastring:
gets(item);
\n\nThestringis:
\%s\n"
item);
fun(item);
\n\nThestringofchangingis:
20.编一程序:
从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。
例如,当str1=“cdefghij”,则str2=“cegi”。
char*p1=str1,*p2=str2;
inti=0,j=0;
scanf(″%s″,str1);
***theorigialstring***\n"
while(*(p1+j))
printf("
%c"
*(p1+j));
j++;
j;
i+=2)
*p2++=*(str1+i);
*p2='
\nThenewstringis:
学习委员
2010年6月21日星期一