當前位置:首頁 » 編程語言 » c語言項目開發全程實錄源碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言項目開發全程實錄源碼

發布時間: 2022-05-01 17:13:10

Ⅰ 大一軟體c語言項目,求源代碼

第一種方法:
#include
int main()
{
int x,ge,shi,;
printf("請輸入一個三位數:\n");
scanf("%d",&x);
ge=x%10;
shi=x/10%10;
=x/100;
printf("這個三位數的逆序是:\n%d\n",ge*100+shi*10+);
return 0;
}
第二種方法:
#include
#include
int main()
{
char str[10];
printf("請輸入一個三位數:\n");
scanf("%s",str);
printf("這個三位數的逆序是:\n");
for(int i=strlen(str)-1;i>=0;i--)
printf("%c",str[i]);
printf("\n");
return 0;
}

Ⅱ C語言編程問題要完整的源代碼

#include<iostream.h>
#include<stdio.h>
#include<ctype.h>

struct ca {
char c;
ca *next;
};

void InitList(ca *L) {
cout<<"輸入一頁文字(以#結束): "<<endl;
while((L->c = getchar()) != '#') {
L->next = new ca;
L = L->next;
}
L->next = NULL;
}

void StrNo(ca *L) {
int n = 0;
char s[80], *q;
ca *p;
cout<<"輸入一字元串: ";
cin>>s;
while(L->next) {
for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') n++;
L = L->next;
}
cout<<"字元串 "<<s<<" 出現 "<<n<<" 次\n";
}

ca *DelStr(ca *L) {
ca *H = L;
char s[80], *q;
ca *p;
cout<<"輸入該子串: ";
cin>>s;
if (H->c == *s) {
for (p = H->next, q = s+1; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') H = p;
}
while(L->next) {
for (p = L->next, q = s; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') L->next = p;
else L = L->next;
}
return H;
}

void print1(ca *L) {
while(L->next) {
cout<<L->c;
L = L->next;
}
cout<<endl;
}

void print2(ca *L, int &p1, int &p2, int &p3, int &n) {
n = p1 = p2 = p3 = 0;
for( ; L->next; L = L->next, n++)
if(isalpha(L->c)) p1++;
else if(isdigit(L->c)) p2++;
else if(L->c == ' ') p3++;
else if(L->c == '\n') n--;
cout<<"\n全部字母數: "<<p1;
cout<<"\n數字個數: "<<p2;
cout<<"\n空格個數: "<<p3;
cout<<"\n文章總字數: "<<n<<endl;
}

void main() {
ca *L = new ca;
int p1, p2, p3, n, c;
InitList(L);
do {cout<<"\n0:退出\n"
"1:統計中英文字母和空格數以及整篇文章總字數\n"
"2:統計某一字元串在文章中出現次數\n"
"3:刪除某一子串\n"
"4:分行輸出用戶輸入的各行字元\n";
cin>>c;
switch(c) {
case 1:print2(L, p1, p2, p3, n);break;
case 2:StrNo(L);break;
case 3:DelStr(L);
case 4:print1(L);
}
}while(c);

Ⅲ c語言程序 課程設計 求大神給個源代碼

int Conversion(char num[20], int t, int n)
{
int i,ii,j,k,m,x,b[30],h[30],c;
double d,r;
ii=0;
p=0;
memset(out,0,20);
m=strlen(num);//求字元串的長度
x=m;
for(k=0,j=0;k<m;k++)//主要是分段,以小數點為界限,只轉換整數部分
{
if(num[k]=='.')
{
x=k;
break;
}
}

for(j=x-1;j>=0;j--)
{
if(num[j]=='-') break; //符號的處理
if(num[j]=='A') r=10;
else if(num[j]=='B')
r=11;
else if(num[j]=='C')
r=12;
else if(num[j]=='D')
r=13;
else if(num[j]=='E')
r=14;
else if(num[j]=='F')
r=15;
else
r=num[j]-'0';//將字元轉換成數字
p=p+r*(pow ((double)t,(double)(x-j-1)));//計算結果
}

if(num[x]=='.')
{
for(j=x+1;j<m;j++)
{
if(num[j]=='A') r=10;
else if(num[j]=='B')
r=11;
else if(num[j]=='C')
r=12;
else if(num[j]=='D')
r=13;
else if(num[j]=='E')
r=14;
else if(num[j]=='F')
r=15;
else
r=num[j]-'0';//將字元轉換成數字
p=p+r*(pow ((double)t, (double)(x-j)));
}
}
//g_print("%f",p);
if(n==10)//如果要轉換成十進制
{
if(num[0]=='-')
{
p=-p;
}
return 0;
}

else //如果要轉換成其他進制
{
k=(int)p;
i=0;
while(k)//判定需要轉換的數是否變為0
{
h[i++]=k%n;//取余,進行進制轉換,但是順序與正確值相反
k/=n;//轉換一位之後進行相應的變化
}
c=0;
if(p!=(int)p)//選擇性計算,如果是整數就不用進行這一步的計算了
{
d=p-(int)p;//取小數部分
while(d!=0)
{
b[c]=(int)(d*n);//演算法為×N取整
d=d*n-b[c];
c++;
if(c>=10)
break;//主要是控制小數後面萬一出現無限小數的時候好跳出循環以免出現死循環
}
}
if(num[0]=='-')
{
out[0]='-';
ii++;
}
for(j=i-1;j>=0;j--,ii++)//反序輸出,大於10的數字進行相應的變化
{
if(h[j]==10) out[ii]='A';
else if(h[j]==11) out[ii]='B';
else if(h[j]==12) out[ii]='C';
else if(h[j]==13) out[ii]='D';
else if(h[j]==14) out[ii]='E';
else if(h[j]==15) out[ii]='F';
else if(h[j]==9) out[ii]='9';
else if(h[j]==8) out[ii]='8';
else if(h[j]==7) out[ii]='7';
else if(h[j]==6) out[ii]='6';
else if(h[j]==5) out[ii]='5';
else if(h[j]==4) out[ii]='4';
else if(h[j]==3) out[ii]='3';
else if(h[j]==2) out[ii]='2';
else if(h[j]==1) out[ii]='1';
else out[ii]='0';
}
if(p!=(int)p)//選擇性輸出,這樣可以節約輸出時間和程序的運行時間
{
out[ii++]='.';
for(j=0;j<c;j++)//正序輸出
{
if(b[j]==10) out[ii]='A';
else if(b[j]==11) out[ii]='B';
else if(b[j]==12) out[ii]='C';
else if(b[j]==13) out[ii]='D';
else if(b[j]==14) out[ii]='E';
else if(b[j]==15) out[ii]='F';
else if(b[j]==9) out[ii]='9';
else if(b[j]==8) out[ii]='8';
else if(b[j]==7) out[ii]='7';
else if(b[j]==6) out[ii]='6';
else if(b[j]==5) out[ii]='5';
else if(b[j]==4) out[ii]='4';
else if(b[j]==3) out[ii]='3';
else if(b[j]==2) out[ii]='2';
else if(b[j]==1) out[ii]='1';
else out[ii]='0';
ii++;
}
}
//puts(out);
return 0;
}
}

參考 http://www.cnblogs.com/kongtiao斜杠archive/2012/04/20/2459523.html

Ⅳ 用C語言編程,要完整的源代碼;謝謝!

/*萬年歷*/
#include<stdio.h>
#include<stdlib.h>

int isLeap(int year) //判斷閏年
{
if(year%4!=0)
{
return 0;
}
else if(year%100!=0)
{
return 1;
}
else if(year%400!=0)
{
return 0;
}
else
{
return 1;
}
}

int GetMonthDays(int year,int month)//判斷天數
{
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;break;
case 4:case 6:case 9:case 11:return 30;break;
case 2:if(isLeap(year)==1)
{
return 29;
}
else
{
return 28;
};break;
default:return 0;
}
}

int GetWeekDay(int year,int month,int day)//判斷days天是星期幾
{
int days;//總天數
int i=1;//計月份
int weekday;
days=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100;
while(i<month)
{
days+=GetMonthDays(year,i);
i++;
}
days+=day;
weekday=days%7;
return weekday;
}

void PrintMonthCalender(int startDay,int days)//輸出日歷
{
int m=0;//計數空
int n=1;//計日期
while(m<startDay)
{
printf(" ");
m++;
}
while(n<=days)
{
printf("%d ",n);
if((n+m)%7==0)
{
printf("\n");
}
n++;
}
}

main()
{
int year,month,startDay,days;
printf("Please input year and month:");
scanf("%d %d",&year,&month);

startDay=GetWeekDay(year,month,1)%7;
days=GetMonthDays(year,month);//取得起始天和天數

printf("The result is:\n %d-%d\nSun. Mon. Tue. Wed. Thu. Fri. Sat.\n",year,month);
PrintMonthCalender(startDay,days);
system("pause");
return 0;
}

哇咔咔。。終於找到了,我們上個月的作業,哦哦呵呵。。。給我分吧

Ⅳ 開發一個c語言程序要經過哪四個步驟

開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。

C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。

1、預處理:輸入源程序並保存(.C文件)。

2、編譯:將源程序翻譯為目標文件(.OBJ文件)。

3、鏈接:將目標文件生成可執行文件( .EXE文件)。

4、運行:執行.EXE文件,得到運行結果。

(5)c語言項目開發全程實錄源碼擴展閱讀:

C語言代碼變為程序的幾個階段:

1、首先是源代碼文件test.c和相關的頭文件,如stdio.h等被預處理器cpp預處理成一個.i文件。經過預編譯後的.i文件不包含任何宏定義,因為所有的宏已經被展開,並且包含的文件也已經被插入到.i文件中。

2、編譯過程就是把預處理完的文件進行一系列的詞法分析、語法分析、語義分析以及優化後產生相應的匯編代碼文件,這個過程往往是我們所說的整個程序的構建的核心部分,也是最復雜的部分之一。

3、匯編器不直接輸出可執行文件而是輸出一個目標文件,匯編器可以調用ld產生一個能夠運行的可執行程序。即需要將一大堆文件鏈接起來才可以得到「a.out」,即最終的可執行文件。

4、在鏈接過程中,對其他定義在目標文件中的函數調用的指令需要被重新調整,對實用其他定義在其他目標文件的變數來說,也存在同樣問題。

參考資料來源:網路-c語言

Ⅵ 跪求C語言項目實例及源碼

給你一個輸出乘法表和除法表的代碼。
#include<stdio.h>
#include<stdlib.h>
void main()
{

int i,j,m,cs;
printf("we are going to show your table no more than 10\n,for sum table press 1,for mulity talbe press 2\n\n");
scanf("%d",&cs);
switch(cs)
{
case 1:
for(i=1;i<10;i++)
{printf("\n");
for(j=1;j<10-i;j++)
{
m=i+j;
printf("%d+%d=%d\t",i,j,m);
}
}
break;
case 2:
printf("M\t");
for(i=1;i<10;i++)
printf("%d\t",i);
for(i=1;i<10;i++)
{printf("\n%d\t",i);
for(j=1;j<10;j++)
{
m=i*j;
printf("%d*%d=%d\t",i,j,m);
}
}
break;
default: printf("You are a fool,press only 1 or 2");
}
getchar();
printf("Isn't it a great thing?");
getchar();
}

再給你個貪吃蛇源代碼。絕對可以通過,不過環境是TC
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
int gamespeed=50000;/*游戲速度自己調整*/
struct Food
{
int x;/*食物的橫坐標*/
int y;/*食物的縱坐標*/
int yes;/*判斷是否要出現食物的變數*/
}food;/*食物的結構體*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的節數*/
int direction;/*蛇移動方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;
void Init(void);/*圖形驅動*/
void Close(void);/*圖形結束*/
void DrawK(void);/*開始畫面*/
void GameOver(void);/*結束游戲*/
void GamePlay(void);/*玩游戲具體過程*/
void PrScore(void);/*輸出成績*/
/*主函數*/
void main()
{
Init();/*圖形驅動*/
DrawK();/*開始畫面*/
GamePlay();/*玩游戲具體過程*/
Close();/*圖形結束*/
system("pause");
}
/*圖形驅動*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"d:\\tc");
cleardevice();
}
/*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍牆*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/
for(i=50;i<=600;i+=10)/*畫圍牆*/
{
rectangle(i,40,i+10,49); /*上邊*/
rectangle(i,451,i+10,460);/*下邊*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*左邊*/
rectangle(601,i,610,i+10);/*右邊*/
}
}
/*玩游戲具體過程*/
void GamePlay(void)
{
randomize();/*隨機數發生器*/
food.yes=1;/*1表示需要出現新食物,0表示已經存在食物*/
snake.life=0;/*活著*/
snake.direction=1;/*方嚮往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇頭*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*節數*/
PrScore();/*輸出得分*/
while(1)/*可以重復玩游戲,壓ESC鍵結束*/
{
while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/
{
if(food.yes==1)/*需要出現新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物隨機出現後必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*畫面上有食物了*/
}
if(food.yes==0)/*畫面上有食物了就要顯示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每個環節往前移動,也就是貪吃蛇的關鍵演算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2: snake.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)/*從蛇的第四節開始判斷是否撞到自己了,因為蛇頭為兩節,第三節不可能拐過來*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*顯示失敗*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*蛇是否撞到牆壁*/
{
GameOver();/*本次游戲結束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上兩種判斷以後,如果蛇死就跳出內循環,重新開始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以後*/
{
setcolor(0);/*把畫面上的食物東西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一節先放在看不見的位置,下次循環就取前一節的位置*/
snake.node++;/*蛇的身體長一節*/
food.yes=1;/*畫面上需要出現新的食物*/
score+=10;
PrScore();/*輸出新得分*/
}
setcolor(4);/*畫出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最後一節*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循環*/
break;
key=bioskey(0);/*接收按鍵*/
if(key==ESC)/*按ESC鍵退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判斷是否往相反的方向移動*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戲結束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*輸出成績*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*圖形結束*/
void Close(void)
{
getch();
closegraph();
}

Ⅶ 求C語言寫程序,求源代碼

寫一個簡單程序給你參考。
用 C 寫的第一個一個窗口程序

作為編程的開始,我們還是以一個Hello World來開始我們的學習之旅。代碼如下:

#include <stdio.h>

void main()
{
printf("Hello World!");
}

這是一個再簡單不過的C程序了,只要有點C語言的知識就能夠懂的,不過這里估計還有些人,到現在還不知道#include

<stdio.h>中的頭文件stdio.h到底是什麼東西,我就來說下了,stdio.h是一個文本文件,存在於磁碟上的,已VC為例
由於上不了圖就這樣吧。

stdio.h中定義printf函數,我在引用了stdio.h頭文件後就可以在程序中調用printf函數了。

上面是在命令行中顯示一個「Hello World!」,沒什麼意思,下面我寫一個窗口程序,顯示個Hello World!
#include <windows.h>
void main()
{
MessageBox(NULL,"Hello World!","我的第一個窗口程序",MB_OK);
}

彈出的是一個對話框,上面有Hello World,還有一個標題和一個「確定」按鈕。
當然你會說這對話框也算個窗口嗎?這里肯定的告訴你:是的,對話框是窗口程序的一個子集。你可能還會這樣問,這樣一個簡單的窗口有啥用呢,其實這樣的窗口非常有用,我們在操作計算機的時候,會出現一些警告或提示的對話框,都是基本是這種方法寫出來的。就算是這個很簡單,學習本來不就是有易向難,有淺顯深奧去的過程嗎。
整個效果幾乎就是靠一個函數MessageBox的功勞。這里也先不介紹這個函數了,說些其他的

Ⅷ 在哪裡可以找到C語言標准庫的實現源代碼

Linux下的glic庫的源碼鏈接:
http://ftp.gnu.org/gnu/glibc/,你可以下載最新版本的glibc-2.24.tar.gz這個壓縮文件,在Windows系統下直接用WinRAR解壓即可,如果在Linux系統下用命令行解壓的話,命令如下:tar -xzvf glibc-2.24.tar.gz。

Ⅸ 求C語言課程設計源代碼 急~!!

#include "stdio.h"
#define MAX 100 /*定義輸入數據的最大長度*/

void countmax(int a[MAX],int N){ /*計算最值的函數*/
int minn=a[0],maxx=a[0]; /*minn表最小值,maxx表最大值*/
for(int i=0;i<=N;i++){ /*N是實際輸入數組的長度*/
if(a[i]<minn) /*循環求最值*/
minn=a[i];
else
if(a[i]>maxx)
maxx=a[i];
}
printf("\n最小值:%d\n最大值:%d\n",minn,maxx);
printf("\n————————————————————————\n");
}

void found(int a[MAX],int N){ /*查找函數*/
int Flag = 1,x; /*Flag用來標記是否查找成功,0表成功,1表未成功*/
printf("請輸入你要查找的數: ");
scanf("%d",&x); /*x是待查找的數*/
for(int i=0;i<=N;i++){
if(a[i]==x){
printf("所找的數在數組中的位置是第 %d 位\n",i+1);
Flag = 0;
break;
}
}
if(Flag == 1)
printf("Not Found!\n");
printf("————————————————————————\n");
}

void deletedata(int a[MAX],int N){ /*刪除操作函數*/
int Flag = 1,x,pos; /*Flag用來標記是否刪除成功,0表成功,1表未成功,pos用來記錄刪除的位置*/
printf("請輸入你要刪除的數: ");
scanf("%d",&x);
for(int i = 0;i <= N;i++){ /*在數組中循環查找所要刪除的數*/
if(a[i]==x){
for(int j=i;j<=N;j++) /*刪除位置後的數全部向前移動一位*/
a[j]=a[j+1];
Flag = 0;
N--; /*數組長度減1*/
pos = i; /*記錄刪除位置*/
break;
}
}
if(Flag==1)
printf("Not Found!");
else{
printf("刪除成功!\n");
printf("所刪除的數在數組中的位置是第 %d 位\n",pos+1);
}
printf("刪除操作後的數據為:\n");
for(int j=0;j<=N;j++)
printf("%d ",a[j]);
printf("\n————————————————————————\n");
}

void sumdata(int a[MAX],int N){ /*求奇數和偶數函數*/
int SUM1=0,SUM2=0,N1=0,N2=0;
/*SUM1表示偶數之和,N1表偶數個數
**SUM2表示奇數之和,N2表奇數個數
*/
for(int i=0;i<=N;i++){
if(a[i]%2==0){
N1++;
SUM1 = SUM1 + a[i];
}
else{
N2++;
SUM2 = SUM2 + a[i];
}

}
printf("數據中的偶數個數為: %d 個,平均值為: %d\n",N1,SUM1/N1);
printf("數據中的奇數個數為: %d 個,平均值為: %d\n",N2,SUM2/N2);
printf("————————————————————————\n");
}

int main(){

int i=0,k,N,a[MAX],data;
/*k用來標記所選擇的操作,data表示輸入的數據,a數組用來存儲輸入的數據*/
printf("請輸入數據:\n");
scanf("%d",&data);
while(data!=0){
a[i]=data;
scanf("%d",&data);
N=i++;
}
printf("\n您輸入了%d個數據,如下所示:\n",N+1);
for(i=0;i<=N;i++)
printf("%d ",a[i]);

printf("\n————————————————————————");
printf("\n\n請選擇下面的一個項目:\n");
printf("1、求最值\n2、查找\n3、刪除\n4、統計及平均\n5、退出\n");
printf("————————————————————————\n");
scanf("%d",&k);
switch(k){
case 1:
countmax(a,N);
break;
case 2:
found(a,N);
break;
case 3:
deletedata(a,N);
break;
case 4:
sumdata(a,N);
break;
case 5:
break;
default:
break;
}
return 0;
}