计算机基础—(九道题)
1. 流程控制题
编写一个程序,输入一个整数,判断它是否是素数(质数)。
如果是素数,输出`Yes`,否则输出`No`。
#include <stdio.h>
int main()
/*
1. 流程控制题编写一个程序,输入一个整数,判断它是否是素数(质数)。如果是素数,输出`Yes`,否则输出`No`。*/
{int n, i, a = 1;printf("请输入一个整数:");scanf("%d", &n);if (n <= 1){a = 0;}else{for (i = 2; i <= n / 2; i++){if (n % i == 0){a = 0;break;}}}if (a){printf("Yes\n");}else{printf("No\n");}return 0;
}
2. 函数题
编写一个函数`int max(int a, int b, int c)`,
返回三个整数中的最大值。在主函数中调用该函数并输出结果。
#include <stdio.h>
/*编写一个函数`int max(int a, int b, int c)`,返回三个整数中的最大值。在主函数中调用该函数并输出结果。*/
int max(int a, int b, int c)
{int max = a;if (b > max){max = b;}if (c > max){max = c;}return max;
}int main()
{int result = max(3, 5, 2);printf("The maximum value is: %d\n", result);
}
3. 指针题
编写一个程序,使用指针交换两个整数的值。要求:
- 定义一个函数`void swap(int a, int b)`,用于交换两个整数的值。
- 在主函数中调用该函数并输出交换后的结果。
#include <stdio.h>
/*编写一个程序,使用指针交换两个整数的值。要求:
- 定义一个函数`void swap(int a, int b)`,用于交换两个整数的值。
- 在主函数中调用该函数并输出交换后的结果。
*/
void swap(int *a, int *b)
{int temp = *a;*a = *b;*b = temp;
}
int main()
{int x, y;printf("请输入两个整数:");scanf("%d %d", &x, &y);printf("交换前:x = %d, y = %d\n", x, y);swap(&x, &y);printf("交换后:x = %d, y = %d\n", x, y);return 0;
}
4. 字符串题
编写一个程序,输入一个字符串,统计其中大写字母、小写字母、数字和其他字符的个数,并输出结果。
#include <stdio.h>
#include <string.h>
/*4. 字符串题
编写一个程序,输入一个字符串,统计其中大写字母、小写字母、数字和其他字符的个数,并输出结果。*/
int main(int argc, char const *argv[])
{char str[] = {'a', '1', 'A', '@'};int i = 0, upper = 0, lower = 0, digit = 0, other = 0;int len = sizeof(str) / sizeof(str[0]);for (i = 0; i < len; i++){if (str[i] >= 'A' && str[i] <= 'Z'){upper++;}else if (str[i] >= 'a' && str[i] <= 'z'){lower++;}else if (str[i] >= '0' && str[i] <= '9'){digit++;}else{other++;}}return 0;
}
5. 数组和指针题
编写一个程序,定义一个整型数组`int arr[] = {1, 2, 3, 4, 5}`,
使用指针遍历数组并输出每个元素的值。
#include <stdio.h>
/*5. 数组和指针题编写一个程序,定义一个整型数组`int arr[] = {1, 2, 3, 4, 5}`,使用指针遍历数组并输出每个元素的值。*/
int main(int argc, char const *argv[])
{int arr[] = {1, 2, 3, 4, 5};int *p = arr; // 指针指向数组的首元素// 遍历数组并输出每个元素的值for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){printf("%d ", *(p + i)); // 使用指针访问数组元素}printf("\n");// 也可以使用指针的方式遍历数组for (int *ptr = arr; ptr < arr + sizeof(arr) / sizeof(arr[0]); ptr++){printf("%d ", *ptr); // 使用指针访问数组元素}return 0;
}
6. 综合题
编写一个程序,输入一个字符串,判断它是否是回文字符串(正读和反读都相同)。
例如,`"level"`是回文字符串,`"hello"`不是回文字符串。
#include <stdio.h>
/*6. 综合题编写一个程序,输入一个字符串,判断它是否是回文字符串(正读和反读都相同)。例如,`"level"`是回文字符串,`"hello"`不是回文字符串。*/
int main(int argc, char const *argv[])
{char str[100];printf("请输入一个字符串: ");scanf("%s", str);int len = strlen(str);int isPalindrome = 1;for (int i = 0; i < len / 2; i++){if (str[i] != str[len - i - 1]){isPalindrome = 0;break;}}if (isPalindrome){printf("是回文字符串\n");}else{printf("不是回文字符串\n");}return 0;
}
7. 综合题
编写一个程序,定义一个函数`void reverse_string(char str)`,
用于反转字符串。例如,输入`"hello"`,输出`"olleh"`。在主函数中调用该函数并输出结果。
#include <stdio.h>
/*6. 综合题编写一个程序,输入一个字符串,判断它是否是回文字符串(正读和反读都相同)。例如,`"level"`是回文字符串,`"hello"`不是回文字符串。*/
int main(int argc, char const *argv[])
{char str[100];printf("请输入一个字符串: ");scanf("%s", str);int len = strlen(str);int isPalindrome = 1;for (int i = 0; i < len / 2; i++){if (str[i] != str[len - i - 1]){isPalindrome = 0;break;}}if (isPalindrome){printf("是回文字符串\n");}else{printf("不是回文字符串\n");}return 0;
}
8. 结构体和函数题
定义一个结构体`Point`,包含以下成员:
- `x`(横坐标,整数)
- `y`(纵坐标,整数)
编写一个函数`double distance(Point p1, Point p2)`,
计算两个点之间的距离。在主函数中调用该函数并输出结果。
#include <stdio.h>
/*
8. 结构体和函数题定义一个结构体`Point`,包含以下成员:- `x`(横坐标,整数)- `y`(纵坐标,整数)编写一个函数`double distance(Point p1, Point p2)`,计算两个点之间的距离。在主函数中调用该函数并输出结果。*/
typedef struct
{int x;int y;
} Point;double distance(Point p1, Point p2)
{return sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
}int main(int argc, char const *argv[])
{Point p1 = {0, 0};Point p2 = {3, 4};double dist = distance(p1, p2);printf("Distance: %.2f\n", dist);return 0;
}
三、编程题
编写一个程序,模拟简单的计算器功能。要求:
- 支持加(`+`)、减(`-`)、乘(``)、除(`/`)四种运算。
- 使用函数指针数组实现功能选择。
- 用户输入两个数字和运算符,程序输出计算结果。
#include <stdio.h>
/*
三、编程题
编写一个程序,模拟简单的计算器功能。要求:
- 支持加(`+`)、减(`-`)、乘(``)、除(`/`)四种运算。
- 使用函数指针数组实现功能选择。
- 用户输入两个数字和运算符,程序输出计算结果。
*/
#include <stdio.h>double add(double a, double b)
{return a + b;
}double subtract(double a, double b)
{return a - b;
}double multiply(double a, double b)
{return a * b;
}double divide(double a, double b)
{if (b != 0){return a / b;}else{printf("Error: Division by zero.\n");return 0;}
}int main(int argc, char const *argv[])