sdkd c语言课第2次上机练习题目

超帅的王正杰老师的题目哦!奋斗的学弱献上
第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;
}

猜你喜欢

转载自blog.csdn.net/qq_43235540/article/details/88699980