#include <stdio.h>
int fun(int x,int y){
return x*y;
}
int main(void){
int k = 5;
printf("%d\n",fun(k++,++k));
return 0;
}
运行结果为36
逆向输出字符串的单词,示例代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_STRING 200
int main(void){
int i = 0;
int j = 0;
char str[MAX_STRING] = {0};
int length = 0;
char tmp = 0;
int start = 0;
int end = 0;
printf("Please input riginal string:\n");
gets(str);
length = strlen(str);
start = 0;
end = length - 1;
/*将整个字符串翻转*/
while(start < end){
tmp = str[start];
str[start] = str[end];
str[end] = tmp;
/*改变索引值*/
++start;
--end;
}
printf("Step1:\n");
printf("%s\n",str);
i = 0;
start = 0; /*start指向开始*/
while(i < length){
if(str[i] != ' '){
start = 1;
while(str[i] != ' ' && str[i] !='\0') /*找到单词尾*/
++i;
end = i - 1;
while(start < end){
/*交换两个元素值*/
tmp = str[start];
start[start] = str[end];
str[end] = tmp;
/*改变索引值*/
++start;
++end;
}
}
++i; /*i自增*/
}
printf("Step2:\n");
printf("%s",str);
return 0;
}
用函数输出上述代码,声明函数:
void reverse_string(char str[MAX_STRING],int start,int end)
示例代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_STRING 200
void reverse_string(char str[MAX_STRING],int start,int end){
char tmp = 0;
/*将整个字符翻转*/
while(start < end){
/*交换两个元素值*/
tmp = str[start];
str[start] = str[end];
str[end] = tmp;
/*改变索引值*/
++start;
--end;
}
}
int main(void){
int i =0;
int j =0;
char str[MAX_STRING] = {0};
int length = 0;
char tmp = 0;
int start = 0;
int end = 0;
i = 0;
printf("Input riginal string:\n");
gets(str);
length = strlen(str);
reverse_string(str,0,length - 1);
printf("Step1:\n");
printf("%s\n",str);
i = 0; /*设置循环初始条件*/
start = 0; /*设置循环初始条件*/
/*依次翻转其中的每一个单词*/
while(i < length){
/*翻转其中的每一个单词*/
if(str[i] != ' '){ /*找到单词开头*/
start = i; /*将start置为单词开头*/
while(str[i] != ' ' && str[i] != '\0') /*找到单词尾*/
++i;
reverse_string(str,start,i - 1);/*翻转str中从start到(i - 1)的字符*/
}
++i;
}
printf("Step2:\n");
printf("%s\n",str);
return 0;
}
判断输入整数是否为素数,示例代码如下:
#include <stdio.h>
#include <math.h>
int input_data(void){ /*inout_data函数声明*/
int data = 0;
do{
printf("Please input a positive integer:\n");
scanf("%d",&data);
}while(data <= 0);
return data;
}
int is_prime(const int data){ /*is_prime函数声明*/
int i = 0;
int max = sqrt(data);
for(i = 2;i <= max; ++i){
if(data % i == 0){
return -1;
}
return 0;
}
int main(void){
int data = 0;
ing flag = 0;
/*输入一个正整数*/
data = input_data(); /*调用input_data函数*/
/*判断是否为素数*/
flag = is_prime(data); /*调用is_prime函数*/
/*检查执行结果*/
if(0 == flag){ /*检查is_prime函数的执行结果*/
printf("%d is a prime number.\n",data);
}
else
printf("%d is not a prime number.\n",data);
return 0;
}
证明哥德巴赫猜想:任何一个大于6的偶数都可以表示成两个素数之和。
方法:当n为大于或等于6的任意偶数,可分解为a和b两个数,分别检查a和b是否为素数。如果不是素数,则不成立;如果a是素数,继续检查b;如果b不是,则猜想不成立;如果b也是,则成立。示例代码如下:
/*证明哥德巴赫猜想*/
#include <stdio.h>
#include <math.h>
int input_data(void){ /*函数声明*/
int data = 0;
do{
printf("Please input a even integer (>6):\n"); /*辅助信息*/
scanf("%d",&data); /*为data赋值*/
}while(data < 6 || data % 2 == 1); /*如果data小于6或为奇数*/
return data;
}
int is_prime(const int data){ /*is_prime函数声明*/
int i = 0;
int max = sqrt(data); /*sqrt(data)的作用为求data的平方根*/
for(i = 2;i <= max; ++i){
if(data % i == 0) /*是否整除i*/
return -1; /*能整除,则为合数*/
}
return 0;
}
int goldbach_conjecture(const int n){ /*函数声明*/
int a = 0; /*定义并初始化a*/
int mid = n / 2; /*将mid定义为n的一半*/
for(a = 3; a <= mid;a += 2){
if(0 == is_prime(a)) /*判断a是否为素数*/
if(0 == is_prime(n - a)){ /*判断n - a是否为素数*/
printf("%d can be devied into two prime nuber:%d and %d\n",n,a,n - a);/*打印函数*/
return 0;
}
}
}
return -1;
}
int main(void){
int n = 0;
int flag = 0;
/*输入一个正整数*/
n = input_data(); /*调用input_data获得n值*/
/*证明猜想*/
flag = goldbach_conjecture(n); /*调用函数验证猜想*/
if(0 == flag){ /*检查函数调用结果*/
printf("The Goldbach's conjecture is correct!\n"); /*打印成功信息*/
}else {
printf("The Goldbach's conjecture is wrong!\n"); /*打印失败信息*/
}
return 0;
}