您的位置:首页 > 编程语言

11-20代码

2013-11-21 11:54 148 查看
作业1:

    使用数组实现10名学生的成绩录入,并输出这10名学生中成绩的

    最高分

    最低分

    平均分

    按照分数从大到小排序;

#include <stdio.h>

#define NUM 10

void main()

{
float score[NUM];
int i;
for(i=0;i<NUM;i++)
{
  printf("请输入第%d个学生的成绩",i+1);
  scanf("%f",&score[i]);
}
float max=score[0];
float min=score[0];
float sum=0.0;
for(i=1;i<NUM;i++)
{
if(score[i]>max)
max=score[i];
if(score[i]<min)
min=score[i];
}
for(i=0;i<NUM;i++)
{
sum=sum+score[i];
}
float ave=sum/NUM;
printf("\n最高分为%f\n",max);
printf("最低分为%f\n",min);
printf("平均分为%f\n",ave);
//排序
for(i=0;i<NUM-1;i++)
for(int j=i+1;j<NUM;j++)
{
if(score[i]<score[j])
{
float t=score[i];
score[i]=score[j];
score[j]=t;
}
}
for(i=0;i<NUM;i++)
printf("%f\n",score[i]);

}

作业2:

  使用指针实现作业1

#include <stdio.h>

#define NUM 10

void main()

{
float score[NUM];
int i;
float *p=score;
for(i=0;i<NUM;i++)
{
  printf("请输入第%d个学生的成绩",i+1);
  scanf("%f",p);
  p++;
}
p=score;
float max=*p;
float min=*p;
float sum=0.0;
for(i=1;i<NUM;i++)
{
if(*(p+i)>max)
max=*(p+i);
if(*(p+i)<min)
min=*(p+i);
}
for(i=0;i<NUM;i++)
{
sum=sum+*(p++);
}
float ave=sum/NUM;
printf("\n最高分为%f\n",max);
printf("最低分为%f\n",min);
printf("平均分为%f\n",ave);
//排序
p=score;
for(i=0;i<NUM-1;i++)
for(int j=i+1;j<NUM;j++)
{
if(*(p+i)<*(p+j))
{
float t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
for(i=0;i<NUM;i++)
printf("%f\n",*(p++));

}

作业3:

  将作业1中的以下功能定义为独立的函数

   1,对一个数组进行数据录入

    void arrayinput(int * array,int count);

   2,对一个数组进行数据输出

    void arrayprint(int * array,int count);

   3,对一个数组实现最大值的获取

    int arrayMax(int * array,int count);

   4,对一个数组实现最小值的获取

    int   arrayMin(int * array,int count);

   5,对一个数组进行排序

     void arraySort(int array,int order,int count);//0asc1desc
#include <stdio.h>

#include <string.h>

#define NUM 5

void arrayinput(float * array,int count);

void arrayprint(float * array,int count);

float arrayMax(float * array,int count);

float arrayMin(float * array,int count);

void arraySort(float array[],int order,int count);

void main()

{
float score[NUM];
arrayinput(score,NUM);
arrayprint(score,NUM);

float max,min;
max=arrayMax(score,NUM);
min=arrayMin(score,NUM);

int n;
printf("请选择排序方式(1或-1):1-从大到小,-1-从小到大\n");
scanf("%d",&n);
arraySort(score,n,NUM);

    arrayprint(score,NUM);

}

void arrayinput(float *array,int count)

{
int i;
for(i=0;i<count;i++)
{
  printf("请输入第%d个学生的成绩:",i);

       scanf("%f",array+i);
}

}

void arrayprint(float * array,int count)

{

   for(int i=0;i<count;i++)
  printf("%f\n",*(array+i));

}

float arrayMax(float * array,int count)

{
float max;

    for(int i=1;i<count;i++)
if(*(array+i)>max)
max=*(array+i);
return max;

}

float arrayMin(float * array,int count)

{
float min;

    for(int i=1;i<count;i++)
if(*(array+i)<min)
min=*(array+i);
return min;

}

void arraySort(float array[],int order,int count)

{
if(order==1)//从大到小
{
 for(int i=0;i<count-1;i++)
for(int j=i+1;j<count;j++)
{
if(*(array+i)<*(array+j))
{
float t=*(array+i);
*(array+i)=*(array+j);
*(array+j)=t;
}
}
}

if(order==-1)//从小到大
{
  for(int i=0;i<count-1;i++)
for(int j=i+1;j<count;j++)
{
if(*(array+i)>*(array+j))
{
float t=*(array+i);
*(array+i)=*(array+j);
*(array+j)=t;
}
}
}

}

作业4 (思考)

  编写一个递归函数,求一个整数的2进制形式

   输入8

   输出 1000

   输入15

   输出 1111  

  

#include <stdio.h>

void f(int a)

{
if(a==0)
return;
else
{ f(a/2);
 printf("%d",a%2);
 return;
}

}

void main()

{
int n;
printf("请输入数字:");
scanf("%d",&n);
f(n);
printf("\n");

}

作业5:

    编写程序实现一个用户登录的模拟,用户从控制台输入用户名,密码

    1判断输入是否合法

        用户名不超过15字符

        密码必须用数字

    2验证用户名和密码是否正确

      用户名 wangyi 密码123正确

#include <stdio.h>

#include <string.h>

#define MAX 30

void main()

{
char getName[MAX];
int  password,n;
printf("请输入用户名:");
scanf("%s",getName);
printf("请输入密码:\n");
n = scanf("%d",&password);

if(strlen(getName)>15 || n==0)
printf("input error!!!\n");
else if(strcmp(getName,"wangyi")==0 && password==123)
printf("welcome!!!\n");
else
printf("ERROR!!!\n");

}

作业6:

  实现字符串处理函数

    字符串长度获取strlen

    字符串连接   strcat

    字符串比较   strcmp

    字符串查询   strfind(char * a,char * b); 返回字符串b在字符串a的位置

                      "hellonihao","nni"  6,如果不存在返回-1

#include <stdio.h>

#define MAX 100

#define MIN 10

int myStrlen(char *s)

{
int count = 0;
while(*(s++)!='\0')
count++;
return count;

}

   

int myStrcmp(char *s1,char *s2)

{
while(1)
{
if(*s1==*s2)
{  if(*s1!='\0')
{s1++;s2++;}
   else
 return 0;
}
else if(*s1>*s2)
return  1;
else
return -1;
}

}

void myStrcat(char *a,char *b)

{
int la=myStrlen(a); //6
int lb=myStrlen(b);  //4
int i=0;
while(*(a+i)!='\0')
{
i++;     //i=6;
}
int j=0;
while(*(b+j)!='\0')//
{
a[i]=b[j];
i++;j++;
}
a[i]='\0';

}

int strfind(char *a,char *b)

{
int la=myStrlen(a); //6
int lb=myStrlen(b);  //2
int i=0,j=0;
if(la<lb)
return -1;
else
{
while(i<la-lb+1 && j<lb)
{
if(a[i]==b[j])
{
i++;
j++;
}
else
{
i++;
j=0;
}
}
if(j>=lb)
return  i-j;
else
return -1;
}

}

void main()

{
char str[MAX]="i want";

char str1[MIN]=" you";
myStrcat(str,str1);
printf("%s\n",str);

// printf("%d\n",myStrcmp(str,str1));
//printf("%d\n",strfind(str,str1));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐