c語言前後
㈠ C語言如何顯示前後變化量
1、VS中,先啟動調試,然後點擊菜單欄:調試>窗口>內存>內存1(快捷鍵alt+6)。
2、可以查看內存情況,調試>窗口>局部變數(快捷鍵alt+4)可以查看變數的值,其實你在調試過程中直用滑鼠接指向變數,它會出現一個小框,會顯示變數的內存或值(優先)。
㈡ C語言顯示處理前後兩個整數的列
#include<stdio.h>
intmain()
{
inta[]={23,25,13,68,3,44,11,7,55,36};
inti;
intj;
intt;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf(" ");
for(i=0;i<5;i++)
{
for(j=9;j>0;j--)
{
if(a[j]>a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf(" ");
}
冒泡排序的變體,運行結果:
23 25 13 68 3 44 11 7 55 36
68 55 44 36 25 23 13 11 7 3
㈢ C語言中,前後定義的變數的指針不同,相互之間無法進行賦值及運算嗎
不是這樣的。C語言中的函數調用是單向的,僅僅是傳遞數值,所以在調用函數期間,函數內部變數所更改的直是無法傳遞回主調函數的。要把函數調用期間的變數值返回主調函數應該使用指針變數。下面是修改好的程序,在程序中,函數的形式參數採用指針變數,而函數調用時就把需要改變變數的地址傳入到被調用函數中,這樣就可以實現改變,值得效果了。
㈣ C語言判斷兩個日期的前後問題
if(dt1.year!=dt2.year)
{
if(dt1.year>dt2.year)return1;//判斷年相等否
if(dt1.year<dt2.year)return-1;
}
比如這里,如果兩個year相等,就沒有返值(當然,這是編譯器的判斷邏輯),編譯器不會根據你上下文去統計邏輯的,因此會認為你if有返值,沒有else語句中的返值。你將兩個邏輯中的連續if改成if else應該就沒問題了。
其實,如果年月日的規則是嚴格的,那麼語句不用這么麻煩,直接判斷
year*365+month*30+day 的大小即可判定兩個日期的關系了。
㈤ C語言 把字元串前後倒置
我的演算法是原地轉置。原地轉置有個問題,就是不能對靜態存儲的字元串操作。比如char
*s="abc";reverse(s);就會出錯。樓上的幾位的演算法不是原地轉置,可以對靜態字元串操作。
void
reverse(char
*s)
{
char
*p=s;
while(*p!='\0')
p++;
p--;
char
*q=s;
char
temp;
while(p>q)
{
temp=*p;
*p=*q;
*q=temp;
}
}
㈥ C語言數組元素前後位置互換
#include<stdio.h>
char array[2][3];
void func(char array[2][3],int x1,int y1,int x2,int y2){
char t;
t=array[x1][y1];
array[x1][y1]=array[x2][y2];
array[x2][y2]=t;
}
int main(){
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%c",&array[i][j]);//註:連續輸入二維數組的值,不用加回車
func(array,0,1,1,1);
for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%c ",array[i][j]);
printf("\n");
}
return 0;
}
㈦ C語言如何去掉字元串前後的雙引號
1.
在C語言中,利用單引號和雙引號分別表示字元和字元串,字元串是指一串以NUL位元組結尾的零個或多個字元。字元串通常存儲在字元數組中。
2.
在源程序當中,雙引號是不能去除的,雙引號表示該段為字元串,如果去掉字元串,那麼就會被編譯器識別成標識符,造成編譯出錯。
3.
在輸出當中,雙引號自動會被去除,例如printf("雙引號");輸出的是
雙引號。
㈧ C語言鏈表中的指針怎麼樣前後移動
來吧~~單鏈表應生生反著遍歷
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineelemTypeint /*單鏈表元素數據類型*/
#defineLNODE_SIZEsizeof(structlNode) /*單鏈表結點空間大小*/
#definestatusint /*狀態型變數*/
#defineOVERFLOW-1 /*內存溢出狀態碼*/
#defineERROR0 /*錯誤狀態碼*/
#defineOK1 /*正確狀態碼*/
/*單鏈表數據結構*/
typedefstructlNode{
elemTypedata;
structlNode*next;
}lNode,*linkList;
/*初始化*/
/*操作結果:構造一個空的單鏈表L*/
voidinitList(linkList*L){
*L=(linkList)malloc(LNODE_SIZE);/*產生頭結點,並使L指向此頭結點*/
if(!*L)/*內存分配失敗*/
exit(OVERFLOW);
(*L)->next=NULL;/*指針域為空*/
}
/*銷毀*/
/*初始條件:單鏈表L已存在。操作結果:銷毀單鏈表L*/
voiddestroyList(linkListL){
linkListp,q;
p=L->next;/*p指向第一個結點*/
while(p){/*沒到表尾*/
q=p->next;
free(p);
p=q;
}
free(L);
}
/*判斷單鏈表是否為空*/
/*初始條件:單鏈表L已存在。操作結果:若L為空表,則返回TRUE,否則返回FALSE*/
intlistIsEmpty(linkListL){
returnL->next==NULL;
}
/*獲取單鏈表長度*/
/*初始條件:單鏈表L已存在。操作結果:返回L中數據元素個數*/
intlistLength(linkListL){
inti=0;
linkListp=L->next;/*p指向第一個結點*/
while(p){/*沒到表尾*/
i++;
p=p->next;
}
returni;
}
/*獲取單鏈表指定元素值*/
/*操作結果:L為帶頭結點的單鏈表的頭指針。當第i個元素存在時,其值賦給e並返回OK,否則返回ERROR*/
statusgetElem(linkListL,inti,elemType*e){
intj=1;/*j為計數器*/
linkListp=L->next;/*p指向第一個結點*/
while(p&&j<i){/*順指針向後查找,直到p指向第i個元素或p為空*/
p=p->next;
j++;
}
if(!p||j>i)/*第i個元素不存在*/
returnERROR;
*e=p->data;/*取第i個元素*/
returnOK;
}
/*單鏈表指定位置插入新元素*/
/*操作結果:在帶頭結點的單鏈表L中第i個位置之前插入元素e*/
statuslistInsertNode(linkListL,inti,elemTypee){
intj=0;
linkListp=L,s;
while(p&&j<i-1){/*尋找第i-1個結點*/
p=p->next;
j++;
}
if(!p||j>i-1)/*插入位置不合理:i小於1或者大於表長*/
returnERROR;
/*生成新結點,並插入L中*/
s=(linkList)malloc(LNODE_SIZE);
if(!s)/*內存分配失敗*/
exit(OVERFLOW);
s->data=e;
s->next=p->next;
p->next=s;
returnOK;
}
/*刪除單鏈表指定位置元素*/
/*操作結果:在帶頭結點的單鏈線性表L中,刪除第i個元素,並由e返回其值*/
statuslistDeleteNode(linkListL,inti,elemType*e){
intj=0;
linkListp=L,q;
while(p->next&&j<i-1){/*尋找第i個結點,並令p指向其前驅結點*/
p=p->next;
j++;
}
if(!p->next||j>i-1)/*刪除位置不合理:i小於1或者大於表長*/
returnERROR;
/*刪除並釋放結點*/
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
returnOK;
}
/*列印鏈表內容*/
/*初始條件:單鏈表L已存在。操作結果:當鏈表不為空時,列印鏈表內容並返回OK,否則返回ERROR*/
statusprintList(linkListL){
linkListp=L->next;/*p指向第一個結點*/
if(listIsEmpty(L)){
puts("Thelinklistisempty!");
returnERROR;
}
while(p){
printf("%d ",p->data);
p=p->next;
}
putchar(' ');
returnOK;
}
intmain(void){
linkListL;
elemTypee;
elemTypea=1,b=2,c=3,d=4;
intindex,j;
/*初始化鏈表*/
initList(&L);
/*插入若干元素*/
listInsertNode(L,1,a);
listInsertNode(L,1,b);
listInsertNode(L,1,c);
listInsertNode(L,1,d);
printList(L);
for(j=listLength(L);j>0;j--){/*反向遍歷列印*/
getElem(L,j,&e);
printf("%d ",e);
}
putchar(' ');
destroyList(L);
getch();/*屏幕暫留*/
return0;
}
㈨ C語言 子函數和主函數的放置前後順序區別
先回答下第一個問題,子函數的實現方法可以放在使用它的主函數或者其它子函數後面,但是你的定義一定要在使用它之前;不然編譯器怎麼知道你用的函數square是什麼,這就是我們經常包含頭文件的一個目的,頭文件是一些函數定義或者預編譯命令。
修改是在#include<stdio.h>後面加
int square(int num);
第二個問題:num是在main定義是可以在main作用域內直接使用,或者當做參數傳遞給子函數,你的問題num為什麼可以在子函數中用,首先你子函數的num並非main里的num只是你把他們名字寫成一樣了;main里num是通過值傳遞給子函數的num,實際他們兩個num的內存地址是不一樣的,你子函數換個名字去理解一下。