人名排序程序。 从键盘接收十个人名,人名由4-8个字母构成。 按首字母上升次序显示所输入的人名,每一个人名占一行
时间: 2024-03-11 18:43:27 浏览: 144
以下是一个简单的Python程序,可以实现你所描述的功能:
```
names = []
# 从键盘读取十个人名
for i in range(10):
name = input("请输入第%d个人名:" % (i+1))
names.append(name)
# 对人名列表按首字母排序
names.sort()
# 按行输出排序后的人名
for name in names:
print(name)
```
程序首先创建一个空列表 `names`,然后使用 `for` 循环读取十个人名,并将它们添加到列表中。接下来,使用 `sort()` 方法对列表进行排序(默认按照字符串的字典序排序),最后使用 `for` 循环逐行输出排序后的人名。
相关问题
用汇编语言在debug的环境下编写人名排序程序代码。 从键盘接收十个人名,人名由4-8个字母构成。 按首字母上升次序显示所输入的人名,每一个人名占一行。
好的,我会尽力回答你的问题。
以下是用汇编语言在debug的环境下编写人名排序程序代码的示例代码:
```
; 将十个人名存储在名字数组中
names db 10 dup(8) ; 存储10个长度为8的人名
count db 10 ; 存储人名的数量
; 定义字符串输入函数
getstr proc near
push ax bx cx dx
mov cx, 0
mov ah, 01h ; 读取一个字符
int 21h
cmp al, 0dh ; 如果是回车键,则退出
je done
mov [si], al ; 存储字符
inc si
inc cx
jmp getstr
done:
mov [si], 0 ; 字符串结束符
pop dx cx bx ax
ret
getstr endp
; 主程序
main:
mov si, offset names ; 存储输入的人名
mov cl, count ; 存储人名的数量
; 循环读取人名
mov cx, 0
mov ah, 09h ; 显示字符串
mov dx, offset prompt
int 21h
call getstr
mov [si], '$' ; 添加字符串结束符
add si, 8 ; 每个人名占8个字节
inc cx
cmp cx, count
jl main
; 排序
mov si, offset names ; 从头开始比较
outer:
mov di, si ; 保存当前位置
inner:
mov al, [si] ; 获取当前人名的首字母
add si, 8 ; 移动到下一个人名
cmp [si], 0 ; 判断是否为最后一个人名
je done
cmp al, [si] ; 将当前人名的首字母与下一个人名的首字母进行比较
jbe inner ; 如果当前人名的首字母小于等于下一个人名的首字母,则继续比较
xchg [di], [si] ; 交换当前人名和下一个人名的位置
mov di, si ; 更新当前位置
jmp outer ; 继续比较
done:
; 显示排序后的人名
mov si, offset names ; 从头开始显示
mov cx, count
mov ah, 09h ; 显示字符串
mov dx, offset result
int 21h
mov dx, offset newline
int 21h
loop display
; 退出程序
mov ah, 4ch ; 退出程序
int 21h
prompt db '请输入人名(4-8个字母):$', 0
result db '排序后的人名为:', 0
newline db 0dh, 0ah, '$'
```
以上是示例代码,您可以根据自己的需求进行修改。请注意,汇编语言的语法和规范可能因不同的平台而有所不同,因此请根据您使用的环境进行相应的调整。
从键盘接收十个人名,人名由4-8个字母构成。 按首字母上升次序显示所输入的人名,每一个人名占一行
好的,这是一个比较简单的程序,您可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char names[10][9];
int i, j;
char temp[9];
// 从键盘输入十个人名
printf("请输入十个人名(每个名字长度为4-8个字母):\n");
for (i = 0; i < 10; i++) {
scanf("%s", names[i]);
}
// 按首字母上升次序排序
for (i = 0; i < 9; i++) {
for (j = i + 1; j < 10; j++) {
if (names[i][0] > names[j][0]) {
strcpy(temp, names[i]);
strcpy(names[i], names[j]);
strcpy(names[j], temp);
}
}
}
// 显示排序后的人名
printf("按首字母上升次序显示所输入的人名:\n");
for (i = 0; i < 10; i++) {
printf("%s\n", names[i]);
}
return 0;
}
```
这段代码使用了一个二维字符数组 `names` 来存储十个人名,每个名字最长为8个字母。首先从键盘输入十个人名,然后按照首字母上升次序排序,最后将排序后的人名显示出来。
阅读全文