- 博客(39)
- 收藏
- 关注
原创 计算阶乘3
同时,使用 getchar() 清空输入缓冲区,避免无效输入导致的死循环。- 使用 for 循环,从 1 迭代到 n ,每次迭代将 result 乘以当前的 i 值,从而逐步计算出 n 的阶乘。printf("%d 的阶乘是:%lld\n", num, factorial(num));printf("%d 的阶乘是:%d\n", num, factorial(num));// 清空输入缓冲区。printf("%d 的阶乘是:%d\n",num,factorial(num));
2025-01-02 15:59:33
667
原创 判断素数。
例如,在 if (n <= 1) 语句中,就需要将 flag 设为 1 (因为小于等于1的数不是素数,此时要将假设的 0 反转),并且在 for 循环中,如果 n 能被 i 整除,反而需要保持 flag 为 0;这里使用 sqrt(n) 是因为一个数 n 如果有大于 sqrt(n) 的因子,那么它必然有一个小于 sqrt(n) 的对应因子,所以只需要检查到 sqrt(n) 就可以判断 n 是否为素数。- 如果 flag 为 0 ,说明 n 不是素数,输出 %d 不是素数\n。
2025-01-01 10:09:31
867
原创 给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。
int main()int C, F;return 0;
2024-12-30 11:05:12
371
原创 某个数是否为完全数的功能(完全数是指其所有真因子(即除了自身以外的约数)之和等于它本身的数):
通过一个 for 循环从 1 到 a - 1 遍历,在循环中判断每个数 i 是否能整除 a (即 a % i == 0 ),如果能整除,就把 i 作为 a 的真因子累加到变量 s 中。- 循环结束后,比较 s 和 a 的值,如果 s 等于 a ,说明 a 的所有真因子之和等于它本身,此时函数返回 1 ,表示 a 是完全数;if (wms(x) == 1) // 调用wms函数判断并根据返回值输出相应结果。if (a % i == 0) // 如果i是a的约数(即能整除a)- 接受一个整数参数 a。
2024-12-29 14:22:02
606
原创 4-1 输出一组成绩中的最高分和最低分
第一行输入n,大于0的整数;第二行输入n个大于等于0,小于等于100的整数,用空格分开。第一行输入人数n,第二行输入每个人的成绩,用空格分开。输出所有成绩中的最高分和最低分。最高分和最低分,用空格分开。
2024-12-28 10:32:18
581
原创 6-4 在数组中查找1 编写程序在 n 个元素的数组中查找指定的元素 x。输入格式:第一行包含两个整数 n 和 x,分别表示数组元素的个数(不超过 20)和待查找的数。第二行包含 n 个整数
int n, x;i < n;i++) {i < n;i++) {found = 1;break;if (!found) {return 0;
2024-12-26 12:44:40
201
原创 7-3 一维数组排序 对数组的元素按从小到大进行排序。输入格式:第一行有一个整数n (<10);第二行n有元素,在10^19范围内。输出格式:输出排序后的数组。
这是一个函数声明,定义了一个名为 bubbleSort 的函数,该函数接受一个长整型数组 arr 和数组的大小 n 作为参数,返回类型为 void ,即不返回任何值。j 的范围是从0到 n-i-1 ,随着外层循环的进行,每一轮需要比较的元素个数逐渐减少。- 使用另一个 for 循环遍历排序后的数组,并输出数组元素。★这段C语言代码实现了对一个由用户输入的长整型数组进行冒泡排序,并按从小到大的顺序输出排序后的数组。这段代码整体的功能是从用户获取一个长整型数组,对其进行冒泡排序,然后按顺序输出排序后的数组。
2024-12-25 15:07:10
761
原创 指针8-1 使用函数的选择法排序
要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。输入一个正整数 n (1
2024-12-25 06:40:11
460
原创 8-3 删除字符串中指定字母 请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc。
/ 将当前字符复制到新的位置。// 如果当前字符不是 'a'// 在新字符串末尾添加结束符。// 1. 输入字符串。// 2. 遍历字符串。// 3. 输出结果。
2024-12-24 20:09:23
434
原创 8-4 最大和最小 请使用指针法(间接访问)编写程序,程序的功能是从键盘输入 10 个数,求其最大值和最小值的差。输入格式:输入10个整数
在循环中,通过比较当前元素 *(p + i) 与 max 和 min 的大小,更新 max 和 min 的值。★这段代码的功能是从用户输入中读取10个整数,然后找出这10个整数中的最大值和最小值,并输出它们的差值。- 使用 for 循环遍历数组,通过 scanf 函数从用户输入中读取10个整数,并存储在数组 num 中。- num[10] 声明了一个包含10个整数的数组,用于存储用户输入的整数。- max 和 min 分别用于存储数组中的最大值和最小值。
2024-12-24 20:01:30
777
原创 7-2 输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。 输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出格式:在一行中输出逆序后的字符串。
它通过调用 strlen 函数获取输入字符串 str 的长度(即字符串中字符的个数,不包含字符串结尾的 \0 字符),后续代码可以利用这个 len 的值来控制循环等操作,比如在循环中依据字符串长度来实现对字符串中各个字符的遍历处理等。这里将定义好的字符数组 str 作为存放字符串的缓冲区传递给 fgets 函数, sizeof(str) 确定了最多读取的字符数量(在这个例子中就是81个字节,包含最后的 \0 ), stdin 表示从标准输入(通常是键盘输入)读取数据。
2024-12-23 10:21:41
647
原创 本题要求编写程序,计算序列 1+2/3+3/5+4/7+5/9+6/11+... 的前N项之和。输入格式:在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,结果保留 2 位小数。
接着调用 fun 函数,在 fun 函数里的 for 循环会依次让 i 取 1 、 2 、 3 、 4 、 5 ,并将这些值累加到 sum 中,最终 sum 的值为 1 + 2 + 3 + 4 + 5 = 15 ,这个 15 作为返回值返回给 main 函数中的 result 变量。- 输入合法性检查方面:当前代码没有对用户输入进行合法性检查,如果用户输入的不是合法的整数(比如输入字母等),程序可能会出现未预期的行为甚至崩溃。注意sum要强制转换类型。
2024-12-22 15:21:01
845
原创 从键盘上输入10个数,再输入一个数a, 找 a 在这10个数中第一次出现的位置。
之后的 while 循环会在 i 小于等于9(保证不越界访问数组)并且要查找的数字 x 不等于当前数组元素 a[i] 的情况下持续进行循环,每循环一次 i 就自增1,这样就可以逐个元素去比较查找 x 在数组中的位置了。反之,如果 i 小于等于9,说明找到了,就输出 x 在数组中第一次出现的位置,由于数组下标从0开始,而题目要求输出的是位置(从1开始计数),所以输出 i + 1。// 此处添加这行代码,对循环变量i进行初始化,用于后续while循环的起始判断。
2024-12-22 15:18:20
580
原创 8-3删除字符串中指定字母
如果不等于 a ,那么就执行 *q = *p ,这一步的作用是把 p 指向的不是 a 的字符复制到 q 指向的位置,然后 q 指针向后移动一位( q++;首先,我们从键盘读取一个字符串,然后遍历这个字符串。p 用于遍历原始字符串, q 用于构建新的字符串(即删除 a 后的字符串)。- 定义了一个字符数组 str 用来存储输入的字符串,它的大小为100,足以满足题目中字符串长度小于100的要求。- 我们将 q 指向的位置赋值为 '\0' ,这是因为 q 现在指向新字符串的末尾,需要添加字符串结束标志。
2024-12-17 07:34:59
444
原创 8-2 指针做为函数参数(交换变量)
然后调用 swap 函数,将 a 和 b 的地址(通过 & 操作符获取)作为参数传递给 swap 函数。void swap(int *pa, int *pb) { // 交换 *pa 和 *pb。- 最后,在 main 函数中通过 printf 函数输出交换后的 a 和 b 的值。- 通过 scanf 函数从标准输入读取两个整数,分别存储到 a 和 b 中。- 在 swap 函数内部,通过指针操作交换了 a 和 b 的值。- 首先定义了两个 int 类型的变量 a 和 b。
2024-12-16 15:02:42
562
原创 计算并打印一个二维数组(数组的数组)中值为奇数的元素之和。题目保证输入的元素均为绝对值不超过10000的整数。
int (*array)[5] :这是一个指针类型的参数,它指向的是一个包含5个 int 类型元素的数组,简单来说,它用于接收一个二维数组(其第二维大小为5)的首地址(二维数组名在传递给函数等场景下会退化为指向其首行的指针,而这里的 array 指针就是用来接收这种指针的)。总的来说,这段代码就是定义了一个名为 sumOdd 的函数,它准备接收一个特定格式(行数任意,但列数固定为5的二维数组)的二维数组和其行数作为参数,在函数内部会进行相应的处理来返回一个整型的求和结果。
2024-12-14 11:11:31
714
原创 本题要求采用选择法排序,将给定的n个整数从大到小排序后输出。
从 k + 1 位置开始(因为已经默认 a[k] 是最大元素候选了,所以从它后面的元素开始找更大的)到 n 遍历未排序的部分,用 if 语句比较 a[i] 和当前记录的最大元素 a[index] ,如果 a[i] 更大,就更新 index 为 i ,这样内层循环结束后, index 就指向了这一轮未排序部分中的最大元素下标。每一轮循环开始时,先默认当前未排序部分的第一个元素(也就是 a[k] 所在位置的元素)是最大元素,所以将 index 初始化为 k。// 外层循环控制排序轮数,一共需要n-1轮。
2024-12-10 15:58:42
785
原创 在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值)否则输出-1。
通过 for 循环遍历字符串 cstr 中的每一个字符(循环次数由 inum 决定),在循环内使用 if 语句判断当前字符( cstr[ii] )是否等于要查找的指定字符 ch ,如果相等,就将 iflag 设置为 0 表示找到了,并且使用 break 语句跳出循环,避免继续不必要的查找。如果 iflag 为 0 ,说明找到了,此时输出找到字符时对应的下标值 ii (也就是字符在数组中第一次出现的位置)。// 输出找到的指定字符的下标值。
2024-12-09 14:42:52
507
原创 下面的程序完成求10名学生的数学成绩的平均分数
2. 在第二个 for 循环处补全循环条件为 int i = 0;来定义一个可以存放10个整数的数组,用于接收后面通过 scanf 输入的10个整数。3. 添加了计算平均值的语句 aver = sum / 10;,将总和除以元素个数10得到平均值,最后按要求输出平均值。i++) // 循环累加数组元素求总和。注意在实际应用中,最好对输入的合法性等做更完善的判断等处理,这里是一个简单的基本功能实现示例。// 定义用来存储输入数据的数组。
2024-12-07 20:45:33
560
原创 以下程序从键盘读入10个数据到数组中,统计其中正数的个数,并计算它们之和。
1. 在第一个 for 循环中,目的是从键盘读入10个整数存到数组 a 中, scanf 函数用于接收输入,它接收一个变量的地址来存储输入的值,对于数组 a 的元素 a[i] ,其地址就是 &a[i] ,所以此处应填入 &a[i]。2. 在第二个 for 循环里,当判断数组元素 a[i] 是正数时( a[i]>0 ),要把这个正数累加到变量 sum 中,直接使用该数组元素 a[i] 即可实现累加功能,所以这里填入 a[i]。
2024-12-05 07:37:06
503
原创 从键盘输入一组整数,对偶数和奇数分别求和。
如果 x 除以2余数为0,说明 x 是偶数,就将 x 累加到 *even 所指向的变量中(通过 *even += x 实现)。- 接着调用 sum(x, &odd, &even) 函数,将当前获取的整数 x 以及奇数和、偶数和对应的变量地址传递给 sum 函数,以便在 sum 函数中对奇数和与偶数和进行相应的累加操作。- 首先定义了几个变量, x 用于存储每次通过 scanf 获取的用户输入整数, i 用于循环计数, odd 初始化为0用于存储奇数和, even 初始化为0用于存储偶数和。
2024-12-04 13:49:04
733
原创 输入字符‘y‘或‘Y‘,则在屏幕上输出字符串“Yes.“;输入其它字符,则在屏幕上输出字符串“No.“。要求定义和调用函数YesNo(ch),当ch为‘y‘或‘Y‘时输出“Yes.“,当ch为其它字符
最后通过 printf 函数将前面条件表达式得到的结果(要么"Yes."要么"No.")按照字符串格式( %s )输出到控制台,并且输出一个换行符( \n ),使得下一次输出会从新的一行开始。- YesNo(ch) :这是调用一个名为 YesNo 的函数,并且传入了变量 ch 作为参数,这个函数应该会根据传入的字符 ch 进行一些判断处理,然后返回一个值(在前面完整代码示例中,返回值是1表示输入字符是 y 或 Y ,返回0表示其他字符)。
2024-12-03 07:50:03
633
原创 用c语言来判断整数的各位数字之和是否为质数
num /= 10) 中,第一个分号前面的部分是初始化语句部分,这里留空表示没有在 for 语句头部进行初始化操作(可能已经在循环外初始化好了相关变量,比如前面代码里 int sum = 0;i++) // 这里应该是i <= sqrt(num),遍历到num的平方根即可判断是否为质数。if (isPrime(sumDigits(num)) == 1) printf("各位数字之和是素数!int sumDigits(int num) { //返回num各位数字之和。
2024-12-02 08:15:05
953
原创 6-4以下是使用欧几里得算法来计算两个数最大公约数的函数
比如求12和8的最大公约数,12除以8余4,那接下来就求8和4的最大公约数,8除以4余数为0了,这时的除数4就是12和8的最大公约数呢。所以通过不断这样迭代,就能找到最初给定的两个数x和y的最大公约数啦。- 当不断用除数和余数来重复这个过程(也就是把y和x除以y的余数作为新参数传入继续求最大公约数),最终余数会变为0。// 否则,通过递归计算 x 除以 y 的余数和 y 的最大公约数。- 两个整数的最大公约数,等于其中较小数和两数相除余数的最大公约数。// 如果 y 为 0,则最大公约数就是 x。
2024-11-22 19:48:20
542
原创 计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。例如:n 的值为 12 时,除了 1 和 12 外的因子有 2、3、4、6,和为 15,应输出 15
在循环中通过 n % i == 0 来判断 i 是否为 n 的因子,如果是,就将其累加到 s 中。需要重点关注的是对因子的判断条件 n % i == 0 以及在循环中累加因子的操作 s = s + i。1. 首先,定义了一个函数 sumOfFactors 用于计算给定整数 n 除 1 和自身外的因子之和。printf("除 1 和自身外的因子之和为:%d\n", result);- 用一个 for 循环从 2 到 n - 1。- 定义 n 为 12。
2024-11-15 08:09:11
610
原创 分别用else if语句和switch语名完成下列编程题输入一个整数月份(1到12),输出对应的季度(第一季度、第二季度、第三季度、第四季度)。如果输入的月份不在1到12之间,输出错误提示。
printf("第一季度\n");printf("第二季度\n");printf("第三季度\n");printf("第四季度\n");printf("第一季度\n");printf("第二季度\n");printf("第三季度\n");printf("第四季度\n");printf("错误提示\n");printf("错误提示\n");
2024-11-15 08:02:48
529
原创 第一行输入人数n,第二行输入每个人的成绩,用空格分开。输出所有成绩中的最高分和最低分
每次循环读入一个新的成绩 m ,然后与当前的 max 和 min 进行比较。首先通过 scanf 获取要输入的数据个数 n ,接着读入第一个成绩并赋值给 m ,然后将 m 的值同时赋给 max 和 min ,也就是先假设第一个成绩既是最大值也是最小值。总体而言,这段代码实现了从用户输入的一组整数中找出最大值和最小值并输出的功能,但它没有对输入错误(比如输入非整数等情况)进行处理。这段代码的主要功能是从用户输入获取一系列整数(表示成绩等数据),然后找出这组数据中的最大值和最小值,并将它们输出。
2024-11-14 06:50:19
1024
原创 判断成绩等级,输入3个科目的成绩,如果三门成绩都大于等于80则为优秀,输出等级为A;其余情况为一般,输出等级为B;
输出字符 B 并换行。通过 scanf 函数,按照指定的格式 %d %d %d (表示读取三个整数),从标准输入(通常是键盘)获取用户输入的值,并将它们分别存储到 score1 、 score2 、 score3 这三个变量的地址所指向的内存单元中。这段代码的主要目的是从用户那里获取三个整数类型的成绩( score1 、 score2 、 score3 ),然后根据这三个成绩是否都大于等于80来输出不同的等级。总体来说,这段代码实现了一个简单的成绩等级判断功能,根据输入的三个成绩来确定输出相应的等级。
2024-11-13 08:25:45
670
原创 给定N个正整数,请统计奇数和偶数各有多少个?
如果 m 除以 2 的余数为 0,则 m 是偶数,将 b 的值加 1。其中 a 用于记录奇数的个数, b 用于记录偶数的个数, i 是循环控制变量, n 表示需要统计的正整数个数, m 用于存储每次输入的正整数。9. printf ("请输入需要统计的正整数个数:奇数的个数为:%d,偶数的个数为:%d",a,b);printf ("请输入需要统计的正整数个数:奇数的个数为:%d,偶数的个数为:%d",a,b);// 若number除以2的余数是0,则为奇数。//a记录奇数的个数。
2024-11-12 08:13:14
1818
原创 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
(ch >= 'a' && ch = 'a' && ch = 'A' && ch
2024-11-11 12:00:57
2500
原创 5-1用c语言来求五边形的面积
首先计算半周长 s ,然后使用海伦公式 sqrt(s * (s - a) * (s - b) * (s - c)) 计算并返回面积。在 main 函数中,定义了 7 个双精度浮点数 a 到 g ,然后使用 scanf 函数从用户处获取 7 个双精度浮点数的输入。这两行是预处理指令,包含了标准输入输出头文件 和数学库头文件 ,以便使用输入输出函数和数学函数。
2024-11-10 09:40:29
666
原创 5-2用c语言来计算素数和
在循环中,调用 isPrime(num) 函数判断当前输入的数是否为素数,如果是素数,则将该数累加到 sum 中。- 然后从 2 开始遍历到该数的平方根,如果在这个范围内存在一个数能整除输入的数,说明该数不是素数,返回 0。这段代码用于计算输入的一系列整数中所有素数的和,直到输入的数为 1 时停止计算并输出结果。- 首先判断输入的数是否小于 2,小于 2 的数不是素数,直接返回 0。- 如果遍历完都没有找到能整除的数,说明该数是素数,返回 1。- 循环结束后,输出 sum 的值,即输入的所有素数的和。
2024-11-09 11:14:56
1308
原创 5-3用c语言来判断闰年
根据 flag 的值判断输入的年份是否为闰年,如果 flag == 1 ,说明是闰年,输出“ year is a leap year.”;- 在主函数中,通过调用 Year(year) ,可以得到关于输入年份是否为闰年的判断结果。这个结果被存储在变量 flag 中,然后根据 flag 的值输出相应的信息,告知用户输入的年份是否为闰年。- 该函数的目的是判断传入的年份是否符合闰年的条件。闰年的判断规则是:能被 4 整除且不能被 100 整除的年份为闰年,或者能被 400 整除的年份也是闰年。
2024-11-08 18:59:16
1387
原创 (结构体)
一般在定义时会预估字符串可能的最大长度,然后根据这个预估来确定数组的大小。在这个例子中,估计名字的长度不会超过 19 个字符,所以选择了 20 作为数组的大小。比如“zhōng guó”(中国),这是一系列字母按照特定的排列形成的有意义的表述,符合字符串的特征。- 这样可以容纳最多 19 个字符的字符串(因为需要留一个位置给字符串结束符 '\0' )。1. 拼音是由多个字母组成的序列,具有一定的顺序和长度,可以表示不同的意思。★struct为类型名,stu为类名,s为变量。我用10也可以,但用5会有警告。
2024-11-06 17:03:26
345
原创 4-2用c语言来写阶乘
对于较小的整数,例如 5 以内,阶乘的值还能使用 int 类型来存储。但当 n 较大时,阶乘的结果会变得非常大, int 类型(通常为 4 字节,取值范围有限)可能无法容纳阶乘的结果,容易导致溢出错误。long long 类型通常具有更大的取值范围(通常为 8 字节),能够存储更大的整数,从而可以处理更大整数的阶乘计算,减少出现溢出错误的可能性。在 C 语言中, result *= i;在 main 函数中,首先定义一个整数 n ,使用 scanf 函数获取用户输入的整数。
2024-11-01 16:56:01
561
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅