#include<stdio.h>
int main()
{
int num=0,odd=0,even=0;
for(;num<=100;num++)
{
if(num%2==0)
even+=num;
else
odd+=num;
}
printf("Odd number sum is %d\n",odd);
printf("Even number sum is %d\n",even);
return 0;
}
1480C 循环
我们看一个简单的列子,求100以内的素数。
#include<stdio.h>
#include<math.h>
int main(){
int i,j;
printf("100以内的素数有:\n");
for(i=2;i<100;i++){
for(j=2;j<sqrt(i);j++){
if(i%j==0){
break;
}
}
if(j>sqrt(i)){
printf("%d,\t",i);
}
}
}
1484C 函数
内联函数
内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。
内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数,对于小内存空间的函数非常受益。
使用内联函数的时候要注意:
示例:一个简单的交换函数
inline void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; }1483C 函数
根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
内部函数
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加 static,即
例如,函数的首行:
内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。
外部函数
如果在定义函数时,在函数的首部的最左端加关键字 extern,则此函数是外部函数,可供其它文件调用。
如函数首部可以为
C 语言规定,如果在定义函数时省略 extern,则默认为外部函数。
在需要调用此函数的其他文件中,需要对此函数作声明(不要忘记,即使在本文件中调用一个函数,也要用函数原型来声明)。在对此函数作声明时,要加关键字 extern,表示该函数是在其他文件中定义的外部函数。
实例
以下实例通过多个文件的函数实现输入一串字符串,然后删除指定的字符:
file1.c(文件1)
#include <stdio.h> static void delete_string(char str[],char ch); int main() { extern void enter(char str[]); // 对函数的声明 extern void print(char str[]); // 对函数的声明 char c,str[100]; enter(str); scanf("%c",&c); delete_string(str,c); print(str); return 0; } static void delete_string(char str[],char ch)//内部函数 { int i,j; for(i=j=0;str[i]!='\0';i++) if(str[i]!=ch) str[j++]=str[i]; str[j]='\0'; }file2.c(文件2)
#include <stdio.h> void enter(char str[100]) // 定义外部函数 enter { fgets(str, 100, stdin); // 向字符数组输入字符串 }file3.c(文件3)
#include <stdio.h> void print(char str[]) // 定义外部函数 print { printf("%s\n",str); }输入字符串"abcdef",给字符数组 str,在输入要删去的字符'd'。运行结果:
1482C 循环
用 continue 语句求输出 100~200 之间的不能被3整除的数。
#include<stdio.h> int main() { int n; for(n=100;n<=200;n++) { if(n%3==0) continue; printf("%d",n); } printf("\n"); return 0; }一定要注意 break 语句与 continue 语句的区别,前者是结束整个循环过程,后者这是结束本次循环。应根据题目要求灵活使用。
1481C 循环
求 100 以内偶数和奇数的和:
#include<stdio.h> int main() { int num=0,odd=0,even=0; for(;num<=100;num++) { if(num%2==0) even+=num; else odd+=num; } printf("Odd number sum is %d\n",odd); printf("Even number sum is %d\n",even); return 0; }1480C 循环
我们看一个简单的列子,求100以内的素数。
#include<stdio.h> #include<math.h> int main(){ int i,j; printf("100以内的素数有:\n"); for(i=2;i<100;i++){ for(j=2;j<sqrt(i);j++){ if(i%j==0){ break; } } if(j>sqrt(i)){ printf("%d,\t",i); } } }第一个循环里面。i遍历从2到100以内的所有数字,第二个循环是在2到sqrt(n)之间看看是不是可以整除i。可以整除则不是素数,相反不可以整除,则是素数。
int fun(int n){ for(i=2;i<=sqrt(p);i++){ if(x%i==0){ return 0; //不为素数 } else{ return 1; //为素数 } } }这个是求素数的关键代码。希望初学者要牢记于心,烂熟于心