C语言编程练习
1.编程序实现求1-1000之间的所有奇数的和并输出。
解法1:
int sum=0;
for(int i=1;i<=1000;i++){
sum+=i%2?i:0;
}
printf("%d\n",sum/10);
6
6
1
int sum=0;2
for(int i=1;i<=1000;i++){3
sum+=i%2?i:0;4
}5
printf("%d\n",sum/10);6
解法2:
int sum=0;
for(int i=1;i<1000;i+=2){
sum+=i;
}
printf("%d\n",sum/10);5
5
1
int sum=0;2
for(int i=1;i<1000;i+=2){3
sum+=i;4
}5
printf("%d\n",sum/10);2。输入2个整数,求两数的平方和并输出。
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a*a+b*b);3
3
1
int a,b;2
scanf("%d%d",&a,&b);3
printf("%d\n",a*a+b*b);3.已知函数y=f(x),编程实现输入一个x值,输出y值。
y= 0 (x=0)
2x-1 (x>0)
double x,y;
scanf("%lf",&x);
if(x<0){
y=2*x+1;
}else if(x>0){
y=2*x-1;
}else{
y=0;
}
printf("%f\n",y);//101
double x,y;2
scanf("%lf",&x);3
if(x<0){4
y=2*x+1;5
}else if(x>0){6
y=2*x-1;7
}else{8
y=0;9
}10
printf("%f\n",y);//10printf输出float和double都可以用%f,double还可以用%lf。
scanf输入float用%f,double输入用%lf,不能混用2
2
1
printf输出float和double都可以用%f,double还可以用%lf。2
scanf输入float用%f,double输入用%lf,不能混用11.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)
#include <stdio.h>
int main(){
int x,y,max(int a,int b);
scanf("%d%d",&x,&y);
printf("最大值=%d\n",max(x,y));
}
int max(int a,int b){
return a>b?a:b;
}1
2
int main(){3
int x,y,max(int a,int b);4
scanf("%d%d",&x,&y);5
printf("最大值=%d\n",max(x,y));6
}7
int max(int a,int b){8
return a>b?a:b;9
}6. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。
int a[10],x=0,y=0,z=0;
for(int i=0;i<10;i++){
scanf("%d",&a[i]);
if(a[i]>0){
x++;
}else if(a[i]<0){
y++;
}else{
z++;
}
}
printf("正数个数=%d;\n负数个数=%d;\n零的个数=%d;\n",x,y,z);
return 0;1
int a[10],x=0,y=0,z=0;2
for(int i=0;i<10;i++){3
scanf("%d",&a[i]);4
if(a[i]>0){5
x++;6
}else if(a[i]<0){7
y++;8
}else{9
z++;10
}11
}12
printf("正数个数=%d;\n负数个数=%d;\n零的个数=%d;\n",x,y,z);13
return 0;#include <stdio.h>
void main( ) {
int a, i,p=0,n=0,z=0;
printf("please input number");
for(i=0;i<10;i++){
scanf("%d,",&a);
if (a>0){
p++;
}else if (a<0){
n++;
} else{
z++;
}
}
printf("正数:%5d, 负数:%5d,零:%5d\n",p,n,z);
}1
2
void main( ) {3
int a, i,p=0,n=0,z=0;4
printf("please input number"); 5
for(i=0;i<10;i++){6
scanf("%d,",&a);7
if (a>0){8
p++;9
}else if (a<0){10
n++;11
} else{12
z++;13
}14
}15
printf("正数:%5d, 负数:%5d,零:%5d\n",p,n,z);16
}10.有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。
解法1:
double x[20],y[20];
x[0]=2.0;
x[1]=3.0;
y[0]=1.0;
y[1]=2.0;
double sum=x[0]/y[0]+x[1]/y[1];
for(int i=2;i<20;i++){
x[i]=x[i-1]+x[i-2];
y[i]=y[i-1]+y[i-2];
sum+=x[i]/y[i];
}
printf("%f\n",sum);1
double x[20],y[20];2
x[0]=2.0;3
x[1]=3.0;4
y[0]=1.0;5
y[1]=2.0;6
double sum=x[0]/y[0]+x[1]/y[1];7
for(int i=2;i<20;i++){8
x[i]=x[i-1]+x[i-2];9
y[i]=y[i-1]+y[i-2];10
sum+=x[i]/y[i];11
}12
printf("%f\n",sum);解法二:
//10.有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。
#include <stdio.h>
void main()
{
double a=1,b=2,sum=0;
for(int i=1;i<=20;i++){
double temp = b;
sum+= b/a;
b=a+b;
a=temp;
}
printf("%20f",sum);
}1
//10.有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。2
3
void main()4
{5
double a=1,b=2,sum=0;6
for(int i=1;i<=20;i++){7
double temp = b;8
sum+= b/a;9
b=a+b;10
a=temp;11
}12
printf("%20f",sum);13
}求100~300间能被3整除的数的和。
int sum=0;
for(int i=100;i<300;i++){
if(i%3==0){
sum+=i;
}
}
printf("%5d\n",sum);1
int sum=0;2
for(int i=100;i<300;i++){3
if(i%3==0){4
sum+=i;5
}6
}7
printf("%5d\n",sum);计算:1+12+123+1234+12345。
int sum=0,temp=0;
for(int i=1;i<=5;i++){
temp=temp*10+i;
sum+=temp;
printf("%5d\n",temp);
}
printf("%5d\n",sum);
1
int sum=0,temp=0;2
for(int i=1;i<=5;i++){3
temp=temp*10+i;4
sum+=temp;5
printf("%5d\n",temp);6
}7
printf("%5d\n",sum);8
求x的y次方
#include <stdio.h>
int main(){
int power(int x, int y);
printf("%d\n",power(2,3));
}
//求x的y次方
int power(int x, int y){
int sum=1;
for(int i =1;i<=y;i++){
sum*=x;
}
return sum;
}1
2
int main(){3
int power(int x, int y);4
printf("%d\n",power(2,3));5
}6
//求x的y次方7
int power(int x, int y){8
int sum=1;9
for(int i =1;i<=y;i++){10
sum*=x;11
}12
return sum;13
}4.从键盘输入一个字符,判断它是否是英文字母。
#include <stdio.h>
void main()
{
char c;
printf("input a character:");
c=getchar();
if(c>='A'&&c<='Z'||c>='a'&&c<='z') {
printf("Yes\n");
}else{
printf("No\n");
}
}1
2
void main()3
{4
char c;5
printf("input a character:"); 6
c=getchar();7
if(c>='A'&&c<='Z'||c>='a'&&c<='z') {8
printf("Yes\n");9
}else{10
printf("No\n");11
}12
}13、从键盘输入n个数存放在数组中,将最小值与第一个数交换,输出交换后的n个数。
//13、从键盘输入n个数存放在数组中,将最小值与第一个数交换,输出交换后的n个数。
#include <stdio.h>
void main()
{
int n=0, a[n], temp,index=0;
printf("请输入需要输入数字的个数\n");
scanf("%d",&n);
printf("请输入需要输入数字序列\n");
//输入并查找最小值
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]<a[index]){
index=i;
}
}
temp=a[0];
a[0]=a[index];
a[index]=temp;
printf("下面输出交换后数组\n");
for(int i=0;i<n;i++){
printf("%d\n",a[i]);
}
return 0;
}25
1
//13、从键盘输入n个数存放在数组中,将最小值与第一个数交换,输出交换后的n个数。2
3
void main()4
{5
int n=0, a[n], temp,index=0;6
printf("请输入需要输入数字的个数\n");7
scanf("%d",&n);8
printf("请输入需要输入数字序列\n");9
//输入并查找最小值10
for(int i=0;i<n;i++){11
scanf("%d",&a[i]);12
if(a[i]<a[index]){13
index=i;14
}15
}16
temp=a[0];17
a[0]=a[index];18
a[index]=temp;19
printf("下面输出交换后数组\n");20
for(int i=0;i<n;i++){21
printf("%d\n",a[i]);22
}23
return 0;24
}
浙公网安备 33010602011771号