c语言如何编程,能够输入一个整数,得到该整数十位上的数字

c语言如何编程,能够输入一个整数,得到该整数十位上的数字,第1张

假设输入的整数放到变量x中,则语句x/10%10即是十位上的数字,代码如下:

#include <stdioh>

int main(void)

{

    int x;

    printf("输入一个整数:");

    scanf("%d",&x);

    printf("%d的十位上的数字是:%d\n",x,x/10%10);

    return 0;

}

代码如下:

#include<stdioh>

int main()

{

int a,b;

int i;

printf("请输入一个数字:");

scanf("%d",&a);

b=a;

for(i=0;a>1;i++)

{

a=a/10;

}

printf("%d是%d位数\n",b,i);

}

扩展资料:

思路详解:

在C语言中,经常会用到以整数相除来确定一个整形数字的每一位的具体数字是多少,同理,此处可用整数相除来判断一个数的位数。

首先,使用scanf函数获取这个数字的值,且赋给变量b,作一个备份。

接着,确定核心思路为,当一个数整除10,第一次结果为1时,这个数是一个个位数。因而,以其作为循环内的主体。

得到了for(i=0;a>1;i++)   a=a/10; 这样的代码,最后,输出结果即可。

首先建议将数字的分隔符改为",",因为控制台读取是以“空格、制表符、回车”来判断结束的。如果一定要用空格来间隔,就需要固定输入项数,可以将之读到一个数组中来解析,这似乎很不方便。下面这个例子是改用","来分隔输入的数字,括号内向下循环对对应下标的数组项赋值,完全符合你的要求,最大值是设为99,当然你可以方便地改为12,cpp文件代码如下:

(因是粘贴上的,百度的输入框又小,代码排列可能需要你微调!)

(本例对于输入数字的重复问题未做专门处理,如有必要,你自己尝试一下啦,搞不定再说!)

//====================================================================

// cpp : 定义控制台应用程序的入口点。

#include "stdafxh"

#include <windowsh>

#include <iostream>

using namespace std;

//例子用到的变量

bool bCont = true;

int iFlag = 0;

char cInput[1024];

int iMax = 0;

int iTmpArray[100]; //临时数组

int iObiArray[100]; //目的数组

int iIndex = 0; //记录iTmpArray的未赋值项的最小下标

//例子用到的辅助函数

void InitArr(bool bFlag) //数组初始化,参数为1时两个数组都执行,

//0时执行临时数组

{

if (bFlag)

{

for (int i = 0; i < 100; i++)

{

iTmpArray[i] = -1;

iObiArray[i] = -1;

}

}

else

{

for (int i = 0; i < 100; i++)

{

iTmpArray[i] = -1;

}

}

}

//字串格式判定

bool CheckFormat()

{

if (cInput[0] == 'Q' || cInput[0] == 'q')

{

exit(0);

}

if (cInput[0] == 'H' || cInput[0] == 'h')

{

cout << "\n本 例 帮 助" << endl;

cout << "1、本例最大值(非0)限制在两位数以内!" << endl;

cout << "2、数字串输入格式举例:(12,2,0,8)(3,7)(5,4,9)" << endl;

cout << "3、数字串中数字值不能超过最大值!" << endl;

cInput[0] = NULL;

iFlag = 0;

return FALSE;

}

int length = (int)strlen(cInput);

if (cInput[0] != 40 || cInput[length - 1] != 41)

{

printf("\n错误:输入格式错误!\n");

return false;

}

for (int i = 0; i < length; i++)

{

if (cInput[i] < 48 || cInput[i] > 57)

{

if (cInput[i] != 44 && cInput[i] != 40 && cInput[i] != 41)

{

printf("\n错误:输入了非法字符!\n");

return false;

}

}

}

return true;

}

//解析数字串

BOOL Analysis()

{

int length = (int)strlen(cInput);

for (int i = 0; i < length; i++) //遇到"("或","开始从下一位读数

{

if (cInput[i] == 44 || cInput[i] == 40)

{

if (iIndex <= iMax)

{

int iTmp = atoi(&cInput[i+1]);

if (iTmp > iMax)

{

printf("\n错误:输入的数字超过最大值!\n");

return false;

}

iTmpArray[iIndex] = iTmp;

iIndex++;

}

else

{

printf("\n错误:数组填充溢出,可能是输入的数字个数超过最大值规定的数组容量!\n");

return false;

}

}

else if (cInput[i] == 41) //读到")"结束本段读数,并进行处理

{

//括号内循环对目的数组赋值

for (int k = 0; k < iIndex; k++)

{

iObiArray[iTmpArray[k]] = iTmpArray[k+1];

if (k == iIndex - 1)

{

if (iTmpArray[k+1] != -1)

{

printf("\n程序运行错误!\n");

return false;

}

else

{

iObiArray[iTmpArray[k]] = iTmpArray[0];

}

}

}

InitArr(0);

iIndex = 0;

}

}

return true;

}

int _tmain(int argc, _TCHAR argv[])

{

InitArr(1);

ZeroMemory(cInput,sizeof(cInput));

cInput[0] = NULL; //防止输入0时阻塞

cinclear();

cinsync();

while(bCont)

{

switch (iFlag)

{

case 0: //输入最大值范围

printf("\nQ退出 H帮助请输入菜单码或最大值:");

cin >> cInput;

iFlag = 1;

break;

case 1: //最大值范围校验

if (cInput[0] == 'Q' || cInput[0] == 'q')

{

exit(0);

}

if (cInput[0] == 'H' || cInput[0] == 'h')

{

cout << "\n本 例 帮 助" << endl;

cout << "1、本例最大值(非0)限制在两位数以内!" << endl;

cout << "2、数字串输入格式举例:(12,2,0,8)(3,7)(5,4,9)" << endl;

cout << "3、数字串中数字值不能超过最大值!" << endl;

cInput[0] = NULL;

iFlag = 0;

break;

}

if (cInput[0] < '1' || cInput[0] > '9' || strlen(cInput) > 2)

{

cinclear();

cinsync();

ZeroMemory(cInput,128);

cInput[0] = NULL;

cout << "\n输入格式错误,请重新输入:";

cin >> cInput;

break;

}

iMax = atoi(cInput);

if (iMax > 99)

{

cinclear();

cinsync();

ZeroMemory(cInput,sizeof(cInput));

cInput[0] = NULL;

cout << "\n最大值超界,请重新输入:";

cin >> cInput;

break;

}

else iFlag = 2;

break;

case 2: //输入数字串并检查格式

cinclear();

cinsync();

ZeroMemory(cInput,sizeof(cInput));

cInput[0] = NULL;

printf("\nQ退出 H帮助请在最大值(%d)以内按格式(,,,)\n输入要填充数组的数字:", iMax);

cin >> cInput;

if (CheckFormat()) iFlag = 3;

break;

case 3: //数字串解析并填充数组

if (Analysis())

{

printf("\n输入内容排列后输出:");

//这里直接变换并输出数值,不再对数组进行完整赋值

for (int i = 0; i <= iMax; i++)

{

if (iObiArray[i] == -1)

{

cout << i;

}

else

{

cout << iObiArray[i];

}

if (i < iMax)

{

cout << " ";

}

if (i == iMax)

{

cout << endl;

}

}

InitArr(1);

iIndex = 0;

iFlag = 0;

}

else

{

iFlag = 2;

InitArr(1);

iIndex = 0;

}

break;

}

}

return 0;

}

以上就是关于c语言如何编程,能够输入一个整数,得到该整数十位上的数字全部的内容,包括:c语言如何编程,能够输入一个整数,得到该整数十位上的数字、C语言 判断一个数的位数、C语言 读取数字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9547199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存