C语言的switch语句

C语言的switch语句比大家通常所习惯的用法更复杂。switch语句内部可以含有不在case 和 default标号覆盖范围的内容。

假如数组a[]是一张100个元素的素数表。现在要打印出来。如果打印不是从第一个元素开始,则要求显示起始符“…”。用switch语句来写可以写作:

void printab(int a[], int n, int from)
{
switch(from) while(from <n-1) {
from++;
goto next;
default:
printf(“… “);
next:
case 0:
printf(”%d “, a[from]);
}
printf(”\n”);
}
int main()
{
int a[100];
prime(a, 100);
printab(a, 100, 10);
printab(a, 100, 0);
return 0;
}

这个switch语句用法跟大家平常所熟悉的有所不同。但的确是正确的C语言语句。可以正常编译和运行。

用y_tab实现的C语言解释程序完全支持这种用法。因此可以先在解释程序试验,然后平移到C语言编译器。

func prime(a[], all)
{
a[0]=2;
n=1;
for(k=3; ;k+=2) {
for(i=0; i<n; i++) {
if(k%a[i]==0) break;
}
if(i==n) {
a[n++]= k;
if(n>=all) break;
}
}
}
saving prime…used func[0].

func printab(a[], n, from)
{
switch(from) while(from <n-1) {
from++;
goto next;
default:
print “…”, “\b”;
next:
case 0:
print a[from], “\b”;
}
print “”;
}
saving printab…used func[1].

prime(a[],100);
printab(a[], 100, 0);
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103
107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211
223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331
337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449
457 461 463 467 479 487 491 499 503 509 521 523 541
printab(a[], 100, 10);
… 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137
139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241
251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367
373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487
491 499 503 509 521 523 541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值