漫漫前端路

来源:互联网 发布:淘宝衣服拍照技巧图片 编辑:程序博客网 时间:2024/06/05 07:47

终于要进入前端专业课程的学习了,这个时候大家的起跑线都是一样的,不能再以基础不好作为借口了,攒足力气向前冲吧,FIGHTING!~


今天的考试总的来说难度适中,都是课堂上讲过的,但是其实在这次考试中我认为最难的不是解题,而是读题,老师给我们设置的考核非常的有意义,除了题目本身的难度外,更为关键的是有很多的陷阱,先入为主啦,读题马虎啦,观察不仔细啦,格式不严谨啦等等等等。这一点很好的告诉了我们,读题是非常重要的,而且在今后的学习和以后的工作中,分析问题永远是第一位,是重中之重,问题问的什么,都有哪些需求,最后到底要反馈什么东西,这些是我们必须要重视的一点。而不能拿着题目作业或者是需求,就开始盲目的狂敲代码。


---------------------------------------------------------唱山割喂------------------------------------------------------


这里是今天的两道机试题,题目本身不难,关键是读题要仔细,弄清楚要求和格式。


/*
请使用整形数组,正确接受从键盘输入的5个数字,完成升序排序后输出排序后的结果。 
*/
#include<stdio.h>


void accept(int num[])    /*accept函数,因为需要接收数组,所以这里需要接参,设置形参*/
{
int i;
for(i=0;i<5;i++)      /*5个数,5次循环接收*/ 
{
printf("请输入第%d个数字:",i+1);   /*因为i从0计数,因此i+1才代表次序*/ 
scanf("%d",&num[i]);                /*这里是整形数组不是字符串,因此要用取址符&*/
}
}


void sort(int num[])      /*sort函数,同上accept都需要接参*/ 
{
int i,j;              /*冒泡排序需要2个变量*/ 
int tmp;              /*以及一个tmp来作为"空瓶"*/
for(i=0;i<5;i++)
{
for(j=0;j<4-i;j++)   /*这里的循环控制是一个根据i改变而跟着一起改变的变量4-i*/
{
if(num[j]>num[j+1])  /*冒泡排序*/
{
tmp=num[j];
num[j]=num[j+1];
num[j+1]=tmp;
}
}
}
}


void list(int num[])         /*list函数,虚幻输出,同样需要接参*/
{
int i;
for(i=0;i<5;i++)
{
printf("%d\t",num[i]);     /*打印整形数组因此用%d*/
}
}






void main()                  /*主函数*/
{
int num[5];              /*子函数中都需要接收由主函数传递过去的数组,因此这里声明一个数组*/
accept(num);             //直接调用定义好的3个函数。 
sort(num);
list(num);
}



------------------------------------------------------二割----------------------------------------------------------


/*
书写两个函数,实现strlen(),strcmp()函数的功能。 
*/


#include<stdio.h>


int strlen(char str[])                /*定义strlen函数,因为需要根据-1,0,1判断大小,因此需要返回值,返回值为整数故而int*/
{ /*同时,因为需要接收主函数中的字符串,所以设置形参以便接收*/
int length=0;                     /*数组长度为整形,因此声名一个整形变量并初始化*/
int i=0; 
printf("请输入任意字符串:");
scanf("%s",str);                   /*在函数中完成输入,字符串的输入不加取址符*/
for(i=0;str[i]!=0;i++)             /*只要字符串的某一位不为0,那么就没有结束,以此控制循环*/    
{
length++;                      /*每循环以此也length就+1,以此记录长度*/
}
return length;                     /*将最终的值返回给strlen函数,这里的值就是字符串的长度*/
}


int strcmp(char str1[],char str2[])    /*strcmp函数,需要接收字符串,而且要比较,因此设置以逗号分隔的2个形参*/
{
int i,j;                           
for(i=0;str1[i]!=0&&str2[i]!=0;i++)    /*只要2个字符串当前位置上的字符都不为0,即都没结束,则一直比较下去*/
{
if(str1[i]>str2[i])            /*在不超出字符串长度,也就是其中任意字符串尚未终结的时候,若字符分出大小,则以字符大小决定字符串大小*/
{
return 1;                  /*1代表大于*/
}
else if(str1[i]<str2[i])        
{
return -1;                 /*-1表示小于*/
}

j = i;                             /*循环结束后依然没有返回值,说明在到达其中一个字符串最大长度时,2个字符串的字符都相等,因此这时候再比较长度*/
                                  /*结束循环时i的值就是其中一个字符串的末位数,因此引入新变量j让j=i,以便和前面区分*/ 
if(str1[j]>str2[j])                /*在末位的时候,字符串的这一位是'\0',也就是0,因此,长度更长的字符串,当前数位肯定不为0,比0大*/
{                                  /*因此,当前数位更大的一个字符串,一定是长度更长的*/
return 1;
}
else if(str1[j]<str2[j])
{
return -1;                     /*根据长度判断大小返回1和-1*/
}
else if(str1[j]==str2[j])
{
return 0;                      /*先前的循环中已经确定2个字符串字符都相等,这时候如果末位0也相等,说明2个字符串都结束了,长度也相等*/
}                                  /*因此返回0表示字符串相等*/
}


void main()                            /*主函数*/
{
char str[100];                     /*声明一个字符串让上面的strlen接收,求取长度*/
printf("该字符串长度为%d\n",strlen(str));  /*调用strlen函数,返回值即为长度*/
char str1[100];  
char str2[100];                    /*声明2个字符串让strcmp接收,做比较*/
printf("请输入字符串1:");
scanf("%s",str1); 
printf("请输入字符串2:");
scanf("%s",str2);                   /*先完成输入*/
if(strcmp(str1,str2)==1)           /*然后直接调用定义好的strcmp函数来比较*/
{
printf("字符串1大于字符串2");
}
else if(strcmp(str1,str2)==-1)
{
printf("字符串1小于字符串2");
}
else
{
printf("字符串1等于字符串2");   /*根据strcmp函数的返回值来判断,1为大于,0为等于,-1为小于*/
}
printf("\n");





0 0
原创粉丝点击