赞
踩
方法一:运用数组元素间进行逻辑运算来实现交换
#include <stdio.h> #include <stdlib.h> int main(){ int i,j,k; int A[10]; int B[10]; printf("请输入数组A的内容:"); for(i=0;i<10;++i){ scanf("%d",&A[i]); } printf("请输入数组B的内容:"); for(j=0;j<10;++j){ scanf("%d",&B[j]); } for(k=0;k<10;++k){ A[k] = A[k] ^ B[k]; B[k] = A[k] ^ B[k]; A[k] = A[k] ^ B[k]; } printf("交换后的数组A:"); for(i=0;i<10;++i){ printf("%d ",A[i]); } printf("\n"); printf("交换后的数组B:"); for(j=0;j<10;++j){ printf("%d ",B[j]); } printf("\n"); system("pause"); return 0; }
方法二:引用第三个数组进行数组交换
#include <stdio.h> #include <stdlib.h> int main(){ int i,j,k; int A[10]; int B[10]; int C[10]; printf("请输入数组A的内容:") for(i=0;i<10;++i){ scanf("%d",&A[i]); } printf("请输入数组B的内容:"); for(j=0;j<10;++j){ scanf("%d",&B[j]); } for(k=0;k<10;++k){ C[k] = A[k]; } for(i=0;i<10;++i){ A[i] = B[i]; } for(j=0;j<10;++j){ B[j] = C[j]; } printf("交换后的数组A:"); for(i=0;i<10;++i){ printf("%d ",A[i]); } printf("\n"); printf("交换后的数组B:"); for(j=0;j<10;++j){ printf("%d ",B[j]); } printf("\n"); system("pause"); return 0; }
方法三:引入第三个数组,再利用strcpy函数对数组进行交换
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char a[10]; char b[10]; char c[10]; puts("请输入数组A的内容:\n"); gets(a); puts("请输入数组B的内容:\n"); gets(b); strcpy(c,a); strcpy(a,b); strcpy(b,c); puts("交换后数组A的内容:\n"); puts(a); puts("交换后数组B的内容:\n"); puts(b); printf("\n"); system("pause"); return 0; }
方法四:利用swap函数进行交换
#include <stdio.h> #include <stdlib.h> void swap(int* a,int* b){ //定义了类型为int*的指针a,b,指针指向的类型为int int tmp = *a; //将指针a所指向的地址中的内容赋值给tmp *a = *b; //将指针b所指向的地址中的内容赋值给指针b所指向的地址中的内容 *b = tmp; } int main(){ int i,j,k; int A[10]; int B[10]; printf("请输入数组A的内容:"); for(i=0;i<10;++i){ scanf("%d",&A[i]); } printf("请输入数组B的内容:"); for(j=0;j<10;++j){ scanf("%d",&B[j]); } for(k=0;k<10;++k){ swap(&A[k],&B[k]); } printf("交换后的数组A:"); for(i=0;i<10;++i){ printf("%d ",A[i]); } printf("\n"); printf("交换后的数组B:"); for(j=0;j<10;++j){ printf("%d ",B[j]); } printf("\n"); system("pause"); return 0; }
运行结果:
指针的类型和指针指向的类型,以下面的例子来说明:(*是间接访问符 /解引用 ,&取地址符)
- int* p;
- char* p;
- int* *p;
- int (*p)[3];
- int* (*p)[3];
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。上述例子中指针的类型为:- int* ptr; //指针的类型是int*
- char* ptr; //指针的类型是char*
- int* ptr; //指针的类型是int*
- int (ptr)[3]; //指针的类型是int()[3]
- int* (ptr)[4];//指针的类型是int()[4]
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符去掉,剩下的就是指针所指向的类型。上述例子中指针指向的类型为:- int* ptr; //指针所指向的类型是int
- char* ptr; //指针所指向的的类型是char
- int* ptr; //指针所指向的的类型是int
- int (*ptr)[3]; //指针所指向的的类型是int ()[3]
- int* (ptr)[4]; //指针所指向的的类型是int ()[4]
利用swap函数交换时,一定要注意形参和实参的区别,这里很容易只交换了形参,而实参并未发生交换。swap函数的实现方式为:
void swap(int* a,int* b){ int tmp = *a; *a = *b; *b = tmp; }
#include <stdio.h>
#include <stdlib.h>
int main(){
int flag=1;
float sum=0;
for(float i = 1;i<101;++i){
sum += flag/i;
flag *= -1; //定义一个变量来改变正负符号
}
printf("sum = %f\n",sum);
system("pause");
return 0;
}
运行结果:
#include <stdio.h> #include <stdlib.h> int main(){ int a; int count = 0; int count1 = 0; int count2 = 0; for(i=1;i<101;++i){ int b = a / 10; //求解数值a的十位 int c = a % 10; //求解数值a的个位 if(b == 9){ count1 ++; printf("%d\n",a); } if(a == 9){ count2 ++; printf("%d\n",a); } } count = count1 + count2; printf("count=%d\n",count); system("pause"); return 0; }
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。