C语言分支与循环(14) --- 相关练习题
  uUWKQE7Avyk4 2023年11月02日 52 0

一.试题

1.编写一段代码,输出1/1 + 1/2 +1/3 ····· +1/100的和


有问题的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	int i = 0;
	int sum = 0;
	for (i = 1; i <= 100; i++){
		sum = sum + 1 / i;
	}
	printf("sum=%d\n", sum);
	getchar();
	return 0;
}

上述代码创建了变量i与sum,其中i代表分母,sum用来接收每次相加的结果,创建了一个for循环,当变量i小于100的时候则循环执行for循环中的语句,乍一看这段代码好像没什么问题,但是当我们运行程序的时候我们会发现程序并未输出我们想要的结果,而只是输出了一个1,如图所示:

C语言分支与循环(14) --- 相关练习题_for循环

原因是在计算1/1 = 1 但是在计算 1/2的时候则商0余1,程序会自动抛弃余数,只取商,这导致了1+0+0 ··· 0,最后的结果也就是1,如果需要让程序计算小数部分则需要将变量sum的数据类型改为double(双精度浮点型),for循环中的 sum = 1 / i 也需要改成 sum = 1.0 / i 最后调用printf函数输出的时候 %d 也需要改成 %lf ,因为%d代表需要输出的内容数据类型为整型 %lf则代表输出的内容数据类型为双精度浮点型,这时候我们再来运行程序就可以发现程序运行正常,如图所示:

C语言分支与循环(14) --- 相关练习题_for循环_02


2.求出10个数字中的最大值


示例代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void){
	int arr[] = {10,9,8,7,6,5,4,3,2,1};
	int i = 0;
	int max = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i <= sz; i++){
		if (max < arr[i]){
			max = arr[i];
		}
	}
	printf("max = %d\n",max);
	system("pause");
	return 0;
}

代码解析:我们首先创建了一个数组变量arr,其数组的元素为10~1的数字,然后创建了变量i用来判断数组下标,变量max用来存储数组中最大元素的值,变量sz则是用来计算数组的元素个数使用for循环当变量i<=sz的时候进入循环,利用if语句如果max的值小于数组中的值则将当前值赋值给max,若max的值大于当前数组元素值则不进入循环,最后调用printf()函数输出max的值,这样就可以找到数组中最大的一个数了,如图所示:

C语言分支与循环(14) --- 相关练习题_练习_03



3.编写一段代码,输出9*9乘法口诀表



示例代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void){
	for (int x = 1; x < 10; x++){
		for (int y = 1; y < 10; y++){
			printf("%d*%d=%d ",x,y,x*y);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

代码解析:我们知道乘法口诀表是写成 x*y=z 的形式,那我们可以将x看作列,y看成列,外层for循环用于处理x,内层for循环用于处理y,其条件是x<10 y<10的时候,每次外层for循环执行完一次就调用printf()函数进行换行操作,这样我们就可以得到一张乘法口诀表了,如图所示:

C语言分支与循环(14) --- 相关练习题_数组_04

                                                                                                                         2023/8/1

                                                                                                                             王起舟

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  zLxnEsMLk4BL   2023年11月19日   30   0   0 数组字符串数组名
  gBkHYLY8jvYd   2023年11月19日   27   0   0 #include数组ci
  gBkHYLY8jvYd   2023年11月19日   23   0   0 cifor循环字符串
  X5zJxoD00Cah   2023年11月19日   19   0   0 数组单引号字符串
  gBkHYLY8jvYd   2023年12月10日   22   0   0 #include数组i++
uUWKQE7Avyk4