Ⅰ c語言編程問題:輸入5個整數,將其中最小的放在最前,最大的放在最後,其餘的位置保持不變。
你先找到了最大值和最小值的位置
然後你為了把最大值移到最後,有移動了一些數的位置,那你想像那會發生什麼,不用我多說了把
按照你的思路 你可以先找最大,然後把最大移到最後
在找最小,然後把最小移到最前
Ⅱ 將數組中的非零元素移到前面來,零元素移到後面去,各非零元素間的相對位置不變 C語言
/*
整理前 :
30 0 45 -20 16 0 8 0 6 13 0 12 -37 -9 18
整理後 :
30 45 -20 16 8 6 13 12 -37 -9 18 0 0 0 0
Press any key to continue
*/
#include<stdio.h>
voidChange(inta[],intn){
inti,j;
for(i=0;i<n-1;++i){
if(a[i]==0){
for(j=i;j<n-1;++j)
a[j]=a[j+1];
a[n-1]=0;
}
}
}
voidShow(inta[],intn){
inti;
for(i=0;i<n;++i)
printf("%d",a[i]);
printf(" ");
}
intmain(){
inta[]={30,0,45,-20,16,0,8,0,6,13,0,12,-37,-9,18};
intn=sizeof(a)/sizeof(a[0]);
printf("整理前: ");
Show(a,n);
Change(a,n);
printf("整理後: ");
Show(a,n);
return0;
}
Ⅲ c語言輸入一個長度為10的整數數組,將其中出現的素數首尾交換 非素數保持位置不變
#include<stdio.h>
int isprime(int n) {
if(n == 2 || n == 3)
return 1;
if (n < 2 || n % 2 == 0)
return 0;
for (int i = 2; i * i <= n; i++)
if (n % i == 0)
return 0;
return 1;
}
int main() {
int a[10], p[10], i, j, t;
for (i = 0, j = 0; i < 10; i++) {
scanf("%d", &a[i]);
if (isprime(a[i]))
p[j++] = i;
}
for (i = 0; i < j / 2; i++) {
t = a[p[i]];
a[p[i]] = a[p[j - i - 1]];
a[p[j - i - 1]] = t;
}
for (i = 0, j = 0; i < 10; i++)
printf("%d ", a[i]);
return 0;
}
Ⅳ C語言,help!
if(prime(a[i]) && prime(a[j]) && (a[i]<a[j])) // 素數排序
{x=a[i];
a[i]=a[j];
a[j]=x;
printf(「\n」);
}
if(!prime(a[i]) && !prime(a[j]) && (a[i]>a[j]))//合數排序
{x=a[i];
a[i]=a[j];
a[j]=x;
}
Ⅳ c語言,字元數組中刪除一些字元後,剩下的字元位置怎麼變化的。
問題:字元數組中刪除一些字元後,剩下的字元位置怎麼變化的?
答:字元數組在內存中是一片連續的內存。每一個字元佔8位。刪除某些字元要看具體實現。
如果只是賦值位\0,那麼剩餘的字元的相對位置是不變的。如果把後面的都向前移動一位,那麼每個字元的位置將會減少1.
Ⅵ 我剛學c語言,怎麼可以實現讓二維數組按行排序,但行中的元素位置不變,跪求民間高手~~~~~
使用qsort:
void qsort ( void * base, size_t nmem, size_t size, int ( * comp) ( const void * , const void * ) ) ;
Ⅶ c語言每部分內存都有一固定地址嗎不能改變
定義一個變數,系統的確會分配一個內存單元A來存儲這個變數。而A的固定地址已經是物理地址了。不需要在分配一個來存儲該地址。
該變數已經實際存在在內存物理地址上了。
Ⅷ C語言中如何設置寄存器的 GPFDAT[7:6]為10,而保持其他位的值不變
需要將第6位置0、第7位置1,不影響其它位,就需要通過兩次邏輯運算實現。
先將第6位置0,不影響其它位:
GPFDAT &= (~(1<<6));
再將第7位置1,不影響其它位:
GPFDAT |= (1<<7)
0X40=0100 0000
~0X40=1011 1111再與上(R2)
內聯匯編代碼可以使用 C/C++ 變數和函數,因此它能非常容易地整合到 C/C++ 代碼中。它能做一些對於單獨使用 C/C++ 來說非常笨重或不可能完成的任務。
(8)c語言保持相對位置不變擴展閱讀:
寄存器有串列和並行兩種數碼存取方式。將n位二進制數一次存入寄存器或從寄存器中讀出的方式稱為並行方式。將n位二進制數以每次1位,分成n次存入寄存器並從寄存器讀出,這種方式稱為串列方式。
並行方式只需一個時鍾脈沖就可以完成數據操作,工作速度快,但需要n根輸入和輸出數據線。串列方式要使用幾個時鍾脈沖完成輸入或輸出操作,工作速度慢,但只需要一根輸入或輸出數據線,傳輸線少,適用於遠距離傳輸。
Ⅸ C語言中二維數組怎麼確定元素的相對位置
C語言中二維數組確定元素的相對位置方法如下:
通過嵌套的兩個for循環來遍歷二維數組
2 代碼
#include<stdio.h>
voidFind(intnum,intarr[3][2],introw,intcol){
for(inti=0;i<row;i++){
for(intj=0;j<col;j++){
if(arr[i][j]==num){
printf("找到了,行列下標為(%d,%d)
",i,j);
return;
}
}
}
puts("沒找到");
}
intmain(){
intarr[3][2]={{1,2},{3,4},{5,6}};
intnum;
scanf("%d",&num);
Find(num,arr,3,2);
getchar();
getchar();
return0;
}
3 運行效果