C语言题目初学者(2) 📅 2026/7/1 8:18:00 5.斐波那契数列1递归求第n个数调用前面的。intfib(intn){if(n1||n2)return1;elsereturnfib(n-1)fib(n-2);}存在的问题是可能会栈溢出指数增长2for循环intn;inta11,a21,num1;scanf(%d,n);//n2才会进入循环否则就直接是1for(inti2;in;i){//要注意每次循环a1和a2都要变最后要求的这个数num也跟着变numa1a2;inttempa2;a2num;a1temp;printf(num%d\n,num);}3更简单的写法for(inti;in;i){a1a1a2;a2a1a2;}//直接输出2开始往后的2n个a1a2不会重复6.将一个正整数n分解质因数例如输入90打印90233*5这个题我们首先要思考我首先会想到从2开始循环但是每个i都要判断是否是质数这样就会出现问题如果数字充分应该怎么办如上面有2个3是否再多弄一个循环呢我们可以转换思路多想一下如果我直接从2开始除nn/i其实这个i肯定是指数原因也很简单例如32%80但是8这个数并不会出现在三个2后就不可能轮得到它每个都能用比它小的质数相乘来表示。#includestdio.hintmain(){intm90;printf(%d,m);for(inti2;im;i){//外层循环控制循环次数while(m%i0){//while语句就像if语句多次执行printf(%d,i);mm/i;if(m!1){printf(*);//像*这样的有的有而有的没有这里是中间有可以用if}}}return0;}7.统计字母、数字、空格和其他字符的个数1.可以利用ASCII码来进行判断。char和int在本质上是一样的只是我们看到的有所不同。2.char cgetchar()进行输入会读到\n而不是留在缓冲区。#includestdio.hintmain(){charin;intl0,n0,s0,o0;while(ingetchar()!\n){//注意1赋值运算符的优先级更低必须要加if(inAinZ||inainz){l;}elseif(in0in9){//注意2是和字符0作比较而不是0后者比较的是ascii码n;}elseif(in ){s;}elseo;}printf(字母:%d,数字:%d,空格:%d,其他:%d,l,n,s,o);return0;}输入: Hello World 123!输出: 字母: 10, 数字: 3, 空格: 2, 其他: 1