C语言写一个程序输入为一个整数输出为该整数的打头数字例如123的打头数字为1,-123的打头数字为-1
时间: 2024-04-29 22:20:49 浏览: 60
好的,这个问题很简单。下面是这个程序的代码:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
// 取绝对值,因为负数的打头数字需要用负号表示
int abs_num = abs(num);
// 计算打头数字
int top_digit = abs_num;
while (top_digit >= 10) {
top_digit /= 10;
}
// 输出结果
if (num < 0) {
printf("打头数字为负%d\n", top_digit);
} else {
printf("打头数字为%d\n", top_digit);
}
return 0;
}
```
希望能够满足您的需求。
相关问题
用c语言编写一个函数,输出一个整数的打头数字。例如123的打头数字为1,-123的打头数字为-1。 然后再主函数中调用这个函数。
### 回答1:
以下是用 C 语言编写的函数,可以输出一个整数的打头数字:
```c
#include <stdio.h>
#include <stdlib.h>
int getFirstDigit(int num) {
if (num == 0) {
return 0;
}
else {
return num / abs(num);
}
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
printf("该整数的打头数字为:%d\n", getFirstDigit(num));
return 0;
}
```
函数 `getFirstDigit` 的参数为一个整数 `num`,它返回 `num` 的打头数字。如果 `num` 为 0,则返回 0,否则返回 `num` 的符号(即正数返回 1,负数返回 -1)。
在 `main` 函数中,首先提示用户输入一个整数 `num`,然后调用函数 `getFirstDigit` 计算 `num` 的打头数字,并输出结果。
### 回答2:
下面是使用C语言编写的一个函数,实现输出一个整数的打头数字:
```c
#include <stdio.h>
int getLeadingDigit(int num) {
if (num >= 0) {
while (num >= 10) {
num = num / 10;
}
} else {
while (num <= -10) {
num = num / 10;
}
}
return num;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
int leadingDigit = getLeadingDigit(num);
printf("打头数字为:%d\n", leadingDigit);
return 0;
}
```
使用该函数,可以在主函数中输入一个整数,然后调用`getLeadingDigit`函数获取该整数的打头数字并输出。
### 回答3:
可以使用以下的C语言代码来编写一个函数实现输出一个整数的打头数字:
```c
#include <stdio.h>
int getLeadingDigit(int num) {
if (num < 0) {
return -1 * (num / 10); // 返回负数的打头数字
} else {
while (num >= 10) {
num /= 10;
}
return num; // 返回正数的打头数字
}
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
int leadingDigit = getLeadingDigit(num);
printf("打头数字为:%d\n", leadingDigit);
return 0;
}
```
这段代码中,getLeadingDigit函数用来获取整数的打头数字。如果输入的整数为负数,则先取其绝对值,然后除以10,然后再加上负号来得到负数的打头数字。如果输入的整数为正数,则通过while循环不断除以10,直到整数变为个位数,即为其打头数字。
在主函数main中,首先通过scanf函数获取输入的整数,然后调用getLeadingDigit函数来获取打头数字,并最后通过printf函数输出结果。
c语言用单链表实现两个大整数相加运算 目的:深入掌握单链表应用的算法设计 主要功能: 1、将用户输入的十进制整数字符串转化为带头结点的单链表,每个结点存放一个整数位 2、求两个整数单链表相加的结果单链表 3、求结果单链表的中间位,如123的中间位为2,1234的中间位为2
在C语言中,我们可以使用单链表来实现两个大整数相加操作。首先,我们需要创建一个链表节点结构体,包含一个整数值域和指向下一个节点的指针。下面是一个简化的步骤:
1. **创建链表节点**:
```c
typedef struct ListNode {
int value;
struct ListNode* next;
} ListNode;
```
2. **初始化链表头**:
```c
ListNode* createList(const char* str) {
ListNode* head = NULL, *current = NULL;
for (int i = 0; str[i]; ++i) {
if (str[i] == '\0') break; // 检查是否到达字符串结尾
ListNode newNode;
newNode.value = str[i] - '0'; // 转换字符到数字
newNode.next = head;
head = &newNode;
}
return head;
}
```
3. **合并两个链表并相加**:
```c
void addTwoLists(ListNode* list1, ListNode* list2, ListNode* result) {
ListNode* temp1 = list1, *temp2 = list2, *currResult = result;
int carry = 0;
while (list1 || list2) {
int sum = carry + (temp1 ? temp1->value : 0);
sum += (temp2 ? temp2->value : 0);
currResult->value = sum % 10;
carry = sum / 10;
if (temp1) temp1 = temp1->next;
if (temp2) temp2 = temp2->next;
currResult->next = (carry || temp1 || temp2) ? malloc(sizeof(ListNode)) : NULL;
currResult = currResult->next;
}
if (carry > 0) {
ListNode newNode;
newNode.value = carry;
newNode.next = NULL;
currResult->next = &newNode;
}
}
```
4. **打印链表**:
```c
void printList(ListNode* head) {
while (head) {
printf("%d", head->value);
head = head->next;
}
printf("\n");
}
// 主函数示例
int main() {
char str1[] = "123";
char str2[] = "456";
ListNode* list1 = createList(str1);
ListNode* list2 = createList(str2);
ListNode* resultHead = malloc(sizeof(ListNode));
resultHead->value = 0;
addTwoLists(list1, list2, resultHead);
printList(resultHead);
return 0;
}
```
阅读全文