#include<stdio.h> int main(){ int i,j,k,t,flag=0,b[73],G[10][10]={0}; char ch,v1,v2; scanf("%d%d",&i,&j); getchar();//吞一个字符,消除回车影响 for(k=0;k<i;k++){ scanf("%c",&ch); b[ch]=k;//字母转换成对应数字 } for(k=0;k<j;k++){ getchar(); scanf("%c%c",&v1,&v2); G[b[v1]][b[v2]]=G[b[v2]][b[v1]]=1; } for(k=0;k<i;k++){ int num=0; for(t=0;t<i;t++){ num+=G[t][k]; } if(flag==0){printf("%d",num);flag=1;} else printf(" %d",num); } return 0; }解释一下
时间: 2023-06-24 22:03:47 浏览: 75
这是一个 C 语言程序,它的作用是实现一个简单的无向图,然后计算每个节点的度数,并将结果输出。
程序的第一行 `#include<stdio.h>` 是一个头文件,它告诉编译器在编译时需要引入标准输入输出库。
`int main()` 是程序的主函数,它的作用是程序的入口,其中 `int` 表示返回值类型为整型,`main` 表示函数名,圆括号中的参数为空。
接下来定义了一些变量,包括 `i` 和 `j` 表示节点数和边数,`k` 和 `t` 用于循环计数,`flag` 用于标记是否为第一个输出。
`b` 数组用于存放字母与数字之间的转换关系,`G` 数组用于存放图的邻接矩阵。
`scanf("%d%d",&i,&j)` 用于从标准输入中读入节点数和边数,`getchar()` 用于吞掉一个字符,以消除回车影响。
接下来使用一个循环,将每个字母转换成对应的数字,并存储在 `b` 数组中。
再使用一个循环,读入每一条边的信息,并将其存储在邻接矩阵 `G` 中。
接着使用一个循环,计算每个节点的度数,将结果输出,其中 `if(flag==0)` 判断是否为第一个输出,如果是,则直接输出结果,否则在前面加一个空格再输出。
最后 `return 0` 表示程序正常结束,并将 0 作为返回值返回给操作系统。
相关问题
#include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b) { return (*(long *)b > *(long *)a) ? 1 : -1; } int main() { int i, k, n, m, cnt = 0, flag = 1; long x, s[10] = {0}; scanf("%d %d", &n, &m); int len = m < n ? m
这段代码是一个简单的用C语言实现的排序程序。程序首先读取输入的n和m,然后从输入中读取n个long类型的整数,并将它们存储在一个大小为10的long类型数组s中。接着,程序使用快速排序算法对s数组进行排序,按照从大到小的顺序排列。排序后,程序再输出排序后的前m个元素。
具体来说,程序定义了一个名为cmp的比较函数,该函数用于比较两个long类型的整数的大小。然后,程序使用qsort函数对s数组进行排序,其中第一个参数是数组的起始地址,第二个参数是数组的元素个数,第三个参数是每个元素的大小,第四个参数是一个指向比较函数的指针。
程序使用变量len来表示实际需要排序的元素个数。如果m小于n,则仅需要对前m个元素进行排序,否则需要对所有n个元素进行排序。最后,程序循环输出排序后的前m个元素,直到输出完毕为止。
#include <stdbool.h> #include <string.h> #include <stdio.h> bool strjudge (char *s) { int len = strlen(s); bool flag=true; for(int i=1;i<len/2;i++) { if(len%i==0) { flag=true; for(int j=i;j<len;j++) { if(s[j]!=s[j-i]) { flag=false; break; } } if(flag){return true;} } else{ flag =false; } } return false; } int main() { char s[]="abab"; bool a; a=strjudge(s); printf("%d",a); }为什么输出不只为0或1
在C语言中,bool类型的取值是true和false,对应的整数值分别为1和0。在你提供的代码中,函数strjudge的返回值类型是bool,而在main函数中,你将函数的返回值赋值给了变量a并且使用printf输出了变量a。
因此,根据函数strjudge的返回值和整数1、0对应的bool类型值true和false,a的取值只能是true或false。但是,在你的代码中,输出的不只是0或1,这可能是因为你在使用%d输出变量a时,没有使用转换说明符,正确的写法应该是使用%u输出unsigned int类型的值,或者使用%hhd输出signed char类型的值,如下所示:
```c
printf("%u", a); // 输出unsigned int类型的值
// 或者
printf("%hhd", a); // 输出signed char类型的值
```
希望这个回答能够解决你的疑惑。
阅读全文