break;
for(j=10;j>i;j--)
a[j]=a[j-1];
a[i]=t;
}
}
11.写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。
#include
intmain()
{
inta;
intis_prime(int);
scanf("%d",&a);
if(is_prime(a)==0)
printf("yes\n");
else
printf("no\n");
return0;
}
intis_prime(inta)
{
intj,flag=1;
for(j=2;j<=a/2;j++)
{
if(a%j==0)
break;
}
if(j>=a/2)
flag=0;
returnflag;
}
12.编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。
#include
chara[50],b[50]={0};
intmain()
{
voidfun(chara[],charb[]);
gets(a);
fun(a,b);
puts(b);
return0;
}
voidfun(chara[],charb[])
{
inti,j;
for(i=0,j=0;a[i]!
='\0';i++)
if(a[i]=='a'||a[i]=='A'||a[i]=='e'||a[i]=='E'||a[i]=='i'||a[i]=='I'||a[i]=='o'||a[i]=='O'||a[i]=='u'||a[i]=='U')
b[j++]=a[i];
}
13.建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。
#include
#include
intmain()
{
voidcheck(int*);
int*p,i;
p1=(int*)malloc(5*sizeof(int));
for(i=0;i<5;i++)
scanf("%d",p+i);
check(p1);
return0;
}
voidcheck(int*p)
{
inti;
printf("Theyarefail:
");
for(i=0;i<5;i++)
if(*(p+i)<60)
printf("%d",p[i]);
puts("");
}
14.有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。
#include
intmain()
{
voidave(inta[10]);
inta[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
ave(a);
return0;
}
voidave(inta[10])
{
inti,m=0;
for(i=0;i<10;i++)
{
m=m+a[i];
if(a[i]<60)
printf("%d%d\n",a[i],i);
}
printf("%d\n",m/10);
}
15.编程实现:
从键盘输入两个字符串,统计第二个字符串在第一个字符串中出现的次数,在主函数中调用统计函数并输出结果。
#include
#include
intmain()
{
intretu(chara[],charb[]);
charc[200],d[100];
gets(c);
gets(d);
printf("出现的次数为:
%d\n",retu(c,d));
return0;
}
intretu(chara[],charb[])
{
inti,j,t,m,s=0;
for(i=0;a[i]!
='\0';i++)
{
m=0;
if(a[i]==b[0])
{
for(t=i,j=0;b[j]!
='\0';t++,j++)
if(b[j]==a[t])
m++;
if(m==strlen(b))
s++;
}
}
returns;
}
16编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。
如:
输入“Iamastudent!
”,输出“Iamastudent!
”,要求用指针实现。
#include
#include
intmain()
{
chara[50],*p;
intl,i;
printf("inputstringa:
");
gets(a);
p=a;
l=strlen(a);
for(l;l>0;l--)
{
if(*(p+l)=='')
for(i=l;*(p+i)!
='\0';i++)
*(p+i)=*(p+i+1);
}
puts(p);
return0;
}
17.用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。
#include
intmain()
{
inta[10],i,j,t,*p=a;
for(i=0;i<10;i++)
scanf("%d",p+i);
for(i=0;i<10;i++)
for(j=0;j<9-i;j++)
if(*(p+j)>*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
for(i=0;i<10;i++)
printf("%d",*(p+i));
puts("");
return0;
}
18.用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。
#include
intmain()
{
inta[10],i,j,t,*p=a;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(*(p+i)>*(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
for(i=0;i<10;i++)
printf("%d",*(p+i));
puts("");
return0;
}
19.编写一个函数实现字符串复制功能,不能使用strcpy函数,并在 main函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。
(要求用指针作为函数参数)
#include
intmain()
{
chara[100],b[20],*p,*q;
voidcopy_string(char*,char*);
gets(b);
p=a;q=b;
copy_string(p,q);
puts(p);
return0;
}
voidcopy_string(char*p,char*q)
{
while(*p++=*q++);
}
20.写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
(要求用指针实现)
#include
intmain()
{
chara[100],*p=a;
intfun(char*);
gets(a);
printf("%d\n",fun(a));
return0;
}
intfun(char*p)
{
intk=0;
while(*p++)
k++;
returnk;
}
21.输入一个字符串,内有数字和非数字字符,例如:
“A123x45617960?
302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组a中。
例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。
(要求用指针实现)
#include
chara[100];
intmain()
{
voidfun(char*);
char*p=a;
gets(p);
fun(p);
return0;
}
voidfun(char*p)
{
intnum[100],s,k,j=0,i=0;
s=0;
while(*(p+i))
{
k=0;
while(*(p+i)>='0'&&*(p+i)<='9')
{
s*=10;
s+=*(p+i)-48;
i++;k=1;
}
if(k)
{
num[j++]=s;
s=0;
}
else
i++;
}
printf("%d\n",j);
for(i=0;iprintf("%d",num[i]);
puts("");
}
#include
#include
intmain()
{
chara[50],*p;
intb[50],c[50]={0},k,j,i;
gets(a);
p=a;
k=0;
for(i=0;*(p+i)!
='\0';i++)
if(*(p+i)>='0'&&*(p+i)<='9')
{
j=0;
while(*(p+i)>='0'&&*(p+i)<='9')
{
i++;
j++;//j表示每个数字个数(长度)
}
b[k++]=j;//k记录有几个数字
}
printf("%d\n",k);
k=0;
intn=0;
for(i=0;*(p+i)!
='\0';i++)
if(*(p+i)>='0'&&*(p+i)<='9')
{
while(*(p+i)>='0'&&*(p+i)<='9')
{
c[n]=c[n]+(int)(*(p+i)-48)*pow(10,(b[k]--)-1);
i++;
}
k++;
printf("%d",c[n++]);
}
puts("");
return0;
}
22.有一篇文章,共有4行文章,每行有60个字符。
要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。
(要求用指针实现)
#include
intmain()
{
voidcount(char(*p)[60]);
charstr[4][60];
printf("input4string:
\n");
for(inti=0;i<4;i++)
gets(str[i]);
count(str);
return0;
}
voidcount(char(*p)[60])
{intl=0,L=0,digit=0,space=0,oth=0;
inti,j;
for(i=0;i<4;i++)
for(j=0;*(*(p+i)+j)!
='\0';j++)
if((*(*(p+i)+j)>='a')&&(*(*(p+i)+j)='z'))
l++;
elseif((*(*(p+i)+j))>='A'&&(*(*(p+i)+j)<='Z'))
L++;
elseif(*(*(p+i)+j)>='0'&&*(*(p+i)+j)<='9')
digit++;
elseif(*(*(p+i)+j)==32)
space++;
else
oth++;
printf("\ncapitalletter:
%d\nlowerletter:
%d\ndigit:
%d\nspace:
%d\nothers:
%d\n",
L,l,digit,space,oth);
}
23.编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。
(要求用指针知识实现)
#include
#include
intmain()
{
charmax[50],b[50];
char*p=max,*p1=b;
gets(p);
for(inti=0;i<9;i++)
{
gets(p1);
if(strlen(p)strcpy(p,p1);
}
puts("");
puts(max);
return0;
}
24.利用函数实现如下功能:
从键盘输入任意一个正整数,求出它的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回。
(自定义函数voidfun(intx,int*pp,int*n))。
#include
intmain()
{
voidfun(intx,int*pp,int*n);
intx,a[100],*pp=a,n;
scanf("%d",&x);
fun(x,pp,&n);
return0;
}
voidfun(intx,int*pp,int*n)
{
inti,j=0,t;
for(i=2;iif(x%i==0&&i%2==0)
*(pp+j++)=i;
*n=j;
printf("%d\n",*n);
}
25.编写一个函数,实现求出一个2维数组中的鞍点,并在main函数中调用此函数,2维数组中数据输入和鞍点数据输出都在主函数中实现。
(鞍点是指某个数在该行上最大,同时在该列上最小)
#include
i