题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x 上,先将x与y进行比较,如果x>y则将x 与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:
main()
{int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{t=x;x=y;y=t;}/*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("small to big:%d%d%d\n",x,y,z);} 3、输入三个数字,输出他们的最大值。(if)#include<stdio.h>
void main()
{int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
getch();/*暂停看运行结果*/}
int max(int x,int y,int z)
{int u;
if(x>=y&&x>=z)
u=x;
else if(y>=x&&y>=z)
u=y;
else
u=z;
return(u);
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
1.程序分析:
2.程序源代码:
main()
{int len;
char*str[20];
printf("please input a string:\n");
scanf("%s",str);len=length(str);
printf("the string has%d characters.",len);} length(p)
char*p;
{int n;
n=0;
while(*p!='\0')
{n++;
p++;}
return n;}
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i 控制行,j控制列。
2.程序源代码:
#include"stdio.h"
main()
{int i,j,result;
printf("\n");
for(i=1;i<10;i++)
{for(j=1;j<10;j++)
{result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}
printf("\n");/*每一行后换行*/}}
#include<stdio.h>
void main()
{int i=1;
for(i;i<=9;i++)
{int j=1;
for(j;j<=i;j++)
{printf("%d*%d=%d",i,j,i*j);}
printf("\n");}}
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,
2.程序源代码:
main()
{long f1,f2;
int i;f1=f2=1;
for(i=1;i<=20;i++)
{printf("%12ld%12ld",f1,f2);
if(i%2==0)printf("\n");/*控制输出,每行四个*/
f1=f1+f2;/*前两个月加起来赋值给第三个月*/
f2=f1+f2;/*前两个月加起来赋值给第三个月*/}}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{int n=0;
printf("请输入一个正整数\n");
scanf("%d",&n);
if(n<0){
printf("输入为负整数,取绝对值求解\n");
n=-n;}//end if
if(n==0||n==1){
printf("0和1不属于质数问题讨论范围。\n");
return0;}//end if
if(n==2||n==3){
printf("%d是质数(prime number素数)。\n",n);
return0;}//end if
for(int i=2;i<n;i++){
if(n%i)continue;
printf("%d不是质数(prime number素数)。\n",n);
return0;}//end if
printf("%d是质数(prime number素数)。\n",n);
return0;}
题目:一个偶数总能表示为两个素数之和。
1.程序分析:
2.程序源代码:
#include"stdio.h"
#include"math.h"
main()
{int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{for(c=2;c<=sqrt(b);c++)
if(b%c==0)break;
if(c>sqrt(b))d=a-b;
else
break;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);}}
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
2.程序源代码:
#include"math.h"
main()
{int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;}
if(leap){printf("%-4d",m);h++;
if(h%10==0)
printf("\n");}
leap=1;}
printf("\nThe total is%d",h);}
题目:求100之内的素数
1.程序分析:
2.程序源代码:
#include<stdio.h>
#include"math.h"
#define N101
main()
{int i,j,line,a[N];
for(i=2;i<N;i++)a[i]=i;
for(i=2;i<sqrt(N);i++)
for(j=i+1;j<N;j++)
{if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
printf("\n");
for(i=2,line=0;i<N;i++)
{if(a[i]!=0)
{printf("%5d",a[i]);
line++;}
if(line==10)
{printf("\n");
line=0;}}}
(求闰年)
#include<stdio.h>
void main()
{int year,leap;
scanf("%d",&year);
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
leap=1;
else
leap=0;}
else
leap=1;}
else
leap=0;
if(leap)
printf("%d is",year);
else
printf("%d is not",year);
printf("a leap year.\n")}
输出2000——2500年每一年是否闰年
#include<stdio.h>
void main()
{int year;
year=2000;
go:if(((year%4==0)&&(year%100!= 0))||(year%400==0))
printf("%d is run nian",year);
if(year<=2500)
year=year++;
if(year>2500)
goto end;
goto go;
end:getch();}
main()
{int a,i,sum,b,n;
b=0;sum=1;i=1;
scanf("%d",&n);
while(i<=n)
{a=sum;sum=sum+b;b=a;i++;
printf("%d\n",sum);}
getch();}
main()
{char a[]="ba";
int i=0;
while(a[i]|='\0')
{a[i]='z'-(a[i]-'a');
printf("%c\n",a[i]);i++;}
getch();}
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
2.程序源代码:
main()
{int score;
char grade;
printf("please input a score\n");
scanf("%d",&score);
grade=score>=90?'A':(score>=60?'B':'C');
printf("%d belongs to%c",score,grade);}题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为'\n'.
2.程序源代码:
#include"stdio.h"
main()
{char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c=='')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);}
题目:求s=a+aa+aaa+a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
2.程序源代码:
main()
{int a,n,count=1;
long int sn=0,tn=0;
printf("please input a and n\n");
scanf("%d,%d",&a,&n);
printf("a=%d,n=%d\n",a,n);
while(count<=n)
{tn=tn+a;
sn=sn+tn;
a=a*10;
++count;}
printf("a+aa+...=%ld\n",sn);}
解二:#include(stdio.h)
Void main()
{Int a,n,i;
Long f(int a,int b);
Long sum=0;
Printf(“input two numbers please:\n”); Scanf(“%d%d”,&a,&n);
Sum+=f(a,n);
Printf(“sun=%ld”,sum);}
Long f(int a,int n)
{Int j,k=0,t;
For(j=1;j<=n;j++)
t=10k+a;
k=b;
return(k);}
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
1.程序分析:见下面注释
2.程序源代码:
main()
{float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2;/*第n次反跳高度*/}
printf("the total of road is%f\n",sn);
printf("the tenth is%f meter\n",hn);}
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
2.程序源代码:
main()
{float n,s=0,t=1;
for(n=1;n<=20;n++)
{t*=n;s+=t;}
printf("1+2!+3!...+20!=%e\n",s);}
例题2,求1!+2!+3!+…………..+20!(用子函数实现求阶乘)。
解:#include<stdio.h>
Vioid main()
{Float sum(int i);
int s=0;
Int I;
For(i=1;i<=20;i++)
S+=sum(i);
Printf(“%f”,s);}
Float sum(int i)
{Float f=1;
Int j;
For(j=1;j<=i;i++)
f*=j;
return(f);}
5、输入十个数字,逆序输出。(数组实现)#include<stdio.h>
main()
{int a[10],i=0;
for(i=0;i<=9;i++)
scanf("%f",&a);
printf("\n");
for(i=9;i>=0;i--)
printf("%f",a);}
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#include"stdio.h"
main()
{int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");}
void palin(n)
int n;
{char next;
if(n<=1)
{next=getchar();
printf("\n\0:");
putchar(next);}
else
{next=getchar();
palin(n-1);
putchar(next);}}
4.用起泡法对十个数据排序(数组实现)#include<stdio.h>
main()
{int i,j,t;
static int a[10]={5,7,4,2,3,6,1,0,9,8};
for(j=0;j<9;j++)
{for(i=0;i<9-j;i++)
{if(a>a)
{t=a;a=a;a=t;}}}
for(i=0;i<10;i++)
printf("%2d",a);}
方法一#include<stdio.h> main()
{int a[10],i,j,t;c语言用递归函数求n的阶乘
printf("Please input10numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;}
printf("The sorted numbers:");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");}
方法二#include<stdio.h>main()
{int a[10],i,j,k,t,n=10;
printf("Please input10numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(a[k]<a[j])
k=j;
if(k!=i)
{t=a[k];a[k]=a[i];a[i]=t;}} printf("The sorted numbers:");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");}
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
2.程序源代码:
#define N10
main()
{int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i<N;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);}
printf("\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
/*sort ten num*/
for(i=0;i<N-1;i++)
{min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j])min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;}
/*output data*/
printf("After sorted\n");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论