1.已知数组a[10]和b[10]中元素的值递增有序,用指针实现将两个数组中的元素按递增的顺序输出。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a[10]={0,2,4,6,8,10,12,14,16,18};
int b[10]={1,3,5,7,9,11,13,15,17,19};
int c[20]={0};
int *A=a,*B=b,*C=c,i,j,t;
for(i=0;i<10;i++)
*C++=*A++;
for(i=0;i<10;i++)
*C++=*B++;
C-=20;
for(i=0;i<20;i++){
for(j=0;j<19-i;j++){
if(C[j]>C[j+1]){
t=C[j],C[j]=C[j+1],C[j+1]=t;
}
}
}
for(i=0;i<20;i++)
printf("%-3d",*(C+i));
putchar(10);
return 0;
}
2.编写一个程序实现功能:将字符串”Computer Science”赋给一个字符数组,然后从第一个字母开始间隔的输出该字符串,用指针完成。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char s[100]="Computer Science",a[100]="0";
char *p=s,*q=a;
while(*p){
*q++=*p++;
*q++=' ';
}
*q=0;
puts(a);
return 0;
}
3.用指针将整型组s[8]={1,2,3,4,5,6,7,8}中的值逆序存放。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int s[8]={1,2,3,4,5,6,7,8},*p=s,i,t;
for(i=0;i<8/2;i++)
t=*(p+i),*(p+i)=*(p+7-i),*(p+7-i)=t;
for(i=0;i<8;i++)
printf("%d ",*(p+i));
putchar(10);
return 0;
}
4、程序哪里有错误
wap( int* p1,int* p2 )
int *p;
*p = *p1;
*p1 =* p2;
*p2 =* p;
}
答案:p为野指针
5、定义3个整数及整数指针,仅用指针方法按由小到大的顺序输出。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c,t,i,j;
printf("请输入三个整数:");
scanf("%d%d%d",&a,&b,&c);
int s[3]={a,b,c},*p=s;
for(i=0;i<3;i++){
for(j=0;j<2-i;j++){
if(p[j]>p[j+1]){
t=p[j],p[j]=p[j+1],p[j+1]=t;
}
}
}
for(i=0;i<3;i++)
printf("%-3d",*(p+i));
putchar(10);
return 0;
}
6、随机输入一个字符串,统计每个字符出现的次数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char s[100]={0},i,j,c,flag;
printf("请输入一个字符串\n");
gets(s);
char *p=s,*q=s;
for(i=0;*(p+i);i++){
c=0,flag=0;
for(j=0;*(q+j);j++){
if(*(p+i)==*(q+j)){
c++;
}
if(*(p+i)==*(p+i-j-1)){
flag=1;
}
}
if(flag==0)
printf("%c出现了%d次\n",*(p+i),c);
}
return 0;
}
7、删除字符数组中的重复字符
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char s[100]={0},i,j,c,flag;
printf("请输入一个字符串\n");
gets(s);
char *p=s,*q=s;
for(i=0;*(p+i);i++){
flag=0;
for(j=0;*(q+j);j++){
if(*(p+i)==*(p+i-j-1)){
flag=1;
}
}
if(flag==0)
printf("%c",*(p+i));
}
putchar(10);
return 0;
}