期末复习----习题

期末复习一,

1.(10分) 从键盘输入任意一个3位整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-123,则忽略负号,由123分离出百位1、十位2、个位3,然后计算3100+210+1=321,输出321.

题目要求: 输入提示为Input x:

输出格式为y=%d\n

#include<stdio.h>
int main(void)
{
  int x;
  scanf("%d", &x);
  int dight, ret=0;

  if(x<0)
  {
    x=-x;
  }

  while(x>0)
  {
    dight=x%10;
    ret=ret*10+dight;
    x=x/10;
  }
  printf("%d\n", ret);
  return 0;
}

2.(10分) 水仙花是指一个三位数并且满足各位数字的立方和等于该数本身的三位数。例如153是水仙花数,因为153=111+555+333.请编程计算并输出所有的水仙花数。

**输入格式要求:无
**输出格式要求:"%6d",且所有的水仙花数字在同一行

#include  <stdio.h>
int main()
{	
    //****补全代码****
    int m, n;
    int i;
    int a, b, c;
    //int count=0;
    scanf("%d %d", &m, &n);
    for(i=m;i<=n;i++)
    {
    
        a=i/100;
        b=(i/10)%10;
        c=i%10;
        if(a*a*a+b*b*b+c*c*c==i)
        {
    
            //count++;
            printf("%6d", i);
        }
    }
    //printf("%d",count);
    
    return 0;
}

3.(10分) 编程利用循环打印如下字符图形:
12345678987654321
234567898765432
3456789876543
45678987654
567898765
6789876
78987
898
9
注意:每行输出数字前输出的空格数是越来越多的,每行末尾直接换行,没有空格

#include<stdio.h>
int main(void)
{
    int i, j;
    for(i=1; i<=9; i++)
    {
        for(j=1; j<=i-1; j++)
        {
            printf(" ");
        }
        for(;j<=9;j++)
        {
            printf("%d", j);
        }
        for(j=1; j<=9-i; j++)
        {
            printf("%d", 9-j);
        }
        printf("\n");
    }
    return 0;
}

4.(2分) 求[m,n]之间所有不能被3整除的整数之和,m,n的值由键盘输入。
例如,如果输入3和12,则输出结果为:45
输入提示信息为
“Enter m, n:”
输入格式:
“%d,%d”
输出提示信息和格式为
“The number is %d\n”

#include<stdio.h>
int main(void)
{
    int m, n;
    int i, sum=0;
    scanf("%d %d", &m, &n);
    for(i=m; i<=n; i++)
    {
        if(i%3!=0)
        {
            sum=sum+i;
        }
    }
    printf("%d", sum);
    
    return 0;
}

5.(10分) 已知公式e = 1 + 1/1! + 1/2! + 1/3! + … +1/n!, 编程计算e的近似值,直到最后一项的绝对值小于1e-7时为止,输出e的值并统计累加的项数。要求:按顺序输出每一个e值,小数点后保留8位有效数字,输出格式形如:e = 2.66666667, count = 4(回车换行,count为累加的项数)

#include<stdio.h>
#include<math.h>
int main(void)
{
    int n=1, count=1;
    double e=1.0, term=1.0;
    long fac=1;
    printf("e=%.8f, count=%d\n", e, count);
    for(n=1; fabs(term)>=1e-7; n++)
    {
        fac=fac*n;
        term=1.0/fac;
        e=e+term;
        count++;
        printf("e=%.8f, count=%d\n", e, count);
    }
}

期末复习二

1.(10分) 从键盘输入学生的成绩(参加人数最多不超过40人),当输入为负数时,表示输入结束,试编程将分数按从高到低顺序进行排序输出。

通过调用sort函数进行分数排序。

**输入格式要求:"%d"
提示信息:“Total students are %d\n” “Sorted scores:” “Input score:”
**输出格式要求:"%4d"

程序的运行示例如下:
Input score:84
Input score:83
Input score:88
Input score:87
Input score:51
Input score:-1
Total students are 5
Sorted scores: 88 87 84 83 51

#include<stdio.h>
void sort(int a[], int n);
int main(void)
{
    int a[40];
    int i=0, n;
    do{
        printf("Input score:");
        scanf("%d", &a[i]);
        i++;
        n=i-1;
    }while(a[i]>=0);
    printf("Total students are %d\n", n);
    sort(a,n);
    printf("Sorted scores:");
    for(i=0; i<=n-1; i++)
    {
        printf("%4d", a[i]);
    }
    return 0;
}
void sort(int a[], int n)
{
    int i, j, t;
    for(i=0; i<=n-2; i++)
    {
        for(j=i+1; j<=n-1; j++)
        {
            if(a[i]<a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
}

❤️❤️❤️❤️❤️在这里插入代码片
2.(10分) 按如下函数原型,采用穷举法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大公约数。穷举法的基本思想是:先找到a和b中的较小者t,然后从t开始逐次减1尝试每种可能,即检验t到1之间的所有整数,第一个满足公约数条件的t,就是a和b的最大公约数。
/* 函数功能:计算a和b的最大公约数,输入负数时返回-1 */
int Gcd(int a, int b)
要求如下:
(1)从键盘任意输入的两整数
主函数调用Gcd()函数,并输出两整数的最大公约数。
(2)Gcd函数原型为:
int Gcd(int a, int b);
如果输入的数不是正整数,则返回-1,否则,返回两个数的最大公约数。
(3)**输入提示信息格式要求:“Input a,b:”
输入格式:"%d,%d"
**输出提示信息要求:
如果输入的数不是正整数,则输出"Input number should be positive!\n",否则按如下格式输出"Greatest Common Divisor of %d and %d is %d\n"



int divisor(int a, int b)
{

    int temp;
    temp=(a>b)?b:a;
    while(temp>0)
    {
        if(a%temp==0&&b%temp==0)
        {
            break;
        }
        temp--;
    }
    return temp;

}

#include <stdio.h>
int Gcd(int a, int b);
main()
{
int a, b, c;
printf("Input a,b:\n");
scanf("%d,%d", &a, &b);//1
c = Gcd(a, b); //2
if (c != -1)//1
{
printf("Gcd=%d\n", c);//1
}
else//1
{
printf("Input error!\n");//1
}
}
int Gcd(int a, int b)//1
{
int r;
if (a <= 0 || b <= 0)//2
{
return -1;//1
}
do
{
r = a % b;//1
a = b;//1
b = r;//1
}
while (r != 0); //e2
return a; //1
}


3.(15分) 请按给定的函数原型编程实现两个数组中对应该元素值的交换(数组的长度定义成5)。
函数原型:void exchange(int a[5],int b[5])
要求:
在主函数中输入两个数组中各元素的内容;
调用函数exchange实现两个数组中对应该元素值的交换;
在主函数中输出交换后两个数组的内容。
****输入提示信息格式: 无
****输入数据格式要求: “%d”
****输出提示信息格式:“Output array a:”
“Output array b:”
****输出数据格式要求:"%5d"

注:输出时两个数组之间要换行

运行样例:
10 11 12 13 14 15 16 17 18 19ㄌ
Output array a: 15 16 17 18 19
Output array b: 10 11 12 13 14

4.(15分) 从键盘输入一个字符串(最长不超过20个字符),将该字符串的小写英文字符全部改成大写,然后输出这个字符串,并输出原字符串中小写英文字符的个数。不考虑字符串中包含非英文字符的情况。
要求用字符数组作函数参数,按如下函数原型编写程序:
int UpperCase(char str[]);//函数将数组s中的字符串全部改为大写字符,并返回原字符串中小写英文字符的个数
输入格式:
输入字符串的提示信息: “Input a word:\n”
输入字符串用 gets()函数
输出格式:
输出字符串用 “%s\n” 或puts()
输出小写字符个数用:"%d\n"

程序运行结果示例1:
Input a word:
Hello Chinaㄌ
HELLO CHINA
8

程序运行结果示例2:
Input a word:
123 456ㄌ
0

程序运行结果示例3:
Input a word:
ABjd345Q 649Aㄌ
2
注意:不能使用指针、结构体和goto语句编程。

5.(10分) 纯数字字符串检验
按给定函数原型编程检查一个字符串是否全由数字组成。
int IsAllDigit(char p[]);/若全由数字组成,则函数返回1,否则返回0/
在主函数中,从键盘输入一个字符串(假设字符串的最大长度为20个字符),调用函数IsAllDigit(),检查该字符串是否全由数字组成,然后在主函数中根据函数IsAllDigit()的返回值输出相应的提示信息。
程序运行结果示例1:
Please input a string:
help456ㄌ
The string is not a digit string.

程序运行结果示例2:
Please input a string:
20150216ㄌ
The string is a digit string.

输入格式: 字符串输入采用 gets()函数
字符串输入提示信息:“Please input a string:\n”
输出格式:
判断是纯数字字符串:“The string is a digit string.”
判断不是纯数字字符串:“The string is not a digit string.”

6.(15分) 编写一个找出大于给定整数m的最小素数的函数,要求在主函数中输入一个整数m,调用子函数IsPrime()找出其最小素数,并输出结果。
函数原型:int IsPrime(int x)
****要求输入提示信息为:Please input n:
****输出格式要求为:"%d\n"

期末复习 3

1.(15分) 从键盘为3*3的矩阵输入数据,找出主对角线上最大的元素,以及所在的行号。
**输入提示信息:无
**输入格式要求:"%d"
**输出格式要求:“max=%d ,row=%d”
程序运行示例如下:
1 2 3
4 5 6
7 8 9
max=9 ,row=2
注:不允许使用goto语句

2.(15分) 信息查询:从键盘中输入5个姓名和电话号码,编程实现输入姓名可查询电话号码的功能。
定义结构体aa,用来存储电话号码和姓名,代码如下:
struct aa/定义结构体aa存储姓名和电话号码/
{
char name[15];
char tel[15];
};

程序运行结果示例1:
请输入姓名 电话:多多
02364521856
啦啦
0236556842
西西
02365265269
文文
02362460001
阿美
02388888888
输入要查找的姓名:多多
姓名:多多 电话:02364521856

程序运行结果示例2:
请输入姓名 电话:多多
02364521856
啦啦
0236556842
西西
02365265269
文文
02362460001
阿美
02388888888
输入要查找的姓名:李四
没有找到!

输入提示:“请输入姓名 电话:”
输入格式:"%s"
输出提示:“输入要查找的姓名:”
输出格式:“姓名:%s 电话:%s\n” (注:找到的情况输出)
输出格式:“没有找到!” (注:没找到的情况下输出)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值