资源描述
求1 + 1/2! +....+ 1/n!
#include "stdio.h"
int main( )
{
int ri,repeat;
int i,n,j;
float s,t;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
s=0;
for(i=1;i<=n;i++){
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+1.0/t;
}
printf("%0.4f\n",s);
}
}
#include "stdio.h"
int main( )
{
int ri,repeat;
int i,n;
double s;
double fact(int n);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
s=0;
for(i=1;i<=n;i++)
s=s+1/fact(i);
printf("%0.4f\n",s);
}
return 0;
}
double fact(int n)
{
int i;
double result;
result=1;
for(i=1;i<=n;i++)
result=result*i;
return result;
}
统计一个整数中数字的个数
#include "stdio.h"
int main( )
{
int ri,repeat;
int count;
long in;
int countdigit(long number, int digit);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%ld",&in);
count=countdigit(in,2);
printf("count=%d\n",count);
}
}
int countdigit(long number, int digit)
{
int i,count=0,t;
if(number<0)
number=-number;
for(i=1; ;i++){
t=number%10;
if(t==digit)count++;
number=number/10;
if(number==0)
break;
}
return count;
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int count, digit, i, j, k, m, n, sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
count=0;
sum=0;
digit=0;
for(i=m;i>=m&&i<=n;i++)
{
for(j=2;j<=n/2;j++)
if(i%j==0)
break;
if(j>i/2&&i!=1)
{count++;
sum=sum+i;}
}
printf("count=%d,sum=%d\n", count, sum);
}
}
}
统计素数并求和
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int count, i, m, n, sum;
int prime(int m);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
sum=0;count=0;
for(i=m;i<=n;i++){
if(prime(i)==1){
count++;
sum=sum+i;
}
}
printf("count=%d, sum=%d\n", count, sum);
}
}
int prime(int m)
{
int i;
if(m==1)return 0;
if(m>1){
for(i=2;i<=m/2;i++){
if(m%i==0){
return 0;
}
}
if(i>m/2) return 1;
}
}
求完数
#include "stdio.h"
int main( )
{
int ri,repeat;
int i, m, n;
long factorsum(int number);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
for(i=m;i<=n;i++){
if(i==factorsum(i))
printf("%d ", i);
}
printf("\n");
}
}
long factorsum(int number)
{
int i,sum=0;
if(number==1) return 1;
for(i=1;i<number;i++){
if(number%i==0)
sum=sum+i;
}
return sum;
}
Fibonacci序列的前十项
X1=1;
X2=1;
Printf(“%6d%6d”,x1,x2);
For(i=1;i<=8;i++){
X=x1+x2;
Printf(“%6d”,x);
X1=x2;
X2=x;
输出 Fibonacci 序列
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int i, m, n;
long f;
long fib(int n);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
for(i=1; ;i++){
f=fib(i);
if(f>=m&&f<=n) printf("%ld ", f);
if(f>n) break;
}
printf("\n");
}
return 0;
}
long fib(int n)
{
int i,a=1,b=1,t;
if(n==1) return 1;
if(n==2) return 1;
for(i=3;i<=n;i++){
t=a+b;
a=b;
b=t;
}
return t;
}
求各位数字的立方和等于它自身的数
#include "stdio.h"
int main( )
{
int ri,repeat;
int i, m, n;
int is(int number);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
for(i=m;i<=n;i++){
if(i==is(i))
printf("%d ", i);
}
printf("\n");
}
return 0;
}
int is(int number)
{
int t,sum=0;
do{
t=number%10;
sum=sum+t*t*t;
number=number/10;
}while(number!=0);
return sum;
}
将一个整数逆序输出
#include <stdio.h>
int main( )
{
int ri, repeat;
long in, res,k;
long reverse(long number);
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%ld", &in);
if(in<0){
in=-in;
k=1;
}
else k=0;
res=reverse(in);
if(k==1)
res=-res;
printf("%ld\n", res);
}
}
long reverse(long number)
{
int a,b;
b=0;
while(number!=0){
a=number%10;
b=b*10+a;
number=number/10;
}
return b;
}
循环移动(调试示例error08_1)
#include <stdio.h>
void mov(int *x, int n, int m);
int main(void)
{
int i, m, n,*p;
int a[80];
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
mov(a,n,m);
printf("After move: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
void mov(int *x,int n,int m)
{
int i,j,k;
for(i=0;i<m;i++){
k=x[n-1];
for(j=n-1;j>0;j--)
x[j]=x[j-1];
x[0]=k;
}
}
在数组中查找指定元素
#include <stdio.h>
int main(void)
{
int i, index, n, res, x;
int repeat, ri;
int a[10];
int search(int list[], int n, int x);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
res=search(a,n,x);
if(res != -1)
printf("index = %d\n", res);
else
printf("Not found\n");
}
}
int search(int list[],int n,int x)
{
int i,res;
res=-1;
for(i=0;i<n;i++)
if(list[i]==x)
res=i;
return res;
}
使用函数的选择法排序
#include <stdio.h>
void sort(int a[],int n);
int main(void)
{
int i, n;
int repeat, ri;
int a[10];
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a,n);
printf("After sorted: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
}
void sort(int *p,int n)
{
int k,i,index,t;
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++)
if(p[i]<p[index])
index=i;
t=p[index];
p[index]=p[k];
p[k]=t;
}
}
使用函数删除字符串中的字符
#include<stdio.h>
void main()
{
char c;
char str[80];
int repeat, ri;
void delchar(char *str, char c);
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
gets(str);
scanf("%c", &c);
getchar();
/*---------*/
delchar(str,c);
printf("result: ");
puts(str);
}
}
/*---------*/
void delchar(char *str,char c)
{
int i,j;
for(i=j=0;str[i]!='\0';i++){
if(str[i]!=c)
str[j++]=str[i];
}
str[j]='\0';
}
使用函数实现字符串复制
#include<stdio.h>
#include<string.h>
void main()
{
char s[80], t[80];
int m;
int repeat, ri;
void strmcpy(char *s,char *t, int m);
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
gets(t);
scanf("%d", &m);
getchar();
if(strlen(t) < m)
printf("error input");
else{
/*---------*/
strmcpy(s,t,m);
puts(s);
}
}
}
void strmcpy(char *s,char *t,int m)
{
int i,j;
j=0;
for(i=m-1;t[i]!='\0';i++)
s[j++]=t[i];
s[j]='\0';
}
/*---------*/
判断回文字符串
#include <stdio.h>
void main()
{
char s[80];
int repeat, ri;
int mirror(char *p);
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
gets(s);
if(mirror(s) != 0)
printf("YES\n");
else
printf("NO\n");
}
}
/*---------*/
int mirror(char *p)
{
char *q;
q=p;
while(*q!='\0')
q++;
p--;
while(p<q){
if(*p!=*q)
return 0;
p++;
q--;
}
return 1;
}
分类统计字符个数
#include<stdio.h>
void main()
{
char s[80];
char *p;
int blank, digit, lower, other, upper;
gets(s);
upper = lower = blank = digit = other = 0;
/*---------*/
for(p=s;*p!='\0';p++)
if(*p>='A'&&*p<='Z')
upper++;
else if(*p>='a'&&*p<='z')
lower++;
else if(*p>='0'&&*p<='9')
digit++;
else if(*p==' ')
blank++;
else
other++;
printf("upper: %d lower: %d blank: %d digit: %d other: %d\n", upper, lower, blank, digit, other);
}
显示水果的价格
#include <stdio.h>
int main(void)
{
int ri, repeat;
int choice;
float price;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
printf("[1] apples\n");
printf("[2] pears\n");
printf("[3] oranges\n");
printf("[4] grapes\n");
scanf("%d", &choice);
if(choice==0)
printf("price=0");
switch(choice){
case 1:price=3.00;break;
case 2:price=2.50;break;
case 3:price=4.10;break;
case 4:price=10.20;break;
}
printf("price=%.2f\n", price);
}
return 0;
}
求n!
#include <stdio.h>
int main(void)
{
int ri, repeat;
int i, n;
double fact;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%d", &n);
fact=1;
for(i=1;i<=n;i++)
fact=fact*i;
printf("%.0f\n", fact);
}
return 0;
}
求最大值
#include <stdio.h>
int main( )
{
int ri, repeat;
int i , max, n, x;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%d", &n);
max=n;
for(i=1;i<=n;i++){
scanf("%d",&x);
if(max<x)
max=x;
}
printf("%d\n", max);
}
return 0;
}
求整数的位数以及各位数之和
#include <stdio.h>
int main( )
{
int ri, repeat;
int number, sum;
long in;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
number=0;
sum=0;
scanf("%ld", &in);
if(in<0)
in=-in;
do{
sum=sum+in%10;
in=in/10;
number++;
}while(in!=0);
printf("number=%d, sum=%d\n", number, sum);
}
}
求a+aa+aaa+aa…a
#include <stdio.h>
void main()
{
int ri, repeat;
int i, n;
long int a, sn, tn;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%ld%d", &a, &n);
sn=a;tn=a;
for(i=1;i<=n-1;i++){
tn=10*tn+a;
sn=sn+tn;
}
printf("%ld\n",sn);
}
}
求平均值
#include <stdio.h>
int main(void)
{
int i, n, sum;
int repeat, ri;
int a[10];
double aver;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
sum=0;
for(i = 0; i < n; i++){
scanf("%d", &a[i]);
sum=sum+a[i];
}
aver=sum/(n*1.0);
printf("average = %.2f\n", aver);
}
}
互换最小值和最大值
#include <stdio.h>
int main(void)
{
int i, index, n, t;
int repeat, ri;
int a[10];
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
index=0;
for(i=0;i<n;i++)
if(a[i]<a[index])
index=i;
t=a[0];
a[0]=a[index];
a[index]=t;
for(i=0;i<n;i++)
if(a[i]>a[index])
index=i;
t=a[n-1];
a[n-1]=a[index];
a[index]=t;
printf("After swap: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
}
将数组中的数逆序存储
#include <stdio.h>
int main(void)
{
int i, n, temp;
int repeat, ri;
int a[10];
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i=0;i<n/2;i++){
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
}
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
}
选择法排序
#include <stdio.h>
int main(void)
{
int i, index, k, n, temp;
int repeat, ri;
int a[10];
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++)
if(a[i]>a[index])index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("After sorted: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
}
调试示例error09_1.cpp
#include <stdio.h>
int main (void)
{
int i, n;
struct emp{
char name[10];
double jbg;
double fdg;
double zc;
} s[10];
scanf("%d", &n);
for(i=0;i<n;i++) scanf("%s%lf%lf%lf",s[i].name,&s[i].jbg,&s[i].fdg,&s[i].zc);
for (i = 0; i < n; i++)
printf ("%5s 实发工资:%7.2f\n", s[i].name, s[i].jbg + s[i].fdg - s[i].zc);
return 0;
}
计算平均成绩
#include <stdio.h>
int main(void)
{
int i, n;
double average, sum=0;
struct student{
int num;
char name[10];
int score;
}s[10];
scanf("%d", &n);
for(i=1;i<=n;i++){
scanf("%d%s%d",&s[i].num,s[i].name,&s[i].score);
sum=sum+s[i].score;
}
average=sum/n;
printf("average: %.2f\n", average);
}
查找书籍
#include <stdio.h>
int main (void)
{
int i, max_index, min_index, n;
double x;
struct book{
char name[50];
double price;
}book[10];
scanf("%d", &n);
getchar();
for(i = 0; i < n; i++){
gets(book[i].name);
scanf("%lf", &x);
getchar();
book[i].price = x;
}
min_index=0;
for(i=0;i<n;i++){
if(book[i].price<book[min_index].price){
min_index=i;
}
}
max_index=0;
for(i=0;i<n;i++){
if(book[i].price>book[max_index].price){
max_index=i;
}
}
printf("highest price: %.1f, %s\n", book[max_index].price, book[max_index].name);
printf("lowest price: %.1f, %s\n", book[min_index].price, book[min_index].name);
return 0;
}
找出总分最高的学生(改错题error09_2)
#include <stdio.h>
int main (void)
{
int i, j, k, max_index, n;
struct student{
int number;
char name[20];
int score[3];
int sum;
}stu[10];
scanf("%d", &n);
/*---------*/
for(i=0;i<n;i++){
scanf("%d",&stu[i].number);
scanf("%s",stu[i].name);
scanf("%d",&stu[i].score[0]);
scanf("%d",&stu[i].score[1]);
scanf("%d",&stu[i].score[2]);
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
}
max_index=0;
for(i=0;i<n;i++){
if(stu[i].sum>stu[max_index].sum)max_index=i;
}
printf("总分最高的学生是: %s,%d分", stu[max_index].name, stu[max_index].sum);
}
计算两个复数之积
#include <stdio.h>
int main(void)
{
struct complex{
int real;
int imag;
}product, x, y;
scanf("%d%d%d%d", &x.real, &x.imag, &y.real, &y.imag);
product.real=x.real*y.real-x.imag*y.imag;
product.imag=x.real*y.imag+y.real*x.imag;
printf("(%d+%di) * (%d+%di) = %d + %di\n", x.real, x.imag, y.real, y.imag, product.real, product.imag);
return 0;
}
#include<stdio.h>
Int main(void)
{
Printf(“Hello World!\n
展开阅读全文