C语言指针的问题~急等!!

1.用指针实现冒泡排序~
2.用指针转将数组左右反转~如~12 56 78 34 21 转为21 34 78 56 12
3.接收2个数组的值~将数组中的值依次相加保存在第3个数组中~如
请输入num1的值:12 56 78 90 45
请输入num2的值:98 34 23 10 30
数组num1和数组num2的和为:110 90 101 100 75
请高手帮我作为解答~本人会视完整度给予加分~!

第一个:
#include<iostream.h>
void main()
{
int n,*p,temp;
cout<<"请输入元素个数:";
cin>>n;
cout<<endl;
p=new int[n];
cout<<"请输入"<<n<<"个元素数:";
for(int i=0;i<n;i++)
{
cin>>*(p+i);
}
cout<<endl;
for(i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(*(p+i)>*(p+j))
{
temp=*(p+i);//交换
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
cout<<"排列后为:"<<endl;
for( i=0;i<n;i++)
{
cout<<*(p+i)<<" ";
}
}

第二个:

#include <stdio.h>
#define N 5
void PrintReverse(int *a)
{
if(*a!=0)
{
PrintReverse(a+1);
printf("%-3d",*a);
}
}
int main()
{
int i,a[N+1]={0};
printf("请输入5个数:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("原始数组为:\n");
for(i=0;i<5;i++)
printf("%-3d",a[i]);
printf("\n左右反转顺序:\n");
PrintReverse(a);
}

第三个:

#include "stdio.h"

void main()
{
int num1[5],num2[5],num3[5];//声明3个数组
int i;//声明1个变量
int *p1,*p2,*p3;//声明3个指针
printf("请输入num1的值: ");
for(i=0;i<5;i++)//控制第一个数组的数值
{
scanf(" %d",&num1[i]);
}
printf("\n请输入num2的值: ");
for(i=0;i<5;i++)//控制第二个数组的数值
{
scanf(" %d",&num2[i]);
}
p1=num1;//将数组名赋给指针
p2=num2;
p3=num3;
for(i=0;i<5;i++)//控制输出时的数量
{
*p3=*p1+*p2;//用指针求和运算
*p1++;//自加
*p2++;
*p3++;
}
printf("\n数组num1和数组num2的和为: ");//输出结果
for(i=0;i<5;i++)//控制输出循环的次数
{
printf("%4d",num3[i]);
}
getch();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-05-24
1、
#include<stdio.h>
#define n 5
main()
{
int t,i,j,a[n],*p;
for(i=0;i<n;i++)
{
printf("enter the number %d :",i+1);
scanf("%d",&a[i]);
}
printf("\nbefore sorted:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
for(i=0;i<n-1;i++)
{
p=a;
for(j=0;j<n-i-1;j++)
{
if(*p>*(p+1))
{
t=*p;
*p=*(p+1);
*(p+1)=t;
}
p++;
}
}
p=a;
printf("\nafter sorted:\n");
for(i=0;i<n;i++)
printf("%d\t",*p++);
getch();
}

2、
#include<stdio.h>
#define n 5
main()
{
int i,a[n],*p=a,t;
for(i=0;i<n;i++)
{
printf("enter the number %d :",i+1);
scanf("%d",&a[i]);
}
printf("\nbefore sorted:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
for(i=0;i<=n/2;i++)
{
t=*(p+i);
*(p+i)=*(p+n-1-i);
*(p+n-i-1)=t;
}
printf("\nafter sorted:\n");
for(i=0;i<n;i++)
printf("%d\t",*p++);
getch();
}

3、
#include<stdio.h>
#define n 5
main()
{
int i,a[n],b[n],c[n],t;
for(i=0;i<n;i++)
{
printf("enter the number a[%d] :",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
printf("enter the number b[%d]",i+1);
scanf("%d",&b[i]);
}
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
for(i=0;i<n;i++)
printf("%d\t",b[i]);
printf("\n");
for(i=0;i<n;i++)
{
*(c+i)=*(a+i)+*(b+i);
printf("%d\t",*(c+i));
}
getch();
}

C 语言指针问题,急!
一是先统计不及格人数p,再c=(int *)malloc(p*4*sizeof(int));然后再重新来一次循环,把不及格人的信息存入c。二是一上来就c=(int *)malloc(num*4*sizeof(int));,然后在查找不及格人的同时,就可以向c写数据了。另外,你还需要设一个变量来保存不及格人数,而且这个变量最好是做为failed...

急!!叙述对C语言指针的认识,在使用指针时应该注意什么问题? 谢谢大神...
int **p; \/\/首先从P 开始,先与*结合,说是P 是一个指针,然后再与*结合,说明指针所指向的元素是指针,然后再与int 结合,说明该指针所指向的元素是整型数据.由于二级指针以及更高级的指针极少用在复杂的类型中,所以后面更复杂的类型我们就不考虑多级指针了,最多只考虑一级指针.int p(int); \/\/从P...

c语言中指针传递的问题
根本性的认识错误,返回的是野指针,前面的正确是侥幸 char a[12][20] 是局部动态变量,函数结束变量就不存在了 如果非要返回的话,改用静态变量 include <stdio.h> include <string.h> char *change(int x);\/*函数声明放在外部*\/ void main(){ int m;char *p;printf("put into month:\\n...

c语言指针赋值问题求解 急+++ (内存报错,求解)
char temp[2]; \/\/这里有问题,,,估计是tmep[1] 使用非法 itoa((num%10),temp,10);printf("temp===%c\\n",*temp);str = *temp;printf("%d === %c\\n", num%10, *str);num = num\/10;str++;} str='\\0';}

C语言 关于POINTER(指针)的问题, 急!!!
C 的 pointer (指标, 另一常译为指位器)一般是被认为 C 语言中最具威力的工具及 最难以学习的, 事实上 pointer 并不困难. 第一个范例: \/* === pointer - 1 === *\/ #include <stdio.h> int main() { char *s_pointer = “Hello”; char s[] = “World”; printf(“%s\\n”...

C语言问题。。。急 char *ss[6];ss[1]="right?" char ss[6][20];ss...
首先char *ss[6];是声明了一个指针数组ss,ss有6个元素,6个元素都是指针变量,ss[1]="right?"其中ss[1]是数组的第一个元素(是指针元素哦),ss[1]="right?"表示在静态存储区(内存的一种)放入字符串,并把字符串所在内存的首地址付给指针变量ss[1],是指针变量指向字符串“right?"这样...

请教一个c语言题目,后面那个*(*(p+2)+1)什么意思?这题怎么写
int (*p)[2]=a;就是定义了一个指向2维数组的的指针,p自增跨度是2。在这里p就是行指针 p的值就是指向数组{10,20}的指针。所以p+2就是指向数组{50,80}的指针(p自增跨度2)。所以*(p+2)+1就是&a[2][1]的地址。所以*(*(p+2)+1)就是80。

关于C语言的指针的题 急求
4、*(*pa+2) pa[2]设有二维数组a[5][6],下列运算表达式访问数组的哪个元素:1、*(*(a+1)+2) a[1][2]2、**(a+3) a[3][0]3、**a a[0][0]4、*(a[4]+5) a[4][5]5、(*(a+3))[4] a[3][4]6、(*a)[5] a[0][5]...

两个矩阵的相加相乘?用c语言的指针方式!急在线等
include "stdlib.h"define M 3 define N 3 \/\/指针数组 int a[M][N];int b[M][N];int c[M][N];void matrixMul(int b[][M],int c[][N]);void matrixAdd(int b[][N],int c[][N]);void matrixSub(int b[][N],int c[][N]);int main(){ int i,j,temp=0;printf("...

C语言高手帮忙啊!急!!!
2:main()函数,在调用CREAT()、LENGTH()和OUT()函数时不应加上linklist、int和void,你这样写是在申明函数,并非调用。3:你创建的链表是一第一个元素为头节点的的,但你却将链表长度赋给头节点,导致原头节点值丢失,无法输出。还有很多指针运用上面的错误,我就不多说了,下面是我修改过的程序...

相似回答