C语言高手速来救命
这个排序很好写,用stdlib的qsort函数就行啦~
用这个函数可以实现自定义的快排,可以排序的对象很多,基本上所有的数据结构能可以用它排的,结构体也很好排。
具体用法网上有。我只给出我写的一个例子吧:
#define MAX_ITEMS 10typedef struct _Item Item;typedef struct _Data_info Data_info;typedef enum _Sort_Method Sort_Method;struct _Item { long num; float math; float eng; float phy; float prog_c;};struct _Data_info { int max_items; int items_now; //char* date; Item* pItems[MAX_ITEMS];};enum _Sort_Method{ SORT_M_NUM, SORT_M_SCORE_M, SORT_M_SCORE_E, SORT_M_SCORE_P, SORT_M_SCORE_C};static int cmp_num(const void* a,const void* b){ return (*(Item *)a).num > (*(Item *)b).num ? 1 : -1;}static int cmp_phy(const void* a,const void* b){ return (*(Item *)a).phy > (*(Item *)b).phy ? 1 : -1;}static int cmp_math(const void* a,const void* b){ return (*(Item *)a).math > (*(Item *)b).math ? 1 : -1;}static int cmp_eng(const void* a,const void* b){ return (*(Item *)a).eng > (*(Item *)b).eng ? 1 : -1;}static int cmp_prog_c(const void* a,const void* b){ return (*(Item *)a).prog_c > (*(Item *)b).prog_c ? 1 : -1;}static int (*pCMP[5])(const void*,const void*)={&cmp_num,&cmp_math,cmp_eng,cmp_phy,cmp_prog_c};//此处加不加&都是一样的,编译器会把函数名会转换为函数指针//所以pCMP[1](a,b)与*pCMP[1](a,b)也是一样的void sort_all_items(Data_info* mydatabase,Sort_Method method){ qsort(mydatabase->pItems,MAX_ITEMS,sizeof(mydatabase->pItems[0]),pCMP[method]); } 这是从一个工程中截取出来的一小部分,所以代码不完整
#include
#include
void plus(int a,int b)
{int s;
s=a+b;
printf("%d+%d =%d
",a,b,s);
}
void sub(int a,int b)
{int s;
s=a-b;
printf("%d-%d =%d
",a,b,s);
}
void mul(int a,int b)
{int s;
s=a*b;
printf("%d*%d =%d
",a,b,s);
}
void chufa(int a,int b)
{float s;
s=(float)a/b;
printf("%d/%d =%f
",a,b,s);
}
int main()
{int flag;
char ch='Y';
while(ch=='Y')
{int a,b;
printf("依次输入你要操作的两个整数:");
scanf("%d%d",&a,&b);
printf("请输入选择项目 (1 2 3 4 5) :");
printf(" 1 加法运算 2 减法运算 3 乘法运算 4 除法运算 5退出
");
scanf("%d",&flag);
switch(flag)
{
case 1:
plus( a, b);
break;
case 2:
sub(a,b);
break;
case 3:
mul(a,b);
break;
case 4:
chufa(a,b);
break;
case 5:
return 0;
break;
default:
printf("enter error!!!");
break;
}
printf("请问是否还要继续?请选择!!(Y/N):");
scanf("%s",&ch);
}
return 1;
}
兄弟,此程序运行是对的,上面的程序不仅相比之下解决好了"退出"菜单的问题,你还可进行不止十次运算,只要你愿意,无数次都可以!!!呵呵 注意里面case语句以及while循环就行了!!不用那么麻烦去引用Math.h中的文件,希望对你用用。。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
void Menu();
void Plus();
void Minus();
void Multiply();
void Dir();
int main()
{
int n, flag = 0;
while(1)
{
Menu();
do
{
flag = 0;
scanf("%d", &n);
switch(n)
{
case 1: Plus(); break;
case 2: Minus(); break;
case 3: Multiply(); break;
case 4: Dir(); break;
case 5: exit(0);
default:
{
printf("输入有误, 请重新输入!");
flag = 1;
}
}
}
while(flag);
}
return 0;
}
void Menu()
{
system("cls");
printf("\t\t欢迎来到小学生算数训练\n");
printf("\t\t\t1.加法训练\n");
printf("\t\t\t2.减法训练\n");
printf("\t\t\t3.乘法训练\n");
printf("\t\t\t4.除法训练\n");
printf("\t\t\t5.退出\n");
printf("\t\t\t请选择: ");
}
void Plus()
{
system("cls");
printf("\t\t现在是加法训练\n\n");
srand((unsigned)time(NULL));
int plu[10][4];
int m, n, result, input;
for(int i = 0; i < 10; i++)
{
m = rand() % 10;
n = rand() % 10;
printf("请计算: %d + %d = ", m, n);
result = m + n;
scanf("%d", &input);
if(input != result)
printf("真可惜, 回答错误, 请再接再厉!\n");
else
printf("恭喜你, 回答正确, 请继续加油!\n");
plu[i][0] = m;
plu[i][1] = n;
plu[i][2] = input;
plu[i][3] = result;
}
printf("===============十道题目回答如下=================\n\n");
for(int j = 0; j < 10; j++)
{
printf("%d + %d = %d\t", plu[j][0], plu[j][1], plu[j][2]);
if(plu[j][2] != plu[j][3])
printf("(正确答案为%d)", plu[j][3]);
printf("\n");
}
printf("输入任意键返回主菜单\n");
getch();
}
void Minus()
{
system("cls");
printf("\t\t现在是减法训练\n\n");
srand((unsigned)time(NULL));
int plu[10][4];
int m, n, result, input;
for(int i = 0; i < 10; i++)
{
do
{
m = rand() % 10;
n = rand() % 10;
}while(m < n);
printf("请计算: %d - %d = ", m, n);
result = m - n;
scanf("%d", &input);
if(input != result)
printf("真可惜, 回答错误, 请再接再厉!\n");
else
printf("恭喜你, 回答正确, 请继续加油!\n");
plu[i][0] = m;
plu[i][1] = n;
plu[i][2] = input;
plu[i][3] = result;
}
printf("===============十道题目回答如下=================\n\n");
for(int j = 0; j < 10; j++)
{
printf("%d - %d = %d\t", plu[j][0], plu[j][1], plu[j][2]);
if(plu[j][2] != plu[j][3])
printf("(正确答案为%d)", plu[j][3]);
printf("\n");
}
printf("输入任意键返回主菜单\n");
getch();
}
void Multiply()
{
system("cls");
printf("\t\t现在是乘法训练\n\n");
srand((unsigned)time(NULL));
int plu[10][4];
int m, n, result, input;
for(int i = 0; i < 10; i++)
{
m = rand() % 10;
n = rand() % 10;
printf("请计算: %d * %d = ", m, n);
result = m * n;
scanf("%d", &input);
if(input != result)
printf("真可惜, 回答错误, 请再接再厉!\n");
else
printf("恭喜你, 回答正确, 请继续加油!\n");
plu[i][0] = m;
plu[i][1] = n;
plu[i][2] = input;
plu[i][3] = result;
}
printf("===============十道题目回答如下=================\n\n");
for(int j = 0; j < 10; j++)
{
printf("%d * %d = %d\t", plu[j][0], plu[j][1], plu[j][2]);
if(plu[j][2] != plu[j][3])
printf("(正确答案为%d)", plu[j][3]);
printf("\n");
}
printf("输入任意键返回主菜单\n");
getch();
}
void Dir()
{
system("cls");
printf("\t\t现在是除法训练\n\n");
srand((unsigned)time(NULL));
int plu[10][4];
int m, n, result, input;
for(int i = 0; i < 10; i++)
{
do
{
m = rand() % 10;
n = rand() % 10;
}while(m == 0 || n == 0);
result = m * n;
int temp;
temp = m;
m = result;
result = temp;
printf("请计算: %d / %d = ", m, n);
scanf("%d", &input);
if(input != result)
printf("真可惜, 回答错误, 请再接再厉!\n");
else
printf("恭喜你, 回答正确, 请继续加油!\n");
plu[i][0] = m;
plu[i][1] = n;
plu[i][2] = input;
plu[i][3] = result;
}
printf("===============十道题目回答如下=================\n\n");
for(int j = 0; j < 10; j++)
{
printf("%d / %d = %d\t", plu[j][0], plu[j][1], plu[j][2]);
if(plu[j][2] != plu[j][3])
printf("(正确答案为%d)", plu[j][3]);
printf("\n");
}
printf("输入任意键返回主菜单\n");
getch();
}
是图形界面还是像批处理那样的.
逻辑疑惑,望高手速来救命!
感觉上一个回答很有些意思,不过还是想再说几句。首先,LZ所学的逻辑只是逻辑的一部分。这一部分是早就发展起来的,简单而又争议不大的一部分,它并不代表人类思维的全部,只能反映人类思维的机械面,不能反映人类思维的智能面。反映人类思维的智能面是现代逻辑发展的必然趋势。其次,LZ的许多疑问、困惑...
救命!英语四级听力应该怎么练
救命!英语四级听力应该怎么练 别复制一大堆资料,提供一下自己的经验!我现在除了前几个短对话后面的...要从整体上把握听音的内容,避免在听音时只注重单词、语法、句子结构、词句的翻译等个别的语言现象。...最好是按一个个意群来听,水平高的可以按句子来听,实在不行的开始的时候2-3个单词一听也可以。
速求Linux安装问题!望高手帮我!救命呢?!
在出现“语言选择”的画面中,我们选择 “simple chinese”(简体中文),这样接下去的安装过程界面的文字都会改为中文。在“键盘配置”画面中接受默认的“uk”(美国英语式)键盘。选择“下一步”,在安装方法项中选用"硬盘驱动器"安装,选择"下一步",在选择分区中选"\/dev\/haa6"(E盘),因为我们是把那...
电脑高手速来,救命...能告诉我这个桌面的快捷方式为什么这样吗??_百...
快捷方式的小箭头,不过你的图标可能损坏了
电脑高手救命啊
☆1.市电电压不稳 一般家用计算机的开关电源工作电压范围为170V-240V,当市电电压低于170V时,计算机就会自动重启或关机。因为市电电压的波动我们有时感觉不到,所以就会误认为计算机莫名其妙的自动重启了。解决方法:对于经常性供电不稳的地区,我们可以购置UPS电源或130-260V的宽幅开关电源来保证计算机...
救命啊,求读写任务的短文翻译,翻译就可以啊
另一方面,并非所有的小学都可以提供外语课程。在这种情况下,没有机会学习外语的孩子,会发现学习语言的程度会有很大的差距。因而可能使他们失去学习的兴趣或拒绝继续学习。总结来说,如果孩子们可以在小学就开始学习外语的益处更多。他们可以迅速地学习外语并以它作为母语。~~~纯人手翻译,欢迎采纳~~~原文...
救命啊我机子一直死机,高手能帮帮我吗
机子一直弹出winlogon.exe应用程序错误以及KPFWSvc.EXE错误的对话框,只要一点机子就死机,能否请高手帮帮我,告诉我如何解决这一问题,感激涕零... 机子一直弹出winlogon.exe应用程序错误以及KPFWSvc.EXE错误的对话框,只要一点机子就死机,能否请高手帮帮我,告诉我如何解决这一问题,感激涕零 展开 我来答 2...
人类是怎样学习语言的
人类是怎样学习语言的:在语言起源的过程中,语法是最先出现的,还是最后才形成的?这些问题都是语言学研究的大问题。目前比较流行的观点是著名语言学家乔姆斯基的观点。他提出了“普遍语法”理论,并认为语言的诞生是由于大约5万年前到10万年前的单个基因突变而产生的,这种突变使得智人拥有了建构复杂句子...
救命啦……请大家帮我翻译一段文字,汉译英,急用,谢谢啦……
With the accelerating process of economic globalization and trade liberalization in the global expansion of non-tariff barriers as tariff barriers as well as traditional means of trade protection have become increasingly weak, gradually being reduced or excluded, and a new trade protection ...
救命啊!!!红警尤里的高手来看看
肯定是没钱了,没电时只是速度慢而不会停。用金山游侠改钱?你太有创意了。不要用修改器了,最好的方法是改rulesmd.ini文件,自己动手吧。其中分两种办法改钱:1:把你觉得造的慢的单位价格改到100以下,就是这一句cost=xxxx 2:修改苏联工业工厂的代码或借用其代码:FactoryPlant=yes InfantryCost...
宰父吉思凯: 用C写了一遍你看下行不行.注意不要输入错误了,要按格式,不然会出错. #include...
西丰县18320315331: c语言问题 高手速回救命!!!?
宰父吉思凯: 试试这些代码 #include <stdio.h> void main() { int a[9]={1,2,3,4,5,6,7,8,9}; for(int i=0;i<9;i++) { printf("%d",a[i]); } } 哦,漏了个0, #include <stdio.h> void main() { int a[9]={0,1,2,3,4,5,6,7,8,9}; for(int i=0;i<=9;i++) { printf("%d",a[i]); } }
西丰县18320315331: C语言高手速进...求救啊!?
宰父吉思凯: k=sqrt(n); //只需要判断到根号n就行了 for(i=2;i<=k;i++) if(n%i==0) //对2到k的数判断能否整除n break; //当一有一个能整除n时就退出循环 if(i>=k+1) //判断之前的 i 是否已经加到了 k+1 ,如果是的话也就是之前所有的数都不能整除 n ,这就说明n是素数 return 1; else return 0; if(n%i==0) //对2到k的数判断能否整除n break; //当一有一个能整除n时就退出循环,如果没有循环到i = k+1 但是n%i==0了,这样退出在下面判断 i >= k+1 就是不成立,也就会是else ,将返回0,就说明不是素数了
西丰县18320315331: 急求!各位C语言高手大哥救命!?
宰父吉思凯: <script language="javascript"> for ( i = 1; i <= 10; i++ ) { alert("hello, world"); alert("somethings to tell you..."); } </script> 这样保存成html就最简单了~
西丰县18320315331: 来C语言高手救救啊?
宰父吉思凯: #include <stdio.h> void main(){ int a,b,c,max; printf("Please input a、b、c:\n"); scanf("%d%d%d",&a,&b,&c);//代码没啥问题,应该是你的输入加了,(逗号),而你在测试时没输入逗号导致的 max=a; if (max<b) max=b; if (max<c) max=c; printf("The largest number is %d\n",max);}
西丰县18320315331: 会C语言的高手来救命啊~~?
宰父吉思凯: Borlandc C++ 3.1编译器哦.
西丰县18320315331: 救命啊!C语言高手们,指针的问题真是一窍不通啊?
宰父吉思凯: &就是取地址,*就是取地址上的值 1.定义了一个指针变量*ptr,ptr=&b;是把b的地址取出来赋给ptr,这是ptr指向变量b,即*ptr就是b. 2.*ptr=&b定义一个指针变量ptr并且指向b,a=*ptr就是把b的值赋值给a,等同于a=b. 3.同理,*ptr就是变量c,下面的代码就是把c的值赋值给b,然后把a的值赋值给c. 4.同理定义指针变量*ptr,把c的地址赋值给ptr使*ptr指向变量c,b赋值给c,此时a=*ptr就是a=c.
西丰县18320315331: c语言高手来~~急?
宰父吉思凯: 做了两道 3题的折半法是什么 二分查找吗#include<stdio.h> int main() { int a[100],i=0,c,j,b; scanf("%d",&j); for(c=0;c<j;c++) scanf("%d",&a[c]); j--; while(i<j) { b=a[j]; a[j]=a[i]; a[i]=b; j++; i--;} for(i=0;i<c;i++) printf("%d ",a[i]); } #include<stdio.h...
西丰县18320315331: C语言求救~~~希望高手指点一下啊 - ?
宰父吉思凯: #include#include#define NULL 0#define LEN sizeof(struct work)struct work{ char name[20]; int age; float wages; struct work *next;};int...
西丰县18320315331: c语言程序!!救命?
宰父吉思凯: 创建一个结构 struct student {char name[20];int age; }stu[10]; int i=0,j=0,count=0; //然后录入学员信息(这里就不写了,很简单的)void sort(struct student stu[]) //按成绩排序 {struct student s;for(i=0;i<count;i++){for(j=0;j<count-i-1;j++)if(stu[j]....