c语言中素数判断问题。。。

#include
#include
void main(){
int m; // 输入的整数
int i; // 循环次数
int k; // m 的平方根

printf("输入一个整数:");
scanf("%d",&m);

// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
k=(int)sqrt( (double)m );
for(i=2;i<=k;i++)
    if(m%i==0)

if(i>k)
    printf("%d是素数。\n",m);
else
    printf("%d不是素数。\n",m);
printf("%d",i);
return 0;

}

输入25,屏幕上显示25不是素数,但是i=6,不是应该显示25是素数吗,请教一下大家。

c

8个回答

应该是double的强制类型转换出了问题,转换后数值不对什么的,25的确不是素数,素数是说除了1和其本身外没有数可以整

qq_38506567
qq_38506567 if后面加上break语句之后,就可以避免这个事情了,但是不知道上面的代码出了什么问题
2 年多之前 回复

不应该是用for循环暴力枚举求余来判断吗?

除来着,i等于6应该是有问题,而且求素数不应该这么做吧。。(个人观点,不记得了)

你可以在if(i>k)这句之前打印一下i和k的值,你会发现它们相等。
原因在于你在if(m%i==0)这句后面没有加分号,因此程序认为下面的整个if和else块是for循环的循环体,当i=5的时候,进入if块,然后开始判断,刚好k也等于5,于是满足了else语句的条件,输出25不是素数这句话,然后for循环执行最后一句话,让i加1,于是你在后面打印i的时候变成了6
想要纠正这种情况的话,只要在if(m%i==0)后面加上一个分号即可

baidu_38862430
baidu_38862430 可以
2 年多之前 回复
qq_38506567
qq_38506567 恩恩,懂了。谢谢
2 年多之前 回复

这个函数用来求素数
int isPrime(int num) {
int i, flag = 0;
for(i = 2; i < sqrt(num); i++) {
if(num % i == 0) {
flag = 1;
break;
}
}
return !flag;
}

25确实不是素数。
可以从2开始循环,一直到sqrt(n),每一个都不能整除

#include
#include
bool sushu(int n)//判断是否为质数的函数
{
for(int i=2;i<=sqrt(n);i++)//从2到sqrt(n)枚举
if(n%i==0) return 0;//一旦有整除就不是
return 1;//否则就不是
}
int main()
{
int n;
scanf("%d",&n);//判断的数
if(n==1) printf("hehe");//特殊处理1
if(sushu(n)) printf("Yes");//是
else printf("No");//不是
}

#include 
#include 
void main(){
int m; // 输入的整数 
int i; // 循环次数
int j;
int k; // m 的平方根
printf("输入一个整数:");
scanf("%d",&m);

// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
k=(int)sqrt( (double)m );
for(i=2;i<k;i++)//去掉了等号
    if(m%i==0)j=1;

if(j==0)
    printf("%d是素数。\n",m);
else
    printf("%d不是素数。\n",m);
printf("%d",i);
return 0;
}
u014603621
茶凉尐 再加个判断输入是否为1
2 年多之前 回复

如果你注意代码风格:
在每个for语句,if语句里无论有几条语句,都加上花括号{} 可能就不会出现这种问题....

qq_38855087
qq_38855087 最好有代码补全
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言中的问题!
有以下程序:rnmain()rnrn int x=102,y=012;rn printf("%2d,%2d",x,y);rnrn请问输出结果y为什么是10而不是12?rn谢谢!!
c语言中问题
我想知道用C语言如何实现char *strarray(char *strsrc,char *strdst)
C语言中的问题
我在vc6中建立了一个工程,其中都是.c文件,编译时没有错误,能顺利运行,然后我又建立了一个MFC工程,我想把.c文件都加到MFC工程中,但是在编译的时候出现了以下的错误,请高手指导,应如何解决????? rn例如:int img_convert(AVPicture *dst, int dst_pix_fmt,const AVPicture *src, int pix_fmt,int width, int height);在avcodec.h中声明,函数体在imgconvert.v中int img_convert()略;在.cpp中调用此函数!!在此.cpp函数中已经引了avcodec.h头文件!!!编译时就出现了以下链接的错误!!rn是c,c++文件都有,MFC中的主函数是.cpp文件rnrnCompiling... rnSkipping... (no relevant changes detected) rnflvplayerDlg.cpp rnLinking... rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl img_convert(struct AVPicture *,int,struct AVPicture const *,int,int,int)" (?img_convert@@YAHPAUAVPicture@@HPBU1@HHH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avpicture_fill(struct AVPicture *,unsigned char *,int,int,int)" (?avpicture_fill@@YAHPAUAVPicture@@PAEHHH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avpicture_get_size(int,int,int)" (?avpicture_get_size@@YAHHHH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avcodec_decode_video(struct AVCodecContext *,struct AVFrame *,int *,unsigned char const *,int)" (?avcodec_decode_video@@YAHPAUAVCodecContext@@PAUAVFrame@@PAHPBEH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avcodec_open(struct AVCodecContext *,struct AVCodec *)" (?avcodec_open@@YAHPAUAVCodecContext@@PAUAVCodec@@@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "struct AVCodec * __cdecl avcodec_find_decoder(enum CodecID)" (?avcodec_find_decoder@@YAPAUAVCodec@@W4CodecID@@@Z) rn
C语言中 && 的问题
int a=0x1000;rnbool b=a && (a-1);rnb的值是多少?为什么?
问题:C语言中的问题
#includernrnvoid main()rnrn FILE *fp;rn char ch,filename[100];rn scanf("%s",filename);rn if((fp = fopen(filename,"w")) == NULL)rn rn printf("cannot open file\n");rn exit(0);rn rn ch = getchar();rn while(ch != '#')rn rn fputc(ch,fp);rn putchar(ch);rn ch = getchar();rn rn fclose(fp);rnrn--------------------------------------------------rnhello,world.#rnhello,world.rn--------------------------------------------------rn问题:getchar不是输入单个字符么,应该每次只能输入一个字符啊?为什么可以输入字符串?并且可以完整输出?
C语言中的大数相乘问题
Example: 11111111111111111111111 * 1111111111111111111111 = ? char *str1 = (char *)malloc(sizeof(char) * 100); char *str2 = (char *)malloc(sizeof(char)* 100); scanf("%s%s", str1, str2);
C语言中scanf问题
scanf
c语言中的指针问题
#includernrnvoid main(void)rnrn char *p1;rn char a[] = "hello world";rn p1 = a;rn printf("%s\n%s\n",p1,*p1);rnrn int b[] = 1,3,5;rn int *p2;rn p2 = b;rn printf("%d\n%d\n",p2,*p2);rnrn int c = 100;rn int *p3;rn p3 = &c;rn printf("%d\t%d\n",p3,*p3);rnrn char *p4 = "hello world";rn printf("%s\n%s\n",*p4,p4);rnrnrn帮忙分析下程序指针用法错在哪
C语言中字符串截取问题
这是一条rtsp的回复数据rnrnRTSP/1.0 401 UnauthorizedrnCSeq: 3rnDate: Thu, Nov 27 2014 10:11:01 GMTrnWWW-Authenticate: Digest realm="LIVE555 Streaming Media", nonce="f499dffd49cde025d87ad7f34bb600eb"rnrn例如这个字符串,我需要这个realm后面的双引号内的数据(不是固定字符串),realm是固定的。rnrn我用strstr(buf,”realm“) 把指针便宜到这个r的头部,现在怎么去获取整个的LIVE555 Streaming Mediarnrn[code=c]rn int count = 0;rn char *strGetRealmBuf = NULL;rn char *strRealm = strstr(recvBuf2,"realm=");rn if (strRealm != NULL)rn rn char *p = strRealm;rn p += strlen("realm=");//偏移到"rn //printf("定义变量\n");rn if(*p== 0x22)//0x22是"rn rn p++;rn while(*p!= 0x22)rn rn *strGetRealmBuf = *p;rn count++;rn p++;rn strGetRealmBuf++;rn rn if (count > 0)rn rn //memcpy(strGetRealmBuf,strRealm + 7,count);rn printf("get realm buf is %s\n",strGetRealmBuf);rn rn rn rn[/code]rn我尝试好几种方式都失败了,请问到底怎么做。。
C语言中的移位问题
如果对于一个无符号数x,如果将它所有的位右移移出的话,是不是应该为0阿?但是我在gcc下测试了一下,结果为0xffffffffrn这是为什么阿?
c语言中的读取文件问题
生成100个随机数,并用fprintf(fp,"%d\t",record[i]);写入一个文件中。请问怎样才能正确读取这个文件中的数,我用fscanf(fp,"%d\t",&record[i]);并不能正确读取,好象是我读'\t'时出问题。请问怎样解决?
C语言中输入缓冲区问题
int main()rnrn int *data = NULL,*data2,length;rn scanf("%d",&length);//线性表长度rn data = (int *)malloc(length*sizeof(int));rn for(int i = 0;i < length; ++i)rn rn scanf("%d ",&data[i]);//输入内容rn rn------------------------------------------------------rn data2 = (int *)malloc(length*sizeof(int));rn mergesort(data,data2,0,length - 1);rn for(int i = 0;i < length;i ++)rn printf("%d\n",data[i]);rn return 0;rnrnrn如上代码,我在输入rn3rn2 3 1回车rnrn这个时候,闪烁光标就会定到那儿,知道我任意输入一些东西时,才继续执行分割线下的代码,加getchar()也不顶用。
C语言中的文件读取问题
void score_read()rnrn FILE *f;rn char num[10];rn char name[20];rn int p,l,e,j,sum;rn rn if (count==0)rn rn printf("\n该学生成绩表目前记录为空,无法进行读取!\n");rn printf("\n");rn rn elsern rn f=fopen("student.txt","r");rn if (f==NULL)rn rn printf("无法打开来该文件!\n");rn exit(0);rn rn while (! feof(f))rn rn fscanf(f,"%s%s%d%d%d%d%d",num,name,&p,&l,&e,&j,&sum);rn printf("%s\t%s\t%d\t%d\t%d\t%d\t%d\n",num,name,p,l,e,j,sum);rn rn ;rn if(fclose(f))rn rn printf("无法关闭此文件!\n");rn exit(0);rn rn rn rn这一段程序进行运行的结果为:rn11 ss 77 88 99 66 330rn22 yy 77 88 99 90 354rn22 yy 77 88 99 90 354rnrn但我文件的内容只有rn11 ss 77 88 99 66 330rn22 yy 77 88 99 90 354rn多出了一行,请问究竟在哪里出错了呢?rnrnrnrn
C语言中字符串的问题
由于功能需要,想生成ip从 “192.168.1.1”至“192.168.255.255”中的所有iprnrn采用的方法是 rnchar srcip[16]='1','9','2','.','1','6','8','.','0','0','0','.','0','0','0','\0';rnrnfor(i=1;i<256;i++)rn rn int x;rn srcip[8]=(char)(j/100);rn x=(j-(j/100)*100)/10;rn srcip[9]=(char)x;rn srcip[10]=(char)(j-(j/100)*100-x*10);rn rn for(k=1; k<256; k++)rn rn srcip[12]=(char)(k/100);rn x=(k-(k/100)*100)/10;rn srcip[13]=(char)x;rn srcip[14]=(char)(k-(k/100)*100-x*10);rn srcip[15]='\0';rnrn printf("%s\n", srcip);rn rnrnrn结果输出的 192.168. 后面都是乱码。rnrn求指教,为什么是乱码,应该怎么改。rnrn有什么更好的方法可以解决这个问题?
c语言中的自增问题
# include "stdio.h"rn void main( )rn int i,k;rnrn i=3;rn k=(++i)+(++i)+(++i);rn printf("i=%d\tk=%d\n",i,k);rn Zrn为什么结果是i=6 k=16???
c语言中函数调用问题
char fun(char *);rnmain()rnrnchar *s="one";a[5]=0,(*f1)()=fun,ch;rn......rnrn选择题:对函数fun的正确调用语句是:答案是: (*f1)(a);rn请高手分析,我觉得应该是 ch=*f1(s); rn
C语言中的结构问题
定义了一个结构rnstructrnrn...rnstr;rn有一个函数用这个结构str作参数rnvoid F(struct *s,int n)rnrn...rnrn在int main()函数使用前声明了:rnvoid F(struct*,int);rnTC2.0报Structure or union syntax errorrnrn请问,这里错的是哪里。再顺便讲解下用结构作函数参数的问题。rn谢谢
C语言中图像函数的问题.
我在编c语言图像函数的时候,单独调用我编的图像函数好使.但是跟我的程序结合的时候就出现了问题,显示为ERROR:Type mismatch in redeclaration of 'graphic'rn有人说这是图形函数没有初始化,但是我已经初始化了,而且单独运行这个图形函数还好使.不知道怎么办,非常着急.在线等.明天就要交了.希望大家多指点.多谢!!!
C语言中的switch问题
[code=c]printf("\n请选择药品类型(0:感冒药,1:胃药,2:消炎药,3:眼药水):");rn scanf("%c",&k);rn switch (k)rn rn case 0: medicine.type=pill_for_cold;break;rn case 1: medicine.type=stomachace_medicine;break;rn case 2: medicine.type=antiphlogistic_drug;break;rn case 3: medicine.type=eyedrop;[/code]rn这个switch语句无法运行是什么原因rn这个是根据这个来写的rn[code=c]enum ttype pill_for_cold,stomachace_medicine,antiphlogistic_drug,eyedrop;rn[/code]rn也就是说,我想通过一个switch语句来做一个选单
C语言中的指针问题
学C最蛋疼的就是碰上指针了,有没有只讲指针的书啊,要很详细的那种。
C语言中声音问题
C语言中的一段代码只能使主板喇叭发声,不能从耳机里听到声音,谁能帮我解决rn附代码:rnrnrn#includern#includern#includern#includern#includernvoid interrupt(* handler)( );rnint handle,control;rnenum NOTESrnrn C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,rn C0=262, D0=296, E0=330, F0=349, G0=392, A0=440, B0=494,rn C1=523, D1=587, E1=659, F1=698, G1=784, A1=880, B1=988,rn C2=1047, D2=1175, E2=1319, F2=1397, G2=1568, A2=1760, B2=1796rnsong[]=rn E1,16,E1,8,E1,8,F1,16,G1,16,F1,16,F1,16,E1,16,D1,rn 16,C1,16,C1,16,D1,16,E1,16,E1,16,D1,16,D1,16,E1,16,rn E1,8,E1,8,F1,16,G1,16,G1,16,F1,16,E1,16,D1,16,C1,rn 16,C1,16,D1,16,E1,16,D1,16,D1,16,C1,16,D1,16,D1,8,rn D1,8,E1,16,C1,16,D1,16,E1,8,F1,8,E1,16,C1,16,D1,rn 16,E1,8,F1,8,E1,16,C1,16,C1,16,D1,16,G0,16,E1,16,rn E1,16,E1,8,F1,16,G1,16,G1,16,F1,16,E1,16,D1,16,C1,rn 16,C1,16,D1,16,E1,16,E1,16,D1,16,C1,16,D1,16,rn 0,0;rnvoid interrupt music()rnrn static int flag=0,note=0,fre,dur=8;rn flag++;rn fre=song[note];rn dur=song[note+1];rn if(fre)rn rn flag=0;rn /*打开计数器*/rn outportb(0x43,0xb6);rn /*计算频率*/rn fre=(unsigned)(1193180L/fre); rn /*将频率写入计时器*/rn outportb(0x42,(char)fre); rn outportb(0x42,(char)(fre>>8));rn /*从扬声器端口读出控制信息*/rn control=inportb(0x61);rn /*写入扬声器,使之发声*/rn outportb(0x61,(control)|0x3); rn note=note+2;rn if(note>=134)note=0;rn rnrnvoid main()rnrn int gdriver=DETECT,gmode,i,j;rn initgraph (&gdriver,&gmode,"e:\\tc");rn while(!kbhit())rn rn /*获取0x1c中断向量*/rn handler=getvect(0x1c); rn /*将music函数写入到0x1c中断向量中去*/rn setvect(0x1c,music); rn /*清除屏幕*/rn cleardevice( ); rn /*将背景色设置成黑色*/rn setbkcolor(BLACK); rn for(i=0;i<300;i++)rn rn j=i%30;rn /*前景色设置*/rn setcolor(j/2);rn /*画圆*/rn circle(320,240,(j+1)*5); rn if(j==0)cleardevice( ); rn delay(100);rn rn rn /*关闭PC扬声器*/rn outportb(0x61,control&0xfe); rn /*将0x1c中断向量置成系统原有的处理例程*/rn setvect(0x1c,handler); rn getch();rn cleardevice();rn closegraph();rnrnrnrnZ
C语言中函数传参问题
 学过c语言的都知道c语言的swap函数交换操作,那也是最早的有关函数形参和实参的介绍,以及指针的引入。 #include&amp;lt;stdio.h&amp;gt; void swap(int a,int b) { printf(&quot;a的内存%p,a的地址是%p\nb的内存%p,b的地址是%p\n&quot;,a,&amp;amp;a,b,&amp;amp;b); } int main() { int *pa,*pb; int...
C语言中的野指针问题
野指针 野指针指向一个已删除的对象或未申请访问受限内存区域的指针。通俗的讲,就是该指针就像野孩子一样,不受程序控制,不知道该指针指向了什么地址。 与空指针不同,野指针无法通过简单地判断是否为NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。 产生原因 1、定义指针时未初始化 定义一个指针时,他不会自动指向NULL,需要手动指向NULL或者指向某个具体的地址,...
C语言中换行符问题
在缓冲输入中,换行符的确是个麻烦的问题,在这里做一个总结。 1.getchar() 记住:getchar()函数读取每一个字符!每一个!包括空格,制表符和换行符。 错误代码: while(getchar()!='y') printf("Well,then it is %d?\n",++guess); 这里会出现输入一个n,但是出现两句“Well……” 原因是因为换行符也被传输进去了。
c语言中的输油管道问题
改进的可以在C语言环境下实现的算法,可能还有许多需要改进的地方。
C语言中 数据类型的问题
unsigned int b=0;n b=b-1;n printf("b=%d\n",b);n n unsigned char c=0;n c=c-1;n printf("c=%d\n",c);n n 为什么b=-1;c=255; ?n 据我理解,计算机b,c在内存中应该都是全1.并且输出格式都是%d都有符号,所以n 1111111.。。都应该表示为-1,为什么c是255??
C语言中“|”符号的问题
程序开头有这样的定义:rn/*the fixed colors*/rn#define BLACK 0rn#define YELLOW(RED | GREEN)rn#define MAGENTA(RED | BLUE)rn#define CYAN(GREEN | BLUE)rn#define WHITE(RED | GREEN | BLUE)rn运行的时候提示错误是这样的:rntest.crnC:\Documents and Settings\Administrator\test.c(15) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(15) : error C2010: 'G' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(16) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(16) : error C2010: 'B' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(17) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(17) : error C2010: 'B' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: 'G' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: 'B' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(35) : error C2065: 'YELLOW' : undeclared identifierrnC:\Documents and Settings\Administrator\test.c(41) : error C2065: 'WHITE' : undeclared identifierrnC:\Documents and Settings\Administrator\test.c(42) : error C2065: 'MAGENTA' : undeclared identifierrn执行 cl.exe 时出错.rnrn请问大家这个是什么问题?我用的是VC++6.0编译环境!谢谢!
C语言中字符数组的问题
#includernvoid main()rnrn char c[5]='c','h','i','n','a';rn char b[6]='c','h','i','n','a';rn puts(c);rn puts(b);rnrnrnrn[img=https://img-bbs.csdn.net/upload/201305/25/1369449068_506768.jpg][/img]rnrnrnrn定义的字符数组大于实际字符长度时,系统自动在末尾加上'\0',故puts(b)为china;rn但为什么定义字符数组等于实际字符长度时,会在末尾多出一些乱码呢,数组c的长度不是5吗?
c语言中的动态数组问题
现在从一个配置文件中读取一项值,如果是1024,我的程序就需要定义一个1024大小的数组(int a[1024];);如果从配置文件中读取的数值为64,就需要定义一个64大小的数组(int a[64];);我该如何实现这一功能?(要求占用内存尽可能少)rn请回复,谢谢!
C语言中位移问题
声明: 本文非原创,转自其他人博客,有个错字,进行修复一下,本人特别讨厌各种复制粘贴,本篇文章只作为自己参考使用,如有侵权,请原作联系本人。博客链接逻辑位移与算数位移 http://www.cnblogs.com/hnrainll/archive/2011/07/06/2099068.html正文 在C语言中,涉及位移的运算符有2个,>>表示右移,<<则表示左移。 而汇编指令中,SHL
C语言中类型转换问题
【原创内容,转载注明出处】 从一道题目引发的一些思考,记下以便以后遗忘。 这是题目int main() { unsigned char i = 1; i -= 4; printf(“the value of i is: % d”, i); }
C语言中整除问题
C语言中,当除数、被除数和商都定义成int型时,如不能整除,商会自动转换成int类型。rn那么,C语言是不是默认舍去小数部分,不论小数部分是否足够大?rn如,10/3=3,舍去了小数部分;-10/3=-3,舍去了小数部分。rn我试了试编译这两个例子,结果是这样。rn对不对?我不太肯定
C语言中的四舍五入问题。。
如何用C语言实现精确到两位小数的四舍五入。。例如:4.184638438处理后为4.19?rnrn
c语言中类型转换问题
c语言中有自动类型转换,那么在代码实现过程中显式类型转换的重要性或必要性是什么?总觉得int = (int)short,前面的强制类型转换像打补丁似的。
c语言中三维数组的问题???
我定义了一个三维数组char chromosome[i][j][k];然后通过三重循环给这个数组赋值,但是当我用printf("%s\",chromosome[i][j])显示时,却得不到正确的结果,结果是一些乱码.这是怎么回事呀.
c语言中getcha()问题
程序如下:// test1.cpp : Defines the entry point for the console application.rn//rn#include "stdafx.h"rn#include rn#include rn#define N 10rnvoid main()rn rn void input(int[],char name[][8]);rn void sort(int[],char name[][8]);rn void search(int ,int[],char name[][8]);rn int num[N],number,flag=1,c;rn char name[N][8];rn input(num,name);rn sort(num,name);rn while(flag==1)rn rn printf("\ninput number to look for: ");rn scanf("%d",&number);rn search(number,num,name);rn printf("continue or not(Y\N)");rn getchar();rn c=getchar();rn if(c=='N'||c=='n')rn flag=0;rnrn rnrnrnrnrnvoid input(int num[],char name[N][8])rnrn int i; rn for(i=0;inum[j])rn min=j;rn templ=num[i];rn strcpy(temp2,name[i]);rn num[i]=num[j];rn strcpy(name[i],name[min]);rn num[min]=templ;rn strcpy(name[min],temp2);rn rn rn printf("\n result :\n");rn for(i=0;inum[N-1]))rnrn loca=-1;rn while((sign==1)&&(top<=bott))rn rn mid=(bott+top)/2;rn if(n==num[mid])rn rn loca=mid;rn printf("No. %d,his name is %s. \n",n,name[loca]);rn sign=-1;rnrn rn else if(n
C语言中命令行参数的问题
类似gcc这样的程序在运行使用时可以使用很多命令行参数如gcc -shared -fPIC xxx.so xxx.crn我想知道在程序内部是如何辨别如此多的参数的?rn我知道main中可以通过argv[]得到命令,但是当可选的命令很多时用if去判断效率不高,用switch判断还不支持对字符串的判断。。用switch判断枚举类型倒是可以实现但是枚举常量明明规则不允许使用“-”等符号,那像gcc那样的“-shared”这样的字符串是怎么判断的?rn我说的可能不但明白。。就是一下代码如何实现比较好?rnint main(int argc,char * argv[])rnrn enum arghelp=1,name=2argxx;<=============这里最理想的形式是“-help和-name”rn argxx=(enum arg)argv[1];rn switch(argxx)rn rn case 1: help();breakrn case 2: login(argv[2]);break;rn default: printf("=====>ERROR!!<======");rn rnrn
C语言中的一个问题
C语言中 出现"2U" 是什么意思呢?rn类似的用法还有那些,2U是不是无符号整形呢?
C语言中指针的问题
int * p[3] 和 int (*p)[3] 这两者到底有什么区别?可以从内存分配方面来分析一下!
C语言中的一个问题。
如printf("")中""的意思。谢谢。
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池