@C语言大牛 指针代码跪求修改!!!在线等!!

作者&投稿:水帜 (若有异议请与网页底部的电邮联系)
C语言指针课本题目小程序求修改~

pmax=pmin1=pmin2=pmin3=pmin4=a[0]; //这里少了个 pmin4 没有给 pmin4赋值,后面就开始引用
另外,结果可能并不正确,你在最后换位置时,如果记录的位置就在4个角上,前面的交换可能已经把此角的值换走了,后面交换的已经不是原来的值了。
假设 pmin4的位置在 a[0][0],前面 pmin1已经换走了原来的值,后面pmin4再引用已经不是原来的值了

char* name[4] 这个只是创建了指针数组 并没有为每个指针分配空间
修改有两个路线
一个是动态分配
for(i=0;i<=3;i++)
{
name[i] = malloc(100);

scanf("%s",&name[i]);
} //数组里存放了4个指针了
记得要用完释放

另一个是直接改成静态的 不过对应change中的实现就得改变了

推荐用第一个

# include<stdio.h>
int main()
{
    char s[100],*ps=&s[0],*p;    /*ps应该定义成指针*/
    int i,num=0,lenth,a[100],*pa=&a[0];    /*pa应该定义成指针*/
    scanf("%s",s);
    lenth=strlen(s);

    for(p=ps; p<ps+lenth; p++)
    {    /*循环体要用{}括起来*/
        if('0'<=*p&&*p<='9')    /*判断是否为数字,0和9也包含在内*/
        {    /*if执行体要用{}扩起来*/
            *pa=(*p++)-48;    /*这里第一次赋值不要加原来的随机值*/
            while('0'<=*p&&*p<='9')    /*问题同上*/
                *pa=10*(*pa)+((*p++)-48);
            num++;
            pa++;
            p--;    /*因为for循环会执行p++,所以这里p的位置要回退一个*/
        }
    }

    printf("%d
",num);
    pa = a;    /*pa应该指向数组首地址*/
    for(i=0; i<num; i++)
        printf("%d,",*pa++);    /*pa应该往后自增移动*/
    getch();
}



白银市17878194509: @C语言大神,代码求修改(谢绝新代码)用指针对10个字符串排序? -
武安清开: #include const int MAXSIZE = 5; const int MAXLEN = 81; int main() { char s[MAXSIZE][MAXLEN]; char *zfc[MAXSIZE]; // 只申请了存放指针的空间,并没有申请字符数组空间 int i; void sort(char *zfc[MAXSIZE]); for(i = 0;igets(s[i]);//输入字符串 ...

白银市17878194509: 跪求高手 C语言中的指针原理及代码
武安清开: 指针其实就是指向变量地址的变量(地址). 代码: 时钟的代码 #include <time.h> #include <stdio.h> int main() { time_t stime; printf("%ld\n",time( &stime ) ); }//

白银市17878194509: C语言指针的小问题, 出现段错误,求分析,感激不尽,代码如下 -
武安清开: static char *i,*ant; //定义字符指针,*i,*ant指针,指向常量,也就是里面的内容不容许再次修改了i="asdf"; //赋值,...

白银市17878194509: c语言指针···跪求高手来
武安清开: C语言中一般不直接赋值给指针变量,因为指针里面存的是地址~而一般不能直接知道地址.不过你的这题不是给指针变量赋值,而是给指针变量指向的整型赋值,dight=letter=other=0; 这样才是直接给指针变量赋值,不过这样也是可以的,因为空指针NULL的底层就是0,不过一般不这么写,你这个题是*digit=*letter=*other=0; 这是给 digit、letter、other指向的整型赋值为0的~ int *digit 说明digit本身是个指针变量,不过 *digit间访操作的是digit指向的整型的

白银市17878194509: C语言求积分的指针调用函数代码求修改 -
武安清开: float integral(float a,float b,(*p)(float x)) 应该改为 float integral(float a,float b,float (*p)(float x))

白银市17878194509: c语言将程序改用指针
武安清开: //不知道是不是要的这种 #include<stdio.h> void delchar(char *str1); void main() { char str1[80]; printf("Please input a string:\n"); gets(str1); delchar(str1); } void delchar(char *str1) {char str2[80]={'\0'}; int k=0,i=0;for(;(*str1)!='\0';i++) { if((*str1)>'9'||(*...

白银市17878194509: 【C语言】关于指针. 代码如下,求解 -
武安清开: **++p 这里的第一个*是乘的意思 第二个*才是取值

白银市17878194509: 求C语言高手,关于指针的
武安清开: 就是用指针数组输出下面的字符串 #include <stdio.h> #include <conio.h> #include <stdlib.h> int main() { int i; char *string[7]= { "******************", "* 1.add *", "* 2.subtract *", "* 3.multiply *", "* 4.divide *", "* 5.print menu *", "**********...

白银市17878194509: 请高手指教51单片机用C语言修改PC指针? -
武安清开: C语言是无法修改PC指针的.就是汇编语言也不能直接读和修改PC指针,都需要借助堆栈操作间接实现.

白银市17878194509: 求C语言中指针的用法 -
武安清开: 电脑程序中,不管是什么东西,他都对应有一个地址,而指针的作用是指向这个地址.例如int a=0; a的内容是0,但是在电脑中的内存地址就是其他,假如是2000,那么指针指向的就是这个2000的值.继续刚才的例子int *p;p=&a;这个时候p就指向了a的地址2000,如果想借助p来访问a,就需要在p前面添加上*号,如*p的内容就是0了,也是a的内容.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网