想为课代表(一个妹子)写个程序,求大佬指点!!!
本帖最后由 changzuo 于 2020-3-7 20:16 编辑我想用C语言统计班级交作业的人数和未交的,定义一个结构体,一个字符串数组(存储名字)一个整型变量(如果是零则没有交作业,如果是一则交了作业),输入名字,完成时输入"done"表示结束,输出未交作业的人名。
代码写完发现不对,实在不知道怎么改了。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#define N 5
struct book
{
char name;
int homewk;
};
struct temp
{
char name;
};
struct book books = {{"lll", 0},{"lll", 0},{"lll", 0},{"lll", 0}};
int find(char *a, char *b);
int main(int argc, char const *argv[])
{
int i, j;
struct temp tmp;
const char* done = "done";
for(i=0;i<N;i++){
gets(tmp.name);
if(find(tmp.name, done)){
break;
}
}
for(i=0; i<N;i++){
for(j=0;j<N;j++){
books.homewk = find(tmp.name, books.name);
}
}
i=0;
while(!books.homewk){
printf("%s\n", books.name);
}
return 0;
}
int find(char * a, char * b){
int result = 0;
int i;
for(i=0; a != '\0' && b != '\0'; ){
if(a==b) i++;
else {
result = 0;
break;
}
}
if(a=='\0'&&b=='\0')
result = 1;
return result;
}
请吊大的鱼油们看看哪里有问题
有没有报错信息 在进行名字对比的时候建议你用strcmp函数
比你的find更好用 不需要用两个结构体来存储班上的人
可以把第一个结构体的name全不初始化为班上人的名字 homework全不初始化为零
然后再用你一个循环接受名字输入 再在结构体数组中查找 如果有相同名字 就将他的homework变成1
表示交了作业 当输入done退出后 再执行一个循环找出所有homework为 0的人 再打印出来 #include <stdio.h>
#include <string.h>
#define MAX 3 //班上人数
int main(void)
{
typedef struct Stu
{
char name;
int homework;
}
Stu;
Stu stu = {"1", 0, "2", 0, "3", 0};
char name;
int i, j;
for(i = 0; i < MAX; i++)
{
printf("请输入第%d个交作业的人(done退出):", i + 1);
scanf("%s", name);
getchar();
if(!strcmp(name, "done"))
{
break;
}
for(j = 0; j < MAX; j++)
{
if(!strcmp(name, stu.name))
{
stu.homework = 1;
}
}
}
for(i = 0; i < MAX; i++)
{
if(stu.homework == 0)
{
printf("%s没交作业!\n", stu.name);
}
}
return 0;
}
兄弟加油哥只能帮你到这里了 就是要努力呀 发表于 2020-3-8 11:02
兄弟加油哥只能帮你到这里了
谢谢大佬 就是要努力呀 发表于 2020-3-8 10:44
在进行名字对比的时候建议你用strcmp函数
比你的find更好用
刚学编程没多久,用的不是很灵活,还是要多练习 changzuo 发表于 2020-3-8 11:35
刚学编程没多久,用的不是很灵活,还是要多练习
没事多看多学多问我也才学完基础
页:
[1]