⑴ c語言for的雙重循環
這里的雙重循環for(i=1;i<=9;i++)是外循環,for(j=1;j<=9;j++)是內循環。先執行循環for(j=1;j<=9;j++),即在每一個i下,循環j的值。
具體的循環的訪問次序是,首先取i=1,在此條件下,進行內循環for(j=1;j<=9;j++),依次訪問(i=1,j=1),(i=1,j=2),(i=1,j=3)....執行完內循環後(j加到9的時候),執行一次外循環,i++。
此時i=2,在i=2的條件下,再一次進行內循環for(j=1;j<=9;j++),依次訪問(i=2,j=1),(i=2,j=2),(i=2,j=3)....,其他的繼續按照這個步驟操作下去。
(1)c語言兩數不對等時循環擴展閱讀:
c語言三種循環do while、for、while的異同點:
用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式。
也就是說do…while的循環體最少被執行一次,而while循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和 continue語句進行控制的。
⑵ 怎樣在C語言中讓兩個變數不同時等於一個數
什麼意思?說清楚點?
清楚了。你可以設置一個變數,假設你排列的名次在數組A中,如果你要把他列印出來,肯定要用循環遍歷了。你就設置一個變數,這個變數保存你上一次列印出來的數值,這樣子當你要列印當前數值就可以先判斷上一次列印的數值跟這次要列印的是不是一樣,如果是就跳過,不是就列印出來,然後更新這個變數:即把當前列印的數值賦值給這個變數。不懂可追問,祝樓主學習愉快!
⑶ C語言這道題怎麼循環兩次呢
首先要理解!(--x),指的是x先減去1,再取非值,如果結果為true,則繼續執行
還有,--x指的是先減去1,然後再使用x值
第一遍,先執行
第二遍,,得到x=1,--x先減去1變成0,然後取非結果為true
所以是執行兩遍的
⑷ c語言雙重循環
我覺得不一樣:
不妨取n<=2作控制語句
(1)中n=2時循環結束,p=2p;e=(e+1.0/p)+1.0/2p;
(2)中n=2是循環結束,p=2p;e=(e+1.0/p)+1.0/p+1.0/2p;
已有的p的定義在n循環以外,而題意應該是每次n循環開始p都是1,否則結果不同
⑸ C語言中.怎麼同時執行兩個不同的循環
這個要用到多線程了,給你個例子:
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include<process.h>
charc=0;
VOIDB(PVOIDp)//線程B
{
while(1)
{
if(c=='b'||c=='B')
break;
printf("BBB");
Sleep(200);//延時
}
}
VOIDC(PVOIDp)//線程C
{
while(1)
{
if(c=='c'||c=='C')
break;
printf("CCC");
Sleep(300);
}
}
voidA()
{
_beginthread(B,0,0);//啟動B
_beginthread(C,0,0);//啟動C
}
intmain()
{
A();
printf("按B結束B,按C結束C,按Q退出 ");
while(1)
{
c=getch();
if(c=='q'||c=='Q')
break;
}
return0;
}
⑹ c語言十個數字互不相等的問題。。。
首先定義10個整型變數,不一定是一個一個的變數,可以將他們寫成一個集合來表示,也就是定義成數組。下面是我自己寫的一個代碼,你可以看一下。至於你的左操作數必須是左值的問題是因為你代碼格式有問題(a!=b&&..............h!=i)這個應該寫成(a != b&&..............h != i),你的!應該用英文符號,不能用中文下的感嘆號。
#include<stdio.h>
#include<stdlib.h>
#defineMAX 10
intmain()
{
intnum[MAX];
inti=0,j=0;
intflag=0;
//用戶輸入10個數進行
printf("pleaseenter%dnumber:",MAX);
for(i=0;i<MAX;i++)
{
scanf("%d",&num[i]);
}
//循環判斷,一直到最後一個元素結束判斷,並且最後一個元素不需要判斷
for(i=0;i<MAX-1;i++)
{
for(j=i+1;j<MAX;j++)
{
//如果發現相同元素就輸出
if(num[i]==num[j])
{
flag=1;
printf("num[%d]=num[%d]=%d ",i,j,num[i]);
}
}
}
if(0==flag)
{
printf("notexist ");
}
return0;
}
⑺ c語言中當循環次數不確定時怎麼處理
循環次數不確定,總有一個變數控制或結束條件吧?
int n;
while( 1 )
{
scanf("%d", &n);
if ( n<0 ) //輸入負數時,結束循環
break;
printf("n=%d\n", n ); //否則,輸出讀到的數
}
⑻ 怎樣用c語言表示幾個數任意兩個不相等
運用桶排序即可,但有局限性只能應用於整數。
自己去網路具體代碼,看懂演算法在自己寫代碼。
桶排序
(Bucket
sort)或所謂的箱排序,是一個排序演算法辯舉,工作的原理是將數組分到有限數量的桶子里。每個桶子再個別排序(有可能再使用別的排序演算法或是以遞歸方式繼續使用桶排序進行排序)。桶排序是鴿巢排序的一種歸納結果。當要被排序的數組內的數值是均勻分配的時候,桶排序使用線性時間(Θ(n))。但桶排序並不是
比較排序,他不受到
O(n
log
n)
下限的影響。
1.N個數字(整形)
2.求出最大的數字的位數m
3.由於數字都是0到9組成,做10個桶,0到9,將N個數字依次放入桶裡面
3.1
從個位數開始,從各位數字開始,將地i(i<m)為數字相同的數字,依次放入對應的桶中
3.2
從地0個桶開始,將所有桶中的數字取出,作為一個新的數字
3.2
重復上面兩步,直至m為數字
4.最後排序的為從小到大的數組排序。
因為是數據排序,所以設置的桶的鍵值為0~9共十個亂灶判桶。每次從數據的最後一個數位開始掃描,如果這個數位的值與桶的鍵值相等,就把這個數據放入桶內。桶可以看作是一個有序的鏈表,後進入的元素排在先進入的數據的後面,直到所有的數據都完成掃描,算作一次掃描。以後依次取倒數第二個掃描,按照桶嘩改的鍵值開始掃描,同樣把數位的值與桶的鍵值相等的數據放入桶內。直到所有數據的最高數位也完成掃描。最後一次掃描完成,桶的鍵值從低到高,把這些鏈表串起來輸出的結果就是原來數據的從小到大排序。
---------------------------------------------------------------------------------------------------
代碼(來自《數據結構演算法Visual.C.6.0程序集》)
void
main()
{cout<<"bucketsort.cpp運行結果:\n";
int
array[SIZE];
cout<<"原數組:\n";
srand(time(0));
for(int
i=0;i<SIZE;++i)
{array[i]=rand()0;
cout<<setw(3)<<array[i];}
cout<<'\n';
cout<<"排序過程演示:\n";
bucketSort(array);
cout<<"排序後數組:\n";
for(int
j=0;j<SIZE;++j)
cout<<setw(3)<<array[j];
cout<<endl;cin.get();
}
//
桶排序演算法
void
bucketSort(int
a[])
{int
totalDigits,bucket[10][SIZE]={0};
totalDigits=numberOfDigits(a,SIZE);
for(int
i=1;i<=totalDigits;++i)
{
distributeElements(a,bucket,i);
collectElements(a,bucket);
//將桶數組初始化為0
if(i!=totalDigits)
zeroBucket(bucket);
for(int
j=0;j<SIZE;++j)
cout<<setw(3)<<a[j];
cout<<endl;}
}
//確定單下標數組的最大數的位數
int
numberOfDigits(int
b[],int
arraySize)
{
int
largest=b[0],digits=0;
for(int
i=1;i<arraySize;++i)
if(b[i]>largest)
largest=b[i];
while(largest!=0)
{
++digits;
largest/=10;}
return
digits;
}
//
將單下標數組的每個值放到桶數組的行中
void
distributeElements(int
a[],int
buckets[][SIZE],int
digit)
{int
divisor=10,bucketNumber,elementNumber;
for(int
i=1;i<digit;++i)
divisor*=10;
for(int
k=0;k<SIZE;++k)
{
bucketNumber=(a[k]%divisor-a[k]%(divisor/10))/(divisor/10);//求取地m為數字
elementNumber=++buckets[bucketNumber][0];//buckets[bucketNumber][0]
表示桶中的數字個數
buckets[bucketNumber][elementNumber]=a[k];//放入對應的桶中
}
}
//將桶數組的值復制回原數組
void
collectElements(int
a[],int
buckets[][SIZE])
{int
subscript=0;
for(int
i=0;i<10;++i)
for(int
j=1;j<=buckets[i][0];++j)
a[subscript++]=buckets[i][j];
}
//將桶數組初始化為0
void
zeroBucket(int
buckets[][SIZE])
{for(int
i=0;i<10;++i)
for(int
j=0;j<SIZE;++j)
buckets[i][j]=0;}
⑼ 輸入一個數,若不滿足條件,則一直循環這個語句c語言的。
當你第一次輸入的值跟電腦產生的隨機數
相等時,會碰唯執行beak
跳出for循環
如果你笑瞎培第一次的數神仿不等於電腦的隨機數
,
都會運行到
return
0
,結束for循環