目录
八、创建一个Win32 Console Application类型的空白项目,将下面的C语言源程序添加到刚才的项目中,查找程序的错误,使之能通过编译成功运行(将修改后的程序放到实验过程描述中):
十、从键盘输入三个实数,利用条件运算符和表达式,编程实现求三个数的最大值。
十一、从键盘输入两个整数,编程实现求两个整数的和、差、积、商和余数。
十三、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。
十七、编写函数fun,计算s =1+1/2!+1/3!+…+1/n!,其中n的值由用户决定。主函数中输入n,调用该函数。
一、C语言编程输出平行四边形
方法一:
#include<stdio.h>
int main()
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<i;j++)
{
printf(" ");
}
for(j=0;j<5;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
方法二:
你可以在控制台输入平行行四边形的行数和列数,程序将输出相应大小的平行四边形。其中,外层循环控制行数,内层循环分别打印空格和星号。
#include <stdio.h>
int main() {
int rows, cols;
printf("请输入平行四边形的行数和列数:");
scanf("%d %d", &rows, &cols);
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows - i; j++) {
printf(" ");
}
// 打印星号
for (int j = 1; j <= cols; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
二、C语言编程输出杨辉三角
杨辉三角是一个数学三角形,它的每一行由数字构成,数字是通过组合数的方式得到的。杨辉三角的第一行只有一个数字1,每一行的两端数字也都是1。从第三行开始,中间的数字是上一行相邻两个数字之和。这种特殊的数列被称为杨辉三角,在中国的数学史上有着重要的地位。
杨辉三角可以展示许多有趣的数学性质和规律。例如,每一行的数字之和总是2的n次方,其中n是行数。此外,杨辉三角中的数字与组合数和二项式展开式之间存在密切的关系。杨辉三角还与排列组合、二项式定理、概率等数学概念密切相关,被广泛应用于数学、计算机科学和其他领域的问题中。
方法一:
#include <stdio.h>
// 计算杨辉三角形并输出
void printPascalTriangle(int n) {
int triangle[n][n];
// 初始化第一列和对角线为1
for (int i = 0; i < n; i++) {
triangle[i][0] = 1;
triangle[i][i] = 1;
}
// 填充其余元素
for (int i = 2; i < n; i++) {
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
}
}
// 输出杨辉三角形
for (int i = 0; i < n; i++) {
// 打印空格以对齐
for (int k = 0; k < (n - i - 1); k++) {
printf(" ");
}
// 打印数字
for (int j = 0; j <= i; j++) {
printf("%d ", triangle[i][j]);
}
printf("\n");
}
}
int main() {
int rows;
printf("请输入要打印的杨辉三角形的行数:");
scanf("%d", &rows);
printPascalTriangle(rows);
return 0;
}
你可以运行上面的代码,在控制台输入要打印的杨辉三角形的行数,然后它将输出相应行数的杨辉三角形。
方法二:
#include<stdio.h>
int main()
{
int a[10][10];
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||i==j) a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d\t",a[i][j]);
}
printf("\n");
}
return 0;
}
三、C语言编程求最大公约数和最小公倍数
你可以运行下面的代码,在控制台输入两个整数,它将计算并输出这两个整数的最大公约数和最小公倍数。
#include <stdio.h>
// 计算最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 计算最小公倍数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int greatestCommonDivisor = gcd(num1, num2);
int leastCommonMultiple = lcm(num1, num2);
printf("最大公约数是:%d\n", greatestCommonDivisor);
printf("最小公倍数是:%d\n", leastCommonMultiple);
return 0;
}
四、C语言水仙花数
(用三种方法实现)用C语言打印出所有水仙花数。水仙花数是指一个三位数,其各个位数的立方之和等于该数本身。例如,153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
方法一:
#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("水仙花数:\n");
for (num = 100; num <= 999; num++) {
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
result += remainder * remainder * remainder;
originalNum /= 10;
}
if (result == num) {
printf("%d\n", num);
}
result = 0;
}
return 0;
}
方法二:
#include<stdio.h>
int main()
{
int a,b,c;
for(int i=100;i<=999;i++)
{
a=i/100; //百位数
b=(i/10)%10; //十位数
c=i%10; //个位数
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);
}
return 0;
}
这两段代码通过遍历所有三位数(从100到999),计算每个数的个位、十位和百位的立方和,然后将结果与原始数进行比较。如果它们相等,就打印该数,即水仙花数。
方法三:
#include <stdio.h>
int main() {
int num;
printf("水仙花数:\n");
for (num = 100; num <= 999; num++) {
int digit1 = num / 100; // 百位数字
int digit2 = (num / 10) % 10; // 十位数字
int digit3 = num % 10; // 个位数字
int sum = digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3;
if (sum == num) {
printf("%d\n", num);
}
}
return 0;
}
这段代码同样遍历所有三位数,但是在计算每个数的立方和时,不使用额外的变量和循环。取出百位、十位和个位数字,然后计算它们的立方和,最后与原始数进行比较,如果相等就打印该数。目前我觉得这种方法最简单。
五、C编程实现判断任意输入的年份是否是闰年。
(含老版本代码及其错误修改方法)
用C编程实现判断任意输入的年份是否是闰年。复合下列条件之一的是闰年:
条件一:能被4整除,但不能被100整除;
条件二:能被400整除。
方法一:
#include <stdio.h>
int main() {
int year;
printf("请输入一个年份:");
scanf_s("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
puts("是闰年。");
}
else {
puts("不是闰年。");
}
return 0;
}
解释一下代码的逻辑:
这段代码是用C语言编写的一个程序,用于判断用户输入的年份是否是闰年。下面是对代码的逐行解释:
1. `#include <stdio.h>`:这是C语言的预处理指令,用于包含标准输入输出库的头文件。这样可以使用`printf`和`scanf_s`函数进行输入输出操作。
2. `int main() {`:这是程序的主函数,所有的代码都从这里开始执行。`int`是函数返回类型,`main`是函数名,`()`中是函数的参数列表,这里为空,`{}`中是函数的代码块。
3. `int year;`:这是声明一个整型变量`year`,用于存储用户输入的年份。
4. `printf("请输入一个年份:");`:使用`printf`函数向用户显示提示信息,要求用户输入一个年份。
5. `scanf_s("%d", &year);`:使用`scanf_s`函数从用户输入中读取一个整数,并将其存储到`year`变量中。`%d`是格式化输入字符,表示读取一个十进制整数,`&year`是变量的地址,用于将输入的值存储到`year`中。
6. `if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {`:这是一个条件语句,用于判断年份是否满足闰年的条件。根据题目要求,如果年份能被4整除但不能被100整除,或者能被400整除,就是闰年。
7. `puts("是闰年。");`:如