當前位置:首頁 » 編程語言 » 大一c語言

大一c語言

發布時間: 2022-12-16 11:01:38

1. 大一c語言,求解,謝謝

#include<stdio.h>
intmain()
{
intn=1,t,max,min,s=0;
scanf("%d",&max);
s=min=max;
while(~scanf("%d",&t))
{
n++;
s+=t;
if(min>t)min=t;
if(max<t)max=t;
}
printf("%d%d%.3f ",min,max,s/(float)n);
return0;
}

2. 大一計算機學生如何學好c語言

隨著科技的發達時代的進步,現在計算機已經成為了一項普及的學科,可以說任何一項科技的發展,現在都離不開計算機的幫助。比如我們學地質的方面,一些地質圖的繪制以及等高線了測量,都需要計算機協助。

在有些工業化的程序設計方面,計算機更是起到了不可忽略的作用。我在大學的時候,大一學習的計算機語言是vb,但是慢慢我發現vb還只是能解決初級的問題,如果想要更高深的還是要學好c語言。

於是我是自己學習的c語言,而且在學習過程中雖然有很多的困難,但是只要你能夠掌握最基本的核心演算法,都能夠將它們迎刃而解。

首先在學c語言的時候,一定要將各種演算法都記住,如果不行的話,把它們寫在本子上,自己默寫幾遍。要這些演算法公式在自己腦海里滾瓜爛熟,在使用過程中才不會出現差錯。

記住演算法是第一步,其次還要學會怎樣去使用,其實就像套用公式一樣,掌握了公式的基本內容,就可以把所需要的東西往公式裡面套。

在拿到一個c語言的題的時候,首先要明白他要做什麼。做好最基本的分析,目前手中有哪些數據,最終我要獲得什麼樣的結果,將頭和尾首先想好。然後再去填充中間的過程,在填充過程的時候慢慢摸索到底是用哪一個演算法比較合適,剛開始做題的時候肯定要套有好幾個演算法,但是慢慢熟練了就能很順利的找到合適的演算法。

c語言在應用方面大多數是要編程軟體,所以也要考慮到軟體的實用性。考試一般都是讓填空題或者是改錯題,其實歸根結底就是為了讓你掌握整個演算法的運行過程。

現在正處在大一的計算機起步階段,所以不用太著急的去快速完成,只要現在能掌握基礎的運用和軟體的編程,慢慢熟練起來就可以了。如果足夠熟悉之後,可以報考國家級計算機考試,這個等級考試是比較權威的,而且獲得證書對今後的發展也有好處。

3. 大一C語言編程題

車票根據題意兩兩站點連線生成,金額和數量分別用隨機數。

數據存儲:站點,車票,用戶分別為3個結構體,用於對應資料庫

購買流程:檢查輸入數值有效性->檢查車票庫存->購買成功同步修改用戶購買流水及車票庫存。(這里題目需求不明確,沒有指明用戶購買方式),我的代碼允許一個用戶同時購買多種票,每種票可分批購買多張。購買流水記錄自動增加和更新。

退票流程:檢查輸入和用戶購買記錄,同步更新用戶及車票信息。

刪除流程:選擇刪除沒有被用戶購買的票(函數檢查所有用戶,雖然本題只要一個用戶,實際傳參用戶數組首地址)。

PS: 這個題目涉及到增刪改,用鏈表來寫更好,但考慮你學習范圍,沒有使用鏈表而是動態數組,動態數組刪除,考慮內存佔用,不僅要需循環移位還要釋放多餘地址。

另外整體程序,異常的處理我只是單純返回0或者1或者-1區分基本的成功與失敗。你如想對個別異常進行特殊處理,自行修改返回值,接收判斷。

下面是代碼:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include <windows.h>

#include <conio.h>

#define MS 5//最大站點數

typedef struct station

{

char sid[10];

char sName[20];

}STN;

typedef struct ticket

{

int tid;//票編號

STN *ssP;//起始站

STN *tsP;//終點站

int value;//票價

int number;//數量

}TKT;

typedef struct userInfo//用戶

{

char uid[20];//身份證號

int cnt;//購買的票種類數量

int *btids;//購買的所有票id數組

int *btNum;//購買的所有票數量數組

}UIFO;

int init(STN stns[MS],TKT **tkts);//初始化車站、票數據

int disAllTickets(TKT *tkts);

int buyTicket(UIFO *uifo,TKT *tkts);//異常返回0

int reTicket(UIFO *uifo,TKT *tkts);//異常返回0

int showMenu(UIFO *uifo,TKT *tkts);

int delIntByIndex(int *nums,int len,int index);//通過下標index刪除動態整型數組nums對應元素,並釋放多餘地址,返回刪除後的數組長度,異常返回-1

int delTkts(UIFO *uifos,int len,TKT *tkts);//刪除指定票(檢查用戶組,只要有一個用戶購買,無法刪除)

int cnt;//票種類數量

int main()

{


STN stns[MS];

TKT *tkts=NULL;

UIFO uifo={"321002199902050614",0,NULL,NULL};

srand(time(NULL));

cnt=init(stns,&tkts);

printf("共生成%d組票(每組往返兩種票,共%d種票) ",cnt/2,cnt);

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

showMenu(&uifo,tkts);

return 0;

}

int showMenu(UIFO *uifo,TKT *tkts)

{

int n=5;

printf("(1) Buy ticket ");

printf("(2) Refund ticket ");

printf("(3) Remove ticket ");

printf("(4) Display all tickets ");

printf("(0) Exit ");

while(n<0 || n>4)

scanf("%d",&n);

switch(n)

{

case 0: return 0;

case 1: if(!buyTicket(uifo,tkts)) return 0;break;

case 2: if(!reTicket(uifo,tkts)) return 0;break;

case 3: if(!delTkts(uifo,1,tkts)) return 0;break;

//這里刪除功能,用戶多名,要傳數組首地址,由於演示只有一個用戶(len=對應用戶數),所以只傳該用戶地址(len=1)

case 4: disAllTickets(tkts);break;

}

showMenu(uifo,tkts);

return 1;

}

int disAllTickets(TKT *tkts)

{

int i;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int delIntByIndex(int *nums,int len,int index)

{

int i,*temp=NULL;

if(index>len-1) return -1;

for(i=index;i<len-1;i++)

nums[i]=nums[i+1];

len--;

if(len)

{

temp=(int *)realloc(nums,sizeof(int)*len);

if(!temp) return -1;

nums=temp;

}

else

free(nums);

return len;

}

int reTicket(UIFO *uifo,TKT *tkts)

{

int i,j,tid,n,index,len,flag=0;

printf("當前用戶購買記錄: ");

for(i=0;i<uifo->cnt;i++)

{

for(j=0;j<cnt;j++)

if(tkts[j].tid==uifo->btids[i]) index=j;

printf("--車票編號:%d,起末站:%s-%s,購買票數:%d ",uifo->btids[i],tkts[index].ssP->sName,tkts[index].tsP->sName,uifo->btNum[i]);

}

printf("請輸入要退票的車票id及票數:"),scanf("%d%d",&tid,&n);

for(i=0;i<uifo->cnt;i++)

if(uifo->btids[i]==tid && uifo->btNum[i]>=n)

{

for(j=0;j<cnt;j++)

if(tkts[j].tid==uifo->btids[i]) tkts[j].number+=n;//同步修改對應車票剩餘票數

uifo->btNum[i]-=n;//用戶購買記錄修改

if(uifo->btNum[i]==0)//某種車票全部退完,刪除該條記錄

{

len=delIntByIndex(uifo->btNum,uifo->cnt,i);

if(len==-1) return 0;

len=delIntByIndex(uifo->btids,uifo->cnt,i);

if(len==-1) return 0;

uifo->cnt=len;

}

flag=1;

break;

}

if(flag)

printf("退票成功! ");

else

printf("無此購買記錄或輸入數量不符合 ");

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int buyTicket(UIFO *uifo,TKT *tkts)

{

char spn[20],tpn[20];

int i,n=-1,index=-1,*temp=NULL;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("請輸入始發站站名和終點站站名:"),scanf("%s%s",spn,tpn);

for(i=0;i<cnt;i++)

if(strcmp(tkts[i].ssP->sName,spn)==0 && strcmp(tkts[i].tsP->sName,tpn)==0)

{

printf("車票%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

index=i;

break;

}

if(index==-1)

printf("購買失敗!無此路程的車票 ");

else

{

while(n<=0)

{

printf("請輸入要購買的數量(大於0):"),scanf("%d",&n);

if(tkts[index].number<n)

printf("錯誤:車票數量不足或者輸入數值超出范圍!請重新輸入! "),n=-1;

}

for(i=0;i<uifo->cnt;i++)//檢查用戶購買記錄,重復票累加購買數量,不同票新增記錄

{

if(uifo->btids[i]==tkts[index].tid)

{

printf("該票已購買了%d張,現再次購買%d張,累計購買了%d張 ",uifo->btNum[i],n,uifo->btNum[i]+n);

uifo->btNum[i]+=n;

tkts[index].number-=n;

break;

}

}

if(i==uifo->cnt)//未檢查到重復記錄,新增

{

if(!uifo->btids)

{

uifo->btids=(int *)malloc(sizeof(int));

if(!uifo->btids) return 0;

uifo->btNum=(int *)malloc(sizeof(int));

if(!uifo->btNum) return 0;

}

else

{

temp=(int *)realloc(uifo->btids,sizeof(int)*(uifo->cnt+1));

if(!temp) return 0;

uifo->btids=temp;

temp=(int *)realloc(uifo->btNum,sizeof(int)*(uifo->cnt+1));

if(!temp) return 0;

uifo->btNum=temp;

}

uifo->btids[uifo->cnt]=tkts[index].tid;

printf("該票購買了%d張 ",(uifo->btNum[uifo->cnt]=n));

tkts[index].number-=n;

uifo->cnt++;

printf("用戶購買記錄: ");

for(i=0;i<uifo->cnt;i++)

printf("--車票編號:%d,購買票數:%d ",uifo->btids[i],uifo->btNum[i]);

}

printf("本次成功購買了%s-%s的票%d張! ",tkts[index].ssP->sName,tkts[index].tsP->sName,n);

}

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int delTkts(UIFO *uifos,int len,TKT *tkts)//len:所有購買的用戶數量

{

int i,j,k,tid,flag=0,index;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("請輸入要刪除的車票編號:"),scanf("%d",&tid);

for(i=0;i<cnt;i++)

if(tid==tkts[i].tid)

{

index=i;

flag=1;

for(j=0;j<len;j++)//檢查所有用戶購買記錄

{

for(k=0;k<uifos[j].cnt;k++)

if(uifos[j].btids[k]==tid)

{

flag=0;

printf("該票已被用戶購買,無法刪除,需先完成退票! ");

break;

}

if(!flag)

break;

}

break;

}

if(!flag) printf(" 刪除失敗,輸入數值超出范圍或不可刪除! ");

else

{

cnt--;

if(cnt==0)

{

free(tkts[index].ssP);

free(tkts[index].tsP);

free(&tkts[index]);

}

else

{

free(tkts[index].ssP);

free(tkts[index].tsP);

for(i=index;i<cnt;i++)

tkts[i]=tkts[i+1];

tkts[cnt].ssP=NULL;

tkts[cnt].tsP=NULL;

free(&tkts[cnt]);

}

printf(" 刪除成功! ");

}

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int init(STN stns[MS],TKT **tkts)

{

TKT *tTemp=NULL;

int i,j,n,v,cnt=2;

static int id=1;

printf("生成站點: ");

for(i=0;i<MS;i++,id++)

{

sprintf(stns[i].sid,"車站%03d",id);

sprintf(stns[i].sName,"SN%03d",id);

printf("----站點名:%s。站點ID:%s ",stns[i].sid,stns[i].sName);

}

printf("計算所有站點連線,生成車票(票是往返,所以一次生成往返兩組票): ");

for(i=0;i<MS;i++)

for(j=i+1;j<MS;j++)

{

if(!(*tkts))

{

*tkts=(TKT *)malloc(sizeof(TKT)*2);

if(!(*tkts)) return -1;

}

else

{

tTemp=(TKT *)realloc((*tkts),sizeof(TKT)*cnt);

if(!tTemp) return -1;

*tkts=tTemp;

}

n=rand()%4+2;//每種票隨機2~5張(保證總數大於20)

v=rand()%201+50;//隨機生成票價50~250

(*tkts)[cnt-1].tid=cnt;

(*tkts)[cnt-1].ssP=&stns[i];

(*tkts)[cnt-1].tsP=&stns[j];

(*tkts)[cnt-1].value=v;

(*tkts)[cnt-1].number=n;

(*tkts)[cnt-2].tid=cnt-1;

(*tkts)[cnt-2].ssP=&stns[j];

(*tkts)[cnt-2].tsP=&stns[i];

(*tkts)[cnt-2].value=v;

(*tkts)[cnt-2].number=n;

printf("----%s和%s的之間往返票各生成%d張,票價為%d(隨機) ",stns[i].sName,stns[j].sName,n,v);

cnt+=2;

}

return cnt-2;

}

//答題不易,如採納的,請不要無故刪除問題。

4. 大一c語言學到了什麼

c課程僅僅是帶你入門,涉及的不過是基礎語法
建議你先鞏固基礎,學習c語言庫函數。了解各個庫函數的實現方法,學習自己改寫功能類似的庫函數,畢竟庫函數是c前輩們寫的精華,可取之處很多
另外還要學習數據結構 演算法等課程,以後用c寫小課題,指針的使用也很關鍵。
學習的過程中多動手調試程序,一階段後自己挑個小課題來做,寫c就是不斷調試和修改的過程

5. 大一期末C語言考試的重點是什麼

選擇,循環,函數,數組,指針,文件都要,其中函數(自定義函數),指針是重點,要掌握指向不同對象的指針,比如文件指針,指向函數的等。順便把文件的也看看

6. 大一C語言計算機作業

c語言是國際上廣泛流行的、很有發展前途的計算機高級語言。它適合作為系統描述語言,即可用來編寫系統軟體,也可用來編寫應用軟體。
早期的操作系統等系統軟體主要是用匯編語言編寫的(包括
unix操作系統在內)。由於匯編語言依賴於計算機硬體,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高級語言,但一般的高級語言難以實現匯編語言的某些功能(匯編語言可以直接對硬體進行操作),例如:對內存地址的操作、位操作等)。人們設想能否找到一種既具有一般高級語言特性,又具有低級語言特性的語言,集它們的優點於一身。於是,c語言就在這種情況下應運而生了。
c語言是在b語言的基礎上發展起來的,它的根源可以追溯到algol
60。
1960年出現的algol
60是一種面向問題的高級語言,它離硬體比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了cpl(combinedprogram-
ming
language)語言。cpl語言在algol
60的基礎上接近了硬體一些,但規模比較大,難以實現。1967年英國劍橋大學的matin
richards對
cpl語言作了簡化,推出了bcpl(basic
combined
programming
language)語言。1970年美國貝爾實驗室的
ken
thompson以
bcpl語言為基礎,又作了進一步簡化,設計出了很簡單的而且很接近硬體的
b語言(

bcpl的第一個字母),並用
b語言寫第一個unix操作系統,在pdp-7上實現。
1971年在pdp-11/20上實現了b語言,並寫了unix操作系統。但b語言過於簡單,功能有限。1972年至
1973年間,貝爾實驗室的
d.m.ritchie在b語言的基礎上設計出了c語言(取
bcpl的第二個字母)。c語言既保持了bcpl和b語言的優點(精練、接近硬體),又克服了它們的缺點(過於簡單、數據無類型等)。
最初的c語言只是為描述和實現unix操作系統提供一種工作語言而設計的。1973年,k.thom-
pson和d.m.ritchie兩人合作把unix的90%以上用
c改寫(unix第5版。原來的
unix操作系統是1969年由美國的貝爾實驗室的
k.thompson和d.m.ritchie開發成功的,是用匯編語言寫的)。

7. 大一新生學c語言用什麼軟體

大一新生學c語言用vscode,vim等等。學c語言,關鍵是親自動手。建議你從網上找一個有現成教學代碼的教學資料或網站,按上面的要求在本地計算機上搭建對應的編譯環境,當然也可以直接用網上的c代碼編譯器。通過下載課程的教學c代碼,自己編輯修改,再編譯運行,學起來很快。

c語言內容

C語言是一種計算機編程語言,簡單它是人類與計算機交互的語言,用於告訴計算機讓它做什麼。C語言是一種高級語言,所謂高級是指它可以被人類輕松的閱讀。這是相對於機器語言與匯編語言而言的。C語言程序需要經過處理後轉換成機器語言才可以工作。

8. 我是大一的!怎麼在一星期內學C語言!!重點是不掛科就行了!!!求高手指點!

根據我當初學習 C 語言編程的親身體會就是:如果你想在短時間內快速掌握 C 語言編程,首先必須要在自己的電腦上安裝一個 C 語言編程的集成編程環境!然後再購買一本比較適合初學者的 C 語言教材。我當時購買的是:譚浩強編寫的《C 語言程序設計》一書,我個人感覺該教材比較通俗易懂,適合初學者學習 C 語言。
另外, 就是最、最重要的一點必須要做到:一邊用自己的頭腦理解教材上所講的 C 語言理論知識,但是同時還必須要親自上機編寫、並且調試教材中的所有例題程序、以及每一章後面的所有練習題。直到把所有的例題程序、以及練習題程序都調試通過,能夠運行出正確的結果為止。而絕對不能夠只是閱讀教材上的 源程序、觀看視頻等,如果僅僅是這樣的話,那麼在一星期之內肯定是無法掌握 C 語言編程技能的。
最後,再需要說明一點的就是:由於你在掌握 C 語言編程的時間上有時間要求(一星期),故你在這一星期之內,必須全力以赴地上機編程調試 C 語言,即:把你的所有空閑時間都用來學習 C 語言上機編程調試!!!只有這樣,你才能夠做到在一星期之內掌握 C 語言的編程。

9. 大一的時候C語言怎麼學

怎麼學?用心學,好好學。
不是人到了教室糊弄一堂課就叫學了。不是交了作業互相吵吵答案就叫學了。也別奔著過計算機二級三級這種垃圾證書去。
如果是新人,最開始接觸編程肯定一臉懵逼。
學語言,不管是c語言還是d語言,是學編程語言還是說人話的語言,不管是口語還是書面語,英語還是漢語,都有知道基本要素。
學英語你要有單詞量,c語言你要知道關鍵詞,
學英語你要會語法,才能組織句子,c語言也是,你要會語法,才能會寫出邏輯表達你的意思。編程語言和自然語言沒啥區別,不過就是寫給編譯器看的。
基礎語法會了,也能表達句子了,是不是該解決實際問題了?跟你寫作文一樣的,一步步來就是嘍。
怎麼體現你學會了基礎呢?輸入輸出交互最基本的肯定要會吧?文件讀寫操作要會吧?字元串處理要會吧?簡單的結構體和指針能掌握了沒?不能只會if
else。這些基本的會了,最簡單的排序演算法也得會吧?
c基礎掌握了,後面還有數據結構要看呢😂

熱點內容
雲伺服器歷史演進順序 發布:2025-01-24 09:36:58 瀏覽:739
研究ftp的意義 發布:2025-01-24 09:31:22 瀏覽:253
聯想安卓升級包在哪裡下載 發布:2025-01-24 09:15:20 瀏覽:591
認票的演算法 發布:2025-01-24 09:00:45 瀏覽:927
android調用列印機 發布:2025-01-24 09:00:32 瀏覽:808
網易版我的世界伺服器如何 發布:2025-01-24 08:55:47 瀏覽:968
編譯器鼻祖 發布:2025-01-24 08:54:11 瀏覽:844
如何用安卓編譯項目 發布:2025-01-24 08:30:46 瀏覽:863
計算機同時輸出和存儲設備的區別 發布:2025-01-24 08:29:21 瀏覽:581
食物語上傳 發布:2025-01-24 07:58:44 瀏覽:754