C语言编程:程序练习题解决方案

需积分: 9 1 下载量 64 浏览量 更新于2024-08-05 收藏 100KB PDF 举报
“程序填空题.pdf” 以下是各个代码段的功能详解及完善: 1. **功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。** ```c #include<stdio.h> int main() { int i, n, sum; n = 0; // 初始化计数器为0 for(i = 2; i <= 300; i++) // 从2开始,因为2是最小的偶数 { if(i % 7 == 0 || i % 17 == 0) // 检查是否能被7或17整除 { if(i % 2 == 0) // 确保是偶数 { sum += i; // 累加和 n++; printf("%6d", i); if((n % 5) == 0) // 每输出5个数换行 printf("\n"); } } } printf("\ntotal=%d", sum); return 0; } ``` 在这个程序中,我们首先初始化变量`i`、`n`(用于计数)和`sum`(用于累加偶数的和)。然后使用一个for循环遍历从2到300的所有整数,检查它们是否可以被7或17整除且是偶数。满足条件的数被累加到`sum`中,同时计数器`n`递增。每输出5个数,就打印一个换行符,确保每行只显示5个数。最后,输出总和。 2. **功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。** ```c #include<stdio.h> void main() { int m, n, k, i = 0; for(m = 100; m <= 1000; m++) { k = 0; // 初始化各位数字之和 n = m; do { k += n % 10; // 计算各位数字之和 n /= 10; } while(n > 0); // 当n不再大于0时,结束循环 if(k % 15 == 0) { printf("%5d", m); i++; if(i % 10 == 0) printf("\n"); // 每输出10个数换行 } } return 0; } ``` 这个程序从100到1000遍历所有整数,计算每个数的各位数字之和`k`,如果`k`可以被15整除,则输出该数。每输出10个数后,打印一个换行符,保持输出格式。 3. **功能:是将两个字符串连接为一个字符串,不许使用库函数strcat。** ```c #include<stdio.h> #include<string.h> void JOIN(char s1[], char s2[]) { int i, j; i = strlen(s1) - 1; // 获取s1的长度并找到末尾 s1[i + 1] = '\0'; // 在s1末尾添加结束符,为s2留出空间 for(j = 0; s2[j] != '\0'; j++) // 从s2的第一个字符开始复制 { s1[i + j + 1] = s2[j]; } } int main() { char str1[80], str2[40]; gets(str1); gets(str2); puts(str1); puts(str2); JOIN(str1, str2); puts(str1); return 0; } ``` 在JOIN函数中,我们首先获取`s1`的长度,然后在`s1`末尾添加一个空字符,为`s2`腾出空间。接着,我们从`s2`的第一个字符开始,逐个复制到`s1`的末尾。主函数中,先读取两个字符串,然后调用JOIN函数连接它们,最后输出结果。 4. **功能:统计一个字符串中的字母、数字、空格和其它字符的个数。** ```c #include<stdio.h> void fun(char s[], int b[]) { int i; for(i = 0; s[i] != '\0'; i++) { if(('a' <= s[i] && s[i] <= 'z') || ('A' <= s[i] && s[i] <= 'Z')) // 检查是否为字母 b[0]++; else if(('0' <= s[i] && s[i] <= '9')) // 检查是否为数字 b[1]++; else if(s[i] == ' ') // 检查是否为空格 b[2]++; else // 其他字符 b[3]++; } } int main() { char str[100]; int count[4] = {0}; // 初始化计数数组 gets(str); fun(str, count); printf("字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n", count[0], count[1], count[2], count[3]); return 0; } ``` 这个程序定义了一个`fun`函数,它接收一个字符串`s`和一个计数数组`b`。遍历字符串`s`的每个字符,根据字符类型更新计数数组。在主函数中,先读取字符串,然后调用`fun`函数统计字符类型,并输出结果。