我希望我的回圈每次從開始時都包含不同的變數。它應該是這樣的:
int a1, a2, a3;
...
...
for (i = 1; i<=10; i )
{
a**i**
}
我只想根據 i 更改回圈中的變數,每次都增加 1。如何做這樣的事情?
uj5u.com熱心網友回復:
您可以將 3 個int變數放入一個陣列中,并在一個回圈中遍歷陣列的所有元素,每次回圈迭代訪問陣列的一個元素。在每次回圈迭代中,您可以對陣列元素做一些事情,例如使用printf.
這是一個示例程式:
#include <stdio.h>
int main( void )
{
//declare and initialize 3 "int" variables in an array
int a[3] = { 10, 11, 12 };
//go through the entire array in a loop, printing one
//element per loop iteration
for ( int i = 0; i < 3; i )
{
printf( "%d\n", a[i] );
}
return 0;
}
該程式具有以下輸出:
10
11
12
如果您希望將3int 變數保留為單獨的物體,那么您可以創建一個指標陣列,其中每個指標指向這些int變數之一,并在回圈中使用該指標陣列:
#include <stdio.h>
int main( void )
{
//declare and initialize 3 separate "int" variables
int a1 = 10, a2 = 11, a3 = 12;
//create and initialize array of pointers to
//these "int" variables
int *pointers[3] = { &a1, &a2, &a3 };
for ( int i = 0; i < 3; i )
{
printf( "%d\n", *pointers[i] );
}
return 0;
}
該程式的輸出與其他程式完全相同。
uj5u.com熱心網友回復:
我按照@Andreas Wenzel 的建議做了,一切正常,但陣列索引中的亂數不起作用,并且始終選擇第一個元素:
int random()// Randomizer
{
srand(time(0));
ranq = rand() % 2;
}
...
...
const char** tabP[3] = { &p1[ranq], &p2[ranq], &p3[ranq]};
do
{
random();
printf(*tabP[i]);
...
i;
}while(i!=11)
問題是,printf 的輸出總是 p1[1],盡管ranq值在 0 和 3 之間變化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415997.html
標籤:
上一篇:從函式內更新全域變數
