问题描述
- c语言问题 有点难 求帮助
-
Input a number from a user
The user can continue input a number until input ‘-1’
If -1 is entered, the program must show entered numbers文档下载">
解决方案
#include <stdio.h>
int main()
{
int arr[10000];
int n;
int i = 0;
while (true)
{
printf("Number ? ");
scanf("%d", &n);
arr[i++] = n;
if (n == -1) break;
}
i = 0;
while (arr[i] != -1)
printf("%d,", arr[i++]);
}
解决方案二:
楼上速度真快,佩服!
解决方案三:
有可能溢出啊,虽然只有理论上可能,实际上如果手工输入的话,不会输入这么多,但是如果从定向输入就难说了,写代码还是严谨一点好。
解决方案四:
typedef struct node
{
int numInt;
float numFloat;
double numDouble;
struct node * pNext;
}NODE;
int main()
{
NODE* myInput = NULL;
NODE* pCurrent = NULL;
while (true)
{
int temp = 0;
printf("Number ? ");
scanf("%d", &temp);
if (temp == -1)
break;
if (myInput == NULL)
{
myInput = new NODE;
memset(myInput, 0 , sizeof(NODE));
myInput->numInt = temp;
pCurrent = myInput;
continue;
}
pCurrent->pNext = new NODE;
memset(pCurrent->pNext, 0 , sizeof(NODE));
pCurrent = pCurrent->pNext;
pCurrent->numInt = temp;
}
pCurrent = myInput;
while(true)
{
if( myInput == NULL)
break;
printf("num is : %dn", pCurrent->numInt);
myInput = myInput->pNext;
delete pCurrent;
pCurrent = myInput;
}
system("pause");
return 0;
}
看到楼上贴的有漏洞,我就再贴一个,这里面就是添加了一个,数据的存储是动态分配的内存,然后在显示的时候,再把内存清理。
这样做主要是灵活性大,你输入的数据不再被定义数组的大小限制,还有就是,数据的类型多样化,你可以看到NODE里面的3个成员变量,
假设你以后还有其他类型的数据,只需要在里面添加就可以,方便。记得释放内存,记得释放内存,记得释放内存。重要的事情说三遍,
c 和 c++里面最需要做的事就是释放内存。
解决方案五:
其实不要用链表这么麻烦,其实也不会需要输入那么多,到了数组上限可以做个提示,已经满了,然后全部输出,然后,可以做成结束程序,或者重新开始输入