c语言课程设计题目程序题目求助

c语言编程问题,紧急求助,如果能得到帮助万分感谢_百度知道
c语言编程问题,紧急求助,如果能得到帮助万分感谢
请教高手,如何实现随机选题我参考了知道里面的学生信息管理还是做不出来,希望高手指点我要实现的是程序可以添加题目,修改题目,随机查看一个题目。要求是,可以设置多少次,以内不要查看到重复的题目,如果没有了就提示没有了开始我考虑用两个结构体,同时给题目多增加个字段(用来控制重复),每次查看了某个题目就把它从现有的结构体里面删除,然后加到另外一个去,,剩下的下次可以继续随机选择用增加的控制字段控制重复,当被选择一次,就给这个字段赋值100(假设设定的是100次不重复),下次不参与随机选择但是这个值减小1不知道有没有高手可以给点函数提示或者实现,如果能帮助实现真是万分感谢。总之无论有无结果有关注愿意帮助的朋友都谢谢你们了。
可以给个代码吗,各位大哥?? 感谢人太懒没取名字和一位匿名的大哥,哦,这样啊,我程序不是很熟,谢谢啊
提问者采纳
#include&stdio.h& #include &string.h& #include &time.h& #include &stdlib.h& #include &windows.h& #define N 50 //定义最大信息量 struct Course { char CourseName[20];
}; int CreateCourse(Course My_Course[]) { int i,sum=0; printf(&输入#表示输入结束!\n&); printf(&输入题目名称:&); for(i=0;i&N;i++) { scanf(&%s&,My_Course[i].CourseName); My_Course[i].flag=0; sum++; if(strcmp(My_Course[i].CourseName,&#&)==0) { sum--;
} //添加记录 int AddCourse(Course My_Course[],int n) { if(n&=N) { printf(&已经达到最大的题目数!&);
} else { printf(&输入题目名称:&); scanf(&%s&,My_Course[n].CourseName); My_Course[n].flag=0; n++; }
} //重命名 void Reneme(Course My_Course[],int n) {
char OldName[20],NewName[20]; printf(&输入原名:&); scanf(&%s&,OldName); printf(&输入新名:&); scanf(&%s&,NewName); for(i=0;i&n;i++) { if(strcmp(My_Course[i].CourseName,OldName)==0) { strcpy(My_Course[i].CourseName,NewName); printf(&修改成功!\n&);
} } printf(&你的输入有误,重命名失败!\n&);
} //随机查看 void SJChoise(Course My_Course[],int n,int m) { int b[N],i,k,j, if(m&n) { printf(&要查看的记录数大于当前的记录总数!\n&);
} for(i=0;i&N;i++) b[i]=-1; i=0; flag=0; while(i&m) { while(flag==0) { //调用Sleep函数使srand生成不同的种子 Sleep(50); flag=1; srand(time(0)); k=rand()%n; for(j=0;j&i;j++) if(k==b[j]) { flag=0;
} } My_Course[k].flag=1; printf(&%s\n&,My_Course[k].CourseName); b[i]=k; i++; flag=0; } } void main() { int n,i,sum,m; Course My_Course[N]; n=CreateCourse(My_Course); for(i=0;i&n;i++) printf(&%s &,My_Course[i].CourseName); printf(&\n&); printf(&**************简单菜单选择**************\n&); printf(&0 推出系统\n&); printf(&1 添加题目\n&); printf(&2 重命名\n&); printf(&3 随机查看记录\n&); printf(&****************************************\n&); while(1) { printf(&输入操作编号:&); scanf(&%d&,&m); switch(m) { case 0: case 1: n=AddCourse(My_Course,n); printf(&当前记录为:\n&); for(i=0;i&n;i++) printf(&%s &,My_Course[i].CourseName); printf(&\n&);
case 2: Reneme(My_Course,n); printf(&当前记录为:\n&); for(i=0;i&n;i++) printf(&%s &,My_Course[i].CourseName); printf(&\n&);
case 3: printf(&输入你要随机查看的记录数:&); scanf(&%d&,&sum); SJChoise(My_Course,n,sum);
} } } 注:1.程序是在VC++6.0下编写并调试通过。
2.程序中允许输入汉字。不是不能解决,你把#define N 50改成#define N 150 或者更大,在把参数sum初始化成100 就成了 你说的“随机选择在100次内不重复的问题”。在程序调试中,不可能先输入100 数据后再来验证。#define N 就是用来灵活处理问题规模的一个宏。写程序对输入的限制越少越好,程序要能解决一类问题,而不是一个问题。
提问者评价
谢谢了。我下去在多花点功夫
其他类似问题
c语言编程的相关知识
其他1条回答
题目总数N,把每道题目的首指针存到数组a[N]里。再用rand()%N生成随机序列号,放到数组b[N]里。for i=0 to N-1,输出a[b[i]],就好了。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&求助&关于linux下C语言多线程部分的编程题,谢谢。(题在贴内)_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:258,290贴子:
&求助&关于linux下C语言多线程部分的编程题,谢谢。(题在贴内)收藏
1)有一字符型全局变量c初始值为‘c’;
2)线程1循环读入数,当用户输入9时结束,并将c设置为'a'
3)线程2循环读入数,当用户输入0时结束,并将c设置为'b'
4)线程2需要在线程1退出后才能退出
5)主线程在检测到c从a变为b,或者从b变为a的时候退出提示:在主线程中使用pthread_cond_wait,在线程1和线程2中发出signal
谢谢大C吧的吧友了
新手求关照
创建2个线程,交替对一个计数器操作counter(初值为0),线程1每次对counter加3,线程2每次加5,如果counter到能被7整除,那么counter加8,看哪个线程先加到999,打印出相应信息(先到的线程号,计算次数)
还有就是这题,真的谢谢大家辣,比较急,谢谢
师父,两边都在找你啊
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或【求助】c语言程序设计案例与教程(含实验) 课后习题答案 清华大学出版社
c语言程序设计案例与教程(含实验) 课后习题答案 清华大学出版社
step1 上传文档... step2 填写文档信息... step3 提交回答...
填写文档信息
填写文档信息
正确解答1个求助,您将获得10经验值和1豆元。每天最多获得100经验值和1豆元
&2008- Inc. All Rights Reserved 豆丁网
发送豆丁消息邀请成员(特权每天可使用1次。每次最多2人)
(输入邀请成员的用户名,多个用户用“;”隔开)
豆丁提示:问一道C语言数据结构的编程题,求助高手帮忙~!_百度知道
问一道C语言数据结构的编程题,求助高手帮忙~!
已知单链表中La中数据元素按非递减有序排列。按两种不同情况,分别写出算法将元素x插入到La合适位置上,保持该表有序性:1、La带头节点
2、la不带头节点....基础点的代码就可以,先谢谢了!
提问者采纳
这个程序是以前做的,看起来复杂,其实是太多的判断和提示内容而已,你看看主函数,再运行一下,再看看创建链表的函数,关键部分并不多,应该不难看懂,另外模块我做的比较细,有些函数你不必理会,希望能帮到你,谢谢#include &stdio.h&#include &string.h&#include &stdlib.h&#define SN 2 //科目数量(score number)typedef struct student{ char num[10],
name[10]; float score[SN],
struct student * }STU;/**********输入链表单元内容************/void input(STU *p){
printf(&please input number:\n&); scanf(&%s&,p-&num); printf(&please input name:\n&); scanf(&%s&,p-&name);
printf(&please input %d scores:\n&,SN);
p-&sum=0; for(i=0;i&SN;i++) {
scanf(&%f&,&p-&score[i]);
p-&sum+=p-&score[i]; } p-&avg=p-&sum/SN;}/**********创建一个链表单元**********/STU *creat_node(){ STU *p; p=(STU *)malloc(sizeof(STU)); if(p == NULL)
{ printf(&No enough memory !&);
} input(p); p-&next=NULL; }/**********创建一个链表**********/STU *creat_list(){ STU *head=NULL,*p; char str[4]; printf(&List creating...\n&); do {
printf(&Do you want to continue (yes/no) :&);
scanf(&%s&,str);
if(strcmp(str,&yes&)==0)
p=creat_node();
if(head==NULL)
p-&next=//前插法
if(strcmp(str,&yes&)!=0&&strcmp(str,&no&)!=0)
printf(&You must input 'yes' or 'no'.\n&);
//getchar();
if(strcmp(str,&no&)==0)
//getchar(); }while(1); printf(&List create end...\n\n&);
}/************输出一个链表头部**********/void print_a_head(){
printf(&number\tname\tavg\tsum\t&); for(i=0;i&SN;i++)
printf(&score%d\t&,i+1); putchar(10);}/************输出一个链表单元**********/void print_a_node(STU *fin){
printf(&%s;\t%s;\t%0.2f;\t%0.2f\t&,fin-&num,fin-&name,fin-&avg,fin-&sum); for(i=0;i&SN;i++)
printf(&%0.2f\t&,fin-&score[i]); putchar(10);}/************输出链表**********/int print_list(STU *stu){ STU *p= if(stu==NULL) {
printf(&no records!!!\n&);
return (0); } print_a_head(); while(p!=NULL) {
print_a_node(p);
p=p-& } putchar(10); return (0);}void main(){ STU * head=creat_list();//创建链表 print_list(head);//输出链表}另外,站长团上有产品团购,便宜有保证
其他类似问题
高手帮忙的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【求助】斐波拉契序列程序的问题?_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:258,290贴子:
【求助】斐波拉契序列程序的问题?收藏
#include &stdio.h& int main (void){ int f1, f2, f3;
f1 = 1; f2 = 2;
do {printf("请输入您需要求的项数:"); scanf ("%d", &n);
if (1 == n) {
f3 = 1; } else if (2 == n) {
f3 = 2; } else {
for (i=3; i&=n; ++i)
f3 = f1+f2;
printf ("你要的答案是:%d\n",f3); printf ("您想继续吗?(Y/N)");
scanf (" %c", &ch); } while ('y' == ch);
return 0;}这个程序为啥在答案上会出错!!从输入4开始的!!屏幕显示的答案如下:请输入您需要求的项数:1你要的答案是:1您想继续吗?(Y/N)y请输入您需要求的项数:2你要的答案是:2您想继续吗?(Y/N)y请输入您需要求的项数:3你要的答案是:3您想继续吗?(Y/N)y请输入您需要求的项数:4你要的答案是:8您想继续吗?(Y/N)y请输入您需要求的项数:5你要的答案是:34您想继续吗?(Y/N)n
你先把这个数列的特征弄清楚!1,1,2,3,5,8,13……第二项就错了
......其实,你可以自己算一下,你的算法出问题了。f1和f2,已经被赋值了,所以每次循环开始都要初始化。把f1和f2的赋值写到 do{}while里面
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 c语言课程设计题目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信