本文目錄一覽:
- 1、求C語言編程例子40行的
- 2、誰幫我寫一個50行的C語言代碼啊~
- 3、求c語言程序源代碼,主題隨便,盡量超過40行!謝謝!!
- 4、求50行簡單C語言程序代碼,基礎的就好
- 5、c語言100行簡單一點的代碼
求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-tw/n/182528.html