11-20代码

作业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));
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值