大一c語言
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基礎掌握了,後面還有數據結構要看呢😂