本文目录一览:
- 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();
}