发表几个学习过程中的小程序

xiaoxiao2021-03-01  16

首先发一个逆序排列的程序,输入5个数,让其逆序排列。

#include <stdio.h>int main(){ int ch[5], i,j ,t; printf("请输入5个数:\n"); for (i = 0; i < 5; i++) { printf("第%d数为:", i + 1); scanf_s("%d", &ch[i]); } for (i = 0; i < 2; i++) { t = ch[i]; ch[i] = ch[4-i]; ch[4-i] = t; } for (i = 0; i < 5; i++) { printf("%d,", ch[i]); } return 0;

}

首先根据题目只有5个数字,所以排序过程中,只需把a[0]和a[1]与a[3]和a[4]顺序交换即可,挺简单的一道题目。

下面是一个for循环三重嵌套的题目。

题目:由1,2,3,4这几个数字,能组成多少个互不相同且无重复的三位数?都是多少?

#include<stdio.h>int main(){ int a, b, c; int i=0; for (int a = 1; a < 5;a++) for (int b = 1; b < 5; b++) for (int c = 1; c < 5; c++) { if (a != b&&a != c&&b != c) { printf("%d\t", 100 * a + 10 * b + c); i++; } } printf("一共组合数为%d种\n", i);

}

首先根据题目是3位数可以设定3个变量,分别表示3位数的个位,十位和百位,然后使用3重for循环,分别让个位,十位,百位的数在1-4之间循环,最后加入判定条件,也就是3位数的每一位各不相同,然后输出结果。而循环的次数i则代表了,一共有多少种组合方式。当然这种简单的数学问题,不通过循环也可以计算出个数,即4个数组成3位数且每一位各不相同的组合方式为4*3*2=24种。如果位数上可以相同的话,就是4*4*4=64种组合方式。

最后一题是函数的应用。

题目是写一个函数,可以通过它输出字符串长度。(字符串为用户输入的)。

#include<stdio.h>#include<string.h>#include<stdlib.h>using namespace std;int zifuchangdu(char s[]){ int l = 0; while (s[l])//循环当s[l]==0时,退出循环。字符串最后一个数字是\0。 { ++l; } return l;}int main(){ char name1[1000]; printf("请输入新名称:", name1); gets_s(name1); int c=zifuchangdu(name1); printf("%d\n", c);

}

首先为函数设定一个参数,即char s[],然后设定字符串长度的计算公式。使用while循环,当字符串数组中的元素等于0时,结束循环。因为字符串默认最后以为是‘\0’,然后返回值就是当前元素的下标,也就是字符串的长度。这里要注意,只有当s[l]的值是\0时才会推出while循环,如果输入字符有0的时候会默认是字符串中一个元素,同样会记入到字符串长度中。最后我们设定一个整型c来输出字符串的函数。

最后要强调一点函数使用规则,首先函数前面的定义名决定了是否需要函数的返回值,以及返回值的类型,如int就定义了函数需要有返回值且返回值为整型,而char则定义了返回值需要是字符,而不是数值。void这种关键词定义的函数则不需要返回值。

其次,函数在运算过程中,所有函数内的赋值和变量只在函数的作用域中有效果,出了函数之后需要重新定义所需要的变量,也就是说,函数最后的运算结果,要么返回一个需要的数值,要么进行一系列操作,不返回数值。而且函数的形参和实参也可以定义成1个变量,并不影响函数的运算。

当然不见得100%正确,毕竟是个人理解,如有不对之处,也希望有大神指正。

转载请注明原文地址: https://www.6miu.com/read-3100169.html

最新回复(0)