#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define SIZE_STU 20
#define SIZE_COU 20
#define SIZE_SEL 20
//////////////函数声明部分
void home(void);
void stu_operate(void);
void cou_operate(void);
void statistic(void);
void choose(void);
void delete_sel(int);
//--学生信息部分:
void input_stu(void);
void search_stu(void);
void search_stu_id(void);
void search_stu_name(void);
void show_stu(void);
void edit_stu(void);
void renew_stu(void);
void delete_stu(void);
//--课程信息部分:
void input_cou(void);
void search_cou(void);
void search_cou_id(void);
void search_cou_name(void);
void show_cou(void);
void edit_cou(void);
void renew_cou(void);
void delete_cou(void);
/*学生信息结构体*/
struct student_info {
char stu_ID[20];
char stu_name[20];
char sex[20];
char age[20];
char collage[20];
char grade[20];
char contact[20];
}stu[SIZE_STU];
/*课程信息结构体*/
struct course_info {
char course_ID[20];
char course_name[20];
char property[20];
char period[20];
char credit[20];
char time[20];
int people;
}cou[SIZE_COU];
//--------------------------------------课程信息插入--------------------------------------
void input_cou(void){
char flag;
FILE * fp;
//--判断文件是否为空
fp = fopen("course.txt","r+");
flag = fgetc(fp);
if(flag==EOF){
fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
}
fclose(fp);
//--
fp = fopen("course.txt","a+");
if(fp == NULL){
printf("打开文件失败!");
system("cls");
cou_operate();
}
printf("代码\t名称\t性质\t总学时\t学分\t开课学期\n");
while(1){
j++;
scanf("%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
//--数据查重
int h;
for(h = 0;h < j;h++){
if(j == 0) break;//第一条数据不需要查重
if (strcmp(cou[h].course_ID,cou[j].course_ID)==0) {
printf("该课程号已存在,请重新输入!\n");
scanf("\n%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
h = -1;
}
}
//--
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[j].course_ID,cou[j].course_name,cou[j].property,cou[j].period,cou[j].credit,cou[j].time,cou[j].people);
printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
fflush(stdin);
scanf("%c",&flag);
fclose(fp);
if(flag!='y'&&'Y') break;
fp = fopen("course.txt","a");
}
renew_cou();
system("cls");
cou_operate();
}
/*查询课程信息*/
void search_cou(void){
system("cls");
printf("\n请选择查询方式:");
printf("\n 1.课程号查询");
printf("\n 2.课程名查询");
printf("\n请选择:");
int h;
scanf(" %d",&h);
switch(h){
case 1:
search_cou_id();
break;
case 2:
search_cou_name();
break;
}
}
/*课程号查询*/
void search_cou_id(void){
system("cls");
char id[20];
printf("\n输入课程号:");
fflush(stdin);
scanf("%s",id);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,id)==0){
system("cls");
printf("查找成功!");
printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
printf("\n\t-----------------------------------------------------------------");
printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
system("pause");
system("cls");
cou_operate();
}
}
system("cls");
printf("没有此课程号!\n");
system("pause");
system("cls");
cou_operate();
}
/*课程名查询*/
void search_cou_name(void){
system("cls");
char name[20];
printf("\n输入课程名:");
fflush(stdin);
scanf("%s",name);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_name,name)==0){
system("cls");
printf("查找成功!");
printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
printf("\n\t---------------------------------------------------------");
printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
system("pause");
system("cls");
cou_operate();
}
}
system("cls");
printf("没有此课程名!");
system("pause");
system("cls");
cou_operate();
}
/*显示所有课程信息*/
void show_cou(void){
int h;
if(j == -1){
printf("\n还没有录入信息!\n");
system("pause");
system("cls");
cou_operate();
}
system("cls");
printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
printf("\n\t-------------------------------------------------------------");
for(h = 0;h <= j;h++){
printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
}
//
fflush(stdin);
printf("\n\t1.修改");
printf("\n\t2.删除");
printf("\n\t3.返回");
printf("\n\n 选择要进行的操作:");
int flag;
fflush(stdin);
scanf("%d",&flag);
switch(flag){
case 1:
edit_cou();
break;
case 2:
delete_cou();
break;
default:
system("cls");
cou_operate();
break;
}
}
/*编辑课程信息*/
void edit_cou(void){
printf("\n输入需要编辑的课程号:");
char id[20];
getchar();
scanf("%s",id);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行
system("cls");
printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期");
printf("\n\t-------------------------------------------------------------");
printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time);
printf("\n这是修改前的数据,请依次输入修改值:\n\t");
fflush(stdin);
scanf("%s %s %s %s %s %s",&cou[h].course_ID,&cou[h].course_name,&cou[h].property,&cou[h].period,&cou[h].credit,&cou[h].time);
int k;
for(k = 0;k <= j;k++){
if(strcmp(cou[k].course_ID,cou[h].course_ID)==0){
if(k==h){
continue;
} else {//课程号不唯一
printf("\n此课程号已存在,重新输入:");
fflush(stdin);
scanf("%s",&cou[h].course_ID);
k = -1;
}
}
}
/*将修改信息写入文件*/
//思想:将原文件重新写入一遍
renew_cou();
system("cls");
printf("修改成功!\n");
system("pause");
system("cls");
cou_operate();
}
}
printf("\n此课程号不存在!\n");
system("pause");
system("cls");
cou_operate();
}
/*删除课程信息*/
void delete_cou(void){
printf("\n输入需要编辑的课程号:");
char id[20];
getchar();
scanf("%s",id);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行
system("cls");
//如果只有一条记录
if(j==0){
j = -1;
renew_cou();
printf("修改成功!\n");
system("pause");
system("cls");
cou_operate();
}
//查看是否有人选课
if(cou[h].people!=0){//有人选课时
int a;
for(a = 0;a <= x;a++){
if(sel[a].c == h){
delete_sel(a);
a = -1;
x--;
continue;
}
}
}
int k;
for(k = h+1;k <= j;k++,h++){//将数组直接向前移动
strcpy(cou[h].course_ID,cou[k].course_ID);
strcpy(cou[h].course_name,cou[k].course_name);
strcpy(cou[h].property,cou[k].property);
strcpy(cou[h].period,cou[k].period);
strcpy(cou[h].credit,cou[k].credit);
strcpy(cou[h].time,cou[k].time);
}
/*将修改信息写入文件*/
//思想:将原文件重新写入一遍
renew_cou();
j--;
system("cls");
printf("修改成功!\n");
system("pause");
system("cls");
cou_operate();
}
}
printf("\n此课程号不存在!\n");
system("pause");
system("cls");
cou_operate();
}
//--功能函数
/*更新系统数据至文件*/
void renew_stu(void){
FILE * fp;
fp = fopen("student.txt","w+");
if(fp == NULL){
printf("\n打开文件失败,无法保存至文件。\n");
fclose(fp);
return ;
}
fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
if(i == -1){
fclose(fp);
return;
}
int h;
for(h = 0;h <= i;h++){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
}
fclose(fp);
}
void renew_cou(void){
FILE * fp;
fp = fopen("course.txt","w+");
if(fp == NULL){
printf("\n打开文件失败,无法保存至文件。\n");
fclose(fp);
return ;
}
fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
if(j == -1){
fclose(fp);
return;
}
int h;
for(h = 0;h <= j;h++){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people); }
fclose(fp);
}
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int arr[105];
bool vis[105];
int main(){
int n,k;
scanf("%d%d",&n,&k);
int i=0,j=0,num=0,cnt=0;
while(true){
j=i%n+1;
if(!vis[j]) num++;//没走过就报数
if(num==k){//当报的数为指定值时,则标记为已出圈
num=0;
cnt++;
vis[j]=true;
printf("%d ",j);
if(cnt==n) break;
}
i++;
}
return 0;
}
对于你遇到的错误信息,需要你提供更具体的信息,例如错误的代码段、报错信息等等才能帮助你解决问题。如果你需要解决该问题,请提供完整信息,然后我会尽力提供帮助。
关于命令行参数的处理,参考资料提供了一些函数和方法,可以根据具体情况选择使用。如果你确实需要处理长选项,可以参考段落4中介绍的getopt_long函数,实现对长选项的处理。需要注意的是,函数的参数和用法都需要按照函数原型来使用,遵循具体的用法规范。
非常好问题,爱来自425-1