菜鸟急求C语言编程答案——指针
#include <stdio.h>void test(int n,int *p1,int *p2) { int s=0,m=n; int j,sum=0; while(m) { s=s*10+m%10; m/=10; } if(s == n) //判断回文数 *p1 = 1; else *p1 = 0; for(j=1;j<n ;++j) { if(n%j==0) sum+=j; } if(sum==n) //判断完全数 *p2 = 1; else *p2 = 0; return;}void main() { int num; int p1,p2; while(1) { printf(“input the number to test(0 for exit):\n”); scanf(“%d”,&num); if(num == 0) return; test(num,&p1,&p2); if(p1 == 1) printf(“是回文数\n”); else printf(“不是回文数\n”); if(p2 == 1) printf(“是完全数\n”); else printf(“不是完全数\n”); }}完全按照要求编写,调试通过,数据检测正确。
主函数输入0时退出程序,可循环测试。
编程菜鸟问题,指针引用,我定义了一个指针,想将它的引用作为参数在函数中改变它的值,本人菜鸟求指教。
少年,帮你改好了。你仔细思考一下。
typedef struct Tree_Management{ HBLT Tree_Array; // 不明白HBLT是什么类型,在下面将导致问题。
int front,rear; int size; int length;}Tree_Management,*Tree_Manager;//应该这样定义函数,使用引用类型作为参数。//我想这里应该是你提问的关键,注意:Tree_Manager& Q//传参方式将在下面的main函数演示int Tree_Manager_Create(int num, Tree_Manager& Q) { // 先给Q分配内存 Q = (Tree_Manager)malloc( sizeof(Tree_Management) ); // 再给Q->Tree_Array分配内存 // 但是你这里有错误,如果HBLT是一个指针类型,那么不应该是sizeof(HBLT)。 // 比如HBLT是这样定义的:typedef BLT* HBLT; // 那么你应该是sizeof(BLT),而不应该是sizeof(HBLT)。 // 因为如果HBLT是指针类型的话,sizeof(HBLT)总是等于4。
if( !(Q->Tree_Array = (HBLT)malloc(sizeof(HBLT)*num)) ) // 所以这句你得自己改 return ERROR; Q->rear = Q->front = Q->length = 0; Q->size = num;//在函数调试过已经赋值,但实参的指针 return OK;}// 要有好习惯,定义创建的函数就得定义释放的函数。void Free_Tree_Manager(Tree_Manager& Q){ if ( Q ) { free(Q->Tree_Array); free(Q); Q = NULL; }}//mainint main(){ Tree_Manager Q = NULL; //这个是指针类型,那么你最好初始化。 int num = 10; // 传Q的时候不用传&Q,直接传Q就可以了。
函数会自己创建Q的引用。 if( Tree_Manager_Create(num, Q) ) { printf(“创建成功:%d %d”,Q->size,Q->length); } Free_Tree_Manager( Q ); // 使用完了之后记得释放。
菜鸟求解:如何用C#实现C语言 指针的功能呢?
C#�
菜鸟请教:定义字符指针数组char *str[5]分别指向5个字符串常量,用指针实现两个数组中的元素递增顺序输出
#include<stdio.h>#include<string.h>int main(){ char *s; int i,j; char *str[5]={“qwert”,”yuiop”,”asdfg”,”hjklz”,”xcvbn”}; for(i=0;i<4;i++) {for(j=0;j<4-i;j++) {if(strcmp(str[j],str[j+1])>0) {s=str[j];str[j]=str[j+1];str[j+1]=s;} }}for(i=0;i<5;i++)printf(“%s\n”,str[i]);return 0;}使用冒泡排序法排序。比较字符串的大小不能要用strcmp函数,如果直接用If(str[i]>str[i+1])语句,那么比较的是两个字符串的第一个字母。
C语言*p?
int