文章目录
打印带格式补考通知
#include <stdio.h>
main( )
{ float x,t;
printf("Please input x,t\n");
scanf("%f %f", &x,&t);
if (x+t>=60)
{
printf("**************\n");
printf("%.1f,OK!\n",x+t);
printf("**************\n"); }
}
判断年份是否是闰年
#include <stdio.h>
int main( )
{ int year;
printf("Please input year\n");
scanf("%d", &year);
if (year%4==0&&year%100||year%400==0)
{ printf("**************\n");
printf("%d,OK!\n",year);
printf("**************\n"); }
else{ printf("**************\n");
printf("Oh,No!\n");
printf("**************\n"); }
}
给定三条边,计算三角形面积
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,s,area;
printf("请输入可以构成三角形的三条边\n");
scanf("%lf %lf %lf",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%.2f,b=%.2f,c=%.2f, s=%.2f\n",a,b,c,s);
printf("area=%.2f\n",area);
return 0;
}
寻找1000内的水仙花数
水仙花数是指一个三位数。其各位数字立方之和等于该数本身,如153=1+125+27
#include <stdio.h>
int main( )
{
int g,s,b, n=100;
for(;n<1000;n++)
{
g=n%10;
s=n/10%10;
b=n/100;
if(n==g*g*g+s*s*s+b*b*b)
printf("%d ",n);
}
return 0;
}
寻找1000内的完数
完数是指一个数恰好等于它的因子之和如6=1+2+3
#include <iostream>
#include<math.h>
using namespace std;
int main(){
int b,i,n=1;
while(n<=1000){
b=1;
for(i=2;i<n;i++){
if(n%i==0)
b=b+i;
}
if(b==n)
cout<<n<<endl;
n++;
}
}
三个数排序
#include<stdio.h>
int main()
{int a,b,c,t;
printf("请输入三个数");
scanf("%d %d %d",&a,&b,&c);
if(a<=b)
{ t=a;a=b;b=t;}
if (b<=c)
{t=b;b=c;c=t;}
if(a<=b)
{ t=a;a=b;b=t;}
printf("降序 %d,%d,%d\n", a,b,c);
return 0;
}
九九乘法表
#include <stdio.h>
int main()
{ int n,i,j;
for(i=1;i<=9;i++)
for(j=1;j<=i;j++)
{ printf("%d*%d=%-4d",i,j,i*j);
if(j==i)
printf("\n");
}
return 0;
}
斐波那契数列问题
#include <stdio.h>
int main( )
{
int n,t,i,a1=1,a2=1,s=0;
printf("请输入数列项数(大于2)\n");
scanf("%d",&n);
printf("%5d %5d",a1,a2);
for( i=3;i<=n;i++)
{
t=a1+a2;
printf("%5d",t);
s=s+t;
a1=a2;
a2=t;
}
printf("\ns=%d",s);
return 0;
}
求N的阶乘之和
#include <iostream>
#include<math.h>
using namespace std;
int main(){
int i,j,n,a=0,b;
cout<<"请输入n\n";
cin>>n;
for(i=1;i<=n;i++){
b=1;
for(j=1;j<=i;j++)
{b=b*j;
}
a=a+b;
}
cout<<"n阶阶乘之和"<<a;
}
swich应用(成绩分档)
#include <iostream>
#include<math.h>
using namespace std;
int main(){
int grade;
cin>>grade;
switch(grade/10){
case 9: cout<<"A";break;
case 8: cout<<"B";break;
case 7: cout<<"C";break;
case 6: cout<<"D";break;
case 5: cout<<"E";break;
default: cout<<"太差了";
}
}
冒泡排序(升序为例)
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
cout<<"先生成一组20个100内整数\n";
int a,i;
int an[100],b[100];
srand((unsigned)time(NULL));
for (i = 1; i <=20; i++){
an[i]= rand() % 90 + 10; //产生10-100的随机数
printf("an[%d]=%d\n",i,an[i]);
}
for (i = 1; i <=20; i++)
b[i]=an[i];
//以上生成随机数,可省略
//冒泡排序(升序):利用上述生成的数组或假定有一组有限范围内若干数存储于数组给定
cout<<"排序个数" ;
int j,t,n;
cin>>n;
for(i=1;i<n;i++){
for(j=1;j<=n-i;j++)
if(b[j]>b[j+1])// 降序为<
{t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
for(i=1;i<=n;i++){
printf("%d ",b[i]);
}
}
选择排序(升序为例)
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
cout<<"先生成一组20个100内整数\n";
int a,i;
int an[100],b[100];
srand((unsigned)time(NULL));
for (i = 1; i <=20; i++){
an[i]= rand() % 90 + 10; //产生10-100的随机数
printf("an[%d]=%d\n",i,an[i]);
}
for (i = 1; i <=20; i++)
b[i]=an[i];
//以上生成随机数,可省略
//选择排序(升序):利用上述生成的数组或假定有一组有限范围内若干数存储于数组给定
cout<<"排序个数" ;
int j,t,n,k;
cin>>n;
k=i;
for(i=1;i<n;i++){
for(j=i+1;j<=n;j++)
if(b[j]>b[k])
{t=b[k];
b[k]=b[j];
b[j]=t;
}
}
for(i=1;i<=n;i++){
printf("%d ",b[i]);
}
整数插入
#include<stdio.h>
int main(){
int i,n,num;
printf("请输入整数个数");
scanf("%d", &n);
int a[1000];
printf("请输入一组有序整数从小到大:");
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
printf("请输入要插入的数: ");
scanf("%d", &num);
for (i = n-1; i >= 0; i--) {
if (a[i] < num) {
a[i+1] = num;
break;
}
else {
a[i + 1] = a[i];
a[i] = num;
}
}
for (i = 0; i <= n; i++) {
printf("%d ", a[i]);
}
return 0;
}
删除字符串中单个(重复)字符
#include<bits/stdc++.h>
using namespace std;
int main(){
char arr[100]={'0'};//直接定义时初始化
int i,j,n=0;
char target;
gets(arr);
for(j=0;j<100;j++){
if (arr[j]!=0)
n++;
else break;//循环计算输入字符长度 或者用函数n=strlen(数组名);
}
//n = strlen(arr);
puts(arr);
cout<<"请输入你想要剔除的元素";
cin>>target;
for(i=0;i<n;i++){
if(arr[i]==target)
{ for(j=i+1;j<n;j++)
{arr[j-1]=arr[j];
}
i--;
n--;}
}//查找重复并剔除
for(i=0;i<n;i++)
cout<<arr[i]<<" ";
cout<<"剩余字符长度"<<n<<endl;
}
判断一个数是否为素数
#include <math.h>
#include<iostream>
using namespace std;
int main()
{
int i,j, n, tmp;
cin>>n;
tmp = sqrt(n);
cout<<"平方根:"<<tmp<<endl;
for(i = 2; i <= tmp; i++)
{
if(n % i == 0)
{cout<<"不是素数\n"<<"能被"<<i<<"整除"<<endl;break;
}
}
if(i>tmp) cout<<"是素数\n";
getchar();
}
求一元二次方程的根
#include <stdio.h>
#include "math.h"
main( )
{ float a, b, c, d, x1, x2, q;
printf("Please input a, b, c\n");
scanf("%f,%f,%f", &a, &b, &c);
d=b*b-4*a*c;
q=sqrt (d);
x1=(-b+q)/(2*a);
x2=(-b-q)/(2*a);
printf("d=%.2f,x1=%.2f, x2=%.2f \n ",d, x1, x2);
}
字符数组实行字符串比较
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int n,i;
char a[10],b[10];
cout<<"请输入俩字符数组:\n";
gets(a);
gets(b);
i=0;
while(a[i]==b[i] && a[i]!='\0')
{
i++;
}
n=a[i]-b[i];
if(n>0)
cout<<a<<">"<<b<<endl;
if(n<0)
cout<<a<<"<"<<b<<endl;
if(n==0)
cout<<a<<"="<<b<<endl;
}
统计字符数组中英文字符的个数
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char x,an[100];
int n=0,i;
cout<<"请输入一串字符串\n";
gets(an);
for(i=0;an[i]!='\0';i++){
if(('z'>=an[i] &&'a'<=an[i])||(an[i]>='A'&&an[i]<='Z'))
n++;
}
cout<<n;
return 0;
}
变式:分别统计每个小写英文字母的个数
#include<iostream>
#include<string.h>
using namespace std;
void tongji(char a[]);
int main(){
char a[100];
gets(a);
tongji(a);
}
void tongji(char a[]){
int n=0,i;
int zf[26]={0};
while(a[n]!='\0'){
zf[a[n]-'a']++;
n++;
}
for(i=0;i<26;i++){
if(zf[i]!=0)
cout<<char('a'+i)<<"的个数:"<<zf[i]<<endl;
}
cout<<"其余字母数为零";
}
三角形
#include<stdio.h>
int main(){
int i,j,n;
printf("请输入三角形行数\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
空心三角形
#include<stdio.h>
int main(){
int i,j,n;
printf("请输入三角形行数\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
if(i!=n)
{if(j==1||j==2*i-1)
printf("*");
else
printf(" ");
}
else
printf("*");
printf("\n");
}}
菱形
#include<stdio.h>
int main(){
int i,j,n;
printf("请输入菱形边长\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
for(i=n-1;i>=1;i--)
{for(j=1;j<=n-i;j++)
printf(" ") ;
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
return 0;}
建系法
#include<iostream>
#include<math.h>
using namespace std;
int n,i,j;
void lingxing(int n){
for(i=1-n;i<n;i++){
for(j=1;j<=abs(i);j++)
cout<<" ";
for(j=1;j<=2*n-2*abs(i)-1;j++){
cout<<"*";
}
cout<<endl;
}
}
int main(){
cin>>n;
lingxing(n);
}
空心菱形
#include <iostream>
#include<math.h>
using namespace std;
int main(){
int i,j,n;
cin>>n;
for(i=1-n;i<n;i++){
for(j=1-n;j<n;j++){
if(abs(i)+abs(j)==n-1)
cout<<"*";
else
cout<<" ";
}
cout<<endl;
}
}
计算类似1+11+111+……+11111(n)
#include <iostream>
#include<math.h>
using namespace std;
int main(){
int A,N,n,a=0,i,sum;
cout<<"请输入初始值:\n";
cin>>A;
cout<<"请输入项数:\n";
cin>>N;
sum=0;
for(i=0;i<N;i++){
a=a*10+A;
sum=sum+a;
}
cout<<sum;
}
判断刚才你输入的大小写英文字母个数
#include<stdio.h>
int main(){
char x;
int n=0;
printf("请输入一串字符");
while((x=getchar())!='\n'){
if(('z'>=x &&'a'<=x)||(x>='A'&&x<='Z'))
n++;
}
printf("%d",n);
return 0; }
字符串拼接(删除内部空格)
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char zifu1[20]={'0'},zifu2[20];
int n,k,i,j;
gets(zifu1);
gets(zifu2);
n=strlen(zifu1);
k=strlen(zifu2);
cout<<"字符组1长度"<<n<<" "<<endl<<"字符组2长度"<<k<<endl;
for(i=n,j=0;i<n+k+1,j<k;i++,j++)
zifu1[i]=zifu2[j];//拼接
cout<<"新的字符串";
puts(zifu1);
for(i=0;zifu1[i]!='\0';i++){
if(zifu1[i]==' ')
{ for(j=i+1;zifu1[j]!='\0';j++)
{zifu1[j-1]=zifu1[j];
}
i--;
n--;}
}//删除空格
for(i=0;i<n+k;i++)
cout<<zifu1[i];
return 0;
}