1 算术运算
(完整代码见001_mod.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int x, y, z;
scanf("%d %d", &x, &y);
z = x % y;
printf("%d\n",z);
return 0;
}
完整代码见002_calculate.c
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int sum = 0;
for(int i=0;i<n;++i){
int m;
scanf("%d",&m);
if(m<0) continue;
sum += m;
}
printf("%d",sum);
return 0;
}
完整代码见00103——func.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
//int n;
//scanf("%d",&n);
//printf("%d",n);
//主要程序内容写在这里
int x;
scanf("%d",&x);
printf("%d\n",x*x+2*x+5);
return 0;
}
(完整代码见00104_circle.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.14159
int main() {
//int n;
//scanf("%d",&n);
//printf("%d",n);
//主要程序内容写在这里
double r;
scanf("%lf", &r);
printf("%lf\n",PI*r*r);
return 0;
}
2.比较运算
完整代码见002_triangle.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
//int n;
//scanf("%d",&n);
//printf("%d",n);
//主要程序内容写在这里
int a, b, c;
scanf("%d%d%d", &a,&b,&c);
(a*a+b*b==c*c) ?(printf("1\n")):( printf("0\n"));
return 0;
}
3.变量
- (***) 2398 数字交换
注意:三个数两两进行交换,可以用抱薪救火法;
相当于用两次抱薪救火法,即
(完整代码见00301_swap.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
//int n;
//scanf("%d",&n);
//printf("%d",n);
//主要程序内容写在这里
int a, b, c, temp ;
scanf("%d %d %d", &a,&b,&c);
temp = a;
a = b;
b = c;
c = temp;
printf("%d %d %d\n",a,b,c);
return 0;
}
(完整代码见00302_swap.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
//int n;
//scanf("%d",&n);
//printf("%d",n);
//主要程序内容写在这里
int a, b, c, temp1,temp2 ;
scanf("%d %d %d", &a,&b,&c);
temp1 = a;
a = b;
b = temp1;
temp2 =b;
b = c;
c = temp2;
printf("%d %d %d\n",a,b,c);
return 0;
}
4.if
- 2104 奇偶性 注意正负值
(完整代码见00401_jiouxing.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
if(n%2==0)
{
printf("0\n");
}
else
{
printf("1\n");
}
//printf("%d",n);
//主要程序内容写在这里
return 0;
}
(完整代码见00402——if1.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
if(a+b>10)
{
printf("%d",a*b);
}
else
{
printf("%d",a-b);
}
return 0;
}
(完整代码见00403——if2.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
if(a + b >= 0 && a + b <=3 )
{
printf("YES\n");
}
else if(a + b >= 4)
{
printf("NO\n");
}
else if(a + b < 0)
{
printf("negative\n");
}
return 0;
}
完整代码见00404——if3.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a, b, c, d;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a + b > 10)
{
printf("%d\n",a * b);
}
else if(b + c > 5)
{
printf("%d\n",c * d);
}
else if(d < 10 || a * c > 100)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}
(完整代码见00405——score.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int S;
scanf("%d",&S);
if(S >= 90 && S <= 100)
{
printf("A\n");
}
else if(S >= 80 && S < 90)
{
printf("B\n");
}
else if(S >= 70 && S < 80)
{
printf("C\n");
}
else if(S >= 60 && S < 70)
{
printf("D\n");
}
else if(S >= 0 && S < 60)
{
printf("E\n");
}
return 0;
}
完整代码见00406——age.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
if(n >= 0 && n <= 3)
{
printf("infant\n");
}
else if(n >=4 && n <= 12)
{
printf("child\n");
}
else if(n >= 13 && n <= 18)
{
printf("youngster\n");
}
else if(n >= 19 && n <= 25)
{
printf("youth\n");
}
return 0;
}
5.switch
(完整代码见00501——alpha.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char ch;
scanf("%c", &ch);
switch(ch)
{
case 'a': printf("apple\n");break;
case 'b': printf("banana\n");break;
case 'c': printf("cat\n");break;
default: printf("no\n");
}
//printf("%d",n);
//主要程序内容写在这里
return 0;
}
(完整代码见00502——sum_switch.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a, b;
scanf("%d%d",&a, &b);
switch(a + b)
{
case 1: printf("one\n");break;
case 2: printf("two\n");break;
case 3: printf("three\n");break;
case 4: printf("four\n");break;
case 5: printf("five\n");break;
case 6: printf("six\n");break;
case 7: printf("seven\n");break;
case 8: printf("eight\n");break;
case 9: printf("nine\n");break;
default:printf("None\n");
}
return 0;
}
(完整代码见00503——day_switch.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n, m;
scanf("%d%d",&n,&m);
//printf("%d",n);
//主要程序内容写在这里
switch(m)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :printf("31\n"); break;
case 4 :
case 6 :
case 9 :
case 11: printf("30\n"); break;
case 2 :
if((n % 4 == 0 && n % 100 != 0)|| (n % 400 == 0))
{
printf("29\n");
}
else
{
printf("28\n");
}
}
return 0;
}
6.while
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n, i = 0;
scanf("%d",&n);
while(n%2==0)
{
i+=1;
n/=2;
}
printf("%d",i);
return 0;
}
7.while/for
完整代码见00701_out.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
printf("%d\n",i);
}
return 0;
}
完整代码见00702_out.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i = 3; i <= n; i++ )
{
if(i % 3 == 0)
{
printf("%d\n",i);
}
}
return 0;
}
完整代码见00703_lucky.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
if(n>=0&&n<10){
(n==7)?(printf("Yes\n")):(printf("No\n"));
}else{
while(n)
{
if(n%10==7)
{
printf("Yes\n");
break;
}
else
{
n/=10;
}
}
if(n==0) printf("No\n");
}
return 0;
}
- (***)2056 素数判断
注意:
(1)用标志为进行判定;
int primer = 1;
(2)循环:2——————n-1
for(int i=2;i<n;++i){
if(n%i == 0){
primer = 0;
break;
}
}
(完整代码见00704——prime.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int primer = 1;
for(int i=2;i<n;++i){
if(n%i == 0){
primer = 0;
break;
}
}
printf(primer?"Yes":"No");
return 0;
}
- (***)2057 输出最小值
注意:(1)先设定最小的值,然后进行if判断;
for(i = 0;i < n;++i)
scanf("%d",&num);
if(min > num)
{
min = num;
}
};
(完整代码见0070501_min.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int i;//循环变量
int n;//循环的次数,n个数字
int num;//输入的值
int min;//最小的数
scanf("%d%d",&n,&num);
min = num;
for(i = 0;i < n;++i)
scanf("%d",&num);
if(min > num)
{
min = num;
}
};
printf("%d",min);
return 0;
}
注意:采用qsort()函数;
int cmp(const void* a, const void* b){
int l = *(int*)a;
int r = *(int*)b;
if(l==r) return 0;
return (l>r) ?1:-1;
}
(完整代码见0070502_min.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[10000];
int main() {
int i;//循环变量
int n;
int min = a[0];//最小的数
scanf("%d",&n);
for(i = 0;i < n;++i){
scanf("%d",&a[i]);
}
int cmp(const void* a, const void* b){
int l = *(int*)a;
int r = *(int*)b;
if(l==r) return 0;
return (l>r) ?1:-1;
}
qsort(a,n,sizeof(int),cmp);
min = a[0];//①对象,②大小③单位④排序函数
printf("%d",min);
return 0;
}
- (***) 2093 求最值
注意:(1)先设定最值,然后进行if判断;
max=min=a[0];
for(int i = 1; i < n; i++)
{
scanf("%d",&(a[i]));
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
(完整代码见0070601_min.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[100000];
int main() {
int n , max, min;
scanf("%d %d",&n, &(a[0]));
max=min=a[0];
for(int i = 1; i < n; i++)
{
scanf("%d",&(a[i]));
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
printf("%d %d\n",min, max);
return 0;
}
- 注意:采用qsort()函数;
int cmp(const void* a, const void* b){
int l = *(int*)a;
int r = *(int*)b;
if(l==r) return 0;
return (l>r) ?1:-1;
}
(完整代码见0070602_min.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[10000];
int main() {
int i;//循环变量
int n;
int max=min = a[0];//最小的数
scanf("%d",&n);
for(i = 0;i < n;++i){
scanf("%d",&a[i]);
}
int cmp(const void* a, const void* b){
int l = *(int*)a;
int r = *(int*)b;
if(l==r) return 0;
return (l>r) ?1:-1;
}
qsort(a,n,sizeof(int),cmp);
min = a[0];//①对象,②大小③单位④排序函数
max = a[n-1]
printf("%d%d",min,max);
return 0;
}
(完整代码见00707_sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int arr[100000];
int sum[100000];
int main()
{
int n;
scanf("%d",&n);
sum[0] = 0;
for(int i = 0; i<n;++i){
scanf("%d",&arr[i]);
if(i==0){sum[0]= arr[0];}
else{sum[i] = sum[i-1]+arr[i];}
}
printf("%d\n", n);
for(int i = 0; i < n; ++i){
printf("%d\n", sum[i]);
}
return 0;
}
- (***) 2059 斐波那契数
1.输入输出列举出来,找到规律:2059 斐波那契数
2.出错的部分进行修改;
(完整代码见00708_fabnaic.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[10000];
int main() {
int n;
scanf("%d",&n);
a[2]=1;
a[3]=2;
for(int i = 4; i <= n;++i){
a[i]=a[i-1]+a[i-2];
}
printf("%d\n",a[n]);
return 0;
}
(完整代码见00709_inorder.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a, b;
scanf("%d%d",&a,&b);
for(int i = b; i >= a;i--)
{
printf("%d\n",i);
}
return 0;
}
(完整代码见00710_sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,x,sum = 0; ;
scanf("%d",&n);
for(int i = 1; i <= n; i++ )
{
scanf("%d",&x);
sum += x;
}
printf("%d\n",sum);
return 0;
}
- (***)2137 数列计算
注意:(1)保留小数的结果,强制类型转化;
printf("%.2lf\n",sum);
(2)保留两位小数
sum += (float)a / b;
(完整代码见00711_shulie.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int N;
scanf("%d",&N);
int a = 4, b =7 ,t;
double sum = 4.0 / 7.0;
for(int i = 1; i < N; i++)
{
t = a;
a = b;
b += t;
sum += (float)a / b;
}
printf("%d/%d\n",a,b);
printf("%.2lf\n",sum);
return 0;
}
(完整代码见00712——jiecheng.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n, s = 1;
scanf("%d",&n);
for(int i = 1;i <= n; i++)
{
s*= i;
}
printf("%d\n",s);
return 0;
}
- (***) 2406 非负数和
注意:(1)考虑多数,作为条件;
注意:(2)break:结束循环;continue:结束本次循环;(i)
if(x >= 0) sum += x;
else break;
(完整代码见00713_sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n, x, sum = 0;
scanf("%d",&n);
for(int i = 1; i <= n ; i++)
{
scanf("%d",&x);
if(x >= 0) sum += x;
else break;
}
printf("%d",sum);
return 0;
}
- (***) 2407 分数求和
小数的精度表示:前后两个数的误差小于多少;
for(int i = 1;i <= N||(fabs(1.0/i-1.0/(i+1)))< 1e-4; i++)
{
sum += 1.0/i;
}
(完整代码见00714_sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int N;
scanf("%d",&N);
double sum = 0;
for(int i = 1;i <= N||(fabs(1.0/i-1.0/(i+1)))< 1e-4; i++)
{
sum += 1.0/i;
}
printf("%lf\n",sum);
//printf("%lf\n",1.0/2);
return 0;
}
(完整代码见00704——prime.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int primer = 1;
for(int i=2;i<n;++i){
if(n%i == 0){
primer = 0;
break;
}
}
printf(primer?"Yes":"No");
return 0;
}
(完整代码见00715_beishu.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int N, num = 0;
scanf("%d",&N);
for(int i = 1; i <= N; i++)
{
if(i%2==0 || i%3==0 ||i%5==0)
{
num += 1;
}
}
printf("%d\n",num);
return 0;
}
(完整代码见00716——inorder.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int sum = 0;
int m;
scanf("%d",&m);
while(m){
sum = m%10+sum*10;
m/=10;
}
printf("%d",sum);
return 0;
}
三元运算符的巧妙应用;
for(int i=1;i<=n;++i){
res+= 1.0/(i%2?i:-i);
}
(完整代码见00717_sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
float res = 0;
for(int i=1;i<=n;++i){
res+= 1.0/(i%2?i:-i);
}
printf("%f",res);
return 0;
}
- 2417 分数求和3 注意精确到小数点后10位
(完整代码见00718——sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int x = 1;
double sum =0.0;
for(int i = 1; i <= n; i++)
{
x*=i;
sum += 1.0/x;
}
printf("%lf\n",sum);
return 0;
}
用含有9来进行判定;
if(i%10==9) ++res;
if(i/10==9) ++res;
}
(完整代码见00719_count.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int res = 0;
for(int i=1;i<=n;++i){
if(i%10==9) ++res;
if(i/10==9) ++res;
}
printf("%d",res);
return 0;
}
- 合数控制n的自减;
for(int i=2;i<n;++i){
if(n%i==0){
prime = 0;
n--;
break;
}
}
2.质数break;
if(prime){
break;
}
}
(完整代码见00720——prime.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
n--;
while(1){
int prime = 1;
for(int i=2;i<n;++i){
if(n%i==0){
prime = 0;
n--;
break;
}
}
if(prime){
break;
}
}
printf("%d",n);
return 0;
}
- (***)2419 回文数
回文数即正序逆序的数字相同;
(完整代码见00721——huiwen.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int temp = 0;
int m = n;
while(0 != m){
temp = temp*10 + m%10;
m /= 10;
}
printf(n==temp?"yes":"no");
return 0;
}
(完整代码见00722——sum.c)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int n,x,sum=0;
scanf("%d",&n);
for(int i =0;i<n;++i)
{
scanf("%d",&x);
if(x<0) x=0;
if(x>0)
sum+=x;
}
printf("%d\n",sum);
return 0;
}