用C语言写出完整代码(11)编写函数,实现一个多功能计算器(功能自定义)。 五 (4)编写程序,输入50个学生的数学成绩并保存在数组中,计算并输出该门成绩的及格人数、平均分、最高分及其下标。. (5)编写程序,输入一个字符串,分别统计并输出其中的数字字符、空格字符和其他字符出现的次数。 (8)编写程序,输入一个字符串,统计并输出其中定冠词the的个数。 (9)设计一个具有进制转换功能的计算器,可将输入的一一个十进制、二进制、八进制或十六进制的整数转换为其他3种进制的整数后输出。 七 (6)一个班的学生的数据包含学号、姓名和4门课程的成绩。输入数据,计算学生的平均成绩,输出所有学生的学号、姓名、各门课程的成绩和平均成绩,输出平均成绩最高的学生数据。要求使用结构体实现。
时间: 2024-04-06 12:31:18 浏览: 190
C语言程序设计课程教学中趣味案例设计研究.pdf
对于问题五,以下是一个示例代码,实现了一个简单的多功能计算器:
```c
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int subtract(int x, int y) {
return x - y;
}
int multiply(int x, int y) {
return x * y;
}
int divide(int x, int y) {
if (y == 0) {
printf("Error: divide by zero\n");
return 0;
}
return x / y;
}
int main() {
int x, y;
char op;
printf("Please enter an expression (e.g. 1 + 2): ");
scanf("%d %c %d", &x, &op, &y);
switch (op) {
case '+':
printf("%d\n", add(x, y));
break;
case '-':
printf("%d\n", subtract(x, y));
break;
case '*':
printf("%d\n", multiply(x, y));
break;
case '/':
printf("%d\n", divide(x, y));
break;
default:
printf("Error: invalid operator\n");
}
return 0;
}
```
对于问题四,以下是一个示例代码,实现了输入50个学生的数学成绩并保存在数组中,计算并输出及格人数、平均分、最高分及其下标:
```c
#include <stdio.h>
#define N 50
int main() {
int scores[N];
int i, sum = 0, count = 0, max = 0, max_idx = 0;
for (i = 0; i < N; i++) {
printf("Please enter the score of student %d: ", i + 1);
scanf("%d", &scores[i]);
if (scores[i] >= 60) {
count++;
}
sum += scores[i];
if (scores[i] > max) {
max = scores[i];
max_idx = i;
}
}
printf("Number of students passed: %d\n", count);
printf("Average score: %.2f\n", (double) sum / N);
printf("Highest score: %d, index: %d\n", max, max_idx);
return 0;
}
```
对于问题五,以下是一个示例代码,实现了输入一个字符串,分别统计并输出其中的数字字符、空格字符和其他字符出现的次数:
```c
#include <stdio.h>
int main() {
char str[100];
int i, digit_cnt = 0, space_cnt = 0, other_cnt = 0;
printf("Please enter a string: ");
fgets(str, 100, stdin); // 使用 fgets 读取输入的字符串
for (i = 0; str[i] != '\0'; i++) {
if (str[i] >= '0' && str[i] <= '9') {
digit_cnt++;
} else if (str[i] == ' ') {
space_cnt++;
} else {
other_cnt++;
}
}
printf("Number of digits: %d\n", digit_cnt);
printf("Number of spaces: %d\n", space_cnt);
printf("Number of other characters: %d\n", other_cnt);
return 0;
}
```
对于问题八,以下是一个示例代码,实现了输入一个字符串,统计并输出其中定冠词 the 的个数:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, count = 0;
printf("Please enter a string: ");
fgets(str, 100, stdin); // 使用 fgets 读取输入的字符串
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == 't' && str[i+1] == 'h' && str[i+2] == 'e' && (str[i+3] == ' ' || str[i+3] == '\0')) {
count++;
}
}
printf("Number of occurrences of 'the': %d\n", count);
return 0;
}
```
对于问题九,以下是一个示例代码,实现了一个具有进制转换功能的计算器:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int to_decimal(char *num, int base) {
int i, len = strlen(num);
int result = 0, power = 1;
for (i = len - 1; i >= 0; i--) {
int digit;
if (num[i] >= '0' && num[i] <= '9') {
digit = num[i] - '0';
} else if (num[i] >= 'A' && num[i] <= 'F') {
digit = num[i] - 'A' + 10;
} else if (num[i] >= 'a' && num[i] <= 'f') {
digit = num[i] - 'a' + 10;
} else {
printf("Error: invalid input\n");
return 0;
}
if (digit >= base) {
printf("Error: invalid input\n");
return 0;
}
result += digit * power;
power *= base;
}
return result;
}
void to_other_bases(int num, int base) {
int digits[32], i, len = 0;
while (num > 0) {
digits[len++] = num % base;
num /= base;
}
for (i = len - 1; i >= 0; i--) {
if (digits[i] < 10) {
printf("%d", digits[i]);
} else {
printf("%c", digits[i] - 10 + 'A');
}
}
printf("\n");
}
int main() {
char num[100];
int from_base, to_base;
printf("Please enter a number: ");
scanf("%s", num);
printf("Please enter the base of the number: ");
scanf("%d", &from_base);
printf("Please enter the base to convert to: ");
scanf("%d", &to_base);
int decimal = to_decimal(num, from_base);
to_other_bases(decimal, to_base);
return 0;
}
```
对于问题六,以下是一个示例代码,使用结构体实现了一个班的学生的数据包含学号、姓名和4门课程的成绩。输入数据,计算学生的平均成绩,输出所有学生的学号、姓名、各门课程的成绩和平均成绩,输出平均成绩最高的学生数据:
```c
#include <stdio.h>
#include <string.h>
#define N 50
struct student {
char id[10];
char name[20];
int scores[4];
double avg_score;
};
int main() {
struct student students[N];
int n, i, j;
printf("Please enter the number of students: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Please enter the ID of student %d: ", i + 1);
scanf("%s", students[i].id);
printf("Please enter the name of student %d: ", i + 1);
scanf("%s", students[i].name);
printf("Please enter the scores of student %d (4 scores separated by space): ", i + 1);
for (j = 0; j < 4; j++) {
scanf("%d", &students[i].scores[j]);
students[i].avg_score += students[i].scores[j];
}
students[i].avg_score /= 4;
}
printf("ID\tName\tScore1\tScore2\tScore3\tScore4\tAvgScore\n");
for (i = 0; i < n; i++) {
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3], students[i].avg_score);
}
double max_avg_score = 0;
int max_idx = 0;
for (i = 0; i < n; i++) {
if (students[i].avg_score > max_avg_score) {
max_avg_score = students[i].avg_score;
max_idx = i;
}
}
printf("Student with highest average score: ID=%s, Name=%s, AvgScore=%.2f\n", students[max_idx].id, students[max_idx].name, students[max_idx].avg_score);
return 0;
}
```
阅读全文