【C语言】程序填空题

系列文章目录



1、超长整数加法

从键盘输入两个超长整数,输出这两个数的和。



#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *ladd(char *s1, char *s2){
	int n1, n2, n, i;
	char *result, c = 0;
	n1 = strlen(s1);	//数字串s1的长度
	n2 = strlen(s2);	//数字串s2的长度
	n = n1 > n2?n1:n2;	//数字串s1,s2最大长度
	result = (char*)malloc(n + 2);	//申请存结果串的内存
	for(i = n + 1; i >= 0; i--)	//将s1从低位开始搬到result,没有数字的位以及最高位填'0'
		result[i] = i > n - n1?s1[i-n+n1-1]:'0';
	for( i = n; i >= 0; i--)
	{
		char tchar;
		tchar = i > n- n2?result[i]-'0'+s2[i - n + n2 - 1] - '0' +c:result[i] - '0' + c;	//将数字字符变为数
		c = tchar > 9?1:0;	//设进位
		result[i] = tchar % 10 + '0';
	
	}
	return result;
}
int main(){

	char num1[100], num2[100], *num;
	scanf("%s %s", num1, num2);
	num = ladd(num1, num2);
	printf("%s+%s=%s\n", num1, num2, num);
	free(num);
	return 0;

}


—————————————————————————————————
success
在这里插入图片描述

2.一维数组实现杨辉三角

#define LASTROW 10
int main(){
	int row, col a[11];
	a[1] = 1;
	printf("%4d\n", a[1]);
	for(row = 2; row <= LASTROW; row++)
	{
		a[row] = 1;
		for( col = row - 1; col >= 2; col--)
			a[col] = a[col] + a[col - 1];
		for(col = 1; col <= row; col++)
			printf("%4d", a[col]);
		printf("\n");
	}
### C语言程序填空题示例 以下是几个典型的C语言程序填空题及其解答: #### 示例一:字符串反转函数 ```c void reverse_string(char *str) { char temp; int start = 0, end = strlen(str) - 1; while (start < end) { _________; // 填入交换字符的语句 str[start++] = str[end]; str[end--] = ____________; // 完成赋值操作 } } ``` 上述代码的功能是对输入的字符串进行原地反转。需要填写的内容如下: - 第一处应填写 `temp = str[start];`[^1] - 第二处应填写 `temp` 最终完整的代码为: ```c void reverse_string(char *str) { char temp; int start = 0, end = strlen(str) - 1; while (start < end) { temp = str[start]; str[start++] = str[end]; str[end--] = temp; } } ``` --- #### 示例二:条件判断与循环控制 考虑以下代码片段: ```c #include<stdio.h> int main() { int k = 0; while (k = 1) { k++; } printf("%d\n", k); return 0; } ``` 此代码中的 `while` 循环会无限执行,因为表达式 `k = 1` 的结果始终是非零值(即真)。如果要使该程序正常运行并打印出某个特定的结果,则可以修改为以下形式: ```c int main() { int k = 0; while (______) { // 需要填充合适的终止条件 k++; } printf("%d\n", k); return 0; } ``` 此处应该将条件改为 `k != 1` 或其他合理的退出逻辑[^2]。 修正后的代码可能如下所示: ```c int main() { int k = 0; while (k < 1) { // 修改条件以避免死循环 k++; } printf("%d\n", k); // 输出结果为1 return 0; } ``` --- #### 示例三:数组遍历与累加计算 下面是一个简单的数组求和程序,其中部分代码被省略,请补充完整。 ```c #include<stdio.h> #define SIZE 5 int sum_array(int array[], int size) { int total = 0, i; for (i = 0; i < ______; i++) { // 补充循环变量范围 total += _______; // 补全累加操作 } return total; } int main() { int numbers[SIZE] = {1, 2, 3, 4, 5}; int result = sum_array(numbers, SIZE); printf("Sum of the array is %d.\n", result); return 0; } ``` 正确答案如下: - 第一处应填写 `size`[^3] - 第二处应填写 `array[i]`[^3] 完成后的代码为: ```c #include<stdio.h> #define SIZE 5 int sum_array(int array[], int size) { int total = 0, i; for (i = 0; i < size; i++) { total += array[i]; } return total; } int main() { int numbers[SIZE] = {1, 2, 3, 4, 5}; int result = sum_array(numbers, SIZE); printf("Sum of the array is %d.\n", result); // 结果应该是15 return 0; } ``` --- ### 总结 以上三个例子展示了不同类型的C语言程序填空题目设计方式以及解法思路。通过这些练习可以帮助学习者更好地掌握基础语法结构、算法实现技巧等方面的知识点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脆皮瞎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值