1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { int i,x,y; printf("请输入一个整数x\n"); scanf("%d",&x); if(x%2!=0) { y=0; for(i=1;i<=x;i+=2) { y=y+i; } printf("%d\n",y); } else if(x%2==0) { y=0; for(i=2;i<=x;i+=2) { y=y+i; } printf("%d\n",y); } return 0; }
总结:注意分情况讨论
2.编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
#include <stdio.h> int main () { int i; float sum; sum=0; for(i=1;i<=100;i++) { if(i%2!=0) { sum=sum-(1.0/i); } else if(i%2==0) { sum=sum+(1.0/i); } } printf("和为%.2f\n",sum); return 0; }
总结:要注意负数求和为减
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include<stdio.h> int main() { int a,b=0; for(a=2000;a<=3000;a++) { if(a%4==0&&a%100!=0||a%400==0) { printf("%d ",a); b++; if(b%10==0) { printf("\n"); } } } printf("一共有%d个闰年\n",b); return 0; }
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include <stdio.h> int main() { int a,b,c; double sum; printf("请输入一个实数和一个整数\n"); scanf("%d%d",&a,&b); if(b>0) { for(sum=1,c=1;c<=b;c++) { sum=sum*a; } printf("%.2f\n",sum); } else if(b<0) { for(sum=1,c=1;c<=-b;c++) { sum=sum*a; } sum=1/(double)sum; printf("%.2f\n",sum); } else { printf("1\n"); } return 0; }
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include <stdio.h> int main() { int a=0,b=0,c=0,d=0; char ch1; printf("请输入一串字符\n"); while((ch1=getchar())!='\n') { if((ch1>='A'&&ch1<='Z')||ch1>='a'&&ch1<='z') { a++; } else if(ch1==' ') { b++; } else if(ch1>='0'&&ch1<='9') { c++; } else { d++; } } printf("字母,空格,数字和其他字符分别为%d,%d,%d,%d\n",a,b,c,d); return 0; }
总结:ch1=getchar()中 关系运算符!=的优先级比赋值运算符=优先级高加()后才先算前面的
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
#include <stdio.h> int main() { int a,b=1,c=1,sum1,sum2; float average1,average2; printf("请输入一批数\n"); scanf("%d",&a); sum1=0; sum2=0; while(a!=0) { if(a>0) { sum1+=a; b++; } else { sum2+=a; c++; } scanf("%d",&a); } if(b-1==0) { printf("没有正数\n"); } else { average1=(float)sum1/(b-1); printf("正数平均值为%.2f\n",average1); } if(c-1==0) { printf("没有负数\n"); } else { average2=(float)sum2/(c-1); printf("负数平均值为%.2f\n",average2); } return 0; }
总结:注意sum要有赋初值
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include <stdio.h> int main() { int a,b,c=0; for(a=2;a<=1000;a++) { for(b=2;b<=a-1;b++) if(a%b==0) break; if(a==b) { printf("%03d ",b); c++; if(c%10==0) { printf("\n"); } } } printf("一共有%d个素数\n",c); return 0; }
8.打印下列图形
#include <stdio.h> int main() { int i,j,k; for(i=0;i<=4;i++) { for(j=0;j<=i;j++) printf(" "); for(k=1;k<=9-2*i;k++) printf("*"); printf("\n"); } return 0; }
总结:找清规律注意先输出的是什么
知识点总结:
1. 注意循环一定要有初值
2.①while语句先判断表达式后执行循环体,循环体可能一次也不执行
②do while语句先执行循环体后判断表达式,至少执行一次循环体
3.do while 后的while有;
4.要注意运算符的优先级 先执行优先级低的加()
5.for语句
(1) for(表达式1;表达式2;表达式3)
{
循环体语句
}
(2)循环体语句可以是单条语句也可以是复合语句。 建议无论循环体有几条语句,一律都加大括号
(3)表达式可以部分或全部省略,但两个";"不能省略
6.无限循环中,通过在循环体中加break语句对循环体进行控制
7. 循环次数已知 for语句
循环次数未知由给定条件控制 while语句
循环体至少执行一次 do······while语句