您的位置:首页 > 其它

指针---练习题

2016-07-17 20:32 375 查看
编写一个C程序,输入一些数字,然后按照从大到小的方式输出,要求使用指针实现

void func2();
int main(int argc, const char * argv[]) {
int a[10];
int *x,*y;
x=a;
int i;
for (i=0; i<10; i++) {
printf("请输入第%d个数的值(以0结束):\n",i+1);
scanf("%d",x+i);
if (a[i]==0) {
i-=1;
break;
}
}
for(int k=0;k<i;k++){
for (int j=0; j<i-k-1; j++) {
if(a[j]>a[j+1]){
x=&a[j];
y=&a[j+1];
func2(x, y);
}
}
}
printf("排序后:\n");
for (int k=0; k<=i; k++) {
printf("%d\n",a[k]);
}
printf("------------------------\n");
return 0;
}
void func2(int *x,int *y){ //交换值
int temp;
temp=*x;
*x=*y;
*y=temp;
}

给定两个数组,然后编写一个数组拷贝函数,有两个参数,形式为数组类型。函数中实现将第二个数组的内容复制到第一个数组中。

void func1(){
int arr1[10];
int arr2[20];
myCopy(arr1, arr2);
printf("把arr2复制到arr1:\n");
for (int i=0;i<10;i++) {
printf("%d\n",arr1[i]);
}
}
void myCopy(int arr1[],int arr2[]){
int *p1=arr1;
int *p2=arr2;
int i;
for (i=0; i<20; i++) {
printf("请输入第%d个整数(以0结束输入)\n",i+1);
scanf("%d",p2+i);
if (arr2[i]==0) {
break;
}
}
for(int t=0;t<10;t++){
if(t<i){
*(p1+t)=*(p2+t);
}else{
*(p1+t)=0;
}
}
}
int main(int argc, const char * argv[]) {
   func1();
    return 0;


去空格
int mystrlen(char *p);//求出给定字符串的长度(不包括末端字符)。
int mystrtrim(char *p);//求出去掉给定字符串两边的空格的长度(中间的不去除)
int mystrltrim(char *p);//求出去掉左边的空格的长度
int mystrrtrim(char *p);//求出去掉右边的空格的长度
int main(int argc, const char * argv[]) {
char ch[]=" abc defg ";
int lenght1=mystrlen(ch);
printf("字符串的长度为:(不包括末端字符)\n");
printf("%d\n",lenght1);
int lenght2=mystrtrim(ch);
printf("字符串的长度为:(去掉字符串两边的空格,中间的不去除)\n");
printf("%d\n",lenght2);
int lenght3=mystrltrim(ch);
printf("字符串的长度为:(去掉左边的空格)\n");
printf("%d\n",lenght3);
int lenght4=mystrrtrim(ch);
printf("字符串的长度为:(去掉右边的空格)\n");
printf("%d\n",lenght4);
printf("-----------------------------\n");
return 0;
}
int mystrlen(char *p){ //不包括末端字符
int t=0;
while (*(p+t)!='\0') {
t++;
}
return t;
}
int mystrtrim(char *p){ //去掉字符串两边的空格,中间的不去除
int t=mystrlen(p);
int l=mystrlen(p)-mystrltrim(p);
int r=mystrlen(p)-mystrrtrim(p);
t=t-l-r;
return t;
}
int mystrltrim(char *p){ //去掉左边的空格
int t=mystrlen(p);
int c=0;
while (*(p+c)==' ') {
c++;
if (*(p+c)!=' ') {
break;
}
}
t=t-c;
return t;
}
int mystrrtrim(char *p){ //去掉右边的空格
int t=mystrlen(p);
int c=0;
while (*(p+(t-c-1))==' ') {
c++;
if (*(p+(t-c-1))!=' ') {
break;
}
}
t-=c;
return t;
}

简要描述使用指针的优点:

-提高程序效率

-可以间接实现一个函数返回多个值

-可以进行内存动态分配

随堂笔记为个人学习笔记,若有错误,望指出,谢谢!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: