c语言如何用循环定义多个变量

就是经过一个for(i=0;i<n;i++){//产生n个变量分别是N1到Nn}记住n未知再for前由用户输入,别跟我说直接用数组,都说了n未知,也别说用动态数组就完了,写出代码给我看

#include <stdlib.h>
#include <stdio.h>

void main(){
int i;//循环变量
int n;//变量个数
int *p;//动态存储区的首地址
scanf("%d",&n);
//开辟存放n个数据的存储区
p=(int*)calloc(n,sizeof(int));
/*
通过*(p+i)或p[i]就可以对该数据区的数据进行处理。如果是其它数据类型例如float,只需将指针p的类型改为float,calloc返回的指针类型也改为float就行。
*/

/*
以下是测试代码,先对n个数据赋予n,n-1 ,n-2,... ,1,然后从最后一个向第一个依次输出。
*/
for(i=n;i>0;i--)
p[n-i]=i;
for(i=n;i>0;i--)
printf("%d ",p[i-1]);
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-02

在C语言中,不能通过循环语句来定义多个变量。

因为C语言规定,变量的定义必须放在执行语句的前面,而循环语句就是一条执行语句,所以不能在循环体中定义变量。


举例如下:

int i;
for(i=0; i<4; i++)
{
    int a;  // 这是错误的,编译的时候会报错,因为定义变量必须在执行语句之前
}

第2个回答  2012-04-30
用指针来动态分配内存,比如
int size=8;
int *nums;
nums=(int *)malloc(sizeof(int)*size);
然后你就可以把nums当成长度为8的数组使用了,其操作方式和int nums[8];一模一样追问

哦,还有一个要求就是变量名是N1,N2,N3一直到Nn

追答

不好意思,我编程这些年,就没见过这么长串变量的,同类型变量最好用数组来表示,要不然别人都看不懂的,而且极其浪费代码。

追问

谢谢你,不过我想这个应该就是做的到的吧,我就想知道方法,适用不我暂不考虑

追答

根据C语言变量申明的要求,你在循环里面是不能定义变量的,所有变量都必须统一在程序开始时定义。所以你要想拥有足够的变量,你必须在程序一开始先定义足够多的变量,如:
int n1,n2,n3,n4,n5,n6,n7,n8,n9;
然后根据需要再选择前n个变量使用。

追问

噢我懂了,c语言不行,那其他的c#,java,c++呢;

追答

我所能想到的唯一的办法就是根据需要把要生成的变量写到文件中,再以文件包含的形式把新生成的文件完整包含进来。这种文件包含的方法c#,java,c++都没有

追问

那你大概把方法骨架写下

追答

比如用html来实现时

n=inputbox("please input n")
set shell=createobject("wscript.shell")
for i=1 to n
set shell.run "cmd.exe /c echo var N"&i&";"&cvcrlf&" >>name.js",0,false
next

别的我不想多说了,我自认为还不是特别无聊

本回答被网友采纳
第3个回答  2012-10-30
#define ID(x) int i##x

for(int i = 0;i<n;i++)
ID(i);

不过这样有个缺点 那就是每次你只能用一个数 并且在外面不可见

你可以用静态声明 在最后一个数声明后一起使用 嘿嘿
第4个回答  2020-01-05
在C语言中,不能通过循环语句来定义多个变量。
因为C语言规定,变量的定义必须放在执行语句的前面,而循环语句就是一条执行语句,所以不能在循环体中定义变量。
举例如下:
int i;
for(i=0; i<4; i++)
{
int a; // 这是错误的,编译的时候会报错,因为定义变量必须在执行语句之前
}