修改如下,供参考:
#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;
}
直接一个个判断是不是数字不就可以
传递性在关系矩阵中的特点并不明显,故用另一个思路:关系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;
}