写一个C语言程序,要求用户输入指定位数数字,否则重新输入
时间: 2024-02-28 17:54:31 浏览: 65
下面是一个示例程序,要求用户输入4位数字,如果输入的不是4位数字,则会提示用户重新输入,直到输入正确为止。
```
#include <stdio.h>
int main() {
int num = 0;
int digit_count = 0;
int temp_num = 0;
do {
printf("请输入4位数字:\n");
scanf("%d", &num);
// 计算数字的位数
temp_num = num;
digit_count = 0;
while (temp_num > 0) {
digit_count++;
temp_num /= 10;
}
// 判断位数是否正确
if (digit_count != 4) {
printf("输入的数字不是4位,请重新输入。\n");
}
} while (digit_count != 4);
printf("输入的数字为:%d\n", num);
return 0;
}
```
在上面的代码中,使用了一个do-while循环来反复读取用户输入的数字,每次读取都会计算数字的位数。如果位数不是4,则会提示用户重新输入,直到输入正确为止。最后通过printf函数输出输入的数字。
相关问题
输入一个3 位数,计算该数各位上的数字之和,如果在[1,12]之内,则输出与和数相对应的月份的英文名称,否则输出***。用c语言指针来完成...
好的,我来为您解答。以下是用 C 语言指针实现的程序代码:
```c
#include <stdio.h>
void sum_and_month(int num, char *month);
int main() {
int num;
char month[10];
printf("请输入一个三位数:");
scanf("%d", &num);
sum_and_month(num, month);
printf("该数各位上的数字之和为:%d\n", num % 10 + num / 10 % 10 + num / 100);
printf("对应的月份是:%s\n", month);
return 0;
}
void sum_and_month(int num, char *month) {
int sum = num % 10 + num / 10 % 10 + num / 100;
if (sum >= 1 && sum <= 12) {
switch (sum) {
case 1:
sprintf(month, "January");
break;
case 2:
sprintf(month, "February");
break;
case 3:
sprintf(month, "March");
break;
case 4:
sprintf(month, "April");
break;
case 5:
sprintf(month, "May");
break;
case 6:
sprintf(month, "June");
break;
case 7:
sprintf(month, "July");
break;
case 8:
sprintf(month, "August");
break;
case 9:
sprintf(month, "September");
break;
case 10:
sprintf(month, "October");
break;
case 11:
sprintf(month, "November");
break;
case 12:
sprintf(month, "December");
break;
default:
break;
}
} else {
sprintf(month, "***");
}
}
```
程序中定义了一个 `sum_and_month` 函数,用于计算输入的数字的各位数字之和,并将对应的月份名称存储在传入的字符串指针 `month` 中。程序中使用了 `sprintf` 函数来将字符串格式化输出到指定的缓冲区中。最后在 `main` 函数中输出各位数字之和以及对应的月份名称。
希望能对您有所帮助!
阅读全文