C程序设计详解Word格式.docx
《C程序设计详解Word格式.docx》由会员分享,可在线阅读,更多相关《C程序设计详解Word格式.docx(38页珍藏版)》请在冰点文库上搜索。
c=i;
returnc;
第二题:
输入4个整数,找出其中最大的数。
用函数的嵌套调用来处理。
intzd(inta,intb,intc,intd);
inta,b,c,d;
请输入四个整数:
%d%d%d%d"
b,&
c,&
d);
%d,%d,%d,%d中的最大值为:
a,b,c,d,zd(a,b,c,d));
intzd(inta,intb,intc,intd)
inttt(inta,intb);
return(tt(tt(tt(a,b),c),d));
inttt(inta,intb)
intc;
if(a>
b)
c=a;
else
c=b;
returnc;
第三题:
用递归调用的方法求5!
。
intjc(inta);
intb=5;
%d!
=%d\n"
b,jc(b));
intjc(inta)
intb;
if(a==1)
b=1;
b=a*jc(a-1);
returnb;
第四题:
按以下递归公式求函数的值。
例如,当给n输入5时,函数值为18,(要求用递归实现)。
intfun(inta);
intn;
请输入n:
%d"
n);
fun(%d)=%d\n"
n,fun(n));
intfun(inta)
b=10;
b=fun(a-1)+2;
第五题:
用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。
string.h>
voiddg(chara[],longn,intb);
chara[20],b;
longn;
intm,i;
%ld"
dg(a,n,0);
m=strlen(a);
for(i=0;
m/2;
{
b=a[m-i-1];
a[m-i-1]=a[i];
a[i]=b;
}
%s\n"
a);
voiddg(chara[],longn,intb)
longc,d;
if(n<
10)
a[b]='
0'
+n;
a[b+1]='
\0'
;
a[b]=n%10+'
dg(a,n/10,b+1);
第六题:
写一个函数,完成将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。
voidnn(inta[],intn);
inta[20],i,n;
请输入%d个数的数组:
\n"
n);
n;
scanf("
a[i]);
nn(a,n);
倒序存放为:
printf("
%d"
a[i]);
voidnn(inta[],intn)
inti,m;
n/2;
m=a[n-i-1];
a[n-i-1]=a[i];
a[i]=m;
第七题:
编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。
floattt(inta[],intb);
inta[5],b[10],i;
请输入五个数字的数组:
5;
请输入十个数字的数组:
10;
b[i]);
五个数字的数组的平均数为:
%5.2f\n十个数的数组的平均数为:
%5.2f\n"
tt(a,5),tt(b,10));
floattt(inta[],intb)
floats=0;
b;
s=s+a[i];
returns/b;
第八题:
编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。
voidtt(chara[],charb[]);
chara[50],b[50];
请输入两个字符数组:
gets(a);
gets(b);
把两个数组连起来为:
tt(a,b);
puts(a);
voidtt(chara[],charb[])
inti,j;
a[i]!
='
i++);
for(j=0;
b[j]!
j++,i++)
a[i]=b[j];
a[i]='
第九题:
编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。
inttt(chara[],charb[]);
请输入两个字符串a,b:
n=tt(a,b);
if(n==0)
相等\n"
elseif(n>
0)
a>
b\n"
a<
inttt(chara[],charb[])
inti=0;
while(a[i]==b[i])
if(a[i]=='
b[i]=='
)
break;
else
i++;
returna[i]-b[i];
第十题:
编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。
voidtt(inta[],intb);
inta[11]={10,20,30,40,50,60,70,80,90,100},i,n;
原升序整型数组为:
\n请输入一个整数n:
tt(a,n);
n插入后数组为:
11;
voidtt(inta[],intb)
inti,c;
if(b>
=a[9])
a[10]=b;
{
if(b<
a[i])
{
c=a[i];
a[i]=b;
b=c;
}
}
第十一题:
写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。
inttt(inta);
请输入一个整数n:
if(tt(n)==1)
yes\n"
no\n"
inttt(inta)
inti,n=1;
for(i=2;
a;
if(a%i==0)
{n=0;
break;
returnn;
第十二题:
编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。
chara[100],b[40];
请输入一个字符串:
字符串%s中元音字母有:
\n%s\n"
a,b);
for(i=0,j=0;
a'
||a[i]=='
e'
i'
o'
u'
A'
E'
I'
O'
U'
b[j++]=a[i];
b[j]='
第十三题:
建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。
stdlib.h>
inttt(float*a,float*b);
float*a,*b;
inti,n;
a=(float*)malloc(5*sizeof(float));
b=(float*)malloc(5*sizeof(float));
请输入五个人的成绩:
%f"
a+i);
无低于60分的\n"
for(i=0;
printf("
%5.2f"
*(b+i));
inttt(float*a,float*b)
inti,j=0;
if(*(a+i)<
60)
returnj;
第十四题:
有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。
inttt(floata[],floatb[],intc[]);
intn,c[10],i;
floata[10],b[10];
请输入十个学生的成绩:
n=tt(a,b,c);
不及格的数组的序号为:
c[i]);
\n不及格的分数为:
b[i]);
inttt(floata[],floatb[],intc[])
if(a[i]<
b[j]=a[i];
c[j]=i;
j++;
returnj;
第十五题:
编程实现:
从键盘输入两个字符串,统计第二个字符串在第一个字符串中出现的次数,在主函数中调用统计函数并输出结果。
chara[100],b[30];
请输入两个字符串:
b在a中出现的次数为:
tt(a,b));
inti,c=0,d=0,j=0;
\n'
if(d==1&
b[j]=='
c++;
j=0;
if(a[i]==b[j])
d=1;
d=0;
if(d==1&
c++;
第十六题:
编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。
如:
输入“Iamastudent!
”,输出“Iamastudent!
”,要求用指针实现。
char*a,b[50];
a=b;
*(a+i)!
if(*(a+i)=='
'
for(j=i;
*(a+j)!
j++)
*(a+j)=*(a+j+1);
去掉空格后为:
第十七题:
.用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。
voidtt(int*a,intb);
int*a,b[10],i;
请输入十个整数:
a++);
tt(a,10);
\n十个数从大到小顺序为:
*(a+i));
voidtt(int*a,intb)
inti,j,n;
for(j=0;
j<
b-i-1;
if(a[j]<
a[j+1])
n=a[j+1];
a[j+1]=a[j];
a[j]=n;
第十八题:
用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)
\n十个数从小到大顺序为:
for(j=i+1;
if(a[i]>
a[j])
n=a[j];
a[j]=a[i];
a[i]=n;
第十九题:
编写一个函数实现字符串复制功能,不能使用strcpy函数,并在
main函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。
(要求用指针作为函数参数)
请输出一个字符串a:
tt(b,a);
吧a赋值给b得b为:
puts(b);
b[i]!
a[i]=b[i];
第二十题:
写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
(要求用指针实现)
inttt(chara[]);
chara[100];
字符串a的长度为:
tt(a));
inttt(chara[])
returni;
第二十一题:
输入一个字符串,内有数字和非数字字符,例如:
“A123x45617960?
302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组a中。
例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。
inttt(char*a,int*b);
inti,n,*b,d[20];
char*a,c[100];
b=d;
a=c;
一共有%d个整数它们分别为:
inttt(char*a,int*b)
inti,n=0,m=0,p=1;
b[0]=0;
if(a[i]>
a[i]<
9'
b[m]=b[m]*p+(a[i]-'
p=10;
n=1;
elseif(n==1)
m++;
n=0;
p=1;
b[m]=0;
if(n==1)
m++;
returnm;
第二十二题:
有一篇文章,共有4行文章,每行有60个字符。
要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。
char(*a)[60],b[4][60];
intj,i,c=0,d=0,e=0,f=0,g=0;
请输入入四行文章每行60个字符:
4;
gets(b[i]);
60;
if(a[i][j]>
a[i][j]<
Z'
c++;
elseif(a[i][j]>
z'
d++;
e++;
elseif(a[i][j]=='
f++;
else
g++;
大写字母有%d个\n小写字母有%d个\n数字有%d个\n空格有%d个\n其他字符有%d个\n"
c,d,e,f,g);
return0;
第二十三题:
编程实现从