本以为学习C语言是一个极其漫长且困难的过程,,没想到在第四天就已经可以写出一个小工程了。
下面请看我写的代码:
#include <stdio.h>
int len(char a[])
{
printf("显示字符串的长度\n");
printf("请输入一个字符串:");
scanf("%s",a);
int i=0;
while(a[i]!='\0')
i++;
printf("该字符串的长度为:");
printf("%d",i);
return i;
}
int len1(char a[])
{
int i=0;
while(a[i] != '\0')
i++;
return i;
}
copy1(char a[],char b[])
{
int i=0;
while(b[i]!='\0')
{
a[i]=b[i];
printf("%c",a[i]);
i++;
}
a[i]=b[i];
printf("%c",a[i]);
}
int compare(char a[],char b[])
{
int i,n1,n2,n;
n1=len1(a);
n2=len1(b);
if(n1<n2)
n=n1;
else
n=n2;
for(i=0;i<n;i++)
if(a[i]>b[i])
{
return 1;
break;
}
else
{
return 0;
break;
}
}
int triple(int a,int b)
{
int t;
printf("利用三目运算符比较两个数的大小,输出较小的数\n");
printf("请输入要比较的两个数:");
scanf("%d %d",&a,&b);
t=(a<b?a:b);
printf("较小的数为:");
printf("%d",t);
return 0;
}
copy(char a[],char b[])
{
int i,n;
printf("字符串的复制\n");
printf("请输入要复制的字符串:");
scanf("%s",b);
char *pa=a,*pb=b;
n=len1(b);
for(i=0;i<n;i++)
{
*pa++=*pb++;
}
*pa=*pb;
printf("复制后的字符串为:");
printf("%s",a);
}
int sort(int a[])
{
int *p=a;
printf("对5个整数进行从小到大的排序\n");
int i,j,temp;
printf("请输入5个整数:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(*(p+i)>*(p+j))
{temp=*(a+i);*(a+i)=*(a+j);*(a+j)=temp;}
printf("排序后的数组为:");
for(i=0;i<5;i++)
printf("%d ",*(a+i));
}
int gs(int a,int b)
{
printf("求两个整数的最大公约数和最小公倍数\n");
printf("请输入两个整数:");
int m,n;
scanf("%d %d",&a,&b);
m=a<b?a:b;
n=a>b?a:b;
while(m>=1)
{
m--;
if(a%m==0&b%m==0)
break;
}
while(n>=1)
{
n++;
if(n%a==0&&n%b==0)
break;
}
printf("最大公约数和最小公倍数分别是:");
printf("%d %d",m,n);
}
int insert(char a[],int s,char c)
{
int n;
printf("字符串的插入\n");
printf("请输入一个字符串:");
scanf("%s",a);
printf("请输入插入的位置和字符:");
scanf("%d %c",&s,&c);
n=len1(a);
char *p;
for(p=&a[n];p>&a[s];p--)
*p=*(p-1);
p++;
a[s]=c;
printf("插入字符后的字符串:");
printf("%s",a);
return 0;
}
int strmax(char a[][100])
{
printf("比较字符串的大小,并把最大的字符串输出\n");
char str[100];
int i;
printf("请输入3个要比较的字符串:");
for(i=0;i<3;i++)
scanf("%s",a[i]);
printf("最大字符串为:");
if(compare(a[0],a[1]))
{
if(compare(a[0],a[2]))
copy1(str,a[0]);
else
copy1(str,a[2]);
}
else
{
if(compare(a[1],a[2]))
copy1(str,a[1]);
else
copy1(str,a[2]);
}
}
int main(int argc, char **argv)
{
int c,m,n,s[5];
char a[100],b[100],t[3][100];
char d;
printf("Welcome to 154\n");
while(1)
{
printf("Input:");
scanf("%d",&c);
switch(c)
{
case 1:insert(a,m,d);break;
case 2:copy(a,b);break;
case 3:len(a);break;
case 4:strmax(t);break;
case 5:gs(m,n);break;
case 6:sort(s);break;
case 7:triple(m,n);break;
default:printf("error");break;
}
printf("\n");
if(c==0)
break;
}
return 0;
}
在这个工程中,我只用到了一个头文件,却能实现7种不同的功能,总共200行的代码,也花了我好长好长的时间去编写、修改以及完善。
这个工程里有好多好多细节要考虑,比如输入用scanf函数还是gets函数,有时你会发现用scanf函数没问题,但用gets函数就会出错,原因在于 gets能读取空格、制表符、回车、换行,而scanf不可以。
总之这个工程对于初学者来说确实有点难,需要想的和修改的东西都蛮多的,继续努力吧!