c语言程序设计 练习1-7 编写一个打印EOF值的程序

本文介绍了一个简单的C语言程序设计练习题,演示如何编写程序打印EOF的值。通过调用头文件中预定义的EOF宏,程序能够直接输出其值。

c语言程序设计练习题1-7 编写一个打印EOF值的程序

#include <stdio.h>

int main()
{
    printf("%d\n",EOF);
    return 0;
}

结果:
在这里插入图片描述
其实EOF的值在头文件中有定义,我们可以直接调用即可。如下图:
在这里插入图片描述
参考:https://blog.youkuaiyun.com/navicheung/article/details/83573099

### C语言程序设计练习题示例 以下是几个典型的C语言程序设计练习题目及其解答思路: #### 题目A - 字符大小写转换 编写一个程序,输入一系列字符并将其大小写反转输出。例如,小写字母转为大写,大写字母转为小写。 ```c #include <stdio.h> #include <ctype.h> int main() { char ch = 0; while (scanf("%c", &ch) != EOF) { if (islower(ch)) { printf("%c\n", toupper(ch)); } else if (isupper(ch)) { printf("%c\n", tolower(ch)); } } return 0; } ``` 此代码通过标准库中的 `islower` 和 `toupper` 函数实现字符的大小写转换[^2]。 --- #### 题目B - 计算最小公倍数 给定两个正整数,计算它们的最小公倍数(LCM)。可以通过先求最大公约数再利用公式 LCM(a, b) = a * b / GCD(a, b) 来完成。 ```c #include <stdio.h> // 辗转相除法求GCD int gcd(int a, int b) { while (b != 0) { int temp = a % b; a = b; b = temp; } return a; } // 求LCM int lcm(int a, int b) { return a * b / gcd(a, b); } int main() { int num1, num2; scanf("%d%d", &num1, &num2); printf("The LCM of %d and %d is %d.\n", num1, num2, lcm(num1, num2)); return 0; } ``` 上述代码展示了如何使用辗转相除法来高效地求解两数的最大公约数和最小公倍数[^1]。 --- #### 题目C - 密码加密算法 假设有一个简单的密码加密规则:将字符串中的每个字母向右移动三个位置(即 'a' 变成 'd', 'z' 变成 'c'),其他非字母字符保持不变。 ```c #include <stdio.h> char encrypt_char(char c) { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { return c + 3 > ('z' + (c >= 'A' ? 'A' : 'a') - 'a') ? c + 3 - 26 : c + 3; } return c; } void encrypt_string(const char* str) { for (; *str; ++str) { putchar(encrypt_char(*str)); } putchar('\n'); } int main() { const char input[] = "Hello, World!"; encrypt_string(input); // 输出 Khoor, Zruog! return 0; } ``` 该例子演示了一个基本的凯撒密码加密方法。 --- #### 题目D - 投票统计 假设有若干候选人参与投票选举,请读取每张选票上的名字,并最终打印得票最多的候选人的姓名以及其获得的票数。 ```c #include <stdio.h> #include <string.h> #define MAX_CANDIDATES 10 #define NAME_LEN 50 struct Candidate { char name[NAME_LEN]; int votes; }; int main() { struct Candidate candidates[MAX_CANDIDATES]; int count = 0; // 输入候选人名单 printf("Enter candidate names (end with an empty line):\n"); while (count < MAX_CANDIDATES && fgets(candidates[count].name, NAME_LEN, stdin)[0] != '\n') { candidates[count++].votes = 0; } // 开始计票 printf("Start voting (enter \"done\" when finished):\n"); char vote_name[NAME_LEN]; while (fgets(vote_name, NAME_LEN, stdin), strcmp(vote_name, "done\n")) { for (int i = 0; i < count; ++i) { if (!strcmp(trim_newline(vote_name), candidates[i].name)) { candidates[i].votes++; break; } } } // 找到获胜者 int max_votes = 0; int winner_index = -1; for (int i = 0; i < count; ++i) { if (candidates[i].votes > max_votes) { max_votes = candidates[i].votes; winner_index = i; } } if (winner_index != -1) { printf("Winner: %s (%d votes)\n", candidates[winner_index].name, max_votes); } else { printf("No valid votes received.\n"); } return 0; } ``` 这段代码实现了基于结构体数组的简单投票系统逻辑。 --- #### 题目E - 数字进制转换 编写一段程序让用户输入十进制整数 n 和目标基数 r (r ≤ 16),然后把 n 转换成对应的 r 进制表示形式。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> const char digits[] = "0123456789ABCDEF"; void convert_base(long long number, int base) { char result[64]; // 假设最多支持64位长度的结果 int index = 0; do { int remainder = abs(number % base); result[index++] = digits[remainder]; number /= base; } while (number); // 将结果逆序处理 for (int start = 0, end = index - 1; start < end; ++start, --end) { char tmp = result[start]; result[start] = result[end]; result[end] = tmp; } result[index] = '\0'; puts(result); } int main() { long long decimal_number; int target_base; printf("Enter the decimal number: "); scanf("%lld", &decimal_number); printf("Enter the target base (≤ 16): "); scanf("%d", &target_base); if (target_base < 2 || target_base > 16) { fprintf(stderr, "Invalid base!\n"); exit(EXIT_FAILURE); } convert_base(decimal_number, target_base); return 0; } ``` 以上代码提供了任意进制之间的相互转换功能。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值