本文目錄一覽:
- 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 編譯器下通過
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193426.html