當前位置:首頁 » 編程語言 » 最容易懂的c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

最容易懂的c語言

發布時間: 2023-08-26 05:40:51

① C語言基礎編程問題,要簡潔易懂的程序

函數fun的原理是傳字元串指針和字元串長度兩個參數,用for循環遍歷字元串,

當遇到數字字元時,就把數字字元和其後面的字元向後移動1個字元,

在原來數字字元的位置寫一個'$',當前字元位置i加1,字元串長度n加1.

完整的C語言程序如下

#include<stdio.h>

#include<string.h>

void fun(char* s,int n){

int i,j;

for(i=0;s[i]!='';i++){

if('0'<=s[i]&&s[i]<='9'){

for(j=n;j>=i;j--){

s[j+1]=s[j];

}

s[i]='$';

i++;

n++;

}

}

}

int main(){

char a[80];

scanf("%s",a);

fun(a,strlen(a));

printf("%s ",a);

return 0;

}

② 最簡單的編程語言是什麼

你是不是想像自己學會了編程,開了家公司,有很多的錢?可當你開始自學編程,卻因為講師對你講聽不懂的術語給忽悠了,從而放棄了學編程?其實,編程很有趣。下面小編——蝦哥——為你介紹哪幾種編程語言最容易。
方法/步驟
1/4分步閱讀
排名第一:Visual basic

visual的意思是「視覺」,basic是一種最適合初學者的編程語言。顧名思義。它是可以在窗口裡拖組件的Basic編程語言。它由微軟開發,簡單易用,新手大師都適合。

2/4
排名第二:Visual C++

VC++其實也是微軟推出的C/C++語言集成開發環境。它功能簡單,簡單到連框架都可以省去一點(當然不可以全部省去),比較適合初學者。唯一讓初學者接受不了的可能是新手只能開發控制台,學著學著會覺得開發這些黑底白字的東東沒什麼用。

3/4
排名第三:Java

Java最流行。有三種原因:1.Java程序員工資高。2.Java的優點是跨平台,適合做移動開發。3.因為以上兩點,很多想學編程的人發現學Java的人多,所以就跟風學Java。Java比較難學,學過C/C++的人學Java更容易聽懂。

4/4
還有Java script,HTML,PHP,RUBY等語言。如果你有足夠的耐心,學以下幾種編程語言也不是問題。但是還是建議按本篇經驗所介紹的編程語言的順序來學吧。

注意事項
本經驗只是作者觀點,學哪種語言都可以。

③ C語言入門題目,求詳細易懂的解答過程。

答案為第一行:Tony。
解答:for循環共循環2次,然後strcpy(a,b)比較兩串字元大小,如果strcpy值大於0,則a大於b。具體的比較是看字元串的字母的ASCII碼的大小,如果相同,再繼續比較第二個,這個不贅述。
主要看一下name[],對於一維數組來講,它是元素,對於二維數組來講,它不是具體的元素,而是代表的一維數組。比如name[3][20],為3行20列,那麼name[0],它代表的是組成二維數組的第一維數組。又知道puts()括弧里可以放一維數組名,可以輸出它裡面的字元串,對放name[0]的話,那就是輸出3行20列中的第一行字元串。
通過for比較我們已經得出結果,即兩次for循環都不符合條件,因此,m沒有變化,=0。所以puts(nam[0])的話,就是輸出Tony。
望樓主採納。

④ C語言編程實現時間片輪轉演算法,盡量寫得簡單易懂,謝謝

#include<stdlib.h>
#define MAX 5 //進程數量
#define RR 2 //時間片大小

/*時間片輪轉演算法*/

struct pro
{
int num;
int arriveTime;
int burst;
int rt; //記錄進程被運行的次數
struct pro *next;
};

int TOTALTIME; //記錄所有進程的總時間

//函數聲明
struct pro* creatList();
void insert(struct pro *head,struct pro *s);
struct pro* searchByAT(struct pro *head,int AT);
void del(struct pro* p);
int getCount(struct pro *head,int time);
struct pro* searchEnd(struct pro *head);
void move(struct pro *headF,struct pro *headT,int n);

struct pro* creatList() //創建鏈表,按照進程的到達時間排列,記錄所有進程的信息
{
struct pro* head=(struct pro*)malloc(sizeof(struct pro));
head->next=NULL;
struct pro* s;
int i;
TOTALTIME=0;
for(i=0;i<MAX;i++)
{
s=(struct pro*)malloc(sizeof(struct pro));
printf("請輸入進程名:\n");
scanf("%d",&(s->num));
printf("請輸入到達時間:\n");
scanf("%d",&(s->arriveTime));
printf("請輸入運行時間:\n");
scanf("%d",&(s->burst));
TOTALTIME+=s->burst; //計算總時間
s->rt=1; //rt的初始值為1
s->next=NULL;
insert(head,s);
}
return head; //到達隊列中的進程按照其到達時間的先後順序排列
}

void insert(struct pro *head,struct pro *s) //插入節點
{
struct pro *p=searchByAT(head,s->arriveTime);
s->next=p->next;
p->next=s;
return;
}

struct pro* searchByAT(struct pro *head,int AT) //查找第一個到達時間大於等於AT的節點,返回其前一個指針
{
struct pro *p,*q;
p=head;
q=head->next;
while(q!=NULL&&q->arriveTime<=AT)
{
p=q;
q=q->next;
}
return p;
}

void del(struct pro* p) //刪除p的下一個節點
{
struct pro *tmp;
tmp=p->next;
p->next=tmp->next;
free(tmp);
return;
}

int getCount(struct pro *head,int time) //察看在time之前到達但未移動到運行隊列的進程數量
{
int count=0;
struct pro *s,*t;
s=head;
t=s->next;
while(t!=NULL&&t->arriveTime<=time)
{
s=t;
t=t->next;
count++; //count記錄當前時刻到達的進程數
}
return count;
}

struct pro* searchEnd(struct pro *head) //查找並返回循壞隊列的尾節點的前一個節點
{
struct pro *p,*q;
p=head;
q=head->next;
while(q->next!=head)
{
p=q;
q=q->next;
}
return p;
}

void move(struct pro *headF,struct pro *headT,int n) //將headF後的n個節點移動到循環隊列headT中
{
struct pro *r,*s,*t;
s=headF;
t=s->next;
r=t; //r記錄要移動的第一個節點
while(n>1)
{
t=t->next;
n--;
}
s->next=t->next; //以上完成從原隊列中摘除相關節點,r,t分別為第一個和最後一個節點
s=searchEnd(headT);
t->next=s->next;
s->next=r;
}

void run(struct pro *head)
{
int time=0; //記錄當前時間
int newarrive;//新到達進程數
struct pro *runhead=(struct pro*)malloc(sizeof(struct pro));
runhead->next=runhead; //創建新的循環鏈表,存放當前就緒隊列中的進程
struct pro *p,*q;
p=runhead;
q=p->next; //q記錄當前應當運行的進程
while(time<=TOTALTIME)
{
newarrive=getCount(head,time);
if(newarrive>0)
move(head,runhead,newarrive); //將head後的newarrive個節點移動到runhead隊列中
if(runhead->next==runhead) //就緒隊列中沒有進程
time++;
else if(q==runhead)
{
p=q;
q=q->next;
}
else
{
printf("進程名:%d\n",q->num);
printf("到達時間:%d\n",q->arriveTime);
if(q->rt==1)
printf("響應時間:%d\n",time-q->arriveTime);
else
printf("第%d次運行開始時間:%d\n",q->rt,time);
if(q->burst<=RR)
{
time+=q->burst;
printf("第%d次運行結束時間:%d\n",q->rt,time);
printf("周轉時間:%d\n",time-q->arriveTime);
printf("************************************\n");
struct pro *tmp=q;
q=q->next;
p->next=q;
free(tmp);
}
else //q->burst>RR
{
time+=RR;
printf("第%d次運行結束時間:%d\n",q->rt,time);
printf("************************************\n");
q->burst-=RR;
q->rt++;
p=q;
q=q->next;
}
}
}
}

void main()
{
struct pro *head=creatList();
printf("當前時間片大小為:%d\n",RR);
run(head);
}