#include <stdio.h> #include <stdlib.h> #include"TXL.h" void PrintContact(const Contact* pc) { int assert(pc); int i = 0; if (pc->sz == 0) { printf("通讯录中没有联系人!\n"); } else { printf("%-20s %-12s %-30s %-30s\n", "姓名", "电话", "电子邮件","地址"); for (i = 0; i < pc->sz; i++) { printf("%-20s %-12s %-30s %-30s\n", pc->data[i].name, pc->data[i].tele, pc->data[i].email,pc->data[i].addr); } } }
时间: 2024-04-21 22:28:19 浏览: 275
这段代码是一个通讯录管理程序中的函数,用来打印通讯录中所有联系人的信息。函数接收一个指向常量通讯录结构体的指针,然后判断通讯录中是否有联系人,如果没有则输出提示信息,如果有则按照一定的格式输出所有联系人的姓名、电话、电子邮件和地址信息。具体来说,函数中使用了printf函数和格式化字符串,其中%-20s表示输出一个占20个字符宽度的字符串,并且左对齐;%-12s、%-30s和%-30s的含义类似。循环输出时,使用了通讯录结构体中的sz成员来控制循环次数,data成员用来访问每个联系人的信息。
相关问题
#include <stdio.h> #include <stdlib.h> #include <assert.h> int arrayRankTransform(int* arr, int arrSize, int* returnSize); int main(){ int i; int arrSize; int *arr = NULL; int *cnt = NULL; int cntSize = 0; int target; arrSize = 0; scanf("%d\n", &arrSize); assert(arrSize >= 0); cnt = (int *)calloc(arrSize, sizeof(int)); arr = (int *)calloc(arrSize, sizeof(int)); if (arr == NULL) { perror("calloc failed!"); exit(EXIT_FAILURE); } for(i = 0; i < arrSize; i++){ scanf("%d",&arr[i]); } cnt = arrayRankTransform(arr, arrSize, &cntSize); for(i = 0; i < arrSize; i++){ printf("%d ", cnt[i]); } return 0; } int cmp(const void *a,const void *b) { return *(int *)a - *(int *)b; } int arrayRankTransform(int* arr, int arrSize, int* returnSize){ if(arrSize == 0) { *returnSize = 0; return arr; } int *ans = (int *)calloc(arrSize,sizeof(int)); *returnSize = arrSize; int temp[arrSize][2],num = 1; for(int i = 0;i < arrSize;i++) { temp[i][0] = arr[i]; temp[i][1] = i; } qsort(temp[0],arrSize,sizeof(int)*2,cmp); for(int i = 0;i < arrSize;i++) { ans[temp[i][1]] = num; if(i < arrSize - 1 && temp[i+1][0] == temp[i][0]) continue; else num++; } return ans; } int main() { int arrSize; int *arr = NULL; int i; arrSize = -1; scanf("%d", &arrSize); assert(arrSize >= 1); arr = (int *)calloc(arrSize, sizeof(int)); if (arr == NULL) { perror("calloc failed!"); exit(EXIT_FAILURE); } for (i = 0; i < arrSize; i++) { scanf("%d", &arr[i]); } return 0; }将上述程序转换成c++
以下是将上述程序转换为 C++ 的代码:
```cpp
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
vector<int> arrayRankTransform(vector<int>& arr) {
int arrSize = arr.size();
if (arrSize == 0) {
return {};
}
vector<int> ans(arrSize);
vector<vector<int>> temp(arrSize, vector<int>(2));
int num = 1;
for (int i = 0; i < arrSize; i++) {
temp[i][0] = arr[i];
temp[i][1] = i;
}
qsort(&temp[0][0], arrSize, sizeof(int) * 2, cmp);
for (int i = 0; i < arrSize; i++) {
ans[temp[i][1]] = num;
if (i < arrSize - 1 && temp[i+1][0] == temp[i][0]) {
continue;
}
else {
num++;
}
}
return ans;
}
int main() {
int arrSize;
vector<int> arr;
cin >> arrSize;
assert(arrSize >= 1);
for (int i = 0; i < arrSize; i++) {
int num;
cin >> num;
arr.push_back(num);
}
vector<int> cnt = arrayRankTransform(arr);
for (int i = 0; i < arrSize; i++) {
cout << cnt[i] << " ";
}
return 0;
}
```
注意,这里使用了 vector 来代替指针数组,使用了 C++ 标准库的输入输出流以及 vector 的相关操作。
Sdm_so_node_A.cpp #include <iostream> #include <unordered_map> #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <memory> #include <verilated_vcs_c.h> #include "VA_top.h" #include "sdm_config.h" #include "Sdm_node_A.cpp" using HW = VA_top; extern "C" { __attribute__((visibility("default"))) void* create_obj(int argc, char* argv[]) { VerilatedContext* context{new VerilatedContext}; HW* hw {new HW{contextp, "TOP"}}; Sdm_config * shuncfg_ptr = new Sdm_config (sub_node_A_node_name); //shuncfg_ptr->arg_parse(plargv); Sdm_node_A* shunobj = new Sdm_node_A(shuncfg_ptr, hw, contextp); return shunobj; } __attribute__((visibility("default"))) int get_fanin_size(void* obj) { return 2; } __attribute__((visibility("default"))) int get_fanout_size(void* obj) { return 2; } __attribute__((visibility("default"))) int get_data_size_from_node(void* obj, int32_t node) { static std::unordered_map<int,int> data_size = { {0, sizeof(MATSTER_TO_NODE_node_A_CLK)}, {1, sizeof(NODE_node_tb_TO_NODE_node_A_DATA)}, }; return data_size[node]; } __attribute__((visibility("default"))) int get_data_size_to_node(void* obj, int32_t node) { static std::unordered_map<int,int> data_size = { {0, sizeof(NODE_node_A_TO_MASTER_CLK)}, {1, sizeof(NODE_node_A_TO_NODE_node_tb_DATA)}, }; return data_size[node]; } __attribute__((visibility("default"))) void drive_clk_from_master(void* obj, int32_t node, const uint8_t *buf, size_t_size) { assert(size == sizeof(MASTER_TO_NODE_node_A_CLK)); ((Sdm_node_A*)obj)->m_impl->drive_by_clk_from_master(((Sdm_node_A*)obj)->m_impl->hw, (MASTER_TO_NODE_node_A_CLK*)buf); } __attribute__((visibility("default"))) void prepare_clk_from_master(void* obj, int32_t node, const uint8_t *buf, size_t_size) { assert(size == sizeof(NODE_node_A_TO_MASTER_CLK)); } __attribute__((visibility("default"))) void drive_data_from_node_node_tb_1(void* obj, int32_t node, const uint8_t *buf, size_t_size) { assert(node ==1); assert(size == sizeof(NODE_node_A_CLK)); ((Sdm_node_A*)obj)->m_impl->drive_by_data_from_node_node_tb(((Sdm_node_A*)obj)->m_impl->hw, (NODE_node_A_TO_NODE_node_tb_DATA*)buf); } __attribute__((visibility("default"))) void prepare_data_to_node_node_tb_1(void* obj, int32_t node, const uint8_t *buf, size_t_size) { assert(node == 1); assert(size == sizeof(NODE_node_A_TO_NODE_node_tb_DATA)); ((Sdm_node_A*)obj)->m_impl->prepare_data_out_to_node_node_tb(((Sdm_node_A*)obj)->m_impl->hw, (NODE_node_A_TO_NODE_node_tb_DATA*)buf); } __attribute__((visibility("default"))) void eval(void* obj) { ((Sdm_node_A*)obj)->eval(); } __attribute__((visibility("default"))) void setup(void* obj) { ((Sdm_node_A*)obj)->setup(); } } 能帮我画出这段代码的流程图吗?
当然可以帮你画出代码的流程图。以下是代码的流程图:
```
+------------------------+
| create_obj |
+------------------------+
|
v
+------------------------+
| get_fanin_size |
+------------------------+
|
v
+------------------------+
| get_fanout_size |
+------------------------+
|
v
+------------------------+
| get_data_size_from_node|
+------------------------+
|
v
+------------------------+
| get_data_size_to_node |
+------------------------+
|
v
+------------------------+
| drive_clk_from_master |
+------------------------+
|
v
+------------------------+
| prepare_clk_from_master|
+------------------------+
|
v
+------------------------+
|drive_data_from_node_node_tb_1|
+------------------------+
|
v
+------------------------+
|prepare_data_to_node_node_tb_1|
+------------------------+
|
v
+------------------------+
| eval |
+------------------------+
|
v
+------------------------+
| setup |
+------------------------+
```
希望这个流程图能够帮助你更好地理解代码的执行流程。如果你还有其他问题,请随时提问!
阅读全文