6-7 删除字符串中数字字符
1.设计思路:
1.使用while函数来查找。
2.找到数字不做处理,将非数字字符储存在新的数组中。
2.流程图:
3.实验代码:
void delnum(char *s)
{
int i=0,j=0;
while(*(s+i)!='\0')
{
if (!(*(s+i)>= '0' && *(s+i)<= '9'))
{
s[j++] = s[i];
}
i++;
}
*(s+j) = '\0'; }
4.本题调试过程碰到问题及解决办法:
在开始尝试了for循环进行编辑,但是一直出现错误于是选择了难度较低的while循环,进过姜健同学的指导将本题做出。
6-8 统计子串在母串出现的次数
1.设计思路:
1.理解题意,使用for循环查找;
2.判断数组str相邻的3个字符是否与substr的相邻的三个字符相同
3.如果相同 则+1 最后输出相同的个数
2.流程图:
3.实验代码:
int fun(char *str,char *substr)
{
int i;
int n=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i] == substr[0] && str[i+1] == substr[1] && str[i+2] == substr[2])
n++;
}
return n;
}
3.本体调试过程碰到问题及解决办法:
在刚开始的时候忽略了相邻问题 在解决之后题目成功解决
6-9 字符串中除首尾字符外的其余字符按降序排列
1.设计思路:
1.使用for循环来冒泡排序
2.除第一个和最后一个进行设计函数
3.比较 交换顺序 然后输出
2.实验代码:
int fun(char *s,int num){
int i,j,k,temp;
for(i=1;i
3.本题调试过程碰到问题及解决办法:
在一开始无法进行对第一个和最后一个数的忽略 同时使用for循环的时候没办法搞懂冒泡法和选择法的区别和如何使用,在姜健和李伍壹同学的指导下才成功完成本题。
7-1 计算职工工资
1.设计思路:
1.定义结构体struct emp;
2.使用for循环输入职工的各项数据
3.再用for循环输出职工姓名和应发工资;
2.流程图:
3.实验代码:
#include
int main (void)
{
int i, n;
struct emp{
char name[1000];
double jbg;
double fdg;
double zc;
} s[1000];
scanf("%d", &n);
for(i=0;i
4.遇见的问题和解决路径
这道题在做的时候是和室友合作的 但是问题一直在与为什么会出现部分错误,具体情况未知,到现在还是找不到原因。 希望老师和同学可以给予指点 在此感谢。
7-2 计算平均成绩
1.设计思路:
1.定义结构体变量struct score 及其变量;
2.定义整型i,n,利用for循环遍历数组
3.输入结构体里的变量 计算avg并输出;
4.使用for循环并输出低于平均数的学生的姓名和学号
2.实验代码:
#include
struct score
{
char num[10];
char name[10];
double s;
};
int main()
{
struct score s[1000];
int i, n;
double average = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s %s %lf", &s[i].num, &s[i].name, &s[i].s);
}
for (i = 0; i < n; i++)
{
average = average + s[i].s;
}
average = average / n;
printf("%.2f\n", average);
for (i = 0; i < n; i++)
{
if (s[i].s < average)
{
printf("%s %s\n", s[i].name, s[i].num);
}
}
return 0;
}
错误和解决方案:
在姜健同学指导下这道题只出现了一些小问题 解决的也比较顺利
题目7-1 输出学生成绩
1.设计思路
第一步:建立for语句把每个人的分数所对应的等级赋给等级数组。
第二步:在不及格的if语句里计数。
第三步:输出。
(2)流程图
无
2.实验代码
int set_grade( struct student *p, int n )
{
int count=0;
int i;
for(i=0; iscore) >= 85 && (p->score) <= 100)
(p->grade) = 'A';
else if((p->score) >= 70 && (p->score)<= 84)
(p->grade) = 'B';
else if((p->score) >= 60 && (p->score) <= 69)
(p->grade) = 'C';
else if((p->score) >= 0 && (p->score) <= 59)
{
(p->grade) = 'D';
count ++;
}
p++;
}
return count;
}
4.遇见的错误和解决方法
由于这道题难度较大 我是在姜健同学的指导下才勉强完成 故对问题理解不全面
6-2 结构体数组按总分排序
设计思路:
1:用指针变量指向结构中的sum,sum为每个同学每门成绩的和;
2:用选择排序法将sum进行排序;
流程图:
无
实验代码:
void calc(struct student *p,int n)
{
int i;
for(i=0;isum=(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2];
}
}
void sort(struct student *p,int n)
{
int i,k;
struct student x;
for(k=0;ksum<(p+i+1)->sum)
{
x=*(p+i);*(p+i)=*(p+i+1);*(p+i+1)=x;
}
}
}
}
学习周总结:本周学习了结构体方面的内容,对于我感觉难度很大,特别是与指针相结合的地方还是不明白用法,最后几道题在没有同学的帮助下根本无从下手。
图表: 第一次做这个有些数据还未记录