用c语言编写程序,不调用函数,从键盘随机输入十个整数存入数组a中,按由大到小顺序排序后输出。小写字母和数字的个数。
时间: 2024-09-19 13:13:25 浏览: 45
在C语言中,你可以通过以下几个步骤完成这个任务:
1. **输入十个整数**:
使用`scanf`函数读取用户输入的整数,并存储在数组`a`中。因为题目没有指定数组大小,我们可以假设动态分配内存来存放10个元素。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[10];
```
2. **获取并验证输入**:
循环10次,每次循环中,读取一个整数并检查是否有效(例如非负),若无效则提示错误并重新输入。
```c
for (int i = 0; i < 10; i++) {
int num;
while (scanf("%d", &num) != 1 || num < 0) {
printf("Invalid input, please enter a non-negative integer: ");
// 清理输入缓冲区,防止后续干扰
scanf("%*[^\n]");
}
a[i] = num;
}
```
3. **排序数组**:
使用冒泡排序对数组进行降序排序。
```c
// 冒泡排序
for (int j = 0; j < 9; j++) {
for (int k = 0; k < 9 - j; k++) {
if (a[k] < a[k + 1]) {
int temp = a[k];
a[k] = a[k + 1];
a[k + 1] = temp;
}
}
}
```
4. **输出排序后的数组及计数小写字母和数字**:
输出数组,遍历字符串检查小写字母和数字的数量。
```c
printf("Sorted array: ");
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
int lowercase_count = 0, digit_count = 0;
char str[20];
for (int i = 0; i < 10 * sizeof(int); i++) {
str[i] = a[i];
if ('a' <= str[i] && str[i] <= 'z') {
lowercase_count++;
} else if ('0' <= str[i] && str[i] <= '9') {
digit_count++;
}
}
printf("\nNumber of lowercase letters: %d\nNumber of digits: %d\n", lowercase_count, digit_count);
return 0;
}
```
阅读全文