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);//10
1
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);//10
printf输出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
}