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