例:从键盘输入任一个大于1的整数i,判断它是否是素数,如果是素数,则将其输出,否则不输出。
程序表达为:
#include<stdio.h> int main() { ?? ?int i,x; ?? ?scanf("%d",&i); ?? ?for(x=2;x<=i-1;x++) ?? ?if(i%x==0) ?? ?break; ?? ?if(x==i) ?? ?printf("%d",i); ?? ?return 0; ?}?
? ? 执行结果:输入的数值若为素数,则输出结果为该数值,若不是素数,则输出结果为空。
#include<stdio.h> int main() { ?? ?int i,x; ?? ?scanf("%d",&i); ?? ?for(x=2;x<=i/2;x++) ?? ?if(i%x==0) ?? ?break; ?? ?if(x>i/2) ?? ?printf("%d",i); ?? ?return 0; ?} //该程序较上一个程序提高了运行效率。注意:做相应修改时for与if中的语句要相互对应。
int main() { ?? ?int i,x; ?? ?scanf("%d",&i); ?? ?for(x=2;x<=sqrt(i);x++) ?? ?if(i%x==0) ?? ?break; ?? ?if(x>sqrt(i)) ?? ?printf("%d",i); ?? ?return 0; ?}?
标识法:程序员较常使用的写程序的方法,即立一个flag,将flag赋为某个特定值,若循环过程中flag特定值改变,则跳出循环,下面的程序则为带标识法的程序。
#include<stdio.h> #include<math.h> int main() { ?? ?int i,x,flag=1; ?? ?scanf("%d",&i); ?? ?for(x=2;x<=sqrt(i);x++) ?? ?if(i%x==0) ?? ?{ ?? ??? ?flag=0; ?? ??? ?break; ?? ?} ?? ?if(flag==1) ?? ?printf("%d",i); ?? ?return 0; ?} //以上几个程序为一题的多种写法,后两个程序相较上两个程序运行效率相对较高,建议能够学会使用标识法写程序。
例:编写一个能够输出1-200之间所有素数的程序,并要求输出数值能够对齐排列。
#include<stdio.h> #include<math.h> int main() { ?? ?int count=0,n,flag,i; ?? ?for(n=2;n<=200;n++) ?? ?{ ?? ??? ?flag=1;//假设n是素数 ?? ??? ?for(i=2;i<=sqrt(n);i++) ?? ??? ?if(n%i==0) ?? ??? ?{ ?? ??? ?flag=0;break; ?? ??? ?}? ?? ?if(flag==1) ?? ?{ ?? ??? ?printf("%5d",n); ?? ??? ?count++; ?? ??? ?if(count%10==0) ?? ??? ?printf("\n"); ?? ?} ?? ?} ?? ?return 0; ?} //该程序为一个基础的二重循环程序
例:编写一个能够输出如下字符图形的程序。要求仅用一个二重循环来实现,其中第1行第1个'*'在第21格输出。
#include<stdio.h> #include<math.h> int main() { ?? ?int space,star,n,i,j; ?? ?space=21; ?? ?scanf("%d",&n); ?? ?star=n; ?? ?for(i=1;i<=n;i++) ?? ?{ ?? ??? ?for(j=1;j<=space;j++) ?? ??? ?printf(" "); ?? ??? ?for(j=1;j<=star;j++) ?? ??? ?printf("*"); ?? ??? ?printf("\n"); ?? ??? ?if(i<=n/2) ?? ??? ?{ ?? ??? ??? ?space++;star-=2; ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?space--;star+=2; ?? ??? ?} ?? ?} ?? ?return 0; ?}?
(本文章为课堂笔记,为跟随老师思路所写,仅供参考。)
|