利用指针将一个字符串中的数字按整数输出

img

img


各位帮我看一下哪里有问题啊,最后运行的时候不是理想的结果,需要怎么改一下啊

修改如下,供参考:

#include <stdio.h>
int main()
{
    int pd(char x);
    char str[32], * p;
    int  a[16] = { 0 }, flg, i, n;
    gets(str);
    for (p = str, i = 0, flg = 0, n = 0; *p; p++)
    {
        if (pd(*p)) {
            n = n * 10 + *p - '0';
            flg = 1;
        }
        else {
            if (flg)
                a[i++] = n;
            flg = 0;
            n = 0;
        }
    }
    if (flg)   // 字符串最后结尾处,如果是数字字符
        a[i++] = n;
    printf("字符串中包含的整数有:\n");
    for (n = i, i = 0; i < n; i++)
        printf(i ? " %d" : "%d", a[i]);
    return 0;
}
int pd(char x)
{
    int y = 0;
    if (x >= '0' && x <= '9') y = 1;
    return y;
}

直接一个个判断是不是数字不就可以

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7662819
  • 你也可以参考下这篇文章:把一个字符串中的其它字符去掉,把数字输出
  • 除此之外, 这篇博客: 根据给出的关系矩阵,判断该关系所具有的特性中的 传递性的判断 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 传递性在关系矩阵中的特点并不明显,故用另一个思路:关系R是传递的,当且仅当R∘R⊆R ,通俗来讲就是若R对应的关系矩阵中某一位置的元素为0,则在R∘R对应的关系矩阵的位置上的元素必须为0。
    题目描述
    给定有限集合上二元关系的关系矩阵,判断该关系是否具有传递性?
    源代码

    #include<stdio.h>
    #define N 100
    int mult(int a[N][N],int b[N][N],int n,int c[N][N])
    {
    	int i,j,k;
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			c[i][j]=0;
    		}
    	}
    	for(i=0;i<n;i++)  
    	{   
    		for(j=0;j<n;j++)  
    		{    
    			for(k=0;k<n;k++)    
    			{     
    				c[i][j]+=a[i][k]*b[k][j];    
    			}   
    		}  
    	}
    }
    int main()
    {
    	int n,i,j,a[N][N],b[N][N]={0},c[100][100]={0};
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			scanf("%d",&a[i][j]);
    			b[i][j]=a[i][j];
    		}
    	}
    	mult(a,b,n,c);
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			if(a[i][j]==0)
    			{
    				if(c[i][j]!=0)
    				{
    					printf("该关系不具有传递性!\n");
    					return 0;
    				}
    			}
    		}
    	}
    	printf("该关系具有传递性!\n");
    	return 0;
    }
    
  • 您还可以看一下 宋舒旻老师的一个简单而有效的量化投资策略课程中的 量化策略的测试与业绩绩效小节, 巩固相关知识点