第二次作业
作业要求一
ps:由于每道题会的程度不同,提交之前参考同学的编码在Devc++上写出了正确答案
作业要求二
题目6-1 计算两数的和与差
1 设计思路
第一步:定义字符数组a与数组s相等
第二步:修改s,a中不是数字赋给s
2流程图
无
3实验代码
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. 本题调试过程碰到问题及解决办法
无
题目2 统计子串在母串出现的次数
1设计思路
第一步:定义整型变量i,n
第二步:利用for循环让假定的字符串与指定字符串的i相等,依次加一
2流程图
3实验代码
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. 本题调试过程碰到问题及解决办法
无
题目3 字符串中除首尾字符外的其余字符按降序排列
1设计思路
冒泡排序
2流程图
3实验代码
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. 本题调试过程碰到问题及解决办法
冒泡排序有点记不住,得一遍看书一遍做
题目6 计算平均成绩
1设计思路
第一步:输入数据
第二步:求平均成绩
2流程图
3实验代码
#include<stdio.h>
struct student{
char id[6];
char name[10];
int score;
};
int main()
{
int n;
int i;
float avg=0;
struct student s[10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d",s[i].id,s[i].name,&s[i].score);
avg=avg+s[i].score;
}
avg=avg/n;
printf("%.2f\n",avg);
for(i=0;i<n;i++)
{
if(s[i].score<avg)
{
printf("%s %s\n",s[i].name,s[i].id);
}
}
}
3. 本题调试过程碰到问题及解决办法
无
题目 计算职工工资
1设计思路
第一步:创建结构
第二步:输入数据
第三步:输出数据
2流程图
3实验代码
#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. 本题调试过程碰到问题及解决办法
%s--%d
题目4 输出学生成绩
1设计思路
第一步:输入数据计算平均值
第二步:求最大和最小值
2流程图
画布明白了呦!
3实验代码
#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设计思路
第一步:判断学生成绩等级
第二步:根据等级赋给A,B,C,D
2流程图
3实验代码
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].score<=100)
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. 本题调试过程碰到问题及解决办法
无
题目8 结构体数组按总分排序
1设计思路
冒泡排序法的应用
2流程图
3实验代码
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];
}
}
void sort(struct student *p,int n)
{
struct student t;
int i,j;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-i-1; j++)
{
if((p+j) -> sum < (p+j+1) -> sum)
{
t = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = t;
}
}
}
}
3. 本题调试过程碰到问题及解决办法
无
作业要求三
1.知识的总结
我们这两次课学了struct 的构建,进一步加强指针的运用
2.代码管理
3.点评
秦保岩
宋晨继
时宇
4图表
无