
本篇介绍编写简单程序的基础内容,包括基本的输入输出操作(掌握scanf和printf等函数)、简单的数学计算程序(实现加减乘除等基本运算)以及字符串处理程序(进行字符串拼接、查找、替换等操作)。适合初学者入门学习。
scanf 和 printf在编写程序时,与用户进行交互是必不可少的。掌握scanf和printf等标准输入输出函数的使用,是实现这一交互的关键。

在C语言中,printf 和 scanf 是最常用的标准输入输出函数。printf 用于向标准输出(通常是屏幕)打印格式化的字符串,而 scanf 用于从标准输入(通常是键盘)读取格式化的输入。
printf 的基本用法是 printf(format, ...);,其中 format 是一个包含文本和格式说明符的字符串,... 是要打印的变量。scanf 的基本用法是 scanf(format, ...);,其中 format 是一个包含格式说明符的字符串,... 是用于存储输入值的变量地址(通过 & 运算符获取)。以下是一个简单的C程序,使用 printf 打印提示信息,然后使用 scanf 读取用户输入的两个整数,并打印它们的和。
#include <stdio.h>
int main() {
int num1, num2, sum;
// 打印提示信息
printf("请输入第一个整数: ");
// 读取第一个整数
scanf("%d", &num1);
// 打印提示信息
printf("请输入第二个整数: ");
// 读取第二个整数
scanf("%d", &num2);
// 计算和
sum = num1 + num2;
// 打印结果
printf("两个整数的和是: %d\n", sum);
return 0;
}①测试用例1
5 和 10两个整数的和是: 15实际运行结果:
②测试用例2
-3 和 7两个整数的和是: 4
③测试用例3(包含空格的输入)
8 和 9(注意输入前的空格)两个整数的和是: 17(空格被忽略,因为 %d 忽略前导空格)
编写能够执行基本数学运算(如加减乘除)的程序,是编程入门的重要一步。通过接收用户输入的两个数字和一个运算符,程序可以计算出结果并输出。

需求:实现基本的数学运算,包括加法、减法、乘法和除法。程序将提示用户输入两个数字和一个运算符,然后根据输入的运算符执行相应的计算,并输出结果。
#include <stdio.h>
int main() {
double num1, num2, result;
char operator;
// 提示用户输入第一个数字
printf("请输入第一个数字: ");
scanf("%lf", &num1);
// 提示用户输入运算符
printf("请输入运算符 (+, -, *, /): ");
scanf(" %c", &operator); // 注意前面的空格,用于忽略前一个输入后的换行符
// 提示用户输入第二个数字
printf("请输入第二个数字: ");
scanf("%lf", &num2);
// 根据运算符执行计算
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
// 检查除数是否为零
if (num2 != 0) {
result = num1 / num2;
} else {
printf("错误: 除数不能为零。\n");
return 1; // 返回非零值表示错误
}
break;
default:
printf("错误: 无效的运算符。\n");
return 1; // 返回非零值表示错误
}
// 输出结果
printf("结果: %.2lf %c %.2lf = %.2lf\n", num1, operator, num2, result);
return 0; // 返回零表示成功
}①测试用例1
5, +, 3结果: 5.00 + 3.00 = 8.00
②测试用例2
10, -, 4结果: 10.00 - 4.00 = 6.00运行结果:
③ 测试用例3
6, *, 7结果: 6.00 * 7.00 = 42.00运行结果:
④测试用例4
8, /, 2结果: 8.00 / 2.00 = 4.00运行结果:
⑤测试用例5(无效运算符)
5, %, 3错误: 无效的运算符。运行结果:
⑥测试用例6(除数为零)
10, /, 0错误: 除数不能为零。运行结果:
字符串是编程中常用的数据类型之一。编写能够处理字符串的程序,如拼接、查找和替换等操作,对于提高编程能力具有重要意义。在实现这些功能时,要特别注意字符串的边界条件和内存管理,以避免出现错误。

strcat, strchr, 和自定义的替换函数(因为C标准库没有直接的字符串替换函数)。#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 自定义字符串替换函数
char* str_replace(const char* str, const char* old_substr, const char* new_substr) {
char* result;
int i, count = 0;
int old_substr_len = strlen(old_substr);
int new_substr_len = strlen(new_substr);
// 计算新字符串的长度
for (i = 0; str[i] != '\0'; i++) {
if (strstr(&str[i], old_substr) == &str[i]) {
count++;
i += old_substr_len - 1;
}
}
// 分配内存给新字符串
result = (char*)malloc(i - count * old_substr_len + count * new_substr_len + 1);
if (!result) {
perror("内存分配失败");
exit(EXIT_FAILURE);
}
i = 0;
while (*str) {
// 如果找到子字符串,则替换它
if (strstr(str, old_substr) == str) {
strcpy(&result[i], new_substr);
i += new_substr_len;
str += old_substr_len;
} else {
result[i++] = *str++;
}
}
result[i] = '\0';
return result;
}
int main() {
char str1[100], str2[100], result[200];
char old_substr[50], new_substr[50];
// 字符串拼接示例
printf("请输入第一个字符串: ");
scanf("%s", str1);
printf("请输入第二个字符串: ");
scanf("%s", str2);
strcat(str1, str2);
printf("拼接后的字符串: %s\n", str1);
// 查找子字符串示例
printf("请输入要查找的子字符串: ");
scanf("%s", old_substr);
char* pos = strchr(str1, old_substr[0]); // 注意:这里只查找子字符串的第一个字符的位置,然后需要手动验证整个子字符串
if (pos && strncmp(pos, old_substr, strlen(old_substr)) == 0) {
printf("子字符串 '%s' 在位置 %ld 找到。\n", old_substr, pos - str1);
} else {
printf("子字符串 '%s' 未找到。\n", old_substr);
}
// 字符串替换示例
printf("请输入要替换成的子字符串: ");
scanf("%s", new_substr);
strcpy(result, str1); // 复制原始字符串到结果字符串,因为str_replace会分配新内存
char* replaced_str = str_replace(result, old_substr, new_substr);
printf("替换后的字符串: %s\n", replaced_str);
// 释放分配的内存(如果使用了动态内存分配)
free(replaced_str); // 注意:如果result和replaced_str指向同一块内存,则不需要再次释放result
return 0;
}注意:上面的 str_replace 函数实现有一个限制,它只处理不重叠的子字符串替换,并且假设输入的字符串和子字符串不包含空字符(\0)。此外,由于 strchr 只能找到子字符串的第一个字符的位置,因此上面的查找子字符串的示例并不完整;它应该使用 strstr 来找到整个子字符串的位置。但是,为了简化示例,这里只展示了基本的思路。
①测试用例1(字符串拼接)
Hello, World拼接后的字符串: HelloWorld②测试用例2(查找子字符串)
HelloWorld, World子字符串 'World' 在位置 5 找到。③测试用例3(字符串替换)
HelloWorld, World, C替换后的字符串: HelloC根据测试用例输入相应的值,程序将输出相应的结果。

(注意:对于字符串替换的测试,需要根据实际的 str_replace 函数实现和输入来调整期望的输出,因为上面的实现有一些限制和简化。)
重要提示:在实际应用中,请务必对输入进行验证,以避免缓冲区溢出、内存泄漏等安全问题。上面的示例代码为了简化而省略了一些错误处理和安全检查。
在编写简单程序时,除了掌握基本的输入输出操作、数学计算和字符串处理技巧外,还需要注意以下几个关键点:
博主简介:byte轻骑兵,现就职于国内知名科技企业,专注于嵌入式系统研发。深耕 Android、Linux、RTOS、通信协议、AIoT、物联网及 C/C++ 等领域。乐于技术分享与交流,欢迎关注互动! CSDN主页地址:https://blog.csdn.net/weixin_37800531?type=blog 知乎主页地址:https://www.zhihu.com/people/38-72-36-20-51 微信公众号:「嵌入式硬核研究所」 联系邮箱:byteqqb@163.com(技术咨询 / 商业合作请备注需求) 声明:本文为「byte轻骑兵」原创文章,未经授权禁止任何形式转载。商业合作、内容授权请通过上述邮箱联系。