
正文
c语言函数读取7个数字 c语言如何读取一个数组
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用c语言一个程序读取一个整数,判断并显示出这个整数有多少位是7?
一下程序在VC++中调试通过
#include"stdio.h"
#include"math.h"
int get_num7(int num){
int total=0;//用来记录num中7的数目c语言函数读取7个数字,先初始化为0
num=int(fabs(num));//考虑到num可能为负数c语言函数读取7个数字,所以先求出num的绝对值c语言函数读取7个数字,以便于下面解题
while(num0){
if(num%10==7)//如果最后一位为7,则加1
total++;
num/=10;//去掉num的最后一位
}
return total;
}//此函数用于求出num中有多少个7
void main(){
int num;//用来接受用户输入的数据
printf("请输入一个整数:");
scanf("%d",num);
printf("%d这个整数中总共有%d个数字7!\n",num,get_num7(num));
}
相关问答
Q1: C语言 读取数字
首先建议将数字的分隔符改为",",因为控制台读取是以“空格、制表符、回车”来判断结束的。如果一定要用空格来间隔,就需要固定输入项数,可以将之读到一个数组中来解析,这似乎很不方便。下面这个例子是改用","来分隔输入的数字,括号内向下循环对对应下标的数组项赋值,完全符合c语言函数读取7个数字你的要求,最大值是设为99,当然你可以方便地改为12,.cpp文件代码如下c语言函数读取7个数字:
(因是粘贴上的,百度的输入框又小,代码排列可能需要你微调!)
(本例对于输入数字的重复问题未做专门处理,如有必要,你自己尝试一下啦,搞不定再说!)
//====================================================================
// .cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include windows.h
#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【错误:输入c语言函数读取7个数字了非法字符!】\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时阻塞
cin.clear();
cin.sync();
while(bCont)
{
switch (iFlag)
{
case 0: //输入最大值范围
printf("\n【Q退出 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)
{
cin.clear();
cin.sync();
ZeroMemory(cInput,128);
cInput[0] = NULL;
cout "\n输入格式错误,请重新输入:";
cin cInput;
break;
}
iMax = atoi(cInput);
if (iMax 99)
{
cin.clear();
cin.sync();
ZeroMemory(cInput,sizeof(cInput));
cInput[0] = NULL;
cout "\n最大值超界,请重新输入:";
cin cInput;
break;
}
else iFlag = 2;
break;
case 2: //输入数字串并检查格式
cin.clear();
cin.sync();
ZeroMemory(cInput,sizeof(cInput));
cInput[0] = NULL;
printf("\n【Q退出 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;
}
Q2: c语言编程问题 如何逐个读取数字
使用字符读取函数getchar即可。
1、getchar(),从stdio流中读字符,C语言标准库中它实际上是getc(stdin)。
#define getchar() getc(stdin)
函数从标准输入里读取下一个字符。返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。
2、示例如下:通过getchar()输入字符,用putchar()输出,直到文件结束(在windows上按CTRL+Z相当于EOF)。
#include stdio.h
int main()
{
char c;
while((c = getchar()) != EOF){
putchar(c);
}
return 0;
}
Q3: C语言数组七个数升序排列和降序排列怎么编程?
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
2、定义数组和变量:#includestdio.hmain(){char a[100], b[100], c[200], *p;int i = 0, j = 0, k = 0;。
3、输入字符串: printf("please input string a:\n");scanf("%s", a); /*输入字符串1放入a数组中*/。
4、输入字符串:printf("please input string b:\n");scanf("%s", b); /*输入字符串2放入b数组中*/。
5、给字符串进行排序。
6、链接字符串并输出:if (a[i] == '\0') /*判断a中字符是否全都复制到c中*/
p = b + j; /*p指向数组b中未复制到c的位置*/。
7、输出最后的结果。
Q4: 如何用C语言产生1~35之间的7个不同随机数(在VC++6.0里编译),非常感谢!
代码如下:
#include stdio.h
#include stdlib.h
#include time.h
// 产生一个 min ~ max 之间的数,包含 min, max
int rand(int min, int max)
{
return rand() % (max - min + 1) + min;
}
int main()
{
srand((unsigned int)time(NULL));
// 定义一个数组,存放产生的7个随机数
int numbers[7];
for (int i = 0; i 7; i++)
numbers[i] = rand(1, 35);
// 输出
for (int i = 0; i 7; i++)
printf("%d ", numbers[i]);
printf("\n");
system("pause");
return 0;
}
Q5: C语言 实现模拟彩票的程序设计:随机产生7个数字(用C语言随机函数产生,[1,33]区间,七个数互
使用结构体链表模拟彩票的摇奖机,来保证每次随机都是不同的数字。
数组也可以模拟,但是删除元素比较麻烦,用链表更快捷。
定义数组指针,动态分配内存。
#include stdio.h
#include stdlib.h
#include time.h
typedef struct List {
int number;
struct List*next;
} ArrayList;
ArrayList*createList(int);//创建链表,参数是链表的节点数
void freeList(ArrayList*);//循环释放所有节点的内存
int deleteNode(ArrayList*,int);//删除节点,返回节点的数据
main() {
//动态创建内存
int*numbers=(int*)calloc(7,sizeof(int));
int*inNumbers=(int*)calloc(7,sizeof(int));
//动态创建数组链表存放1-33个编号
ArrayList*balls= createList(33);
int i;
srand((unsigned)time(NULL));
printf("请输入7个不同的数字(1-33):\n");
for(i=0; i7; i++) {
*(numbers+i)=deleteNode(balls,rand()%(33-i));
scanf("%d",inNumbers+i);
}
printf("随机产生的7个数字是:\n");
for(i=0; i7; i++) {
printf("%d ",*(numbers+i));
}
printf("\n相同的数字:\n");
//查找
int j;
for(i=0; i7; i++) {
for(j=0; j7; j++) {
if(*(numbers+i)==*(inNumbers+j)) {
printf("%d ",*(numbers+i));
break;
}
}
}
//释放内存
free(numbers);
free(inNumbers);
freeList(balls);
}
ArrayList*createList(int n) {
ArrayList*head=NULL,*end=NULL,*node=NULL;
end=head=(ArrayList*)malloc(sizeof(ArrayList));//head在删除和插入节点时有用。 不能删除head,也不能插入到head前面
int i;
for(i=1; i=n; i++) {
node=(ArrayList*)malloc(sizeof(ArrayList));
node-number=i;
end-next=node;
end=node;
}
end-next=NULL;
return head;
}
void freeList(ArrayList*head) {
ArrayList*node=head;
while(head!=NULL) {
head=head-next;
free(node);
node=head;
}
}
int deleteNode(ArrayList*head,int index) { //index节点索引(0-32),返回被删除的球的编号
ArrayList*node=head-next,*temp=head;
int i=0,number;
while(iindexnode!=NULL) {
temp=node;
node=node-next;
i++;
}
if(node!=NULL) {
number=node-number;
temp-next=node-next;
free(node);
}
return number;
}
运行结果
关于c语言函数读取7个数字和c语言如何读取一个数组的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







