第二次作业
6-7 删除字符串中数字字符
1,算法
遍历原数组,如果元素为非数字,将其复制给新数组
2,代码
void delnum(char *s)
{
int i,j;
for(i=0,j=0;s[i]!='\0';i++)
{
if(s[i]<'0'||s[i]>'9')
{
s[j]=s[i];
j++;
}
}
s[j]='\0';
}
3,问题及解决办法
无
6-8 统计子串在母串出现的次数
1,算法
对两个串元素依次进行比较,相等n+1
2,代码
int fun(char *str,char *substr)
{
int i,n=0;
for(i=0;str[i]!='\0';i++){
if(str[i]==substr[0]){
if(str[i+1]==substr[1]){
if(str[i+2]==substr[2]){
n++;
}
}
}
}
return n;
}
3,问题及解决办法
无
6-9 字符串中除首尾字符外的其余字符按降序排列
1,算法
for循环,降序排列
2,代码
int fun(char *s,int num)
{
int i,j,swap;
for(i=1;i<num-1;i++)
for(j=1;j<num-1-i;j++)
{
if(s[j]<s[j+1])
{
swap=s[j];s[j]=s[j+1];s[j+1]=swap;
}
}
}
3,问题
无
7-1 输出学生成绩
1,算法
对每个成绩赋值,算出和平均值最大最小
2,代码
#include<stdio.h>
int main()
{
int n,i;
double average,max,min,sum=0;
scanf("%d",&n);
double a[n];
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
sum=sum+a[i];
}
average=sum/n;
max=a[0];
min=a[0];
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
}
printf("average = %.2f\n",average);
printf("max = %.2f\n",max);
printf("min = %.2f",min);
return 0;
}
3,问题
无
7-1 计算职工工资
1,算法
用struct输入所有相关值,计算工资并输出
2,代码
#include<stdio.h>
struct message {
char name[10];
float jibengz;
float fudonggz;
float zhichu;
float sum;
};
int main()
{
int n;
scanf("%d",&n);
struct message m1;
while(n--)
{
scanf("%s%f%f%f",&m1.name,&m1.jibengz,&m1.fudonggz,&m1.zhichu);
m1.sum=(m1.jibengz+m1.fudonggz-m1.zhichu);
printf("%s %.2f\n",m1.name,m1.sum);
}
}
3,问题
无
6-1 按等级统计学生成绩
1,算法
用p【i】.score对成绩依次划分等级,等级为d时,不合格人数加一
2,程序
int set_grade( struct student *p, int n )
{
int i,x=0;
for(i=0;i<n;i++)
{
if(p[i].score>=85)
p[i].grade='A';
else if(p[i].score>=70&&p[i].score<=84)
p[i].grade='B';
else if(p[i].score>=60&&p[i].score<=69)
p[i].grade='C';
else
p[i].grade='D';
}
for(i=0;i<n;i++)
{
if(p[i].grade=='D')
x=x+1;
}
return x;
}
3,问题无
6-2 结构体数组按总分排序
1,算法
struct计算分数和
对分数从大到小排序
2,程序
void calc(struct student *p,int n)
{
int i;
for(i=0;i<n;i++)
{
p[i].sum=(p[i].score[0]+p[i].score[1]+p[i].score[2])*1.0;
}
}
void sort(struct student *p,int n)
{
int i,j;
struct student t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(p[j+1].sum>p[j].sum)
{
t=p[j];p[j]=p[j+1];p[j+1]=t;
}
}
}
}
3,问题
冒泡排序,注意j<n-i-1
总结
本周学习了struct输入和调用
点评
http://www.cnblogs.com/moxiaoshuai/p/8742635.html
http://www.cnblogs.com/qinbaoyan/
http://www.cnblogs.com/wwb986187/p/8727528.html#3943893
代码量,这周一直放假,打的不是很多
二百行左右吧