C语言100题
考研初试C语言复习 2021.9.22
前言
。
提示:以下是本篇文章正文内容,下面案例可供参考
第一题、
1.题目描述
斐波那契数列
2.代码
第一种:
#include<stdio.h>
//非递归写法
int main()
{
int f1 = 1, f2 = 1, i;
for (i = 1; i <= 20; i++)
{
printf("%12d%12d", f1, f2);
if (i % 2 == 0) printf("\n");
f1 = f1 + f2;//改变项的值
f2 = f1 + f2;
}
return 0;
}
第二种:
#include <stdio.h>
//递归实现
int main() {
int m=0;
for (int i = 1; i <= 40; i++) {
m = fibon(i);
printf("%d ", m);
}
return 0;
}
int fibon(int num) {
if (num == 1 || num == 2) return 1;
else return fibon(num - 1) + fibon(num - 2);
}
题目思考:还可以用队列等其他方法
第二题、
1.题目描述
101到200的质数
2.代码
#include <stdio.h>
int main()
{
int i, j;
for (i = 101; i <= 200; i++)
{
for (j = 2; j <= i; j++)
{
// 如果j能被i整除在跳出循环
if (i % j == 0)
break;
}
// 判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整除的数
if (j >= i)
{
printf("%d ", i);
}
}
return 0;
}
题目思考:利用break语句进行判断,减少复杂度,同是有可以用递归和分治
第三题、
1.题目描述
水仙花数
2.代码
#include <stdio.h>
int main() {
int a, b, c;
for (int i = 100; i < 1000; i++) {
a = i /100%10;
b = i /10%10;
c = i % 10;
if (i == (a * a * a + b * b * b + c * c * c)) printf("%d ", i);
}
return 0;
}
题目思考:入门题 考察获取位数的能力
第四题、
1.题目描述
将一个正整数分解质因数。例如:输入90,打印出90=233*5
2.代码
#include <stdio.h>
int main() {
int n, i;
printf("输入数据:");
scanf_s("%d", &n);
int k = 2;
for (; k <= n;) {
if (n % k == 0) {
printf("%d", k);
n /= k;
if (n != 1) printf("*");
}
else k++;
}
}
题目思考:入门题
第五题、
1.题目描述
成绩系统
2.代码
#include<stdio.h>
int main()
{
int score;
char grade;
printf("请输入分数: ");
scanf_s("%d", &score);
grade = (score >= 90) ? 'A' : ((score >= 60) ? 'B' : 'C');
printf("%c\n", grade);
return 0;
}
题目思考:连结构体都不用 实属白给