break;
// 读取用户输入的分数,范围在0到100之间
// 将分数存储在数组中
// 返回值:所存储值的个数
//---------------------------------------------------------------
int getScores( short scores[ ], int len )
{
int i = 0;
puts( "Please enter scores between 0 and 100.\n"
"Press <Q> and <Return> to quit.\n" );
while ( i < len )
{
printf( "Score No. %2d: ", i+1 );
if ( scanf( "%hd", &scores[i] ) != 1 )
break; // 未读到数据:结束循环
if ( scores[i] < 0 || scores[i] > 100 )
{
printf( "%d: Value out of range.\n", scores[i] );
break; // 抛弃这个值,并结束循环
}
++i;
}
return i; // 已存储的数据个数
}
continue;
// 读取分数
// --------------------------
int getScores( short scores[ ], int len )
{
/* ... (同例6-7) ... */
while ( i < len )
{
/* ... (同例6-7) ... */
if ( scores[i] < 0 || scores[i] > 100 )
{
printf( "%d : Value out of range.\n", scores[i] );
continue; // 抛弃这个值,并读取另一个值
}
++i; // 已存储的数据个数加1
}
return i; // 已存储的数据个数
}
goto 标签名称;
标签名称: 语句
// 在函数内部处理错误
// ----------------------------------
#include <stdbool.h> // 定义布尔值,true和false(C99)
#define MAX_ARR_LENGTH 1000
bool calculate( double arr[ ], int len, double* result )
{
bool error = false;
if ( len < 1 || len > MAX_ARR_LENGTH )
goto error_exit;
for ( int i = 0; i < len; ++i )
{
/* ... 一些计算操作,其可能造成错误标志error被设定...
*/
if ( error )
goto error_exit;
/* ... 继续计算;结果被存储到变量 *result 中...
*/
}
return true; // 如果没有错误,程序会执行到此处
error_exit: // 错误处理子程序
*result = 0.0;
return false;
}
static const int maxSize = 1000;
double func( int n )
{
double x = 0.0;
if ( n > 0 && n < maxSize )
{
double arr[n]; // 一个变长度数组
again:
/* ... */
if ( x == 0.0 )
goto again; // 合法:在arr的作用域内跳转
}
if ( x < 0.0 )
goto again; // 非法: 从arr的作用域外跳转到作用域内
return x;
}
return [表达式];
// 返回两个整数类型参数中的较小值
int min( int a, int b )
{
if ( a < b ) return a;
else return b;
}
return ( a < b ? a : b );
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有