用C语言编程:给一个不多于5位的正整数,要求如下:

Python011

用C语言编程:给一个不多于5位的正整数,要求如下:,第1张

不对的原因,主要是if条件语句应该是用“==”而不是“=”,这是判断,不是赋值。其它的错误,scanf_s("%d",&a)改成scanf("%d",&a),printf用错了,printf打印应该是一个占位符对应一个要输出的内容,就是你代码中%d对应一个输出。

修改后的代码:

#include<stdio.h>

int main()

{

int a, b, c, d, e, f, w

printf("输入一个不多于五位的整数:")

scanf("%d",&a)

//第一问,求出它是几位数

b = 10000 - a

c = 1000 - a

d = 100 - a

e = 10 - a

f = 0 - a

while (a <0 || a >99999)

printf("输入错误,请重新输入\n")

if (b <0)

{

printf("a是五位数\n")

w = 5

}else if (c <0){

printf("a是四位数\n")

w = 4

}else if (d <0){

printf("a是三位数\n")

w = 3

}else if (e <0){

printf("a是两位数\n")

w = 2

}else if (f <0){

printf("a是个位数\n")

w = 1

}else

printf("输入错误,请重新输入\n")

//第二问,分别输出每一位数字

if (w == 5)

printf("%d %d %d %d %d\n", a / 10000, a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10)

if (w == 4)

printf("%d %d %d %d\n", a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10)

if (w == 3)

printf("%d %d %d\n", a / 100 % 10, a / 10 % 10, a % 10)

if (w == 2)

printf("%d %d\n", a / 10 % 10, a % 10)

if (w == 1)

printf("%d\n", a % 10)

//第三问,按逆序输出各位数字

if (w == 5)

printf("%d %d %d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10, a / 10000)

if (w == 4)

printf("%d %d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10)

if (w == 3)

printf("%d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10)

if (w == 2)

printf("%d %d\n", a % 10, a / 10 % 10)

if (w == 1)

printf("%d\n", a % 10)

}

修正后的代码执行如下:

二维数组名不能直接传给二级指针,应该按以下方式使用:

int nChoose

scanf("%d", &nChoose) // 让用户输入二维数组的大小

int **a = (int **)malloc(nChoose * sizeof(int *))

for (int i = 0i <nChoosei ++)

{

a[i] = (int *)malloc(nChoose * sizeof(int))

}

Scan(a, nChoose)

Calc(a, nChoose)

// 最后要释放数组,也要循环

可以使用memset函数将字符串数组中所有元素全部设置为\0即可。

函数原型:void *memset(void *s, int ch, size_t n)

函数说明:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。

示例:

#include <stdio.h>

#include <string.h>

int main()

{

char buf[256] = "hello world"//buf字符数组初始化

printf("%d\n", strlen(buf))

memset(buf, 0x00, sizeof (char) * 256)//全部设置为0x00即\0字符

printf("%d\n", strlen(buf))

return 0

}