c語言40行代碼,c語言400行代碼大作業

本文目錄一覽:

求C語言編程例子40行的

因為我是學習計算機軟件專業的,故對編寫程序有着很深的體會。

對於 C 語言編程(或者是其它任何編程語言)來說,絕對不能夠僅僅以編寫源程序的行數多少作為衡量程序好壞的標準(僅僅是在湊行數)。而是必須要以程序結構的可讀性、清晰性的好壞作為編程源代碼好壞的標準。

誰幫我寫一個50行的C語言代碼啊~

#includestdio.h

#includestdlib.h

int next[50]; //存儲next值的數組

int nextval[50];

typedef struct

{

char *ch;

int length; //串長度

}HString;

void StrAssign(HString *T,char *chars) //生成一個值等於串常量chars的串T

{

int i,j;

char *c;

if(T-ch)

free(T-ch); //釋放T原有空間

for(i=0,c=chars; *c; ++i,++c) //求chars長度

;

if(!i)

{

T-ch = NULL;

T-length = 0;

}

else

{

if(!(T-ch=(char*)malloc((i+1)*sizeof(char))))

exit(1);

for(j=0;ji;++j)

T-ch[j] = chars[j];

T-ch[i] = ‘\0’;

T-length = i;

}

}

int StrLength(HString s) //返回S的元素個數,稱串的長度

{

return s.length;

}

int StrCompare(HString S,HString T) //串比較

{

//若ST,則返回值0;若S=T,則返回值=0,若ST,則返回值0;

int i;

for(i=0; iS.length iT.length; ++i)

if(S.ch[i]!=T.ch[i])

return S.ch[i] – T.ch[i];

return S.length – T.length;

}

void ClearString(HString *S) //將S清為空串

{

if(S-ch)

{

free(S-ch);

S-ch = NULL;

}

S-length = 0;

}

void Concat(HString *T,HString s1,HString s2)

{

//用T返回由s1,s2聯接而成的新串

int i,j;

if(T-ch) free(T-ch); //釋放舊空間

if(!(T-ch=(char*)malloc((s1.length+s2.length)*sizeof(char))))

exit(1);

T-length = s1.length + s2.length;

for(i=0;is1.length;++i)

T-ch[i] = s1.ch[i];

for(j=0;js2.length;++j,++i)

T-ch[i] = s2.ch[j];

}

void SubString(HString *sub,HString s,int pos,int len)

{

//用sub返回串s的第pos個字符起長度為len的子串

//其中,1=pos=strlenth(s)且0=len=strlength(s)-pos + 1.

int i,j;

if(pos1 || poss.length || len0 || lens.length-pos+1)

{

printf(“SubString’s Location error!\n”);

exit(1);

}

if(sub-ch) free(sub-ch); //釋放舊空間

if(!len)

{

sub-ch = NULL; sub-length = 0;

}

else

{

sub-ch = (char*)malloc((len+1)*sizeof(char));

for(i=0,j=pos-1;j=pos+len-2;++i,++j)

sub-ch[i] = s.ch[j];

sub-length = len;

sub-ch[sub-length] = ‘\0’;

}

}

void get_next(char *chars,int next[]) //生成next值的函數

{

int i,j,temp;

i = 1;

j = 0;

next[1] = 0;

while(chars[i])

{

if(j==0 i==1) //第二位的next應該都為1

{

++i;++j;

next[i] = j;

}

else if(chars[i-1]!=chars[next[i]-1])//當測試next值上的數據與當前數據不等時進行

{

j = next[i]; //取得next值

while(chars[j-1]!=chars[i-1]) //如當前的值,與下一next值也不同,j值繼續後退

{

temp = j; //取得前一next值

j = next[j]; //前一next值

if(j=0)

{

next[i+1] = 1;

++i;

break;

}

else if(chars[j-1]==chars[i-1])

{

next[i+1] = next[temp] + 1;//這裡temp與J總是相隔一個位,所以是next[temp]

++i;

break;

}

}

}

else if(chars[i-1]==chars[next[i]-1]) //當測試next值上的數據與當前數據相等時進行

{

next[i+1] = next[i] + 1;

++i;

}

printf(“next[%d]=%d\n”,i,next[i]);

}

}

void next_change(char *chars,int nextval[])

{

int i,j,temp;

i = 1;

nextval[1] = 0;

for(j=1;chars[j];++j)

{

temp = next[j+1]; //取得當前的next[X]值

if(chars[j]==chars[temp-1]) //比較J位置上與相對於J位置的NEXT位上的元素值是否相等

{

nextval[j+1] = nextval[temp]; //如相等則將前面的nextval值賦給當前nextval的值

}

else nextval[j+1] = temp; //不相等則保留原next[]中的值

}

}

int Index(HString S,HString T,int pos)

{

int i,j;

i = pos-1;

j = 0;

get_next(T.ch,next);

next_change(T.ch,nextval);

while(i=S.length T.ch[j]) //字符串沒到結尾不結束查找

{

if(S.ch[i]==T.ch[j])//相等則一起後移

{

i++;j++;

}

else if(S.ch[i]!=T.ch[j])

{

j = nextval[j+1]-1;//不相等時取得next值-1因為

//next是按1,2,3…算所以要-1

if(j=0 S.ch[i]!=T.ch[j])

{

i++;//J移到next值上如值是0則i向前移

j = 0;//因為j可以變成小於0

}

}

}

if(j=T.length) return i-T.length+1;

else return 0;

}

void StrInsert(HString *s,int pos,HString T) //在pos位置插入字符串T

{

int i,j;

if(pos1 || pos(s-length+1))

{

printf(“strInsert’s Location error!\n”);

exit(1);

}

if(T.length)

s-ch = (char*)realloc(s-ch,(s-length+T.length+1)*sizeof(char)); //增加S的空間

for(j=s-length;j=pos-1;–j) //POS位置到最後的字符往後移

s-ch[j+T.length] = s-ch[j];

for(i=0;iT.length;++i) //T複製到S

{

s-ch[i+pos-1] = T.ch[i];

}

s-length = s-length + T.length;

}

void StrDelete(HString *s,int pos,int len)//S存在,從S中刪除第POS個字符起長度為LEN的子串

{

int i,j;

if(pos1 || poss-length-len) //判斷刪除位置是否合理

printf(“delete Location error!\n”);

else

{

for(i=pos+len-1,j=0;is-length;++i,++j) //刪除中間元素,後面的元素往前移

s-ch[pos-1+j] = s-ch[i];

s-length = s-length – len;

s-ch[s-length] = ‘\0’;

}

}

void Replace(HString *s,HString t,HString v) //將V替換掉S中的T

{

int i;

i = Index(*s,t,1);

while(i0)

{

StrDelete(s,i,t.length);

StrInsert(s,i,v);

i = Index(*s,t,1);

}

}

void display(HString s)

{

printf(“the string is :%s\n”,s.ch);

}

int main(void)

{

HString obj,obj2,obj3,obj4;

obj.ch = NULL;//(char*)malloc(sizeof(char));

obj2.ch = NULL;

obj3.ch = NULL;

obj4.ch = NULL;

StrAssign(obj,”august”);

StrAssign(obj2,”yx”);

StrAssign(obj4,”ax”);

display(obj);

display(obj2);

SubString(obj3,obj,3,3);

display(obj3);

StrInsert(obj3,1,obj2);

display(obj3);

Replace(obj3,obj2,obj4);

display(obj3);

StrDelete(obj3,1,3);

display(obj3);

return 0;

}

// 希望能夠幫到你

求c語言程序源代碼,主題隨便,盡量超過40行!謝謝!!

#includestdio.h

#define

N

31

typedef

struct

{

long

num;

//學號

int

score;

//成績

}Student;

void

sort(Student

stu[]);//排序函數

void

insert(Student

stu[],Student

stu1);//插入函數

void

count(Student

stu[]);//計算總分及平均分

void

search(Student

stu[],long

num);//查詢函數

main()

{

Student

stu[N],stu1;

int

i;

long

num;

printf(“輸入30位學生的學號

成績:\n”);

for(i=0;iN-1;i++)

scanf(“%ld%d”,stu[i].num,stu[i].score);

sort(stu);

printf(“輸入欲插入的學生的學號

成績:\n”);

scanf(“%ld%d”,stu1.num,stu1.score);

insert(stu,stu1);

count(stu);

printf(“輸入欲查詢的學生學號:”);

scanf(“%ld”,num);

search(stu,num);

}

void

sort(Student

stu[])

{

int

i,j;

Student

t;

//冒泡法排序

for(i=0;iN-1;i++)

for(j=0;jN-1-i;j++)

if(stu[j].scorestu[j+1].score)

{t=stu[j];

stu[j]=stu[j+1];

stu[j+1]=t;}

//打印排序後的信息

printf(“名次

學號

成績\n”);

for(i=0;iN-1;i++)

printf(“第%d名

%-6ld%-6d\n”,i+1,stu[i].num,stu[i].score);

}

void

insert(Student

stu[],Student

stu1)

{

int

i,j;

for(i=0;iN-1;i++)

{

if(stu1.scorestu[i].score)

{

for(j=N-1;ji;j–)

stu[j]=stu[j-1];

stu[i]=stu1;

break;

}

stu[N-1]=stu1;

}

//打印插入後的信息

printf(“名次

學號

成績\n”);

for(i=0;iN;i++)

printf(“第%d名

%-6ld%-6d\n”,i+1,stu[i].num,stu[i].score);

}

void

count(Student

stu[])

{

long

sum=0;

int

i;

for(i=0;iN;i++)

sum+=stu[i].score;

printf(“總分:%-3ld\n平均分:%-3ld\n”,sum,sum/N);

}

void

search(Student

stu[],long

num)

{

int

i;

printf(“名次

學號

成績\n”);

for(i=0;iN;i++)

{

if(num==stu[i].num)

{printf(“第%d名

%-6ld%-6d\n”,i+1,stu[i].num,stu[i].score);

return;

}

}

printf(“無此學生\n”);

}

求50行簡單C語言程序代碼,基礎的就好

#include stdio.h

#include stdlib.h

#define NUM 10

/* run this program using the console pauser or add your own getch, system(“pause”) or input loop */

//冒泡排序算法

//基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出一個未排序中最大的數放到數組後面。

void bubbleSort(int *arr, int n) {

int i,j;

for (i = 0; in – 1; i++)

for (j = 0; j n – i – 1; j++) {

//如果前面的數比後面大,進行交換

if (arr[j] arr[j + 1]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

//最差時間複雜度為O(n^2),平均時間複雜度為O(n^2)。穩定性:穩定。輔助空間O(1)。

//升級版冒泡排序法:通過從低到高選出最大的數放到後面,再從高到低選出最小的數放到前面,

//如此反覆,直到左邊界和右邊界重合。當數組中有已排序好的數時,這種排序比傳統冒泡排序性能稍好。

//升級版冒泡排序算法

void bubbleSort_1(int *arr, int n) {

//設置數組左右邊界

int left = 0, right = n – 1;

//當左右邊界未重合時,進行排序

while (left=right) {

int i,j;

//從左到右遍歷選出最大的數放到數組右邊

for (i =left; i right; i++) {

if (arr[i] arr[i + 1]) {

int temp = arr[i];

arr[i] = arr[i + 1];

arr[i + 1] = temp;

}

}

right–;

//從右到左遍歷選出最小的數放到數組左邊

for (j = right; j left; j–) {

if (arr[j + 1] arr[j]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

left++;

}

}

int main(int argc, char *argv[]) {

int arr[NUM],i,j,temp;

printf(“請輸入10個數:\n”);

for(i=0; iNUM; i++) {

printf(“請輸入第(%d)個數:”,i+1);

scanf(“%d”,arr[i]);

}

printf(“\n輸入如下排列:\n”);

for(i=0; iNUM; i++) {

printf(“%4d”,arr[i]);

}/*

for(i=0; iNUM; i++) {

for(j=i+1; jNUM; j++) {

if(arr[i]arr[j]) {

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}*/

bubbleSort_1(arr,NUM);

/*printf(“\n從小到大如下排列:\n”);

for(i=0; iNUM; i++) {

printf(“%4d”,arr[i]);

}*/

printf(“\n從大到小如下排列:\n”);

for(i=NUM-1; i=0; i–) {

printf(“%4d”,arr[i]);

}

return 0;

}

c語言100行簡單一點的代碼

登錄幼兒園200個小朋友的數據:姓名、性別、年齡、身高、體重、出生日期,分別按年齡排序後輸出。

#includestdio.h

#define N 200

struct child

{

char name[10];

char sex[3];

int age;

int height;

float weight;

struct {

int year;

int month;

int day;

}bdate;

}ch[N];

void input()

{

int i;

for(i=0;iN;i++)

{

printf(“\n請輸入第%d名小朋友信息:\n”,i+1);

printf(“姓名:”);

scanf(“%s”,ch[i].name);

printf(“性別:”);

scanf(“%s”,ch[i].sex);

printf(“年齡:”);

scanf(“%d”,ch[i].age);

printf(“身高:”);

scanf(“%d”,ch[i].height);

printf(“體重:”);

scanf(“%f”,ch[i].weight);

printf(“出生日期[YYYY-MM-DD]:”);

scanf(“%d-%d-%d”,ch[i].bdate.year,ch[i].bdate.month,ch[i].bdate.day);

}

}

void sort()

{

struct child ct;

int i,j;

for(i=0;iN-1;i++)

for(j=0;jN-i-1;j++)

if(ch[j].heightch[j+1].height)

{

ct=ch[j];

ch[j]=ch[j+1];

ch[j+1]=ct;

}

}

void output()

{

int i;

printf(“\n\t幼兒園小朋友一覽(依身高排序)\n”);

printf(“===================================================\n”);

printf(” 姓名 性別 年齡 身高 體重 出生日期 \n”);

printf(“===================================================\n”);

for(i=0;iN;i++)

printf(” %-8s %-2s %2d %d %3.1f %d.%d.%d\n”,ch[i].name,ch[i].sex,ch[i].age,ch[i].height,ch[i].weight,ch[i].bdate.year,ch[i].bdate.month,ch[i].bdate.day);

}

void main()

{

input();

sort();

output();

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/182528.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:22
下一篇 2024-11-24 06:22

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29

發表回復

登錄後才能評論