
作业社区
探索学习新天地,共享知识资源!
阿大月 的学生作业:
// 进程替换,通过进程替换实现输入不同的名执行不同的命令 #include #include #include #include #include #include typedef struct cmd_info { char cmd_prefix[10]; char cmd_parameters[2][64]; int parameter_count; // 当前命令的参数个数 }CMD; int main() { char buf[128] = {0}; char *argv[4] = {0}; char *char_stok = NULL; int i = 1; int exec_ret = 0; printf("minishell>"); fgets(buf, sizeof(buf), stdin); buf[strlen(buf) - 1] = '\0'; argv[0] = strtok(buf, " "); while((char_stok = strtok(NULL, " ")) != NULL){ argv[i++] = char_stok; } argv[i] = NULL; // 创建子进程 __pid_t child_process = fork(); int wstatus = 0; if (child_process == -1){ perror("创建子进程失败:"); exit(EXIT_FAILURE); }else if(child_process == 0){ //子进程 if (execvp(argv[0], argv) == -1){ perror("execvp"); // 如果 execvp 失败,打印错误信息 exit(EXIT_FAILURE); } }else if(child_process > 0){ if (wait(&wstatus) == child_process){ printf("子进程已结束, 结束状态是%d\n", WEXITSTATUS(wstatus)); }else if (wait(&wstatus) == -1){ perror("wait() failed: "); exit(EXIT_FAILURE); } } return 0; }





慕尼黑3595755 的学生作业:
#include #include #include int main() { int number, guess, count = 0; srand(time(0)); number = rand() % 100 + 1; printf("猜一个1到100之间的数字:\n"); do { scanf("%d", &guess); count++; if (guess < number) { printf("数字猜小了,请再试一次。\n"); } else if (guess > number) { printf("数字猜大了,请再试一次。\n"); } else { printf("恭喜你,猜对了! 你用了%d次尝试。\n", count); break; } } while (guess != number); return 0; } 1.number: 类型:int 作用域:整个 main 函数内 存储位置:栈(stack) 说明:用于存储随机生成的目标数字。 2.guess: 类型:int 作用域:整个 main 函数内 存储位置:栈(stack) 说明:用于存储用户每次输入的猜测数字。 3.count: 类型:int 作用域:整个 main 函数内 存储位置:栈(stack) 说明:用于记录用户猜测的次数。 4.time(0): 类型:time_t 作用域:srand(time(0)) 调用时临时存在 存储位置:栈(stack) 说明:用于获取当前时间,作为随机数生成器的种子。 5.rand() % 100 + 1: 类型:int 作用域:number = rand() % 100 + 1; 赋值时临时存在 存储位置:栈(stack) 说明:用于生成一个1到100之间的随机数。 6.scanf("%d", &guess): 类型:int 作用域:scanf 调用时临时存在 存储位置:栈(stack) 说明:用于读取用户输入的整数并存储在 guess 中。 7.printf(“猜一个1到100之间的数字:\n”): 类型:字符串常量 作用域:整个 main 函数内 存储位置:只读数据段(read-only data segment) 说明:用于输出提示信息。 8.printf(“数字猜小了,请再试一次。\n”)、printf(“数字猜大了,请再试一次。\n”)、printf(“恭喜你,猜对了! 你用了%d次尝试。\n”, count): 类型:字符串常量 作用域:整个 main 函数内 存储位置:只读数据段(read-only data segment) 说明:用于输出不同的提示信息和结果信息。





慕尼黑3595755 的学生作业:
// head.h #ifndef HEAD_H #define HEAD_H int add(int a, int b); int sub(int a, int b); int mul(int a, int b); float div(int a, int b); #endif // HEAD_H // calc.c #include “head.h” int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } float div(int a, int b) { if (b != 0) { return (float)a / b; } else { return 0; // 或者返回一个错误值,例如 NAN(需要包含 math.h) } } // main.c #include #include “head.h” int main() { int a = 10, b = 5; printf(“Addition: %d\n”, add(a, b)); printf(“Subtraction: %d\n”, sub(a, b)); printf(“Multiplication: %d\n”, mul(a, b)); printf(“Division: %.2f\n”, div(a, b)); return 0; } gcc -o program main.c calc.c ./program Addition: 15 Subtraction: 5 Multiplication: 50 Division: 2.00




