超帅的王正杰老师的题目哦!奋斗的学弱献上
第2次上机练习(第4周):
1.从键盘读入10个整数(包括正数、负数和0),输出其中的最大值和最小值(先将第一个数设为最大值和最小值)。
2.从键盘读入一个正整数,输出各个位数字之和。(用%取余数,用x/10获取下次循环的数值)
3.从键盘读入n,求解1!+2!+3!+…+n!。(n不要太大否则可能溢出)
4.编写程序完成:从键盘读入10个整数,输出大于20的整数的个数。用for(i=0;i<10;i=i+1) 实现循环10次。
5.从键盘读入两个正整数x和y,计算x与y之间的整数和(含x和y),并不知道x,y中哪个大。
6.从键盘读入两个正整数x和y,(要求y小于5,x小于100)计算并输出x的y次幂的值。
7.从键盘读入一个大于1的正整数x,判断它是否是3的幂(是幂次,不是倍数),输出结果(可以采用多种方法:取余数判断除尽或者取幂次。3是,6不是,9是)。
8. 编写程序完成:从键盘读入20个整数,它们都是0-9之间的个位数,输出0-9元素的个数(例如0:1个,1:2个…9:1个)。
9.从键盘读入20个整数,如果输入的正数超过5个,则输出前5个正数的和,否则输出所有正数的和,并输出其余数的和。(例如,如果读入3个正数,则输出全部正数的和与负数的和;如果读入8个正数,则计算前5个正数的和,再计算剩余15个数字之和)。
常见问题:
1.变量必须先定义,再使用。
2.变量必须先赋值或者从键盘读入数据,才能做各种运算。
3.遇到分号; 、{、 }、),要回车。
4.累加求和t或者求乘积s,累加的变量需要设正确的初值t=0,s=1。
5.初值的设置要放在循环外面。
6.if和for后面必须接(),马上回车,建议接{},里面写句子。
7.if和for后面一般不会直接加分号; 。
8.循环语句for的初始值设置、循环条件、循环增量的含义及执行步骤。
9.if 和 for 可以相互嵌套,只要成对的{} 匹配就可以。
10.对结果的输出需要判断是输出一次,还是多次,从而知道是放在循环体里,还是放在外面。
11.表示并且使用 && 表示或者 ||
12.if 后面条件两项及以上,请使用 if(x>10&&x<100) 形式,或者 if(x>100||x<0)
13.直接退出循环,请使用break; 通常前面会有一个判断条件,如下:
if( )
break;
14.十个元素数组int a[10],下标从0开始到9结束,即a[0]到a[9],a[10]越界,非法。
15.数组使用循环操作每个元素
for(i=0;i<10;i=i+1)
a[i]=i;
16.正确理解函数的说明、定义、调用
#include<stdio.h>
int main(void)
{ /*1.从键盘读入10个整数(包括正数、负数和0),输出其中的最大值和最小值(先将第一个数设为最大值和最小值)。*/
int a,minn,maxn;
scanf("%d",&a);
minn=maxn=a;
for(int i=1;i<=9;i++)
{
scanf("%d",&a);
if(a<minn)minn=a;
if(a>maxn)maxn=a;
}
printf("maxn=%d minn=%d\n",maxn,minn);
return 0;
}
#include<stdio.h>
int main(void)
{ /* 2.从键盘读入一个正整数,输出各个位数字之和。(用%取余数,用x/10获取下次循环的数值)*/
int a,sum=0;
scanf("%d",&a);
while(a>0)
{
sum+=a%10;
a=a/10;
}
printf("sum=%d\n",sum);
return 0;
}
#include<stdio.h>
int main(void)
{ /* 3.从键盘读入n,求解1!+2!+3!+...+n!。(n不要太大否则可能溢出)*/
int n;
long long int sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{long long int now=1;
for(int d=1;d<=i;d++)
{
now*=d;
}
sum+=now;
}
printf("sum=%d\n",sum);
return 0;
}
#include<stdio.h>
int main(void)
{ /* 4.编写程序完成:从键盘读入10个整数,输出大于20的整数的个数。用for(i=0;i<10;i=i+1) 实现循环10次。*/
int a,cnt=0;
for(int i=0;i<10;i++)
{
scanf("%d",&a);
if(a>20)cnt++;
}
printf("cnt=%d",cnt);
return 0;
}
#include<stdio.h>
int main(void)
{ /*5.从键盘读入两个正整数x和y,计算x与y之间的整数和(含x和y),并不知道x,y中哪个大。*/
int x,y,tem;
scanf("%d %d",&x,&y);
if(x>y){tem=x;x=y;y=tem;}
int sum=0;
for(int i=x;i<=y;i++)
sum+=i;
printf("the sum of itergers between from x to y is %d",sum);
return 0;
}
#include<stdio.h>
int main(void)
{ /*6.从键盘读入两个正整数x和y,(要求y小于5,x小于100)计算并输出x的y次幂的值。*/
int x,y,ans=1;
scanf("%d %d",&x,&y);
for(int i=1;i<=y;i++)
ans*=x;
printf("x to power of y is %d",ans);
return 0;
}
#include<stdio.h>
int main(void)
{ /*
7.从键盘读入一个大于1的正整数x,判断它是否是3的幂(是幂次,不是倍数),
输出结果(可以采用多种方法:取余数判断除尽或者取幂次。3是,6不是,9是)。
*/
int x,yes=1;
scanf("%d",&x);
while(x>1)
{
if(x%3){yes=0;break;}
x=x/3;
}
if(yes)printf("x is the power of 3.");
else printf("x is not the power of 3.");
return 0;
}
#include<stdio.h>
int main(void)
{ /*
7.
从键盘读入一个大于1的正整数x,判断它是否是3的幂(是幂次,不是倍数),
输出结果(可以采用多种方法:取余数判断除尽或者取幂次。3是,6不是,9是)。
解法二:老师上课讲的那种解法,但是我觉得这样子,当数很大时,花的时间很多。
*/
int x,yes=1;
scanf("%d",&x);
int d=1;
while(d<x)
{
d*=3;
}
if(d==x)printf("x is the power of 3.");
else printf("x is not the power of 3.");
return 0;
}
#include<stdio.h>
int main(void)
{ /*
8. 编写程序完成:
从键盘读入20个整数,它们都是0-9之间的个位数,输出0-9元素的个数(例如0:1个,1:2个...9:1个)。
*/
int cnt_num[20];
for(int i=0;i<=9;i++)cnt_num[i]=0;
for(int i=1;i<=20;i++)
{int x;
scanf("%d",&x);
cnt_num[x]++;
}
for(int i=0;i<=9;i++)
printf("%d: %d 个, ",i,cnt_num[i]);
printf("\n");
return 0;
}
#include<stdio.h>
int main(void)
{ /*
9.从键盘读入20个整数,如果输入的正数超过5个,则输出前5个正数的和,
否则输出所有正数的和,并输出其余数的和。
(例如,如果读入3个正数,则输出全部正数的和与负数的和;
如果读入8个正数,则计算前5个正数的和,再计算剩余15个数字之和)。
*/
int cnt=0,sumz=0,sumf=0;
int x;
for(int i=1;i<=10;i++)
{
scanf("%d",&x);
if(x>0)cnt++;
if(x>0&&cnt<=5)sumz+=x;
else sumf+=x;
}
printf(" %d %d\n",sumz,sumf);
return 0;
}