1.输出前驱后继字符
#include "stdio.h"
int main(){
char x;
scanf("%c",&x);
int a,b,c;
b=x;
a=x-1;
c=x+1;
printf("%c%c%c",a,b,c);
return 0;
}
要点:利用C语言字符也是用数字表示特点,来一个输出的类型转换即可
2.爱因斯坦阶梯
#include "stdio.h"
int main(){
int n;
for(n=1;;n++) {
if (n % 2 == 1 && n % 3 == 2 && n % 5 == 4 && n % 7 == 0)
break;
}
printf("%d",n);
return 0;
}
一个for循环搞定(一个for语句没写判断条件的循环)
3.大兔子斐波那契(注意第0项的时候就已经有一对儿大兔子了,相当于从正常斐波那契的第二项开始取)
#include "stdio.h"
int f(int n){
if(n==0)return 1;
else if(n==1)return 1;
else return f(n-1)+f(n-2);
}
int main(){
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
4.计算 e^x
题目描述:请计算上述序列的前101项的和(截止到n取100)
输入:一个浮点数,对应x值。
输出:一个浮点数,即e^x的近似值,小数点后保留到第2位。
注:本题不允许使用math.h头文件和相关的pow和exp等函数。
样例1:
输入:0
输出:1.00
样例2:
输入:4.3
输出:73.70
一个求e的小东西(容易溢出。。。)
#include
int main() {
float x;
double sum=1.0,num=1.00;
int i;
scanf("%f",&x);
for (i = 1; i < 100-1; i++) {
num = num * x / i;
sum = sum + num;
}
printf("%.2lf",sum);
return 0;
}
5.打印三位阿姆斯特朗数
#include "stdio.h"
int main(){
int n;
for(n=100;n<1000;n++){
int x=n/100;
int y=n/10-x*10;
int z=n-x*100-y*10;
if(x*x*x+y*y*y+z*z*z==n)
printf("%d ",n);
}
return 0;
}
注意C语言顺序执行,要先初始化变量n才可以定义与n有关的变量x,y,z
6.勒让德多项式
题目描述:
编一个程序,输入x、n,计算勒让德(Legendre)多项式的第 n 项(此题假定n取0时,为勒让德多项式第0项)。
输入:一个浮点数和一个整数,分别对应x和n(0<=n<=20)。
输出:一个浮点数,即勒让德多项式第n项的值,注意小数点后保留到第2位。
样例1:
输入:3.4 2
输出:16.84
样例2:
输入:3.4 10
输出:30143685.82
样例3:
输入:-3.4 2
输出:16.84
#include "stdio.h"
double f(double x,int n){
if(n==0)
return 1.00;
else if(n==1)
return x;
else if(n>1)
return (2*n-1)*x*f(x,n-1)/n-(n-1)*f(x,n-2)/n;
}
int main(){
float x;
int n;
scanf("%f%d",&x,&n);
printf("%.2lf",f(x,n));
return 0;
}
注意:乘除顺序混杂全部存在时养成好习惯整理成乘在前除在后的形式并且注意要给加减运算加括号避免混淆
7.符合条件自然数
题目描述:编写程序,打印所有小于正整数data且可被11整除的自然数。
输入:从键盘输入一个正整数data
输出:输出所有小于data且可被11整除的自然数,数与数之间以一个空格做间隔,最后一个数后无多余字符。
样例1:
输入:50
输出:0 11 22 33 44
样例2:
输入:80
输出:0 11 22 33 44 55 66 77
#include "stdio.h"
int main(){
int data,n=0;
scanf("%d",&data);
while(n
一些printf的小技巧(输出无多余字符)
8.括号统计
题目描述:编程序,判断给定以字符‘@’结束的字符序列中‘(’与‘)’、‘[’与‘]’、‘{’与‘}’的个数是否相等。
输入:输入一串以字符‘@’结束的字符序列,其间可能含有若干空白字符。
输出:个数不相等的括号(按花括号、方括号、圆括号的顺序);如果三种括号的个数都相等,输出NULL。
样例1:
输入:{a+b*c+(d/e-f]}}@
输出:{}[]()
样例2:
输入:{a + b*c+(d/e-f]}@
输出:[]()
#include
int main(void){
char c;
int a,b,g,d,e,f;
a=0;b=0;g=0;d=0;e=0;f=0;
scanf("%c",&c);
while(c!='@'){
switch(c){
case'{':a++;break;
case'}':b++;break;
case'[':g++;break;
case']':d++;break;
case'(':e++;break;
case')':f++;break;
default:break;
}
scanf("%c",&c);
}
if(a!=b)printf("{}");
if(g!=d)printf("[]");
if(e!=f)printf("()");
if(a==b&&g==d&&e==f)printf("NULL");
return 0;
}
思路:一个一个输入然后判断
9.数字求和
题目描述:给定一个整数a,以及另外的5个整数,问题是:这5个整数中,可以被a整除的整数和是多少?
输入:输入一行只包括6个小于100的整数,其中第一个整数是a,输入保证a不为零。
输出:输出一行,给出一个整数,是5个数中可以被a整除的所有整数的和。
样例1:
输入:10 10 -20 30 40 11
输出:60
样例2:
输入:11 10 20 30 40 12
输出:0
#include
int main() {
int a[6];
int n,sum = 0;
a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = 0;
scanf("%d %d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5]);
for (n = 1; n <= 5; n++) {
if (a[n] % a[0] == 0) sum += a[n];
}
printf("%d", sum);
return 0;
}
超简单不要想复杂
10.多边形周长
题目描述:编写程序,求由键盘按顺时针方向输入n(0
输入:第一行输入一个整数,作为n值;以后每行两个浮点数(double),为多边形各顶点的坐标。
输出:多边形的周长,精确到小数点后2位。
样例1:
输入: 4 0 0 0 1 1 1 1 0
输出:4.00
样例2:
输入: 1 2 3
输出: 0.00
样例3:
输入: 2 2 3 2 4
输出: 1.00
#include
#include
#include
double d(double x1, double y1, double x2, double y2);
int main() {
int n,j;
double sum=0;
double x[10], y[10];
for (j = 0; j < 10; j++) {
x[j] = y[j] = 0;
}
scanf("%d", &n);
for (j=0; j 2)sum += d(x[0], y[0], x[j], y[j]);
printf("%.2lf", sum);
return 0;
}
double d(double x1, double y1, double x2, double y2 ) {
double result;
result = sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)* (y2 - y1));
return result;
}
注意:最后一个循环是最后一组点到第一组点(数学思想)
用一个函数来求边长相当好用
开方用sqrt记得用math.h顺便把括号括好(要开方的范围)
11.根据是否是素数输出Y/N
#include "stdio.h"
void f(int n){
int i;
for(i=2;i
一个i实现计数+判断
巧妙的i 12.自守数 题目描述:若一个正整数a满足条件 a^2 的尾数等于a,则称a为自守数,例如: 25^2=625 、76^2=5776 、9376^2=87909376 都是自守数。 编写程序,求小于等于n的所有自守数。 输入:从键盘随机输入一个正整数n(<10000000)。 输出:输出小于等于n的所有自守数,每个数之间以一个西文空格间隔。 写函数yyds 尾数判断:int型变量/10即可 13.#include "stdio.h"
void f(int n){
int i;
int b;
for(i=1;i