本文目录一览:
- 1、c语言中连接码,主码,外码,候选码
- 2、C语言求素数程序改错
- 3、求教,用c语言,循环语句输出一个五角星,带运行图。
- 4、用c语言编制一程序,列出0--9十个数的所有排列组合
- 5、8位不重复的数,用c语言写一个程序将这8位数的每种可能都写出来,一个结果一行。
- 6、C语言中什么是一个8位的整数
c语言中连接码,主码,外码,候选码
普通C语言中不存在这几种码,只有数据库sql C存在:
(1) 候选码(Candidate key)
在关系模式R(U)中,K为R的一个属性或者一组属性,若满足K→U,则K为关系模式R的候选码(Candidate key)。
候选码是一组非空的属性名集合,每个属性必须为该关系模式的属性。
在关系模式R(U)中,包含在任何一个候选码中的属性称为主属性(prime Attribute)。不包含在任何候选码中的属性称为非主属性(Nonprime Attribute)或非码属性。
最简的情况下,单个属性是候选码。最极端的情况,所有的属性的组合构成码。如果整个属性组U是码,则称为全码。例如,在关系模式供应商(供应商名称,供应商地址,供应商电话)中,供应商名称是唯一的候选码。而在关系模式供应(供应商名称,供货名称,供应单价)中,属性的组合(供应商名称,供货名称)是唯一的候选码。
关系模式的每个候选码具有下列两个特性:
· 唯一性:在关系模式R(U)中, 设K为关系模式R的候选码,则对于关系模式R的任何一个关系实例r中,任何时候都不存在候选码属性值相同的两个元组。即候选码的值唯一的决定元组的所有属性值,即r中的任意2个元组s和t,都有s[k]不等于t[k]
· 最小特性:在不破坏唯一性的情况下,没有任何属性可以从候选码属性集中删除。即候选码是由其值唯一决定元组值的最小属性集组成。
例如:在供应关系中,必须由供应商名称和供货名称两者组合才能唯一的决定供应关系中的一个元组值,缺一不可。
下面给出一个具有多个候选码的例子。有关系模式CSZ(CITY,ST,ZIP),其中有三个属性:城市为CITY,街道ST,邮政编码ZIP。其属性集合和属性间的函数函数依赖关系为:
U = { CITY,ST,ZIP }
F = {(CITY,ST)→ZIP,ZIP→CITY}
即城市和街道共同决定邮政编码,邮政编码决定城市。在这个关系模式中,有两个候选码,即(CITY,ST)和(ST,ZIP)。CITY,ST和ZIP都是主属性。
再给出一个全码的例子,如表5-2。我们有一个大部件的设计A,其中包含四个设计相同的左右并排放置的子部件,四个子部件的编号由左到右分别为I1,I2,I3和I4。设计一个关系模式描述四个子部件之间的左右邻接关系,关系模式左右邻接(左邻接部件,右邻接部件)。这个关系模式的唯一的候选码就是(左邻接部件,右邻接部件),即全码。
表 5-2
左邻接部件 左邻接部件
I1 I2
I2 I3
I3 I4
在左右邻接关系中,必须由左邻接部件和右邻接部件共同决定其中的一个元组。
(2)主码(Primary Key)
在一个关系模式中,可以有多个候选码,但只能有一个主码。
若关系模式R(U)中有多个候选码,则选定其中的一个候选码作为主码,或称主关键字。
例如,在关系模式供应商(供应商名称,供应商地址,供应商电话)中,供应商名称是唯一的候选码,也是它的主码。而在关系模式供应(供应商名称,供货名称,供应单价)中,属性的组合(供应商名称,供货名称)是唯一的候选码,也是它的主码。在这个关系模式CSZ中,有两个候选码,即(CITY,ST)和(ST,ZIP),可以任选其中一个作为主码。在左右邻接关系中,关系模式的唯一的候选码(左邻接部件,右邻接部件)也是它的主码。
(3)外码
关系模式R中属性或属性组X并非R的候选码,但X是另一个关系模式的候选码,则称X是R的外部码(Foreign Key),也称外码。
例如:在供应关系模式中,供应商名称不是供应关系模式的码,但供应商名称是关系模式供应商的码,则称供应商名称是关系模式供应的外部码或外码。
主码和外部码提供了一种表示不同关系之间相互关联的手段。如关系模式供应商和供应之间的关系就是通过供应商名称来体现的。
C语言求素数程序改错
稍微改了下,可能可读性会好一些,以下代码供参考:
#include stdio.h
/*判断素数*/
int IsPrime (int m)
{
int i;
if (m == 2) return 1;
if (m == 1 || m % 2 == 0) return 0;
for (i = 3; i * i = m;)
{
if (m % i == 0) return 0;
i += 2;
}
return 1;
}
int main()
{
int i,j,n;
for(n=10001;n20000;n++)
{
for(i=2;i*in;i++)
{
if(n%i==0 IsPrime(i) IsPrime(n/i))
{
printf("%d = %d * %d \n",n,i,n/i);
break;
}
}
}
return 0;
}
求教,用c语言,循环语句输出一个五角星,带运行图。
提供示例代码供参考:
#include stdio.h
void main()
{
int i1, j1, k1, i2, j2, k2, i3, j3, k3, i4, j4, k4, m4, n4;
printf("\n\n" );
for ( i1 = 1; i1 6; i1++ ) /*这是五角星的上面一个角*/
{
for ( j1 = 1; j1 19 - i1; j1++ )
printf( " " );
for ( k1 = 1; k1 = 2 * i1 - 1; k1++ )
printf( "*" );
printf( "\n" );
}
for ( i2 = 1; i2 5; i2++ ) /*这是五角星的中间两个角*/
{
for ( j2 = 1; j2 3 * i2 - 3; j2++ )
printf( " " );
for ( k2 = 1; k2 = 42 - 6 * i2; k2++ )
printf( "*" );
printf( "\n" );
}
for ( i3 = 1; i3 3; i3++ ) /*这是中间与下部相接的部分*/
{
for ( j3 = 1; j3 12 - i3; j3++ )
printf( " " );
for ( k3 = 1; k3 = 12 + 2 * i3; k3++ )
printf( "*" );
printf( "\n" );
}
for ( i4 = 1; i4 5; i4++ ) /*这是五角星的下面两个角*/
{
for ( j4 = 1; j4 10 - i4; j4++ )
printf( " " );
for ( k4 = 1; k4 = 10 - 2 * i4; k4++ )
printf( "*" );
for ( m4 = 1; m4 6 * i4 - 3; m4++ )
printf( " " );
for ( n4 = 1; n4 = 10 - 2 * i4; n4++ )
printf( "*" );
printf( "\n" );
}
printf("\n\n" );
}
运行截图:
用c语言编制一程序,列出0--9十个数的所有排列组合
这个是排列,如果是组合最后一个循环判断时候有相等的:
#includestdio.h
int
main()
{
for(int
i0=0;i09;i0++)
for(int
i1=0;i19;i1++)
for(int
i2=0;i29;i2++)
for(int
i3=0;i39;i3++)
for(int
i4=0;i49;i4++)
for(int
i5=0;i59;i5++)
for(int
i6=0;i69;i6++)
for(int
i7=0;i79;i7++)
for(int
i8=0;i89;i8++)
for(int
i9=0;i99;i9++)
printf("\n%d%d%d%d%d%d%d%d%d%d",i0,i1,i2,i3,i4,i5,i6,i7,i8,i9);
}
8位不重复的数,用c语言写一个程序将这8位数的每种可能都写出来,一个结果一行。
#includestdio.h
int main(void){
int i1,i2,i3,i4,i5,i6,i7,i8,j;
int a2[9],a3[8],a4[7],a5[6],a6[5],a7[4],a8[3];
long c1=0,c2=9*9*8*7*6*5*4*3; //统计共有多少种组合
//共8级嵌套循环,每级代表一位,每位用一个数组储存可供选择的数字
for(i1=1;i1=9;i1++){
for(j=0;j9;j++) a2[j]=j=i1?j+1:j;
for(i2=0;i29;i2++){
for(j=0;j8;j++) a3[j]=j=i2?a2[j+1]:a2[j];
for(i3=0;i38;i3++){
for(j=0;j7;j++) a4[j]=j=i3?a3[j+1]:a3[j];
for(i4=0;i47;i4++){
for(j=0;j6;j++) a5[j]=j=i4?a4[j+1]:a4[j];
for(i5=0;i56;i5++){
for(j=0;j5;j++) a6[j]=j=i5?a5[j+1]:a5[j];
for(i6=0;i65;i6++){
for(j=0;j4;j++) a7[j]=j=i6?a6[j+1]:a6[j];
for(i7=0;i74;i7++){
for(j=0;j3;j++) a8[j]=j=i7?a7[j+1]:a7[j];
for(i8=0;i83;i8++){
printf("%d%d%d%d%d%d%d%d\n",i1,a2[i2],a3[i3],a4[i4],a5[i5],a6[i6],a7[i7],a8[i8]);
c1++;}}}}}}}}
printf("total=%ld,C(1,9)*A(7,9)=%ld,total-C(1,9)*A(7,9)=%ld\n",c1,c2,c1-c2); //验证组合种数与循环次数是否相同 */
return 0;
}
C语言中什么是一个8位的整数
【8位整数】
计算机中存储数据,是以二进制的形式存储(有时也被表示为16进制)。
二进制8位 就是 0000 0000 到 1111 1111 (换算成十进制是 0 ~ 255 )
【无符号 / 有符号 整型】
同时C语言中 整型的最高位 用来表示 符号。
规定当 最高位为 1表示负数。
无符号整型中 附加 unsigned 关键字
无符号8位整数, 0000 0000 ~ 1111 1111 表示 0 ~ 255
有符号整型中 没有附加 unsigned 关键字
有符号8位整数:
0000 0000 ~ 0111 1111 表示 0 ~ 127
1111 1111 ~ 1000 0000 表示 -1 ~ -128
【第一种方法】【 char 表示8位整数 】
C语言 中一般 用 char 表示一个字节(byte)来表示 8位(bit)整数
但是如果 你想自定义 位数 比如 4位整数 7位整数 11位整数等等呢
就需要用到结构体 中可以可以声明 一个类型的实际占用位数。
【第二种方法】【 struct 中自定义类型位数 】
你可以使用 struct 或者 class (C++中使用,可以定义构造函数 或者使用默认构造函数)内部数据成员可以加冒号限定位数。
【 演示说明 】
以下代码演示了 当 有符号整型限定为n时(n小于等于类型最大占用位数) 赋值 2^(n-1) 时,整型变量表示为 一个负数。 说明高位被 设定为 1, 同时证明了 已经分配了 指定位数的 整数。
【 C语言 】中使用 如下所示:
#include math.h
#include stdio.h
#include conio.h
#include stdlib.h
struct INT_4{
int value :4;
};
struct INT_5{
int value :5;
};
void main() {
char ch = 128;
struct INT_4 i4 = {8};
struct INT_5 i5 = {16};
//i4.value = 8;
printf("i4 -- %d i5 -- %d \n", i4.value, i5.value);
printf("char -- %d \n", ch);
system("pause");;
}
【 输出结果:】
i4 -- -8 i5 -- -16
char -- -128
请按任意键继续. . .
【 C++ 】中使用 如下所示:
#include stdio.h
#include conio.h
#include stdlib.h
struct INT_8{
int value :8;
};
class INT_4{
public:
INT_4 ( int value = 0 ){
this-value = value;
}
int value :4;
};
int main() {
INT_8 i8 = INT_8();
INT_4 i4 = INT_4();
char ch = 128;
i8.value = 128;
i4.value = 8;
printf("i8 -- %d, i4 -- %d \n", i8.value, i4.value);
printf("char -- %d \n", ch);
system("pause");;
return 0;
}
【 输出结果:】
i8 -- -128, i4 -- -8
char -- -128
请按任意键继续. . .
当然这种方式用的不多,尤其是C语言中,不推荐使用这种方式。
C语言往往作为 库或者 驱动开发,需要很好的兼容性。
(不确定标准C 语言 ANSI C标准是否支持该特性。)
【 注:】
以上代码 均在 code::block GNU Mingw gcc 编译器下通过