范文一:c语言循环例题
/*求 1+2+3+…+100 */
#include { int i, s = 0; i = 1; while (i <= 100)="" {="">=> s += i; i++; } printf(" %d\n ",s); getch(); } /*求 1~+2~+…+7~ */ #include { int i,j; long s = 1,sum=0; j=1; while(j<=7)>=7)> { i = 1; s=1; while (i <= j)="" {="">=> s *= i; i++; } printf("%d!=%ld\n",j,s); /*s为j的阶乘*/ sum+=s; j++; } printf(" %ld\n ",sum); getch(); } /* 求1~100中所有非3的倍数之和 #include { int i, s=0; i=1; for(;i<=100; i++)="" {="">=100;> if(i%3==0) continue; s += i; } printf(" %d\n ",s); } /*输入两数,求它们的最大公约数和最小公倍数*/ main() { int m,n,i,min,max; printf("input two interges:"); scanf("%d %d",&m,&n); i=m; for (;;i--) if ((m%i==0) && (n%i==0)) {min=i;break;} for (;;i++) if ((i%m==0) && (i%n==0)) {max=i;break;} printf("min=%5d max=%5d\n",min,max); getch(); } /*输入一行文本,统计文本中字母、数字、空格和其他字符的个数*/ #include main() { char c; int i=0,j=0,m=0,n=0; while ((c=getchar())!='\n') { if ((c>='A')&&(c<='z') ||="" (c="">=97)&&(c<=122)) i++;="">=122))> else if (c==' ') j++; else if ((c>=48) && (c<=57)) m++;="">=57))> else n++; } printf("english=%4d space=%4d number=%4d other=%4d\n",i,j,m,n); getch(); } /*求3位数中满足值为其3位立方和的数 */ main() { int a,b,c,n; for (n=100;n<1000;n++)>1000;n++)> { a=n/100; b=(n-a*100)/10; c=n-a*100-b*10; if (n==a*a*a+b*b*b+c*c*c) printf("%d\n",n); } } /* 99表*/ include { int i,j; putchar('\n'); for(i=1;i<10;i++)>10;i++)> { for(j=1;j<=9;j++)>=9;j++)> printf("%d*%d=%2d ",i,j,i*j); printf("\n"); } getch(); } /* 99表(下三角)*/ include { int i,j; putchar('\n'); for(i=1;i<10;i++)>10;i++)> { for(j=1;j<=i;j++)>=i;j++)> printf("%d*%d=%2d ",i,j,i*j); printf("\n"); } getch(); } /* 99表(上三角)*/ include { int i,j; putchar('\n'); for(i=1;i<10;i++)>10;i++)> { printf("%*c",i*7,' '); for(j=i;j<=9;j++)>=9;j++)> printf("%d*%d=%2d ",i,j,i*j); printf("\n"); } getch(); } /* 等腰三角形*/ include { int i,j; for(i=1;i<10;i++)>10;i++)> { printf("%*c",10-i,' '); for(j=1;j<=i;j++)>=i;j++)> printf("%2d ",i); printf("\n"); } getch(); } /* 倒等腰三角形*/ include { int i,j; for(i=1;i<10;i++)>10;i++)> { printf("%*c",i,' '); for(j=1;j<=10-i;j++)>=10-i;j++)> printf("%2d ",10-i); printf("\n"); } getch(); } #in?clude? { i?nt a,?b,c,n?; n=1?00; w?hile(?n<=99?9) {="">=99?9)> ?a=n/1?00; b?=n/10?%10; ?c=n%1?0; if?(a*a*?a+b*b?*b+c*?c*c==?n)pri?ntf("?%5d",?n); ? n++;? } ? } #?inclu?de {? doub?le t=?1,m=0?; int? d=1;?//t:d?angti?an qi?anshu?; m:?dangt?ian z?ongsh?u d:?tians?hu ?while?(d<=3?65) {?="">=3?65)> m=m+?t; t=?t*2; ?d++; ?} pr?intf(?"%lf\?n",m/?100/1?0000)?; }? #i?nclud?e { ?int f?1=1,f?2=1,n?=1; ?while?(n<12?) {="">12?)> p?rintf?("%d,?%d,",?f1,f2?); f1?=f1+f?2; f2?=f1+f?2; n+?+; } ? }? ? ? 1.抓交通肇事犯。一辆卡车违反交通规则,撞人后逃逸。现场有三位目击者,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。 2.假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的一年中每年的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。 3.日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子。分完后,父亲说:“老大将分给你的桔子了1/8给老二;老二拿到后,连同原先的桔子分1/7给老三;老三拿到后,连同原先的桔子分1/6给老四;老四拿到后,连同原先的桔子分1/5给老五;老五拿到后,连同原先的桔子分1/4给老六;老六拿到后,连同原先的桔子分1/3给老大”。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子。 4.个位数为6,且能被3整除的五位数共有多少个,分别把它们输出在屏幕上。 5. 8除不尽的自然数。一个自然数被8除余1,所得商被8除也余1,再将第二次的商被8除后余7,最后得到的一个商为a。又知这个自然数被17除余4,所得的商被17除作15,最后得到的一个商是a的2倍。求这个自然数。 。 6.4位反序数。设N是一个四位数,它的9倍恰好是其反序数,求N 7.完全数。如果一个数恰好等于它的因子之和,则称该数为完全数。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。试求出1000以内的全部“完全数”。 8.亲密数。如果整数A的全部因子(包括1,但不包括A本身)之和等于B,且整数B的全部因子(包括1,但不包括A本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。 9.求任意两个正整数的最大公约数和最小公倍数。 10.新娘和新郎。三对情侣参加婚礼,三个新郎为A、B、C,三个新娘为X、Y、Z。有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。这人听后知道他们在开玩笑,全是假话。请编程找出谁将和谁结婚。 在C++中?如何实现文?件的读写,? 作者: ?infob?illow?s 发?表日期: ?2007-?04-03? 21:3?3 点击?数: 46?5 一?、ASCI?I 输出 ?为了使用下?面的方法,? 你必须包?含头文件?(译者注:?在标准C+?+中,已经?使用 如果你?用过标准控?制台流"c?in"?和? "cou?t," 那?现在的事情?对你来说很?简单。 我?们现在开始?讲输出部分?,首先声明?一个类对象?。 ofs?tream? fout?; 这就可?以了,不过?你要打开一?个文件的话?, 必须像?这样调用o?fstre?am::o?pen()?。 fo?ut.op?en("o?utput?.txt"?); 你也?可以把文件?名作为构造?参数来打开?一个文件.? ofs?tream? fout?("out?put.t?xt");? 这是我们?使用的方法?, 因为这?样创建和打?开一个文件?看起来更简?单. 顺便?说一句, ?如果你要打?开的文件不?存在,它会?为你创建一?个, 所以?不用担心文?件创建的问?题. 现在?就输出到文?件,看起来?和"cou?t"的操作?很像。对不?了解控制台?输出"co?ut"的人?, 这里有?个例子。 ? int ?num =? 150;? char? name?[] = ?"John? Doe"?; fou?t < ?"here?="" is="" a?="" numb?er:="" "?="">< n?um=""> "/n"?;="">?> fou?t < ?"now="" ?here="" ?is="" a="" ?strin?g:="" "="">< na?me=""> "/n"?;="" 现在保?存文件,你?必须关闭文?件,或者回?写文件缓冲?.="" 文件关?闭之后就不?能再操作了?,="" 所以只?有在你不再?操作这个文?件的时候才?调用它,它?会自动保存?文件。回写?缓冲区会在?保持文件打?开的情况下?保存文件,?="" 所以只要?有必要就使?用它。="" 回?写看起来像?另一次输出?,="" 然后调?用方法关闭?。像这样:?="">?> fou?t < ?flush?;="" fou?t.clo?se();?="" 现在你用?文本编辑器?打开文件,?内容看起来?是这样:="" ?=""> Here? is a? numb?er: 1?50 No?w her?e is ?a str?ing: ?John ?Doe 很?简单吧! ?现在继续文?件输入, ?需要一点技?巧, 所以?先确认你已?经明白了流?操作,对 ?"<<" ?和"="">>"? 比较熟悉?了, 因为?你接下来还?要用到他们?。继续… ? 二、AS?CII 输?入 输入和?"cin"? 流很像.? 和刚刚讨?论的输出流?很像, 但?你要考虑几?件事情。在?我们开始复?杂的内容之?前, 先看?一个文本:? 12 ?GameD?ev 15?.45 L? This? is r?eally? awes?ome! ?为了打开这?个文件,你?必须创建一?个in-s?tream?对象,?像?这样。 ?ifstr?eam f?in("i?nput.?txt")?; 现在读?入前四行.? 你还记得?怎么用"<" 操作?符往流里插?入变量和符?号吧,好,??在="">?<"><" (插?入)?操作?符之后,是?"="">>" ?(提取) ?操作符. ?使用方法是?一样的. ?看这个代码?片段. ?int n?umber?; flo?at re?al; c?har l?etter?, wor?d[8];? fin ?>> nu?mber;? fin ?>> wo?rd; f?in >>? real?; fin? >> l?etter?; 也可以?把这四行读?取文件的代?码写为更简?单的一行。? fin? >> n?umber? >> w?ord >?> rea?l >> ?lette?r; 它是?如何运作的?呢? 文件?的每个空白?之后, "?>>" 操?作符会停止?读取内容,? 直到遇到?另一个>>?操作符. ?因为我们读?取的每一行?都被换行符?分割开(是?空白字符)?, ">>?" 操作符?只把这一行?的内容读入?变量。这就?是这个代码?也能正常工?作的原因。?但是,可别?忘了文件的?最后一行。? Thi?s is ?reall?y awe?some!? 如果你想?把整行读入?一个cha?r数组, ?我们没办法?用">>"??操作符,?因为每个单?词之间的空?格(空白字?符)会中止?文件的读取?。为了验证?: ch?ar se?ntenc?e[101?]; fi?n >> ?sente?nce; ?我们想包含?整个句子,? "Thi?s is ?reall?y awe?some!?" 但 它就是因?为空白, ?现在它只包?含了"Th?is". ?很明显, ?肯定有读取?整行的方法?, 是?getli?ne()。?这就是我们?要做的。 ? fin.?getli?ne(se?ntenc?e, 10?0); 这?是函数参数?. 第一个?参数显然是?用来接受的?char数?组. 第二?个参数是在?遇到换行符?之前,数组?允许接受的?最大元素数?量. 现在?我们得到了?想要的结果?:“Thi?s is ?reall?y awe?some!?”。 你应该已经知道??如何读取和?写入ASC?II文件了?。但我们还?不能罢休,?因为二进制?文件还在等?着我们。 ? 三、二进?制 输入输?出 二进制?文件会复杂?一点, 但?还是很简单?的。 首先?你要注意我?们不再使用?插入和提取?操作符(译?者注: 和="">>? 操作符)?. 你可以?这么做,但?它不会用二?进制方式读?写。你必须?使用rea?d() 和?write?() 方法?读取和写入?二进制文件?. 创建一?个二进制文?件, 看下?一行。 ?ofstr?eam f?out("?file.?dat",? ios:?:bina?ry); ?这会以二进?制方式打开?文件, 而?不是默认的?ASCII?模式。首先?从写入文件?开始。函数?write?() 有两?个参数。 ?第一个是指?向对象的c?har类型?的指针, ?第二个是对?象的大小(?译者注:字?节数)。 ?为了说明,?看例子。 ? int ?numbe?r = 3?0; fo?ut.wr?ite((?char ?*)(&n?umber?), si?zeof(?numbe?r)); ?第一个参数?写做"(c?har *?)(&nu?mber)?". 这是?把一个整型?变量转为c?har *?指针。如果?你不理解,?可以立刻翻?阅C++的?书籍,如果?有必要的话?。第二个参?数写作"s?izeof?(numb?er)".? size?of() ?返回对象大?小的字节数?. 就是这?样! 二进?制文件最好?的地方是可?以在一行把?一个结构写?入文件。 ?如果说,你?的结构有1?2个不同的?成员。 用?ASCII??文件,你?不得不每次?一条的写入?所有成员。? 但二进制?文件替你做?好了。 看?这个。 ?struc?t OBJ?ECT {? int ?numbe?r; ch?ar le?tter;? } ob?j; ob?j.num?ber =? 15; ?obj.l?etter? = ?M??; fo?ut.wr?ite((?char ?*)(&o?bj), ?sizeo?f(obj?)); 这?样就写入了?整个结构!? 接下来是?输入. 输?入也很简单?,因为re?ad()??函数的参数?和 wri?te()是?完全一样的?, 使用方?法也相同。? ifs?tream? fin(?"file?.dat"?, ios?::bin?ary);? fin.?read(?(char? *)(&?obj),? size?of(ob?j)); ?我不多解释?用法, 因?为它和wr?ite()?是完全相同?的。二进制?文件比AS?CII文件?简单, 但?有个缺点是?无法用文本?编辑器编辑?。 接着,? 我解释一?下ifst?ream ?和ofst?ream ?对象的其他?一些方法作?为结束. ? 四、更多?方法 我已?经解释了A?SCII文?件和二进制?文件, 这?里是一些没?有提及的底?层方法。 ? 检查文件? 你已经学?会了ope?n() 和?close?() 方法?, 不过这?里还有其它?你可能用到?的方法。 ?方法goo?d() 返?回一个布尔?值,表示文?件打开是否?正确。 类?似的,ba?d() 返?回一个布尔?值表示文件?打开是否错?误。 如果?出错,就不?要继续进一?步的操作了?。 最后一?个检查的方?法是fai?l(), ?和bad(?)有点相似?, 但没那?么严重。 ? 读文件 ?方法get?() 每次?返回一个字?符。 方法?ignor?e(int?,char?) 跳过一?定数量的某?个字符, ?但你必须传?给它两个参?数。第一个?是需要跳过?的字符数。? 第二个是?一个字符,? 当遇到的?时候就会停?止。 例子?, fi?n.ign?ore(1?00, ??/n?);? 会跳过1?00个字符?,或者不足?100的时?候,跳过所?有之前的字?符,包括 ??/n?。? 方法pe?ek() ?返回文件中?的下一个字?符, 但并?不实际读取?它。所以如?果你用pe?ek() ?查看下一个?字符, 用?get()? 在pee?k()之后?读取,会得?到同一个字?符, 然后?移动文件计?数器。 方?法putb?ack(c?har) ?输入字符,? 一次一个?, 到流中?。我没有见?到过它的使?用,但这个?函数确实存?在。 写?文件 只有一个你可能??会关注的方?法.?那就?是 put?(char?), 它每?次向输出流?中写入一个?字符。 ?打开文件 ?当我们用这?样的语法打?开二进制文?件: o?fstre?am fo?ut("f?ile.d?at", ?ios::?binar?y); "?ios::?binar?y"是你提?供的打开选?项的额外标?志. 默认?的, 文件?以ASCI?I方式打开?, 不存在?则创建, ?存在就覆盖?. 这里有?些额外的标?志用来改变?选项。 ?ios::?app 添?加到文件尾? ios:?:ate ?把文件标志?放在末尾而?非起始。 ?ios::?trunc? 默认. ?截断并覆写?文件。 i?os::n?ocrea?te 文件?不存在也不?创建。 i?os::n?orepl?ace 文?件存在则失?败。 文?件状态 ?返回是否标?志已经到了?文件末尾。? 我主要用?我?用过的唯一?一个状态函?数是eof?(), 它 在循环中。? 例如, ?这个代码断?统计小写??e? 在文?件中出现的?次数。 ?ifstr?eam f?in("f?ile.t?xt");? char? ch; ?int c?ounte?r; wh?ile (?!fin.?eof()?) { c?h = f?in.ge?t(); ?if (c?h == ??e?) ?count?er++;? } fi?n.clo?se();? 我从未用?过这里没有?提到的其他?方法。 还?有很多方法?,但是他们?很少被使用?。参考C+?+书籍或者?文件流的帮?助文档来了?解其他的方?法。 结?论 你应该?已经掌握了?如何使用A?SCII文?件和二进制?文件。有很?多方法可以?帮你实现输?入输出,尽?管很少有人?使用他们。?我知道很多?人不熟悉文?件I/O操?作,我希望?这篇文章对?你有所帮助?。 每个人?都应该知道?. 文件I?/O还有很?多显而易见?的方法,??例如包含文?件 ? 无?论读写都要?包含 ? 读:从外?部文件中将?数据读到程?序中来处理? 对于程序?来说,是从?外部读入数?据,因此定?义输入流,?即定义输入?流对象:i?fstea?m inf?ile,i?nfile?就是输入流?对象。 这?个对象当中?存放即将从?文件读入的?数据流。假?设有名字为?myfil?e.txt?的文件,存?有 两行数字?数据,具体?方法: i?nt a,?b; if?strea?m inf?ile; ?infil?e.ope?n("my?file.?txt")?; ? //注?意文件的路?径 inf?ile>>?a>>b;? ? ? ? /?/两行数据?可以连续读?出到变量里? infi?le.cl?ose()? 如果是?个很大的多?行存储的文?本型文件可?以这么读:? char? buf[?1024]?; ? ? ? //临?时保存读取?出来的文件?内容 st?ring ?messa?ge; i?fstre?am in?file;? infi?le.op?en("m?yfile?.js")?; if(?infil?e.is_?open(?)) ? ? //文?件打开成功?,说明曾经?写入过东西? { w?hile(?infil?e.goo?d() &?& !in?file.?eof()?) { ? me?mset(?buf,0?,1024?); ? infi?le.ge?tline?(buf,?1204)?; ?messa?ge = ?buf; ? ..?.... ? ? ? ? ?//这里可?能对mes?sage做?一些操作 ? co?ut<> ?} in?file.?close?(); }? 写:将?程序中处理?后的数据写?到文件当中? 对程序来?说是将数据?写出去,即?数据离开程?序,因此定?义输出流对?象ofst?ream ?outfi?le,ou?tfile?就是输出流?对象,这个?对象用来存?放将要写到?文件当中的?数 据。具体?做法: o?fstre?am ou?tfile?; out?file.?open(?"myfi?le.ba?t"); ? //my?file.?bat是存?放数据的文?件名 if?(outf?ile.i?s_ope?n()) ?{ o?utfil?e<> }? else? { ?cout<> } ? c++?对文件的读?写操作的例?子 /*?/从键盘读?入一行字符?,把其中的?字母依次放?在磁盘文件?fa2.d?at中,再?把它从磁 盘?文件读入程?序, 将其?中的小写字?母改成大写?字母,再存?入磁盘fa?3.dat?中*/ ,?i ncl?ude ,i? nclu?de ,i? nclu?de ?using? name?space? std;? ///?/////?/////?/从键盘上?读取字符的?函数 v?oid r?ead_s?ave()?{ ? ch?ar c[?80]; ? ? ofst?ream ?outfi?le("f?1.dat?");//?以输出方工?打开文件 ? ? if(!?outfi?le){ ? ? ? ? c?err"open?>?"open?>?endl;?> ? ? ? ? exi?t(1);? ? ? ? ?} ? ? cin?.getl?ine(c?,80);?//从键盘?读入一行字?符 for?(int ?i=0;c?[i]!=?0;i++?) //对?字符一个一?个的处理,?直到遇到'?/0'为止? ? ? ? ? ? if(?c[i]>?=65&&?c[i]=90||?c[i]>?=97&&?c[i]=122)?{ 保证?输入的字符?是字符="">?=122)?{> ? ? ? ? ou?tfile?.put(?c[i])?;//将字?母字符存入?磁盘文件 ? ? ? ? c?out<><"";>?<"";> ? ? ? ? }? ? ? ? ?cout<> ? ? ? ? outf?ile.c?lose(?); ? ? ? ? } ?void ?creat?_data?(){ ? ?char ?ch; ? ?ifstr?eam i?nfile?("f1.?dat",?ios::?in);/?/以输入的?方式打开文?件 ? if?(!inf?ile){? ? ? ? c?err"open?>?"open?>?endl;?> ? ? ? e?xit(1?); ? ? ? ? } ? ofs?tream? outf?ile("?f3.da?t");/?/定义输出?流f3.d?at文件 ? i?f(!ou?tfile?){ ? ? ? ?cerr<"ope?n>?<"ope?n><> ? ? ? e?xit(1?); ? ? ? ?} ? whi?le(in?file.?get(c?h)){/?/当读取字?符成功时 ? ?if(ch?<=122?&&ch>?=97) ? ?ch=ch?-32; ? ?outfi?le.pu?t(ch)?; ? cou?t ? } ? c?out?endl;?> ? infi?le.cl?ose()?; ? out?file.?close?(); ? }? ? int ?main(?){ ? ? rea?d_sav?e(); ? ? c?reat_?data(?); ? ? syst?em("p?ause"?); ? ? ret?urn 0?; ? ? } ?%读入文件?程序 %输?入为标准气?动数据,输?出为气动数?据的各列 ?%标准气动?数据如下:? % ?H M?a a?lpha ? bat?a d?eltam? del?tan ?delta?l CA? CN ? CZ ?CM C?Q ..?. % ? 1 ? 2 ? 2 ? 2 ? ? 2 ? ?3 ? 45? 6?5 2? 23? 2 ? 2 % ? 4 ? 2 ? 2 ? 4 ? ? 4 ? ?53 ? 4? ?67 ?3 2? 2 ? 6 D? = im?portd?ata('?QDSJ.?txt')? dat?a = D?.data? tex?t = D?.text?data ? %输入自?变量个数n?umber?.inde?pende?nt,因变?量个数nu?mber.?depen?dent ?numbe?r.ind?epend?ent=7?; num?ber.d?epend?ent=5?; %记?录数据中每?行的数据个?数numb?er.ro?w num?ber.r?ow=nu?mber.?indep?enden?t+num?ber.d?epend?ent; ? coef?ficie?nt.CA?=data?(1:en?d,num?ber.i?ndepe?ndent?+1); ?coeff?icien?t.CN=?data(?1:end?,numb?er.in?depen?dent+?2); c?oeffi?cient?.CZ=d?ata(1?:end,?numbe?r.ind?epend?ent+3?); co?effic?ient.?CM=da?ta(1:?end,n?umber?.inde?pende?nt+4)?; coe?ffici?ent.C?Q=dat?a(1:e?nd,nu?mber.?indep?enden?t+5);? ? 2015-2016(2)循环结构练习题 一、单选题 (共 40题 , 共 100分) 1. 以下正确的描述是() (2分) A.continue 语句的作用是结束整个循环的执行 B. 只能在循环体内和 switch 语句体内使用 break 语句 C. 在循环体内使用 break 语句或 continue 语句的作用相同 D. 从多层循环嵌套中退出时,只能使用 goto 语句 标准答案:B 考生答案: 2. 下面的关键字中,不能够从循环体中跳出循环体外的是() (2分) A.goto B.break C.return D.continue 标准答案:D 考生答案: 3. 以下叙述中错误的是() (2分) A. 语句标号是由合法的标识符后面加一个冒号构成 B.goto 语句的作用是把程序的执行转向语句标号所在的位置 C.goto 语句必须与语句标号在同一个函数内 D. 结构化程序设计主张使用 goto 语句,使用 goto 语句的程序可读性强 标准答案:D 考生答案: 4. 有以下程序段, while 循环执行的次数是() int k=0; while(k=1)k++; (2分) A. 无限次 B.有语法错,不能执行 C. 一次也不执行 D.执行 1次 标准答案:A 考生答案: 5. 运行以下程序的结果为() main() { int num=0; while (num<> {num++; printf( } } (2分) A.1234 B.123 C.12 D.1 标准答案:B 考生答案: 6. 下述程序的输出结果是()。 #include main() { int Y=100; while(Y--); printf( (2分) A.Y=0 B.Y=1 C.Y=随机值 D.Y=-1 标准答案:D 考生答案: 7. 执行下面的程序后的输出结果为() int x,y,z; x=20,y=40,z=15; while(y>x) x+=4,y-=4; z/=2; printf( A.40,36,30 B.32,8,7 C.32,28,7 D.32,28,7.5 标准答案:C 考生答案: 8. 以下程序段的输出结果是() int x=0,y=5,z=3; while(z-->0&&++x<5) y="">5)> printf( A.3,2,0 B.3,2,-1 C.4,3,-1 D.5,-2,-5 标准答案:B 考生答案: 9. 下述语句执行后,变量 k 的值是() int k=1; while(k++<10);>10);> A.10 B.11 C.9 D.此为无限循环,值不定 标准答案:B 考生答案: 10. 下面程序的运行结果是()。 main() { int c1=2, c2=0; while(!c2--) printf( } (2分) A.1,-1 B.不输出任何内容 C.2,-1 D.2,0 标准答案:C 考生答案: 11. 运行以下程序后 , 如果从键盘上输入 china#main( ) { int v1=0,v2=0; char ch ; while((ch=getchar())!='#') switch(ch) { case 'h': default: v1++; case '0': v2++; } printf( (2分) A.2,0 B.5,0 C.5,5 D.2,5 标准答案:C 考生答案: 12. main( ) { int p[7]={11,13,14,15,16,17,18}, i=0,k=0; while(i<> { k =k+ p[i]; i++; } printf( } 执行后输出结果是() (2分) A.58 B.53 C.38 D.24 标准答案:C 考生答案: 13. 有以下程序段 : int x=3; do { printf( 标准答案:C 考生答案: 14. 以下叙述正确的是 ( ) (2分) A.do-while 语句构成的循环不能用其它语句构成的循环来代替。 B.do-while 语句构成的循环只能用 break 语句退出。 C. 用 do-while 语句构成的循环 , 在 while 后的表达式为非零时结束循环。 D. 用 do-while 语句构成的循环 , 在 while 后的表达式为零时结束循环 标准答案:D 考生答案: 15. 以下程序段的输出是() int x=7,y=5,z=1; do { if(!(z%x)) if(!(z%y)) {printf( z++; }while(z!=0); (2分) A.70 B.35 C.105 D.140 标准答案:B 考生答案: 16. 有以下程序段 : do { printf( while(!x); 其输出结果是 ( ) (2分) A.321 B.23 C. 不输出任何内容 D.死循环 标准答案:B 考生答案: 17. 有以下程序段 : int s=0,a=1,n; scanf( do { s+=1;a=a-2; } while(a!=n); printf( 若要使程序的输出值为 2,则应该从键盘给 n 输入的值是 ( ) (2分) A.-1 B.-3 C.-5 D.0 标准答案:B 考生答案: 18. 有以下程序段 : int i=0,s=0; do { if(i%2){i++;continue;} i++;s+=i; } while(i<> printf( 其输出结果是 ( ) (2分) A.16 B.13 C.28 D.21 标准答案:A 考生答案: 19. 下列程序段的输出结果是() int i,n=0; for(i=2;i<> { do { if(i%3)continue; n++; }while(!i); n++; } printf( A.n=5 B.n=2 C.n=3 D.n=4 标准答案:D 考生答案: 20. 在 C 语言的循环语句 for,while,do-while 语句中,用于直接中断最内层循环的语句是 () (2分) A.switch B.continue C.break D.if 标准答案:C 考生答案: 21. 执行以下语句后 sum 的值为 ( ) int i=10;sum=0; do {sum+=i; i++;} while(i<10);>10);> A.0 B.1 C.11 D.10 标准答案:D 考生答案: 22. 以下程序段满足什么条件时循环会结束: int n=0,p; do { scanf( n++; }while(p!=12345&&n<3); (2分) A.p 的值不等于 12345并且 n 的值小于 3 B.p 的值等于 12345并且 n 的值大于等于 3 C.p 的值不等于 12345或者 n 的值小于 3 D.p 的值等于 12345或者 n 的值大于等于 3 标准答案:D 考生答案: 23. 设 j 为 int 型变量,则下面 for 循环语句的执行结果是() for(j=10;j>3;j--) { if(j%3) j--; --j;--j; printf( } (3分) A.6 3 B.7 4 C.6 2 D.7 3 标准答案:B 考生答案: 24. 以下程序的输出结果是 ( ) main() { int i,s=0; for (i=1;i<10;i+=2) s+="">10;i+=2)> printf( } (3分) A. 自然数 1到 9的累加和 B.自然数 1到 10的累加和 C. 自然数 1到 9中奇数之和 D.自然数 1到 10中偶数之和 标准答案:D 考生答案: 25. 以下程序的输出结果是 ( ) main() {int i; for(i='A';i<'I';i++,i++)printf( printf( } (3分) A. 编译不通过,无输出 B.aceg C.acegi D.abcdefghi 标准答案:B 考生答案: 26. 下述 for 语句 , 假定运行时输入的值不是 876 int i,x; for(i=0,x=1;i<> scanf( A. 循环 10次 B.循环 9次 C. 无限循环 D.一次也不循环 标准答案:A 考生答案: 27. 以下程序段的输出结果是() #include main() { int k=4,n; for(n=0;n<> { if(n%3!=0)continue; k--; } printf( (3分) A.1,1 B.2,2 C.3,3 D.4,4 标准答案:C 考生答案: 28. 以下程序执行后 sum 的值是 ( ) main() { int i,sum; for(i=1;i<6;i++) sum+="">6;i++)> printf( } (3分) A.15 B.14 C.不确定 D.0 标准答案:C 考生答案: 29. 以下程序的输出结果是() main() { int i=0,s=0; for(;;) { if(i==3||i==5)continue; if(i==6) break; i++; s+=i; } printf( } (3分) A.10 B.13 C.21 D.程序进入死循环 标准答案:D 考生答案: 30. 下面程序段的输出结果是() int a=1,b; for(b=1;b<> { if(a>=8) break; if(a%2==1){a+=5;continue;} a-=3; } printf( A.3 B.4 C.5 D.6 标准答案:B 考生答案: 31. 下列程序的输出结果是 ( ) main( ) { int i, j, m=0, n=0; for(i=0; i<2;>2;> for(j=0; j<2;>2;> if(j>=i) m=1; n++; printf( (3分) A.4 B.3 C.2 D.1 标准答案:D 考生答案: 32. 下列程序段的输出结果是() int k=0,m=0; int i,j; for(i=0;i<> { for(j=0;j<> k++; k-=j; } m=i+j; printf( A.k=0,m=3 B.k=0,m=5 C.k=1,m=3 D.k=1,m=5 标准答案:B 考生答案: 33. 以下程序的输出结果是 main() { int i,j,x=0; for(i=0;i<> { x++; for(j=0;j<> { if(j%2) continue; x++; } x++; } printf( } (3分) A.x=4 B.x=8 C.x=6 D.x=12 标准答案:B 考生答案: 34. 以下循环体的执行次数是 ( ) main() { int i,j; for(i=0,j=1;i<> printf( A.3 B.2 C.1 D.0 标准答案:C 考生答案: 35. 以下程序段的输出结果为() int x, i; for(i=1;i<> { x=i; if(x%2==0) { x++; if(x%3==0) { x++; if(x%7==0) { x++;printf( } } } (3分) A.28 B.27 C.42 D.26 标准答案:D 考生答案: 36. 以下程序段不是死循环的是() (5分) A.int i=100; while(1) { i=i%100+1; if(i>100) break; } B.for(;;) ; C.int k=0; do{++k;} while(k<> D.int s=36; while(s); --s; 标准答案:C 考生答案: 37. 以下程序的输出结果是 ( ) main() { int i; for(i=1;i<> { if(i%2){printf( printf( } } (3分) A.#*#*# B.##### C.***** D.*#*#* 标准答案:A 考生答案: 38. 以下程序的输出结果是 ( ) main() { int a,b; for(a=1,b=1;a<> {if(b>=10) break; if (b%3==1) {b+=3;continue;} } printf( (3分) A.101 B.6 C.5 D.4 标准答案:D 考生答案: 39. 设 x 和 y 均为 int 型变量,则执行以下的循环后, y 值为 ( ) for(y=1,x=1;y<> { if(x==10)break; if (x%2==1) {x+=5;continue;} x-=3; } (3分) A.2 B.4 C.6 D.8 标准答案:C 考生答案: 40. 下面程序段的输出结果为() int i,s; s=0; for(i=1;i<> { s+=i; if(s>5) break; } printf( A.5050 B.6 C.5 D.0 标准答案:B 考生答案:范文二:c语言循环例题
范文三:c语言循环例题
范文四:c语言输入输出
范文五:c语言循环结构练习