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