admin管理员组文章数量:1794759
详见。C语言必背18个经典程序上
1.…输出9*9口诀。共9行9列,i控制行,j控制列 #include <stdio.h> int main() { int i, j,result;//定义2个循环变量,英文:结果 for (i = 1; i <= 10; i++)//循环外层要等内层循环完才开始下一次 { for (j = 1; j <= 10-i ; j++)//每次都循环都减少10-i次。输出会向坡度一样递减。 { result= j * i; printf("%4d=%d*%1d", result, j, i);//保证输出不粘连。 } printf("\\n");//内层循环完一次换行一次。 } return 0; } 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21 #include <stdio.h> int main() { int i,f1=1, f2=1; for (i = 1; i < 12; i++)//第3个云。开始 { printf("%12d%12d", f1, f2);//输出时分别输出f1 and f2,就完成 if (i % 2 == 0)//每排4个数。 printf("\\n"); f1 = f1 + f2; f2 = f1 + f2;//每一次都要加上最新跟新的一个数 //把他重叠起来看,会发现f2=f1+f2(原来的f2) + f2(跟新的f2)............. } return 0; } 3。判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数 #include <stdio.h>//判断质数 #include <math.h>//要用系统函数 int main() { int i, j,sum=0; int box;//存放处理好的数。 int on_off = 1;//开关的意思。 for (i = 101; i < 200; i++) { box = (int)sqrt(i);//强制类型转换。因为根号下一个数大概率不是一个整数要转化为整数。 for (j = 2; j <= box; j++)//逐个排查循环。 { if (i % j == 0)//质数判断的数学表达。 { on_off = 0;//开关的作用在于识别数字是否符合要求。 break;//跳出内层循环。 } else { on_off = 1; } } if (on_off == 1) { sum++;//计数循环。 printf("第%d个质数是%d\\t \\t ",sum, i); } } return 0; } 4.一个数如果恰好等于它的因子之和,这个数就称为 “ 完数 ” 。例如 6=1 + 2 + 3. 编程 找出 1000 以内的所有完数。 */ #include <stdio.h > #include <math.h>//数学函数 int main() { static int k[10];//静态变量。//bu不会被改变的值。 int i, j, n, s; for (j = 2; j < 1000; j++)//逐步走完每一个数 { n = -1; s = j; for (i = 1; i < j; i++)//寻找每一个数的因素。判断条件:一个数的因素一定小于他自己。。 { if ((j % i) == 0)//判断质数, { n++; s = s - i;//原则上每一次,每一次减去自己的因数,对应下面。 k[n] = i;//保存每一个数的因素。 } } if (s == 0)//减到0的时候,表示满足了条件,就输出了 { printf(" % d is a wanshu : ", j); for (i = 0; i < n; i++) printf(" %d ", k[i]); printf("%d\\n", k[n]); } } return 0; } 5. 下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出, 请在空白处完善程序。 #include <stdio.h> #include <math.h> main() { int a[4][4], b[4][4], i, j; /*a 存放原始数组数据, b 存放旋转后数组数据 */ printf("input 16 numbers: "); /* 输入一组数据存放到数组 a 中,然后旋转存放到 b 数组中 */ for (i = 0; i < 4; i++)//外层控制行变化。 for (j = 0; j < 4; j++)//控制列变化。 { scanf_s("%d", &a[i][j]); b[3 - j][i] = a[i][j];//******************关键转化。***************************** }printf("array b:\\n"); for (i = 0; i < 4; i++)//输出 { for (j = 0; j < 4; j++) printf("%6d", b[i][j]); printf("\\n"); } } 6.编程打印直角杨辉三角形 #include <stdio.h> int main() { int i, j, a[6][6];//定义一个数组的原因是建立一个已知空表格的形式,让数据有地方有规律的存放。 //因为数据不能无中生有 for (i = 0; i <= 5; i++)//打印函数三角形两边万年不变的1。。上下两个占用数珠不篡位。 { a[i][i] = 1; a[i][0] = 1; } for (i = 2; i <= 5; i++)//除1外,一共4行。 for (j = 1; j <= i - 1; j++)//每行的增加规律。//注意:每行j都要重新归位为1, a[i][j] = a[i - 1][j] + a[i - 1][j - 1];//对应杨辉三角。的位置关系。 for (i = 0; i <= 5; i++) { for (j = 0; j <= i; j++) printf("%4d", a[i][j]); printf("\\n"); } }
7.通过键盘输入 3 名学生 4 门课程的成绩,
#include <stdio.h> #include <stdlib.h> main() { float a[4][5],sum1,sum2; int i,j; for(i=0;i<3;i++)//3个人 for(j=0;j<4;j++)//4个科目 scanf("%f",&a[i][j]);//输入一个人的每一个科目成绩。才能输入下一个人。 for(i=0;i<3;i++) { sum1=0; for(j=0;j<4;j++)//便利一个人每一个科目成绩 sum1+=a[i][j]; a[i][4]=sum1/4;//一个人的平均成绩 } for(j=0;j<5;j++)// { sum2=0; for(i=0;i<3;i++) sum2+=a[i][j]; a[3][j]=sum2/3; } for(i=0;i<4;i++) { for(j=0;j<5;j++) printf("%6.2f",a[i][j]); printf("\\n"); } } 8.*,实现将输入的字符串反序输出 #include <string.h> #include <stdio.h> int main() //思想是循环赋值。(数组后面赋值给前面的) { char str[] = "window"; char ch; int len = strlen(str);//确定数组长度。 for (int i = 0; i < len / 2; i++)//循环条件是i小于长度一半时交换,多了就交换回去了。 { ch = str[i];//赋值 str[i] = str[len - i - 1];//因为数组是从0开始的,所以要减1. str[len - i - 1] = ch; } puts(str);//put函数输出。 return 0; }9.下面程序的功能是从字符数组s中删除存放在c中的字符
#include <stdio.h> int main() { char s[80], c; int j, k; printf("\\nEnter a string : "); gets(s);//gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。 printf("\\nEnter a character : "); c = getchar();//.读取字符,getchar()的功能最主要是c语言中读取字符的一个函数 for (j = k = 0; s[j] != "\\0"; j++)// if (s[j] != c)//条件判断。 s[k++] = s[j];//不等于c才读入s[]数组。 s[k] = '\\0';//将最后一个k赋值为’\\0,标志为字符串结束。 printf("\\n % s", s); }版权声明:本文标题:详见。C语言必背18个经典程序上 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686860427a111388.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论