1.编写程序,输入一个整数x,按照下式输出对应的y值。
# includeint main (){ int saber,lancer,sum=0; printf("输入整数\n"); scanf("%d",&a); if(saber<=0) { printf("输入错误\n"); } if (saber%2==0) { for(lancer=2;lancer<=saber;lancer=lancer+2) { sum=sum+lancer; } { printf("输出为%d\n",sum); } } else if(saber%2!=0) { for(lancer=1;lancer<=saber;lancer=lancer+2) { sum=sum+lancer; } { printf("输出为%lancer\n",sum); } } return 0;}
注:声明变量的值,
2.编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
# includeint main(){ int saber; float lancer,sum=0; for (saber=1;saber<=100;saber++) { if (saber%2!=0) { lancer=1/(float)saber; } else { lancer=-1/(float)saber; } sum=sum+lancer; } printf("和为%.2f",sum); return 0;}
注:分母不能为零,for循环后加大括号;
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
# includeint main(){ int saber,lancer=0; for (saber=1900;saber<=3000;saber++) { if((saber%4==0&&saber%100!=0)||(saber%400==0)) { { printf(" %d",saber); lancer++; } if(lancer%10==0) { printf("\n"); } } } printf("\n"); printf("共有%d",lancer); return 0; }
注意:十个一换行,在判断年之后并且最好嵌套在一起;
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
注意:整形和实数的区别,加分号,
#includeint main(){ int a,b,d; float c,sum,sun=1.0; printf("输入一个实数一个整数\n"); scanf("%f%d",&c,&a); if(a==0&&c!=0) { printf("输出为1\n"); } else if(c==0&&(a!=0||a==0)) { printf("输出为0\n"); } else if(a>0) { for (b=1,sum=1.0;b<=a;b++) { sum=sum*c; } printf ("输出为%f\n",sum); } else if(a<0) { d=-1*a; for (b=1;b<=d;b++) { sun=(sun*c); } sum=1/sun; printf ("输出为%f\n",sum); } return 0;}
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
# includeint main(){ int caster=0,lancer=0,archer=0,rider=0; char saber; printf("输入一串字符判断\n"); while(1) { scanf("%c",&saber); if ((saber>='A'&&saber<='Z')||(saber>='a'&&saber<='z')) { caster++; } else if(saber>='0'&&saber<='9') { lancer++; } else if(saber==' ') { archer++; } else if(saber!='\n') { rider++; } if(saber=='\n') { break; } } printf("字母有%d个,数字有%d个,空格有%d个,其他有%d个\n",caster,lancer,archer,rider); return 0;}
注:在字符型中回车也是字符,在字符A与z间有其他字符;
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
# includeint main (){ int saber,archer=0,Lancer=0,caster=0,rider=0; float sum,sun; while (1) { printf("输入\n"); scanf("%d",&saber); if(saber/1>0) { archer=archer+saber; ++rider; } else if(saber/1<0) { caster=caster+saber; ++Lancer; } if(saber==0) break; } if(rider==0) { rider=1; } if(Lancer==0) { Lancer=1; } sum=(float)archer/rider; sun=(float)caster/Lancer; printf("正数平均%f负数平均%f",sum,sun); return 0;}
注:分母不能为零,运行注意结束加break;
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
# includeint main(){ int saber,archer,lancer=0,flag; for (saber=2;saber<=1000;saber++) { flag=0; for(archer=2;archer<=saber-1;archer++) { if (saber%archer==0) { flag=1; break; } } if (flag==0) { { printf (" %03d",saber); lancer++; } if (lancer%10==0) { printf("\n"); } } } printf("\n"); printf("一共有%d",lancer); return 0; }
注:数字对齐可以在d前面补0;在嵌套循环时注意声明变量的位置;
8.打印下列图形
# includeint main(){ int saber,archer,lancer,caster; for(saber=1;saber<=5;saber++) { for(archer=1;archer<=saber;archer++) { printf(" "); } for(archer=1,lancer=10;archer<=lancer-2*saber+1;archer++) { printf("*"); } printf ("\n") ; } return 0;}
注:寻找规律,注意对齐;
知识点总结:
1. for循环为for(表达式1;表达式2;表达式3)表达式中用逗号分开,while与for相似只是while后只有表达式2其他两个分别在其内外,而do....while中while后必须加入分号
for适合已知的循环就是知道循环执行的次数,而while与do....while适合不只带次数的循环,三种循环必须注意都要声明变量,
2. break为跳出此循环,continue为不执行此次循环,
3. 累加型初始值为0,累乘和累除初始值为1;
实验总结:
遇到无法输出时寻找输出变量是否正确,注意变通,在分母为零时在最后更改变量的值,
在字符型中有时忘记在%c前加入空格,字符型为单引号;