c语言数组问题问题

中国领先的IT技术网站
51CTO旗下网站
C语言初学者常见问题与错误
不知不觉,学习C语言也快一年了。虽然有C语言课,但是老师完全让我们自己看书,在自学的过程中,和周围同学交流中,以及后来在 CSDN,BCCN,百度知道看帖回帖中,也看到许多C语言新人常遇到的问题与常犯的错误。为了让新人们少走弯路少碰壁,我便打算写下此文。当然,由于我 自己的水平也有限,其中可能自己也不知不觉犯了错误,望高手们果断斧正。
作者:来源:| 11:45
下面的程序,基本是摘自在CSDN,BCCN,百度知道的提问帖,以及我身边的人和我自己写的程序,限于篇幅,对于问题影响不大的部分我已经删去或改写,一些与相应问题无关的错误也一并进行了修改。对于完整的修正后的程序都在code::blocks 10.05(编译器gcc,调试器gdb,平台windows 7旗舰版)上运行过。
1、程序画面一闪而过
int main(void)
/*定义变量表示信号灯的状态*/
printf(&the Red Light is 0,the Green Light is 1\n&); /*输出提示信息*/
scanf(&%d&,&iSignal);
/*输入iSignal变量*/
if(iSignal==1)
/*使用if语句进行判断*/
printf(&the Light is green,cars can run\n&);
/*判断结果为真时输出*/
if(iSignal==0)
/*使用if语句进行判断*/
printf(&the Light is red,cars can't run\n&);
/*判断结果为真时输出*/
解析:在XP以上的系统用win-tc,dev-cpp等IDE编译运行此程序时,无论输入什么数字,结果都是一闪而过,因为程序执行完语句后就直接退出了。
解决方案:这里有几个办法:
(1):在程序开头加上#include,然后在程序末尾加上system(&pause&);
此方法仅适用于MS-DOS,windows,不适用于*nix等系统
(2):在需要暂停的地方加入一个或两个getchar();
这种方法,实质上并不是暂停程序,而是让程序等待用户输入若干个回车。但是效果和暂停是相同的。
(3):在程序开头加上#include,在需要暂停的地方加入一个getch();,原理和上一种差不多。在win-tc里用得比较多。
2、if,for,while的判断后直接跟;
int main(void)
scanf(&%d&,&a);
if (a == 123);////错误,if(a == 123)后面不应加上;,而应该紧跟着
////{ printf();}代码
printf(&ccc&);
printf(&ddd&);
getchar();
int main(void)
printf(&please input a number&2:&);
scanf(&%d&,&n);
if(n%i==0)
printf(&%d not a sushu\n&,n);
printf(&%d is a sushu\n&,n);
解析&解决方案:见注释
3、漏头文件,main函数格式不规范
scanf(&%d&,&a);
printf(&input %d&, a);
解析:这段程序没有带上头文件stdio.h。即漏写了#include&。如果仅有scanf,printf函数的话,stdio.h是可以省略并可以正确运行的,但是这是非常不好的习惯。而main()这种写法,C89标准勉强充许这种形式,C99标准是不允许的。而void main(),至今仍未有任何标准考虑接受它。但是有些编译器的确允许。当然,这种写法广为流行,应该和老谭的书关系非常大。
解决方案:用到的头文件应该用include包含进去。main()函数应该写成int main(void)这种形式,在main()函数尾部加上return 0;
int main(void)
scanf(&%d&,&a);
printf(&input %d&, a);
4、scanf格式控制误用
int main(void)
float a,b,c;
printf(&shuru 3 ge xi shu :&);
scanf(&%f,%f,%f&,&a,&b,&c);
printf(&he shi %f&,a + b + c);
解析:&scanf()函数允许把普通字符放在格式字符串中。除了空格字符之外的普通字符一定要与输入串准确匹配。否则,例如上面的程序,那么scanf()将其解释成,将键入一个数字,键入一个逗号,然后再键入一个数字,再键入一个逗号,最后再键入一个数学。也就是说必须像这样输入:2.3,5.1,3.8。如果不能精确匹配,则scanf()读取将失败。
作为编写这个程序的人,你可以按照这个格式输入,但是用户则不知应该以何种格式输入。所以应该改为scanf(&%f%f%f&,&a,&b,&c);
解决方案:&scanf一行见解析。
5、scanf参数错误
int main(void)
char str[80];
printf(&Please enter your first name&);
scanf(&%s&, &str);
printf(&Hello %s&, str);
解析:scanf()中,读取int, long, float, double, char等类型的数据,是需要在第n(n&=2)个参数里加上&的,因为scanf()函数里,第n(n&=2)个参数是变量的地址,而不是变量本身:例如定义则scnaf(&%d&, &num);而读取字符串是不需要加上&,因为字符串的变量名本身就代表了地址。所以例子中应为scanf(&%s&, str);同时,这条规则对于结构体内的变量的也适用,即
struct foo {
char str[80];
那么应该是
scanf(&%c%s%d&, &data.ch, data.str, &data.num);
解决方案:见解析
6、数据类型混淆
int main(void)
double b=1;
for(a=1;a&=6;aA++)
printf(&%ld&,b);
解析:定义b为双精度浮点型,而输出使用%ld即长整型,数据类型不一致,输出为0.PS:老谭的书讲到用TC调试那一节举的例子貌似就是&后面写到printf(&%f&,a);产生错误的。
解决方案:把b定义为长整型long,即long b = 1;(其实这里还涉及到隐式转换,所以,更为正确的方法是把a也定义为长整型)
7、C语言中的&除法&
int main(void)
printf(&请输入一个华氏温度\n&);
float a,c;
scanf(&%f&,a);
c=5/9*(a-32);
printf(&摄氏温度为%4.2f&,c);
解析:&C语言中,两个整型数相除,如果不能除尽,那么小数部分会直接被丢弃,即&截尾&。因此5/9的结果是0.
解决方案:应该使用类型转换,或者明确相除的两数的类型
c=(float)5/9*(a-32);
c=5.0/9*(a-32);
c=5.0/9.0*(a-32);
8、混合输入数字和字符的杯具
int main(void)
printf(&Enter a character and a integer:\n&);
while((ch = getchar()) != '\n')
scanf(&%d&, &num);
for(i = 0; i & ++i)
putchar(ch);
putchar('\n');
printf(&Enter an another pair.Empty line to quit&);
解析:这段程序表面看起来没有什么问题,但是,实际运行一遍的,就会发现,只输入了一组数据,程序就退出了。
在开始的时候,程序运行良好,例如输入 a 2,程序就会打印出aa。但是,程序还没响应第二次输入就退出了。
问题就出在换行符,这次是紧跟在第一个输入的2后面的那个换行符。scanf()函数将该换行符留在输入队列中,而getchar()并不跳过换行符。所以在循环的下一个周期,getchar()读取了第一次输入时的换行符,而换行符正是终止循环的条件。
解决方案:吃掉输入流中的回车即可
在while循环最后,加上以下语句
while (getchar() != '\n')
也可以加上fflush(stdin);刷新输入流。
9、i++,i++;的纠结
#include &stdio.h&
int main(void)
int i = 5;
printf(&%d %d&, i++, i++);
解析:这个问题,在实际编程应该是没有人会这么写的,可还是有很多初学者纠结于此。在编程这个领域里,很多时候,实践是最好的老师。对于代码有疑问,那么上机敲一遍,编译运行一遍是很好的方法。但是,在i++,i++这个方面,即使编译运行了这个程序,也不一定会有正确的结果。用VC,TC,gcc编译运行后的结果不一定相同。或者从某个角度来说,这里结果的正确与否其实并不重要了。
printf(&%d %d&, i++, i++);这一个语句,其中的i++,i++是未指定行为。即C语言的标准并没有指定这运算是以何种顺序进行的。如果用gcc编译加上-Wall选项,那么会有warning:
gcc 2_1.c -o 2_1 -g -Wall
2_1.c: 在函数&main&中:
2_1.c:6:24: 警告:&i&上的运算结果可能是未定义的
因此,要解决这个问题,最好的方法就是不要在程序中写这样的代码。
解决方案:见上。
10、60&=grade&=70
if (60 &= grade &= 70)
printf(&及格&);
else if(70 &= grade &= 85)
printf(&良好&);
解析:在数学中,60&=grade&=70这种表达是成立的,但是在C语言中,并没有这种表达。
解决方案:应该改写为
if ((60 &= grade) && (grade &= 70))
printf(&及格&);
11、switch接受什么值?
#include &stdio.h&
int main(void)
scanf(&%lf&, &choice);
switch(choice){
case 1.0 : printf(&1.0&);
case 2.0 : printf(&2.0&);
default : printf(&It's not 1.0 or 2.0&);
解析:这种问题同样是不会出现在实际的编程当中。但是一些C语言题目可能会这么出。switch()接受的是整数:整型或者字符型。所以,浮点型,字符串等类型是不被switch()接受的。
解决方案:无他&&
12、== =的困惑
void count(void);/*计数器函数*/
void show_count(void);/*报告计数结果*/
int main(void)
puts(&Please enter some letters:(# to end)&);
show_count();
puts(&Thank you for using this program made by HerBal_Tea!&);
system(&pause&);
void count(void)
while ((ch = getchar()) != STOP)
if (ch = SPACE)
sp_count++;
if (ch = ENTER)
n_count++;
other_count++;
}/*end of while ((ch = getchar()) != '#')*/
void show_count(void)
puts(&The number of \nspace enter other&);
printf(&%5d%6d%6d\n&, sp_count, n_count, other_count);
解析:话说我自己也犯了这个错。在数学中,=表示相等,而在很多编程语言中,=表示赋值,==才 表示相等。思维惯性导致错误。而且这个错误C编译器既不会报错也不会警告。出错了检查起来非常难。我看了不下二十遍调试的值监视都找不到,最后还是一行一 行源代码看,才知道是这个问题。在C语言四书五经中的 c traps and pitfalls 和 expert c
programming都提到过这个问题。
解决方案:无他,唯细心。
13、溢出问题
例:求斐波那契数列的前n项
#include &stdio.h&
#define N 100
int main(void)
int fib[N];
fib[0] = fib[1] = 1;
printf(&%d %d &, fib[0], fib[1]);
for (i = 2; i & N; ++i)
fib[i] = fib[i - 1] + fib[i - 2];
printf(&%d &, fib[i]);
解析:在数学的概念中,整数、小数都是无限的,但是计算机中,即使是long long int或者double类 型都是有一定限度的,超过限度就会溢出。即是,假设一个指针式体重秤最大量程为120KG,那么一个体重130KG的人站上去,那么指针会指向10KG的 刻度处。溢出同理。而C语言,编译器是不会对溢出进行检查或者处理的。因此在编程中,应该自己估算一下数的大小,以选用合适的数据类型来表示数据。
PS:由于TC编译出的程序是16位的,所以int也是16位,很容易就会溢出。
解决方案:一方面是使用合适的数据类型,比如long ,long long
或者double。另一方面是,如果数特别大,连unsigned long long
int或者连double都表示不了的时候,那么就用数组吧。不过定义数组的加减法还算好,但是定义乘除法就不是那么简单了。所以推荐新人使用第一种方 法。第二种方法,可以考虑自己编个小程序实现一下。
14、四舍五入?
例:要求将输入的数按指定精度四舍五入输出
#include &stdio.h&
int main(void)
double a = 158.385427;
printf(&%.2lf&, a);
解析:&C语言中,printf(&%.2lf&, num);是直接截断至小数点后两位,并非四舍五入而是类似于趋零截尾。
解决方案:如下
//四舍五入显示数字,精确由用户输入
//可辨别正负
#include&stdio.h&
#include&stdlib.h&
#include&math.h&
int main(void)
double a = 158.385427;
puts(&Enter the width&);
scanf(&%d&,&width);
a = (int)(a*pow(10,width) + 0.5)/pow(10,width);
a = (int)(a*pow(10,width) - 0.5)/pow(10,width);
printf(&The result is %.*lf\n&,width,a);
system(&pause&);
15、函数的返回值
#include&stdio.h&
double salary();/*计算工资税的函数*/
void main()
char want0;
printf(&欢迎使用个人所得税计算器\n&);
printf(&\n&);
printf(&1.工资、薪金所得税计算\n&);
printf(&\n&);
printf(&请输入需要计算的税收项目序号:&);
scanf(&%d&, &choice);
if(choice==1)
printf(&%lf&, result);
double salary()
double sal,
printf(&请输入您的薪水:&);
scanf(&%lf&, &sal);
if(sal&=3000)
if(sal&3000&&sal&=4500)
result=sal*0.05;
if(sal&4500&&sal&=7500)
result=sal*0.1-75;
if(sal&7500&&sal&=12000)
result=sal*0.2-525;
if(sal&12000&&sal&=38000)
result=sal*0.25-975;
if(sal&38000&&sal&=58000)
result=sal*0.3-2725;
if(sal&58000&&sal&=83000)
result=sal*0.35-5475;
if(sal&83000)
result=sal*0.45-13475;
解析:这个问题简单来说是,用户定义函数并未返回计算所得数值。往深的来说是关于存储类、链接,即变量的作用域、链接、存储时期的问题。
解决方案:
* Created on:
* Author: ice
#include&stdio.h&
double salary();/*计算工资税的函数*/
int main(void)
char want0;////这个want0变量没有使用
printf(&欢迎使用个人所得税计算器\n&);
printf(&\n&);
printf(&1.工资、薪金所得税计算\n&);
printf(&\n&);
printf(&请输入需要计算的税收项目序号:&);
scanf(&%d&, &choice);
if(choice==1)
result = salary();//要有一个值接受返回值才可以
printf(&%lf&, result);
double salary()
double sal,
printf(&请输入您的薪水:&);
scanf(&%lf&, &sal);
if(sal&=3000)
if(sal&3000&&sal&=4500)
result=sal*0.05;
if(sal&4500&&sal&=7500)
result=sal*0.1-75;
if(sal&7500&&sal&=12000)
result=sal*0.2-525;
if(sal&12000&&sal&=38000)
result=sal*0.25-975;
if(sal&38000&&sal&=58000)
result=sal*0.3-2725;
if(sal&58000&&sal&=83000)
result=sal*0.35-5475;
if(sal&83000)
result=sal*0.45-13475;
【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条头条外电
24H热文一周话题本月最赞
讲师:1人学习过
讲师:31人学习过
讲师:0人学习过
精选博文论坛热帖下载排行
本书是按照全国计算机技术与软件专业技术资格(水平)考试《网络管理员考试大纲》的要求,参照《网络管理员教程》及近年来考试试题编写的。...
订阅51CTO邮刊好多的的问题我都无从下手,总是分不清楚 代码的关系?如何读代码啊?
全部答案(共3个回答)
是一门较为基础的编程语言,它介于汇编与其他高级语言之间,是学习编程语言的母语。因此学习好c至关重要。c的基础性问题掌握以后,可以尝试多看一些实例,这样熟能生巧就能逐渐的将c的代码看懂了。可以这样说看的程序实例越多对于你来说将使思路更加开阔。同时在看相关的程序时要将常用的结构记下。
在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?
学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
那么,我们如何学好《C程序设计》呢?
一.学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序.
二.学好C语言的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2) 分支结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①if(条件)
这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x&=0时,其绝对值不变,而x&0时其绝对值是为x的反号,因此程序段为:if(x&0) x=-x;
②if(条件)
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac&=0时,方程有两个实根,否则(b^2-4ac&0)有两个共轭复根。其程序段如下:
d=b*b-4*a*c;
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(“x1=%8.4f+%8.4fi\n”r, i);
printf(“x2=%8.4f-%8.4fi\n”r,i)
③嵌套分支语句:其语句格式为:
if(条件1) {分支1};
else if(条件2) {分支2}
else if(条件3) {分支3}
else if(条件n) {分支n}
else {分支n+1}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。
(4)模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
三.掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义
结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学
本人大学期间学习三遍c语言,毕业后又教了一年c语言,通过自己的体会,给你几点意见。
一.这门课不好学,但是只要功夫到就能学好。所以当你拿着教材感...
C语言学习应注意以下几点:
1.学一点算法知识(1天),重点掌握流程图画法;
2.数据类型、运算符与表达式(1天)
3.流程控制(1天)
学完以上知识基...
C语言是编程语言的入门级语言,它是面向过程的编程语言,是其他如C++,java,C#等现在主流编程语言的基础。相对而言,C语言还是比较容易的,刚开始看的时候,先...
答: 家用新风净化系统一般安装250风量的就行,但是还得要看住几个人,具体的你得咨询一下相关厂家比较专业,我家用的是德诺格品牌,性价比和口碑相对较好,服务也跟得上,我...
答: 上海第二工业大学材料科学与工程(工程教育试点班)是什么意思
<><><><><><自然科学基础>><> 复习资料.
">电大小教专业复习资料我学的是电大小学教育专业,现急需电大或自考<<信息技术与教育...
答: 考初级中学教师资格说课问题我考初级中学教师资格,教育学和教育心理学考试全部过关,下一阶段是进行说课和面试,我想请教老师,怎样对初中语文进行说课?有没有在线视频的...
答: 请问哪位有安全培训教育材料要建筑施工企业的
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区17:16 提问
c语言问题,编译出错,急求解答
编译时显示 error c2046:illegal case
error c2047:illegal default
按赞数排序
不是break的问题,是大括号的问题,
/*do your some thing*/
/*do your some thing*/
/*do your something*/
switch后面应该有一个大括号,在default的break后面括回来
default语句就不需要break了,
switch语句不是有个括号吗?
其他相似问题10916人阅读
素数,又称为质数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(只有1和本身两个因数的数),维基百科:素数的定义
算法过程:决定一个数m是否是素数,只要让m被2到 根m 或者(m-1)除,如果不能被2到 根m 或者(m-1)中的任何一个数整除,则就定m为素数
例1:判断m是否是素数
#include&stdio.h&
#include&math.h&
void main()
scanf(&%d&,&m);
k=sqrt(m);
for(i=2; i&=k; i++)
if(m%i==0)
if(i&k) printf(&%d is a prime number\n&, m);
else printf(&%d
is a prime number&,m);
例2:求300~330之间的全部素数
#include&stdio.h&
#include&math.h&
void main()
for(m=301; m&=330; m=m+2)
k=sqrt(m);
for(i=2; i&=k; i++)
if(m%i==0)
if(i&k) printf(&%d is a prime number\n&, m);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:295908次
积分:1041
积分:1041
排名:千里之外
原创:14篇
评论:26条}

我要回帖

更多关于 c语言 难题集 的文章

更多推荐

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

点击添加站长微信