纯手打,欢迎帮忙检查错误,我是说,如果有的话。
- 编写一个程序,输出"Hello, World!"
#include<stdio.h>
int main(void)
{
printf("helloworld\n");
return 0;
}
关于这道题的详解我在我的第一篇笔记里有详解,欢迎大家提出建议
2. 编写一个程序,计算并输出两个整数的和。
#include<stdio.h>
int add(int a ,int b)
{
return a + b;
}
int main(void)
{
int a, b;
scanf_s("%d%d",&a,&b);
int ret = add(a,b);
printf("%d\n",ret);
return 0;`
}
tips:scanf中间那两个格式控制字符串千万不要加逗号哦,别问我是怎么知道的
- 编写一个程序,计算并输出两个浮点数的乘积。
`#include<stdio.h>
float mul(float a, float b)
{
return a * b;
}
int main(void)
{
float a, b;
scanf_s("%f%f", &a, &b);
float ret = mul(a,b);
printf("%f\n",ret);
return 0;
}
- 编写一个程序,输入一个整数并判断它是否为偶数。
#include<stdio.h>
int judge(a)
{
if (a % 2 == 0)
{
return 1;
}
else if(a % 2 == 1)
{
return 0;
}
else
{
return -1
}
}
int main(void)
{
int a;
scanf_s("%d",&a);
int ret = judge(a);
if (ret = 1)
{
printf("偶数\n");
}
else if(ret == -1)
{
printf("奇数\n");
}
else
{
printf("错误\n");
}
return 0;
}
5.编写一个程序,输入一个字符并判断它是否为大写字母。
#include<stdio.h>
int judge(char a)
{
if (a >= 97)
{
return 0;
}
else if(a >= 65 && a < 97)
{
return 1;
}
else
{
return -1;
}
}
int main(void)
{
char a;
scanf_s("%c",&a);
int ret = judge(a);
if (ret == 1)
{
printf("是大写字母\n");
}
else if(ret == 0)
{
printf("是小写字母\n");
}
else
{
printf("输入错误\n");
}
return 0;
}
6.编写一个程序,输入一个年份并判断它是否为闰年。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int judge(int y)
{
if (y % 400 == 0 || y % 4 == 0 && y % 100 != 0)
{
return 1;
}
else if (y % 100 == 0 || y % 4 != 0)
{
return 0;
}
}
int main(void)
{
int year;
scanf("%d",&year);
int ret = judge(year);
if (ret == 1)
{
printf("是闰年\n");
}
else if (ret == 0)
{
printf("是平年\n");
}
return 0;
}
7.编写一个程序,输入两个整数并交换它们的值。
就浅写六种方法吧
1这是用中间量的写法
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void swith(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
swith(&a, &b);
printf("%d %d\n",a,b);
return 0;
}
接下来是加减乘除法
2
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void swith(int* a, int* b)
{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
swith(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
3
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void swith(int* a, int* b)
{
*a = *a - *b;
*b = *a + *b;
*a = *b - *a;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
swith(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
4
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void swith(int* a, int* b)
{
*a = *a * *b;
*b = *a / *b;
*a = *a / *b;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
swith(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
5
除法有问题,好像不太行
6最硬核的就是用这个按位异或了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void swith(int* a, int* b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
swith(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
8.编写一个程序,输入一个正整数并计算输出它的阶乘。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int mul(int a)
{
int i = 1;
int ret = 1;
for (i = 1; i <= a; i++)
{
ret = ret * i;
}
return ret;
}
int main(void)
{
int a;
scanf("%d",&a);
int ret = mul(a);
printf("%d\n",ret);
return 0;
}
这个最厉害的地方是能算出0的阶乘为1。
当然还是有点挫
所以……上递归
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int test(int a)
{
if (a)
{
return a * test(a - 1);
}
if (a == 0)
{
return 1;
}
}
int main(void)
{
int a;
scanf("%d", &a);
int ret = test(a);
printf("%d\n", ret);
return 0;
}
9.编写一个程序,输入一个正整数并判断它是否为质数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int judge(int a)
{
int i = 0;
if (a == 2)
{
return 0;
}
else if (a == 0)
{
return 6;
}
for (i = 2; i < a; i++)
{
if (a % i == 0)
{
return 1;
}
}
return 0;
}
int main(void)
{
int a = 0;
scanf("%d", &a);
int ret = judge(a);
if (ret == 1)
{
printf("不为质数\n");
}
else if (ret == 0)
{
printf("为质数\n");
}
else
{
printf("都不是\n");
}
return 0;
}
10.编写一个程序,输入一个字符串并计算输出其中的字符个数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int my_strlen(char arr[])
{
int count = 0;
while(*arr)
{
arr++;
count++;
}
return count;
}
int main(void)
{
char arr[1024] = { 0 };
scanf("%s",arr);
int ret = my_strlen(arr);
printf("%d\n",ret);
return 0;
}
新手保护期到此为止喽
接下来要上强度了!!!
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
这道题的答案和我的有些不一样,我觉得答案有问题,所以就用我的三种方法吧
第一种是用递归做,编程很奇妙吧,嘻嘻
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int febon(int a)
{
if (a == 1 || a == 2)
{
return 2;
}
else
{
return febon(a - 1) + febon(a - 2);
}
}
int main(void)
{
int a;
scanf("%d", &a);
int ret = febon(a);
printf("%d\n", ret);
return 0;
}
第二种就用两个量来表示斐波那契数的发展
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void)
{
int a = 2;
int b = 2;
int i = 0;
for (i = 0; i < 20; i++)
{
printf("%d %d\n",a,b);
a = a + b;
b = a + b;
}
return 0;
}
这个其实就是答案的思路了,我愿称之为“生态系统快乐数”,其实还是巧妙的,只是不好控制,但还是能用,主要是题目没说清楚具体要求,whatever。
第三种就是用三个变量算,这个我想了好久,感觉是硬凑出来的没什么技巧,见笑了
想要一次出一个的话就把printf拿出去就行了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void febon(int n)
{
int a = 2;
int b = 2;
int i = 0;
if (n == 1 )
{
printf("%d ", a);
}
if (n == 2)
{
printf("%d", a);
}
for(i = 0;i < n - 2;i++)
{
if (i == 0)
{
printf("2 2 ");
}
int mpt = a + b;
printf("%d ", mpt);
a = b;
b = mpt;
}
}
int main(void)
{
int n;
scanf("%d", &n);
febon(n);
return 0;
}
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数
tips:sqrt对无法开方的数是向下取整的
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main(void)
{
int i = 101;
int count = 0;
for (i = 101; i <= 200; i++)
{
int j = 2;
int num = sqrt(i);
for (j = 2; j <= num; j++)
{
if (i % j == 0)
{
break;
}
if (j == num)
{
printf("%d ", i);
count++;
}
}
}
printf("\n");
printf("%d\n", count);
return 0;
}
还行,只改了一次就对了
【程序3】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main(void)
{
int i = 100;
for (i = 1; i < 1000; i++)
{
int sum = 0;
int a = i;
int b = a;
int count = 0;
while(a)
{
a /= 10;
count++;
}
while (b)
{
int c = b % 10;
int j = 0;
for (j = 0;j < count - 1;j++)
{
c *= (b % 10);
}
sum += c;
b /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
写的心累啊,不是这错就是那错,最离谱的是,我以为一个数的三次方就是把这个数和它自己乘三次,这太扯了,而且最后那个判断不能放在里面,否则会把25这样的数也算进去,众所周知,这种类型的数是没有两位数的,等等,我去看看答案
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
答案怎么说呢,有点拉,应该属于比较暴力的方法了,让我想的话应该也能写出来的吧
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。