1. c語言程序代碼
char A = "abc";
char B = "bcd" char C = "cde";
char D;
B=C;C=D;D=B;
或者直接運用位運算。
2. 求C語言程序代碼
// Microsoft Visual C++ 2010學習版
#include <stdio.h>
double add_thickness(double *thickness_ptr, int *times_ptr)
{
*thickness_ptr *= 2;
if (*times_ptr == 1)
{
return *thickness_ptr;
}
(*times_ptr)--;
return add_thickness(thickness_ptr, times_ptr);
}
int main()
{
double thickness = 0.006; // 0.006cm
int times = 43;
printf("設定紙張厚度:%f cm ", thickness);
printf("算出地月距離:%f cm ", add_thickness(&thickness,×));
printf("算出地月距離:%f km ", thickness / 1000 / 100);
// 地月距離
double distance = (double)386000 * 1000 * 100; // cm
// 操作43次
for (int i = 1; i <= 43; i++)
{
distance /= 2;
}
printf("紙張厚度應為:%f cm ", distance);
// 檢驗add_thickness()正確性
times = 43;
printf("按上述厚度,地月距離:%f km ", add_thickness(&distance,×) / 1000 / 100);
return 0;
}
---
若紙厚度0.006cm,按題操作43次,紙高度遠大於地月距離386000公里!
若紙厚度0.004388cm,按題操作43次,紙高度等於地月距離386000公里。
程序執行結果:
3. c語言計算器程序源代碼
棧操作~
輸入的弄成字元串。
如:a+(b+c*(d+e))
先檢索「(」入棧,b入棧,+入棧,c入棧,*入棧,後面的不是數字那麼「(」入棧,+,入棧,e入棧,
「)」入棧,遇到「)」,出棧操作,直到遇到第一個「(」。
得到字元:d+e,通過演算法計算出值D,然後把D入棧。那麼棧中的字元為:a+(b+c*D
向後判斷一步看是不是乘或除,不是繼續向後入棧,是就出棧。
得到c*D,通過演算法計算值為C,入棧,那麼棧中的字元為:a+(b+C,向後判斷,無乘或除運算,繼續入棧:「)」,遇到「)」,出棧操作,直到遇到第一個「(」,得到字元串:b+c,演算法計算值為B,入棧
棧中字元串為:a+B 字元串結束,出棧操作計算出a+B,值。
如果字元串的式子很長的話,就反復的入棧出棧計算。
思路是這樣的......
關於COS,SIN類的關鍵字,也是上面的思路,
(入棧,直到遇到)出棧,先計算出括弧里的,然後後退一步判斷前面的是乘除或者關鍵字,
如:sin(0.1+0.2)
操作得出sin0.3然後判斷前面的是不是關鍵字,是那句計算sin0.3。
但是遇到關鍵字的時候不是一個一個字元在一起的,你可以入棧的時候判斷是不是字母,是字母,那麼入棧直到不是字母為止,出棧判斷關鍵字也是一樣......
不明白的繼續問~
4. 求簡單C語言程序代碼!
輸入2個正整數m和n,求其最大公約數和最小公倍數
#include
#include
int main()
int m,n,p,q,s,r;
printf("請輸入兩個正整數;m,n ");
scanf("%d,%d",&m,&n);
#include<stdio.h>
main()
int a,b,t=0;
scanf("%d %d",&a,&b);
if (a<b)
printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));
}
主要特點
C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。
以上內容參考:網路-c語言
5. 求完整的計算機的c語言代碼,坐等
你的編譯器用的什麼,如果是gcc的話就建一個主文件,裡面放main函數,並包含其他的頭文件,然後子目錄裡面分別放置各個運算的程序文件,在主函數裡面調用這些文件(注意每一個子目錄裡面的c文件都要建立一個h文件,保存函數的前置聲明,主函數裡麵包含子目錄里的頭文件就可以了)。如果windows下的vc就更簡單了,在目錄下建立文件夾結構(主文件夾下放界面,子目錄下放運算的源碼,然後建一個工程把他們拖進去就OK)
6. 求c語言的一個程序編碼
*
================================================
功能:選擇排序
輸入:數組名稱(也就是數組首地址)、數組中元素個數
================================================
*/
/*
====================================================
演算法思想簡單描述:
在要排序的一組數中,選出最小的一個數與第一個位置的數交換;
然後在剩下的數當中再找最小的與第二個位置的數交換,如此循環
到倒數第二個數和最後一個數比較為止。
選擇排序是不穩定的。演算法復雜度O(n2)--[n的平方]
=====================================================
*/
void
select_sort(int
*x,
int
n)
{
int
i,
j,
min,
t;
for
(i=0;
i<n-1;
i++)
/*要選擇的次數:0~n-2共n-1次*/
{
min
=
i;
/*假設當前下標為i的數最小,比較後再調整*/
for
(j=i+1;
j<n;
j++)/*循環找出最小的數的下標是哪個*/
{
if
(*(x+j)
<
*(x+min))
{
min
=
j;
/*如果後面的數比前面的小,則記下它的下標*/
}
}
if
(min
!=
i)
/*如果min在循環中改變了,就需要交換數據*/
{
t
=
*(x+i);
*(x+i)
=
*(x+min);
*(x+min)
=
t;
}
}
}
/*
================================================
功能:直接插入排序
輸入:數組名稱(也就是數組首地址)、數組中元素個數
================================================
*/
/*
====================================================
演算法思想簡單描述:
在要排序的一組數中,假設前面(n-1)
[n>=2]
個數已經是排
好順序的,現在要把第n個數插到前面的有序數中,使得這n個數
也是排好順序的。如此反復循環,直到全部排好順序。
直接插入排序是穩定的。演算法時間復雜度O(n2)--[n的平方]
=====================================================
*/
void
insert_sort(int
*x,
int
n)
{
int
i,
j,
t;
for
(i=1;
i<n;
i++)
/*要選擇的次數:1~n-1共n-1次*/
{
/*
暫存下標為i的數。注意:下標從1開始,原因就是開始時
第一個數即下標為0的數,前面沒有任何數,單單一個,認為
它是排好順序的。
*/
t=*(x+i);
for
(j=i-1;
j>=0
&&
t<*(x+j);
j--)
/*注意:j=i-1,j--,這里就是下標為i的數,在它前面有序列中找插入位置。*/
{
*(x+j+1)
=
*(x+j);
/*如果滿足條件就往後挪。最壞的情況就是t比下標為0的數都小,它要放在最前面,j==-1,退出循環*/
}
*(x+j+1)
=
t;
/*找到下標為i的數的放置位置*/
}
}
/*
================================================
功能:冒泡排序
輸入:數組名稱(也就是數組首地址)、數組中元素個數
================================================
*/
/*
====================================================
演算法思想簡單描述:
在要排序的一組數中,對當前還未排好序的范圍內的全部數,自上
而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較
小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要
求相反時,就將它們互換。
下面是一種改進的冒泡演算法,它記錄了每一遍掃描後最後下沉數的
位置k,這樣可以減少外層循環掃描的次數。
冒泡排序是穩定的。演算法時間復雜度O(n2)--[n的平方]
=====================================================
*/
void
bubble_sort(int
*x,
int
n)
{
int
j,
k,
h,
t;
for
(h=n-1;
h>0;
h=k)
/*循環到沒有比較范圍*/
{
for
(j=0,
k=0;
j<h;
j++)
/*每次預置k=0,循環掃描後更新k*/
{
if
(*(x+j)
>
*(x+j+1))
/*大的放在後面,小的放到前面*/
{
t
=
*(x+j);
*(x+j)
=
*(x+j+1);
*(x+j+1)
=
t;
/*完成交換*/
k
=
j;
/*保存最後下沉的位置。這樣k後面的都是排序排好了的。*/
}
}
}
}
/*
================================================
功能:希爾排序
輸入:數組名稱(也就是數組首地址)、數組中元素個數
================================================
*/
/*
====================================================
演算法思想簡單描述:
在直接插入排序演算法中,每次插入一個數,使有序序列只增加1個節點,
並且對插入下一個數沒有提供任何幫助。如果比較相隔較遠距離(稱為
增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除
多個元素交換。D.L.shell於1959年在以他名字命名的排序演算法中實現
了這一思想。演算法先將要排序的一組數按某個增量d分成若干組,每組中
記錄的下標相差d.對每組中全部元素進行排序,然後再用一個較小的增量
對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成
一組,排序完成。
下面的函數是一個希爾排序演算法的一個實現,初次取序列的一半為增量,
以後每次減半,直到增量為1。
希爾排序是不穩定的。
=====================================================
*/
void
shell_sort(int
*x,
int
n)
{
int
h,
j,
k,
t;
for
(h=n/2;
h>0;
h=h/2)
/*控制增量*/
{
for
(j=h;
j<n;
j++)
/*這個實際上就是上面的直接插入排序*/
{
t
=
*(x+j);
for
(k=j-h;
(k>=0
&&
t<*(x+k));
k-=h)
{
*(x+k+h)
=
*(x+k);
}
*(x+k+h)
=
t;
}
}
}
/*
================================================
功能:快速排序
輸入:數組名稱(也就是數組首地址)、數組中起止元素的下標
================================================
*/
/*
====================================================
演算法思想簡單描述:
快速排序是對冒泡排序的一種本質改進。它的基本思想是通過一趟
掃描後,使得排序序列的長度能大幅度地減少。在冒泡排序中,一次
掃描只能確保最大數值的數移到正確位置,而待排序序列的長度可能只
減少1。快速排序通過一趟掃描,就能確保某個數(以它為基準點吧)
的左邊各數都比它小,右邊各數都比它大。然後又用同樣的方法處理
它左右兩邊的數,直到基準點的左右只有一個元素為止。它是由
C.A.R.Hoare於1962年提出的。
顯然快速排序可以用遞歸實現,當然也可以用棧化解遞歸實現。下面的
函數是用遞歸實現的,有興趣的朋友可以改成非遞歸的。
快速排序是不穩定的。最理想情況演算法時間復雜度O(nlog2n),最壞O(n2)
=====================================================
*/
void
quick_sort(int
*x,
int
low,
int
high)
{
int
i,
j,
t;
if
(low
<
high)
/*要排序的元素起止下標,保證小的放在左邊,大的放在右邊。這里以下標為low的元素為基準點*/
{
i
=
low;
j
=
high;
t
=
*(x+low);
/*暫存基準點的數*/
while
(i<j)
/*循環掃描*/
{
while
(i<j
&&
*(x+j)>t)
/*在右邊的只要比基準點大仍放在右邊*/
{
j--;
/*前移一個位置*/
}
if
(i<j)
{
*(x+i)
=
*(x+j);
/*上面的循環退出:即出現比基準點小的數,替換基準點的數*/
i++;
/*後移一個位置,並以此為基準點*/
}
while
(i<j
&&
*(x+i)<=t)
/*在左邊的只要小於等於基準點仍放在左邊*/
{
i++;
/*後移一個位置*/
}
if
(i<j)
{
*(x+j)
=
*(x+i);
/*上面的循環退出:即出現比基準點大的數,放到右邊*/
j--;
/*前移一個位置*/
}
}
*(x+i)
=
t;
/*一遍掃描完後,放到適當位置*/
quick_sort(x,low,i-1);
/*對基準點左邊的數再執行快速排序*/
quick_sort(x,i+1,high);
/*對基準點右邊的數再執行快速排序*/
}
}
/*
================================================
功能:堆排序
輸入:數組名稱(也就是數組首地址)、數組中元素個數
================================================
*/
/*
====================================================
演算法思想簡單描述:
堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進。
堆的定義如下:具有n個元素的序列(h1,h2,...,hn),當且僅當
滿足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)
時稱之為堆。在這里只討論滿足前者條件的堆。
由堆的定義可以看出,堆頂元素(即第一個元素)必為最大項。完全二叉樹可以
很直觀地表示堆的結構。堆頂為根,其它為左子樹、右子樹。
初始時把要排序的數的序列看作是一棵順序存儲的二叉樹,調整它們的存儲順序,
使之成為一個堆,這時堆的根節點的數最大。然後將根節點與堆的最後一個節點
交換。然後對前面(n-1)個數重新調整使之成為堆。依此類推,直到只有兩個節點
的堆,並對它們作交換,最後得到有n個節點的有序序列。
從演算法描述來看,堆排序需要兩個過程,一是建立堆,二是堆頂與堆的最後一個元素
交換位置。所以堆排序有兩個函數組成。一是建堆的滲透函數,二是反復調用滲透函數
實現排序的函數。
堆排序是不穩定的。演算法時間復雜度O(nlog2n)。
*/
/*
功能:滲透建堆
輸入:數組名稱(也就是數組首地址)、參與建堆元素的個數、從第幾個元素開始
*/
void
sift(int
*x,
int
n,
int
s)
{
int
t,
k,
j;
t
=
*(x+s);
/*暫存開始元素*/
k
=
s;
/*開始元素下標*/
j
=
2*k
+
1;
/*右子樹元素下標*/
while
(j<n)
{
if
(j<n-1
&&
*(x+j)
<
*(x+j+1))/*判斷是否滿足堆的條件:滿足就繼續下一輪比較,否則調整。*/
{
j++;
}
if
(t<*(x+j))
/*調整*/
{
*(x+k)
=
*(x+j);
k
=
j;
/*調整後,開始元素也隨之調整*/
j
=
2*k
+
1;
}
else
/*沒有需要調整了,已經是個堆了,退出循環。*/
{
break;
}
}
*(x+k)
=
t;
/*開始元素放到它正確位置*/
}
/*
功能:堆排序
輸入:數組名稱(也就是數組首地址)、數組中元素個數
*/
void
heap_sort(int
*x,
int
n)
{
int
i,
k,
t;
int
*p;
for
(i=n/2-1;
i>=0;
i--)
{
sift(x,n,i);
/*初始建堆*/
}
for
(k=n-1;
k>=1;
k--)
{
t
=
*(x+0);
/*堆頂放到最後*/
*(x+0)
=
*(x+k);
*(x+k)
=
t;
sift(x,k,0);
/*剩下的數再建堆*/
}
}
void
main()
{
#define
MAX
4
int
*p,
i,
a[MAX];
/*錄入測試數據*/
p
=
a;
printf("Input
%d
number
for
sorting
:\n",MAX);
for
(i=0;
i<MAX;
i++)
{
scanf("%d",p++);
}
printf("\n");
/*測試選擇排序*/
p
=
a;
select_sort(p,MAX);
/**/
/*測試直接插入排序*/
/*
p
=
a;
insert_sort(p,MAX);
*/
/*測試冒泡排序*/
/*
p
=
a;
insert_sort(p,MAX);
*/
/*測試快速排序*/
/*
p
=
a;
quick_sort(p,0,MAX-1);
*/
/*測試堆排序*/
/*
p
=
a;
heap_sort(p,MAX);
*/
for
(p=a,
i=0;
i<MAX;
i++)
{
printf("%d
",*p++);
}
printf("\n");
system("pause");
}
7. 求一道C語言中關於計算器的程序代碼
這個已經有計算功能了,但記事本還沒有,給你急用。因為C沒有專門的字元串類型:有事再聯系405719864// C語言計算器.cpp : Defines the entry point for the console application.
//
/*注意!本程序用C編寫,在VC++6.0中運行通過,如果要有記事本功能,可能要用C++寫,因為C沒有專門的字元串類型*/
#include "stdafx.h"
#include <stdio.h>
#include <ctype.h>char c,operate;//c用於保存計算符號,operate表示當前輸入
double n,m;//記錄輸入的數字
bool check_c,check_n,check_m;//各個輸入的開關,當輸入發生改變時,可以有根據地操作double count(double n,char ch,double m)//根據不同的計算符號計算結果
{
if(ch == '+') return n+m;
if(ch == '-') return n-m;
if(ch == '*') return n*m;
if(ch == '/')
{
if(m != 0) return n/m;
else printf("0不能作除數!\n");
}
return n;
}int main()
{
n=m=0;
check_c=check_n=check_m=false;
printf("0\n"); printf("若要結束,請輸入任意字母!\n");
while(scanf("%c",&operate) != EOF)//表示輸入以EOF結束
{
if(operate == 0x0d || operate==' ' || operate=='\n') continue;//表示排除無效字元
if(operate == '#')
{
n=m=0;
check_c=check_n=check_m=false;
printf("0\n");
}
else
{
if(isdigit(operate))
{
if(!check_n) { n=n*10+operate-'0'; printf("%.0lf\n",n); }
else { m=m*10+operate-'0'; check_m=true; check_c=true; printf("%.0lf\n",m); }
}
else
{
if(operate=='+' || operate=='-' || operate=='*' || operate=='/' || operate=='=')//出現運算符號
{
if(operate != '=')//非「=」,則第一個數字輸入結束,並記錄當前計算符號
{
check_n=true;
if(!check_c) c=operate;
}
if(check_n && check_m)//兩個數字都有輸入,就進行計算
{
n=count(n,c,m);
printf("%.0lf\n",n);
if(operate != '=')//出現連續等號,連續計算,非等號,則記錄並從新輸入第二個數字
{
c=operate;
check_c=false;
m=0;
check_m=false;
}
}
else printf("%.0lf\n",n);
}
else
{
printf("輸入數據無效!\n");//表示以任意字母字元結束
break;
}
}
}
}
return 0;
}
8. c語言程序代碼
例如:輸入某年某月某日,判斷這一天是這一年的第幾天。
1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊
情況,閏年且輸入月份大於3時需考慮多加一天。
2.程序源代碼:
復制代碼 代碼如下:
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先計算某月以前月份的總天數*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
defaultrintf("data error");break;
}
sum=sum+day; /*再加上某天的天數*/
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是閏年且月份大於2,總天數應該加一天*/
sum++;
printf("It is the %dth day.",sum); }
9. 急求一個C語言程序代碼!!!
這也是以前我們在學校C語言課程實訓做的題目,當時在老師指導下一步步花了幾天工夫才弄好的呢。
你所建立的Input、query、sort、insert、delete
函數都是你所學習的各個知識點,題目靈活性還好,自己用自己的想法做,有不懂點的就問。完善好它自己對C語言的熟練使用有很大幫助。直接給你程序的只能幫你敷衍過老師。自己努力設計吧!
10. 用c語言編寫的代碼程序
c語言的源程序語法結構如下:
#include<stdio.h>//預處理語句
/* 自定義函數1*/
/* 自定義函數2*/
int main()
{
//main()主函數執行調用以上定義的函數的順序
return 0;//執行完畢 退出
}
示例如下:
#include <stdio.h>
int main()
{
printf("welcome to c language!!!\n");
return 0;
}